# HG changeset patch # User Sadrul Habib Chowdhury # Date 1240209240 0 # Node ID ed8385b26f6e6781b705cf5de58ff49b5c06f516 # Parent 6bf58e156da217490ca87cddc542e36ccd5ab3db Show preview of only the supported sizes for each class of icons. diff -r 6bf58e156da2 -r ed8385b26f6e pidgin/plugins/themeedit-icon.c --- a/pidgin/plugins/themeedit-icon.c Mon Apr 20 06:07:43 2009 +0000 +++ b/pidgin/plugins/themeedit-icon.c Mon Apr 20 06:34:00 2009 +0000 @@ -33,14 +33,27 @@ #include "pidginstock.h" #include "themeedit-icon.h" +typedef enum +{ + FLAG_SIZE_MICROSOPIC = 0, + FLAG_SIZE_EXTRA_SMALL, + FLAG_SIZE_SMALL, + FLAG_SIZE_MEDIUM, + FLAG_SIZE_LARGE, + FLAG_SIZE_HUGE, + FLAG_SIZE_NONE, +} SectionFlags; + +#define SECTION_FLAGS_ALL (0x3f) + static const char *stocksizes [] = { - PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC, - PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL, - PIDGIN_ICON_SIZE_TANGO_SMALL, - PIDGIN_ICON_SIZE_TANGO_MEDIUM, - PIDGIN_ICON_SIZE_TANGO_LARGE, - NULL, - PIDGIN_ICON_SIZE_TANGO_HUGE, /* We don't have huge status icons, it seems! */ + [FLAG_SIZE_MICROSOPIC] = PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC, + [FLAG_SIZE_EXTRA_SMALL] = PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL, + [FLAG_SIZE_SMALL] = PIDGIN_ICON_SIZE_TANGO_SMALL, + [FLAG_SIZE_MEDIUM] = PIDGIN_ICON_SIZE_TANGO_MEDIUM, + [FLAG_SIZE_LARGE] = PIDGIN_ICON_SIZE_TANGO_LARGE, + [FLAG_SIZE_HUGE] = PIDGIN_ICON_SIZE_TANGO_HUGE, + [FLAG_SIZE_NONE] = NULL, }; static const struct options { @@ -78,11 +91,12 @@ static const struct { const char *heading; const struct options *options; + SectionFlags flags; } sections[] = { - {N_("Status Icons"), statuses}, - {N_("Chatroom Emblems"), chatemblems}, - {N_("Dialog Icons"), dialogicons}, - {NULL, NULL} + {N_("Status Icons"), statuses, SECTION_FLAGS_ALL ^ (1 << FLAG_SIZE_HUGE)}, + {N_("Chatroom Emblems"), chatemblems, FLAG_SIZE_SMALL}, + {N_("Dialog Icons"), dialogicons, (1 << FLAG_SIZE_EXTRA_SMALL) | (1 << FLAG_SIZE_HUGE)}, + {NULL, NULL, 0} }; static PidginStatusIconTheme * @@ -112,6 +126,9 @@ GdkPixbuf *scale; GError *error = NULL; + if (!(sections[s].flags & (1 << j))) + continue; + iconsize = gtk_icon_size_from_name(stocksizes[j]); gtk_icon_size_lookup(iconsize, &width, &height); g_snprintf(size, sizeof(size), "%d", width); @@ -260,7 +277,12 @@ gtk_box_pack_start(GTK_BOX(hbox), ebox, FALSE, FALSE, 0); for (j = 0; stocksizes[j]; j++) { - GtkWidget *sh = gtk_image_new_from_stock(id, gtk_icon_size_from_name(stocksizes[j])); + GtkWidget *sh; + + if (!(sections[s].flags & (1 << j))) + continue; + + sh = gtk_image_new_from_stock(id, gtk_icon_size_from_name(stocksizes[j])); gtk_box_pack_start(GTK_BOX(hbox), sh, FALSE, FALSE, 0); g_object_set_data(G_OBJECT(image), stocksizes[j], sh); }