pidgin/plugins/themeedit-icon.c

Mon, 08 Jun 2009 02:24:49 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Mon, 08 Jun 2009 02:24:49 +0000
changeset 27314
402d25ce01da
parent 26869
210aa82531fe
child 27494
7f274eff98d0
permissions
-rw-r--r--

Use the JID for adding a chat/buddy because the name is for descriptive
purpose only, and using it will not fill in the Add Chat dialog correctly.
Because the JID is not visible, the user will not know what to actually put
there instead.

26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /* Pidgin
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 *
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 * Pidgin is the legal property of its developers, whose names are too numerous
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5 * source distribution.
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 *
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 *
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 *
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20 */
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 #include "internal.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22 #include "pidgin.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
23 #include "debug.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24 #include "version.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 #include "theme-manager.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 #include "gtkblist.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 #include "gtkblist-theme.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include "gtkutils.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31 #include "gtkplugin.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 #include "pidginstock.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 #include "themeedit-icon.h"
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35
26816
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
36 typedef enum
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
37 {
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
38 FLAG_SIZE_MICROSOPIC = 0,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
39 FLAG_SIZE_EXTRA_SMALL,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
40 FLAG_SIZE_SMALL,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
41 FLAG_SIZE_MEDIUM,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
42 FLAG_SIZE_LARGE,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
43 FLAG_SIZE_HUGE,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
44 FLAG_SIZE_NONE,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
45 } SectionFlags;
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
46
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
47 #define SECTION_FLAGS_ALL (0x3f)
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
48
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49 static const char *stocksizes [] = {
26816
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
50 [FLAG_SIZE_MICROSOPIC] = PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
51 [FLAG_SIZE_EXTRA_SMALL] = PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
52 [FLAG_SIZE_SMALL] = PIDGIN_ICON_SIZE_TANGO_SMALL,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
53 [FLAG_SIZE_MEDIUM] = PIDGIN_ICON_SIZE_TANGO_MEDIUM,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
54 [FLAG_SIZE_LARGE] = PIDGIN_ICON_SIZE_TANGO_LARGE,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
55 [FLAG_SIZE_HUGE] = PIDGIN_ICON_SIZE_TANGO_HUGE,
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
56 [FLAG_SIZE_NONE] = NULL,
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57 };
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
59 static const struct options {
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 const char *stockid;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 const char *text;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 } statuses[] = {
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63 {PIDGIN_STOCK_STATUS_AVAILABLE, N_("Available")},
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
64 {PIDGIN_STOCK_STATUS_AWAY, N_("Away")},
26814
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
65 {PIDGIN_STOCK_STATUS_XA, N_("Extended Away")},
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66 {PIDGIN_STOCK_STATUS_BUSY, N_("Busy")},
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
67 {PIDGIN_STOCK_STATUS_OFFLINE, N_("Offline")},
26814
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
68 {PIDGIN_STOCK_STATUS_LOGIN, N_("Just logged in")},
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
69 {PIDGIN_STOCK_STATUS_LOGOUT, N_("Just logged out")},
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
70 {PIDGIN_STOCK_STATUS_PERSON, N_("Icon for Contact/\nIcon for Unknown person")},
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
71 {PIDGIN_STOCK_STATUS_CHAT, N_("Icon for Chat")},
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 {NULL, NULL}
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
73 }, chatemblems[] = {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
74 {PIDGIN_STOCK_STATUS_IGNORED, N_("Ignored")},
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
75 {PIDGIN_STOCK_STATUS_FOUNDER, N_("Founder")},
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
76 {PIDGIN_STOCK_STATUS_OPERATOR, N_("Operator")},
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
77 {PIDGIN_STOCK_STATUS_HALFOP, N_("Half Operator")},
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
78 {PIDGIN_STOCK_STATUS_VOICE, N_("Voice")},
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
79 {NULL, NULL}
26815
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
80 }, dialogicons[] = {
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
81 {PIDGIN_STOCK_DIALOG_AUTH, N_("Authorization dialog")},
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
82 {PIDGIN_STOCK_DIALOG_ERROR, N_("Error dialog")},
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
83 {PIDGIN_STOCK_DIALOG_INFO, N_("Information dialog")},
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
84 {PIDGIN_STOCK_DIALOG_MAIL, N_("Mail dialog")},
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
85 {PIDGIN_STOCK_DIALOG_QUESTION, N_("Question dialog")},
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
86 {PIDGIN_STOCK_DIALOG_WARNING, N_("Warning dialog")},
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
87 {NULL, NULL},
8fc121fd720b Allow editing dialog icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26814
diff changeset
88 {PIDGIN_STOCK_DIALOG_COOL, N_("What kind of dialog is this?")},
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
89 };
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
90
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
91 static const struct {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
92 const char *heading;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
93 const struct options *options;
26816
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
94 SectionFlags flags;
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
95 } sections[] = {
26816
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
96 {N_("Status Icons"), statuses, SECTION_FLAGS_ALL ^ (1 << FLAG_SIZE_HUGE)},
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
97 {N_("Chatroom Emblems"), chatemblems, FLAG_SIZE_SMALL},
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
98 {N_("Dialog Icons"), dialogicons, (1 << FLAG_SIZE_EXTRA_SMALL) | (1 << FLAG_SIZE_HUGE)},
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
99 {NULL, NULL, 0}
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 };
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102 static PidginStatusIconTheme *
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 create_icon_theme(GtkWidget *window)
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 {
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
105 int s, i, j;
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 char *dirname = "/tmp"; /* FIXME */
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 PidginStatusIconTheme *theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME, "type", "status-icon",
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108 "author", getlogin(),
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 "directory", dirname,
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 NULL);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
112 for (s = 0; sections[s].heading; s++) {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
113 GtkWidget *vbox = g_object_get_data(G_OBJECT(window), sections[s].heading);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
114 for (i = 0; sections[s].options[i].stockid; i++) {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
115 GtkWidget *image = g_object_get_data(G_OBJECT(vbox), sections[s].options[i].stockid);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
116 GdkPixbuf *pixbuf = g_object_get_data(G_OBJECT(image), "pixbuf");
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
117 if (!pixbuf)
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
118 continue;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
119 pidgin_icon_theme_set_icon(PIDGIN_ICON_THEME(theme), sections[s].options[i].stockid,
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
120 sections[s].options[i].stockid);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
121 for (j = 0; stocksizes[j]; j++) {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
122 int width, height;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
123 GtkIconSize iconsize;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
124 char size[8];
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
125 char *name;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
126 GdkPixbuf *scale;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
127 GError *error = NULL;
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128
26816
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
129 if (!(sections[s].flags & (1 << j)))
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
130 continue;
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
131
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
132 iconsize = gtk_icon_size_from_name(stocksizes[j]);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
133 gtk_icon_size_lookup(iconsize, &width, &height);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
134 g_snprintf(size, sizeof(size), "%d", width);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
136 if (i == 0) {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
137 name = g_build_filename(dirname, size, NULL);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
138 purple_build_dir(name, S_IRUSR | S_IWUSR | S_IXUSR);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
139 g_free(name);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
140 }
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
141
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
142 name = g_build_filename(dirname, size, sections[s].options[i].stockid, NULL);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
143 scale = gdk_pixbuf_scale_simple(pixbuf, width, height, GDK_INTERP_BILINEAR);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
144 gdk_pixbuf_save(scale, name, "png", &error, "compression", "9", NULL);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 g_free(name);
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
146 g_object_unref(G_OBJECT(scale));
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
147 if (error)
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
148 g_error_free(error);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 return theme;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155 static void
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156 use_icon_theme(GtkWidget *w, GtkWidget *window)
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
157 {
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
158 /* I don't quite understand the icon-theme stuff. For example, I don't
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
159 * know why PidginIconTheme needs to be abstract, or how PidginStatusIconTheme
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
160 * would be different from other PidginIconTheme's (e.g. PidginStockIconTheme)
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
161 * etc., but anyway, this works for now.
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
162 *
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
163 * Here's an interesting note: A PidginStatusIconTheme can be used for both
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
164 * stock and status icons. Like I said, I don't quite know how they could be
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
165 * different. So I am going to just keep it as it is, for now anyway, until I
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
166 * have the time to dig through this, or someone explains this stuff to me
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
167 * clearly.
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
168 * -- Sad
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
169 */
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170 PidginStatusIconTheme *theme = create_icon_theme(window);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 pidgin_stock_load_status_icon_theme(PIDGIN_STATUS_ICON_THEME(theme));
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
172 pidgin_stock_load_stock_icon_theme((PidginStockIconTheme *)theme);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173 pidgin_blist_refresh(purple_get_blist());
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 g_object_unref(theme);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
176
26841
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
177 #ifdef NOT_SADRUL
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 static void
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179 save_icon_theme(GtkWidget *w, GtkWidget *window)
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180 {
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 /* TODO: SAVE! */
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 gtk_widget_destroy(window);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183 }
26841
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
184 #endif
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
185
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
186 static void
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
187 close_icon_theme(GtkWidget *w, GtkWidget *window)
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
188 {
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
189 gtk_widget_destroy(window);
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
190 }
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 static void
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193 stock_icon_selected(const char *filename, gpointer image)
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194 {
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 GError *error = NULL;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 GdkPixbuf *scale;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 int i;
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
198 GdkPixbuf *pixbuf;
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
200 if (!filename)
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
201 return;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
202
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
203 pixbuf = gdk_pixbuf_new_from_file(filename, &error);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
204 if (error || !pixbuf) {
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
205 purple_debug_error("theme-editor-icon", "Unable to load icon file '%s' (%s)\n",
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206 filename, error ? error->message : "Reason unknown");
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
207 if (error)
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 g_error_free(error);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209 return;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
210 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
212 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
213 gtk_image_set_from_pixbuf(GTK_IMAGE(image), scale);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 g_object_unref(G_OBJECT(scale));
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
215
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 /* Update the size previews */
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 for (i = 0; stocksizes[i]; i++) {
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218 int width, height;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219 GtkIconSize iconsize;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220 GtkWidget *prev = g_object_get_data(G_OBJECT(image), stocksizes[i]);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
221 if (!prev)
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222 continue;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
223 iconsize = gtk_icon_size_from_name(stocksizes[i]);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
224 gtk_icon_size_lookup(iconsize, &width, &height);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
225 scale = gdk_pixbuf_scale_simple(pixbuf, width, height, GDK_INTERP_BILINEAR);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226 gtk_image_set_from_pixbuf(GTK_IMAGE(prev), scale);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227 g_object_unref(G_OBJECT(scale));
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
228 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
229
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
230 /* Save the original pixbuf so we can use it for resizing later */
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
231 g_object_set_data_full(G_OBJECT(image), "pixbuf", pixbuf,
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
232 (GDestroyNotify)g_object_unref);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
233 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
234
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
235 static gboolean
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 change_stock_image(GtkWidget *widget, GdkEventButton *event, GtkWidget *image)
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
237 {
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
238 GtkWidget *win = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)),
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
239 stock_icon_selected, image);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
240 gtk_widget_show_all(win);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
241
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
242 return TRUE;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
243 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
244
26869
210aa82531fe Fix two warnings in the theme editor plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 26841
diff changeset
245 void pidgin_icon_theme_edit(PurplePluginAction *unused)
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
246 {
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
247 GtkWidget *dialog;
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
248 GtkWidget *box, *vbox;
26814
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
249 GtkWidget *notebook;
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
250 GtkSizeGroup *sizegroup;
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
251 int s, i, j;
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
252 dialog = pidgin_create_dialog(_("Pidgin Icon Theme Editor"), 0, "theme-editor-icon", FALSE);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
253 box = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog), FALSE, PIDGIN_HIG_BOX_SPACE);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
254
26814
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
255 notebook = gtk_notebook_new();
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
256 gtk_box_pack_start(GTK_BOX(box), notebook, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
257 sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
258
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
259 for (s = 0; sections[s].heading; s++) {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
260 const char *heading = sections[s].heading;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
261
26814
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
262 box = gtk_vbox_new(FALSE, 0);
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
263 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, gtk_label_new(heading));
7a6522d6f9e5 Add some more status emblems, and since the dialog is too long, use a
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26813
diff changeset
264
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
265 vbox = pidgin_make_frame(box, heading);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
266 g_object_set_data(G_OBJECT(dialog), heading, vbox);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
268 for (i = 0; sections[s].options[i].stockid; i++) {
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
269 const char *id = sections[s].options[i].stockid;
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
270 const char *text = _(sections[s].options[i].text);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
271
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
272 GtkWidget *hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
273 GtkWidget *label = gtk_label_new(text);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
274 GtkWidget *image = gtk_image_new_from_stock(id,
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
275 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
276 GtkWidget *ebox = gtk_event_box_new();
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
277 gtk_container_add(GTK_CONTAINER(ebox), image);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
278 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
279
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
280 g_signal_connect(G_OBJECT(ebox), "button-press-event", G_CALLBACK(change_stock_image), image);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
281 g_object_set_data(G_OBJECT(image), "property-name", (gpointer)id);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
282
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
283 gtk_size_group_add_widget(sizegroup, label);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
284 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
285 gtk_box_pack_start(GTK_BOX(hbox), ebox, FALSE, FALSE, 0);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
286
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
287 for (j = 0; stocksizes[j]; j++) {
26816
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
288 GtkWidget *sh;
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
289
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
290 if (!(sections[s].flags & (1 << j)))
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
291 continue;
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
292
821c77a9ba20 Show preview of only the supported sizes for each class of icons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26815
diff changeset
293 sh = gtk_image_new_from_stock(id, gtk_icon_size_from_name(stocksizes[j]));
26813
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
294 gtk_box_pack_start(GTK_BOX(hbox), sh, FALSE, FALSE, 0);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
295 g_object_set_data(G_OBJECT(image), stocksizes[j], sh);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
296 }
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
297
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
298 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
299
c1a058a2466e Make it possible to load non-status icons using a PidginStockIconTheme.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26812
diff changeset
300 g_object_set_data(G_OBJECT(vbox), id, image);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
301 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
302 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
303
26841
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
304 #ifdef NOT_SADRUL
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
305 pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_SAVE, G_CALLBACK(save_icon_theme), dialog);
26841
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
306 #endif
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_APPLY, G_CALLBACK(use_icon_theme), dialog);
26841
4de3b5aa28c5 Disable the 'Save' buttons since they don't do nothing yet, man.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26816
diff changeset
308 pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, G_CALLBACK(close_icon_theme), dialog);
26811
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
309 gtk_widget_show_all(dialog);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
310 g_object_unref(sizegroup);
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
311 }
72045103fad1 A status-icon theme editor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
312

mercurial