Mon, 08 Jun 2009 02:24:49 +0000
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 |