r70: Removed some old code. Dragging now quotes the correct MIME type for files.
[rox-filer.git] / ROX-Filer / src / pixmaps.c
blob98ed761cded09addba928f933768a42d7423a2ff
1 /* vi: set cindent:
2 * $Id$
4 * ROX-Filer, filer for the ROX desktop project
5 * By Thomas Leonard, <tal197@ecs.soton.ac.uk>.
6 */
8 /* pixmaps.c - code for handling pixmaps */
10 #include <stdlib.h>
11 #include <stdio.h>
12 #include <errno.h>
14 #include <gtk/gtk.h>
15 #include <collection.h>
17 #include "support.h"
18 #include "gui_support.h"
19 #include "pixmaps.h"
21 static char * bad_xpm[] = {
22 "12 12 3 1",
23 " c #000000000000",
24 ". c #FFFF00000000",
25 "X c #FFFFFFFFFFFF",
26 " ",
27 " ..XXXXXX.. ",
28 " ...XXXX... ",
29 " X...XX...X ",
30 " XX......XX ",
31 " XXX....XXX ",
32 " XXX....XXX ",
33 " XX......XX ",
34 " X...XX...X ",
35 " ...XXXX... ",
36 " ..XXXXXX.. ",
37 " "};
39 MaskedPixmap default_pixmap[LAST_DEFAULT_PIXMAP];
41 /* Try to load the pixmap from the given path, allocate a MaskedPixmap
42 * structure for it and return a pointer to the structure. NULL on failure.
44 MaskedPixmap *load_pixmap_from(GtkWidget *window, char *path)
46 GdkPixmap *pixmap;
47 GdkBitmap *mask;
48 GtkStyle *style;
49 MaskedPixmap *masked_pixmap;
51 style = gtk_widget_get_style(window);
53 pixmap = gdk_pixmap_create_from_xpm(window->window,
54 &mask,
55 &style->bg[GTK_STATE_NORMAL],
56 path);
57 if (!pixmap)
58 return NULL;
60 masked_pixmap = g_malloc(sizeof(MaskedPixmap));
61 masked_pixmap->pixmap = pixmap;
62 masked_pixmap->mask = mask;
64 return masked_pixmap;
67 void load_pixmap(GdkWindow *window, char *name, MaskedPixmap *image)
69 image->pixmap = gdk_pixmap_create_from_xpm(window,
70 &image->mask,
72 make_path(getenv("APP_DIR"), name)->str);
74 if (!image->pixmap)
76 image->pixmap= gdk_pixmap_create_from_xpm_d(window,
77 &image->mask, NULL, bad_xpm);
81 /* Load all the standard pixmaps */
82 void load_default_pixmaps(GdkWindow *window)
84 static gboolean loaded = FALSE;
86 if (loaded)
87 return;
89 load_pixmap(window, "pixmaps/error.xpm",
90 default_pixmap + TYPE_ERROR);
91 load_pixmap(window, "pixmaps/unknown.xpm",
92 default_pixmap + TYPE_UNKNOWN);
93 load_pixmap(window, "pixmaps/symlink.xpm",
94 default_pixmap + TYPE_SYMLINK);
95 load_pixmap(window, "pixmaps/file.xpm",
96 default_pixmap + TYPE_FILE);
97 load_pixmap(window, "pixmaps/directory.xpm",
98 default_pixmap + TYPE_DIRECTORY);
99 load_pixmap(window, "pixmaps/char.xpm",
100 default_pixmap + TYPE_CHAR_DEVICE);
101 load_pixmap(window, "pixmaps/block.xpm",
102 default_pixmap + TYPE_BLOCK_DEVICE);
103 load_pixmap(window, "pixmaps/pipe.xpm",
104 default_pixmap + TYPE_PIPE);
105 load_pixmap(window, "pixmaps/socket.xpm",
106 default_pixmap + TYPE_SOCKET);
108 load_pixmap(window, "pixmaps/mount.xpm",
109 default_pixmap + TYPE_UNMOUNTED);
110 load_pixmap(window, "pixmaps/mounted.xpm",
111 default_pixmap + TYPE_MOUNTED);
112 load_pixmap(window, "pixmaps/multiple.xpm",
113 default_pixmap + TYPE_MULTIPLE);
114 load_pixmap(window, "pixmaps/exec.xpm",
115 default_pixmap + TYPE_EXEC_FILE);
116 load_pixmap(window, "pixmaps/application.xpm",
117 default_pixmap + TYPE_APPDIR);
119 loaded = TRUE;