4 * ROX-Filer, filer for the ROX desktop project
5 * By Thomas Leonard, <tal197@ecs.soton.ac.uk>.
8 /* pixmaps.c - code for handling pixmaps */
15 #include <collection.h>
18 #include "gui_support.h"
21 static char * bad_xpm
[] = {
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
)
49 MaskedPixmap
*masked_pixmap
;
51 style
= gtk_widget_get_style(window
);
53 pixmap
= gdk_pixmap_create_from_xpm(window
->window
,
55 &style
->bg
[GTK_STATE_NORMAL
],
60 masked_pixmap
= g_malloc(sizeof(MaskedPixmap
));
61 masked_pixmap
->pixmap
= pixmap
;
62 masked_pixmap
->mask
= mask
;
67 void load_pixmap(GdkWindow
*window
, char *name
, MaskedPixmap
*image
)
69 image
->pixmap
= gdk_pixmap_create_from_xpm(window
,
72 make_path(getenv("APP_DIR"), name
)->str
);
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
;
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
);