gint bytes;
gint files;
gint pixms;
+ /* extensions info */
+ const char **supported;
+ gint *length;
} DirInfo;
typedef struct _CopyInfo {
GStatBuf s;
DirInfo *di = (DirInfo *)data;
gint len;
+ gint i;
if (0 == g_stat(filename, &s) && 0 != S_ISREG(s.st_mode)) {
di->bytes += s.st_size;
di->files++;
len = strlen(filename);
- if (len > 4) {
- const gchar *extension = filename+(len-4);
- if (!strcmp(extension, ".xpm"))
- di->pixms++;
- else if (!strcmp(extension, ".png"))
+ for (i = 0; (di->supported)[i] != NULL; ++i) {
+ gint curlen = (di->length)[i];
+ if (len <= curlen)
+ continue;
+ const gchar *extension = filename + (len - curlen);
+ if (!strcmp(extension, (di->supported)[i])) {
di->pixms++;
+ break;
+ }
}
}
}
{
gchar *stats;
DirInfo *dinfo;
+ gint i;
dinfo = g_new0(DirInfo, 1);
-
+ dinfo->supported = stock_pixmap_theme_extensions();
+ for (i = 0; (dinfo->supported)[i] != NULL; ++i);
+ dinfo->length = g_malloc(i * sizeof(gint));
+ for (i = 0; (dinfo->supported)[i] != NULL; ++i) {
+ (dinfo->length)[i] = strlen((dinfo->supported)[i]);
+ }
prefs_themes_foreach_file(dirname, prefs_themes_file_stats, dinfo);
- stats = g_strdup_printf(_("%d files (%d icons), size: %s"),
- dinfo->files, dinfo->pixms, to_human_readable((goffset)dinfo->bytes));
-
+ stats = g_strdup_printf(_("%d files (%d icons), size: %s"),
+ dinfo->files, dinfo->pixms,
+ to_human_readable((goffset)dinfo->bytes));
+ g_free(dinfo->length);
g_free(dinfo);
return stats;
}
{empty_xpm , NULL, NULL, "empty", NULL, NULL}
};
+/* Supported theme extensions */
+static const char *extension[] = {
+ ".png",
+ ".xpm",
+ NULL
+};
+
+/* return current supported extensions */
+const char **stock_pixmap_theme_extensions(void)
+{
+ return extension;
+}
+
/* return newly constructed GtkPixmap from GdkPixmap */
GtkWidget *stock_pixmap_widget(StockPixmap icon)
{
gint stock_pixbuf_gdk(StockPixmap icon, GdkPixbuf **pixbuf)
{
StockPixmapData *pix_d;
- static const char *extension[]={".png", ".xpm", NULL};
int i = 0;
gboolean theme_changed = FALSE;
gchar *fullentry;
GDir *dp;
GError *error = NULL;
- static const char *extension[]={".png", ".xpm", NULL};
if ((dp = g_dir_open(dirname, 0, &error)) == NULL) {
debug_print("skipping theme scan, dir %s could not be opened: %s (%d)\n",