annotate src/gtkstock.c @ 10865:c28766b87f64

[gaim-migrate @ 12549] Check all characters in the unescaped value of a HTML entity when matching smileys. Also make sure that the returned value of the smiley length is correct when dealing with escaped text. This resolves an inconsistency between how smileys are detected and how they are looked up for display. committer: Tailor Script <tailor@pidgin.im>
author Daniel Atallah <daniel.atallah@gmail.com>
date Sun, 24 Apr 2005 21:28:39 +0000
parents 868aafbe859b
children 6240d7fd5b2c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10297
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
1 /**
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
2 * @file gtkstock.c GTK+ Stock resources
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
3 * @ingroup gtkui
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
4 *
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
5 * gaim
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
6 *
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
9 * source distribution.
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
10 *
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
14 * (at your option) any later version.
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
15 *
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
19 * GNU General Public License for more details.
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
20 *
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
24 *
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
25 */
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
26 #include "internal.h"
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
27 #include "gtkgaim.h"
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
28
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
29 #include "gtkstock.h"
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
30
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
31 static struct StockIcon
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
32 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
33 const char *name;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
34 const char *dir;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
35 const char *filename;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
36
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
37 } const stock_icons[] =
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
38 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
39 { GAIM_STOCK_ABOUT, "buttons", "about_menu.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
40 { GAIM_STOCK_ACCOUNTS, "buttons", "accounts.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
41 { GAIM_STOCK_ALIAS, "buttons", "edit.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
42 { GAIM_STOCK_BGCOLOR, "buttons", "change-bgcolor-small.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
43 { GAIM_STOCK_BLOCK, NULL, GTK_STOCK_STOP },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
44 { GAIM_STOCK_CHAT, NULL, GTK_STOCK_JUMP_TO },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
45 { GAIM_STOCK_DOWNLOAD, NULL, GTK_STOCK_GO_DOWN },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
46 { GAIM_STOCK_DIALOG_AUTH, "dialogs", "gaim_auth.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
47 { GAIM_STOCK_DIALOG_COOL, "dialogs", "gaim_cool.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
48 { GAIM_STOCK_DIALOG_ERROR, "dialogs", "gaim_error.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
49 { GAIM_STOCK_DIALOG_INFO, "dialogs", "gaim_info.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
50 { GAIM_STOCK_DIALOG_QUESTION, "dialogs", "gaim_question.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
51 { GAIM_STOCK_DIALOG_WARNING, "dialogs", "gaim_warning.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
52 { GAIM_STOCK_FGCOLOR, "buttons", "change-fgcolor-small.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
53 { GAIM_STOCK_EDIT, "buttons", "edit.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
54 { GAIM_STOCK_FILE_CANCELED, NULL, GTK_STOCK_CANCEL },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
55 { GAIM_STOCK_FILE_DONE, NULL, GTK_STOCK_APPLY },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
56 { GAIM_STOCK_FILE_TRANSFER, NULL, GTK_STOCK_REVERT_TO_SAVED },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
57 { GAIM_STOCK_ICON_AWAY, "icons", "away.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
58 { GAIM_STOCK_ICON_AWAY_MSG, "icons", "msgpend.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
59 { GAIM_STOCK_ICON_CONNECT, "icons", "connect.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
60 { GAIM_STOCK_ICON_OFFLINE, "icons", "offline.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
61 { GAIM_STOCK_ICON_ONLINE, "icons", "online.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
62 { GAIM_STOCK_ICON_ONLINE_MSG, "icons", "msgunread.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
63 { GAIM_STOCK_IGNORE, NULL, GTK_STOCK_DIALOG_ERROR },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
64 { GAIM_STOCK_IM, "buttons", "send-im.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
65 { GAIM_STOCK_IMAGE, "buttons", "insert-image-small.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
66 { GAIM_STOCK_INFO, "icons", "info.png", },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
67 { GAIM_STOCK_INVITE, NULL, GTK_STOCK_JUMP_TO },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
68 { GAIM_STOCK_LINK, "buttons", "insert-link-small.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
69 { GAIM_STOCK_LOGO, "gaim", "logo.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
70 { GAIM_STOCK_MODIFY, NULL, GTK_STOCK_PREFERENCES },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
71 { GAIM_STOCK_PAUSE, "buttons", "pause.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
72 { GAIM_STOCK_OPEN_MAIL, NULL, GTK_STOCK_JUMP_TO },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
73 { GAIM_STOCK_SEND, "buttons", "send-im.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
74 { GAIM_STOCK_SIGN_ON, NULL, GTK_STOCK_EXECUTE },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
75 { GAIM_STOCK_SIGN_OFF, NULL, GTK_STOCK_CLOSE },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
76 { GAIM_STOCK_SMILEY, "buttons", "insert-smiley-small.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
77 { GAIM_STOCK_TEXT_BIGGER, "buttons", "text_bigger.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
78 { GAIM_STOCK_TEXT_NORMAL, "buttons", "text_normal.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
79 { GAIM_STOCK_TEXT_SMALLER, "buttons", "text_smaller.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
80 { GAIM_STOCK_TYPED, "gaim", "typed.png" },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
81 { GAIM_STOCK_TYPING, "gaim", "typing.png" },
10643
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
82 { GAIM_STOCK_STATUS_ONLINE, "gaim", "status-online.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
83 { GAIM_STOCK_STATUS_OFFLINE, "gaim", "status-offline.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
84 { GAIM_STOCK_STATUS_AWAY, "gaim", "status-away.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
85 { GAIM_STOCK_STATUS_INVISIBLE,"gaim", "status-invisible.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
86 { GAIM_STOCK_STATUS_TYPING0, "gaim", "status-typing0.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
87 { GAIM_STOCK_STATUS_TYPING1, "gaim", "status-typing1.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
88 { GAIM_STOCK_STATUS_TYPING2, "gaim", "status-typing2.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
89 { GAIM_STOCK_STATUS_TYPING3, "gaim", "status-typing3.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
90 { GAIM_STOCK_STATUS_CONNECT0, "gaim", "status-connect0.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
91 { GAIM_STOCK_STATUS_CONNECT1, "gaim", "status-connect1.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
92 { GAIM_STOCK_STATUS_CONNECT2, "gaim", "status-connect2.png" },
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
93 { GAIM_STOCK_STATUS_CONNECT3, "gaim", "status-connect3.png" },
10297
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
94 { GAIM_STOCK_UPLOAD, NULL, GTK_STOCK_GO_UP },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
95 { GAIM_STOCK_WARN, NULL, GTK_STOCK_DIALOG_WARNING }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
96 };
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
97
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
98 const GtkStockItem stock_items[] =
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
99 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
100 { GAIM_STOCK_ALIAS, N_("_Alias"), 0, 0, NULL },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
101 { GAIM_STOCK_CHAT, N_("_Join"), 0, 0, NULL },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
102 { GAIM_STOCK_INVITE, N_("_Invite"), 0, 0, NULL },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
103 { GAIM_STOCK_MODIFY, N_("_Modify"), 0, 0, NULL },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
104 { GAIM_STOCK_OPEN_MAIL, N_("_Open Mail"), 0, 0, NULL },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
105 { GAIM_STOCK_PAUSE, N_("_Pause"), 0, 0, NULL },
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
106 { GAIM_STOCK_WARN, N_("_Warn"), 0, 0, NULL }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
107 };
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
108
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
109 static gchar *
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
110 find_file(const char *dir, const char *base)
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
111 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
112 char *filename;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
113
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
114 if (base == NULL)
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
115 return NULL;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
116
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
117 if (!strcmp(dir, "gaim"))
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
118 filename = g_build_filename(DATADIR, "pixmaps", "gaim", base, NULL);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
119 else
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
120 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
121 filename = g_build_filename(DATADIR, "pixmaps", "gaim", dir,
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
122 base, NULL);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
123 }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
124
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
125 if (!g_file_test(filename, G_FILE_TEST_EXISTS))
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
126 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
127 g_critical("Unable to load stock pixmap %s\n", base);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
128
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
129 g_free(filename);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
130
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
131 return NULL;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
132 }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
133
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
134 return filename;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
135 }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
136
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
137 static void
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
138 gaim_gtk_stock_versionize(GdkPixbuf **original, GtkWidget *widget) {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
139 GdkPixmap *pixmap;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
140 GtkStyle *style;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
141 PangoContext *context;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
142 PangoLayout *layout;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
143 gchar *markup;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
144 gint width, height;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
145 gint lwidth = 0, lheight = 0;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
146
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
147 style = gtk_widget_get_style(widget);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
148
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
149 gdk_pixbuf_render_pixmap_and_mask(*original, &pixmap, NULL, 255);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
150 width = gdk_pixbuf_get_width(*original);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
151 height = gdk_pixbuf_get_height(*original);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
152 g_object_unref(G_OBJECT(*original));
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
153
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
154 context = gtk_widget_get_pango_context(widget);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
155 layout = pango_layout_new(context);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
156
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
157 markup = g_strdup_printf("<span foreground=\"#FFFFFF\" size=\"larger\">%s</span>", VERSION);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
158 pango_layout_set_font_description(layout, style->font_desc);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
159 pango_layout_set_markup(layout, markup, strlen(markup));
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
160 g_free(markup);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
161
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
162 pango_layout_get_pixel_size(layout, &lwidth, &lheight);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
163 gdk_draw_layout(GDK_DRAWABLE(pixmap), style->bg_gc[GTK_STATE_NORMAL],
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
164 width - (lwidth + 3), height - (lheight + 1), layout);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
165 g_object_unref(G_OBJECT(layout));
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
166
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
167 *original = gdk_pixbuf_get_from_drawable(NULL, pixmap, NULL,
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
168 0, 0, 0, 0,
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
169 width, height);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
170 g_object_unref(G_OBJECT(pixmap));
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
171 }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
172
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
173 void
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
174 gaim_gtk_stock_init(void)
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
175 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
176 static gboolean stock_initted = FALSE;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
177 GtkIconFactory *icon_factory;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
178 int i;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
179 GtkWidget *win;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
180
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
181 if (stock_initted)
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
182 return;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
183
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
184 stock_initted = TRUE;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
185
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
186 /* Setup the icon factory. */
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
187 icon_factory = gtk_icon_factory_new();
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
188
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
189 gtk_icon_factory_add_default(icon_factory);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
190
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
191 /* Er, yeah, a hack, but it works. :) */
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
192 win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
193 gtk_widget_realize(win);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
194
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
195 for (i = 0; i < G_N_ELEMENTS(stock_icons); i++)
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
196 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
197 GdkPixbuf *pixbuf;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
198 GtkIconSet *iconset;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
199 gchar *filename;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
200
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
201 if (stock_icons[i].dir == NULL)
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
202 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
203 /* GTK+ Stock icon */
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
204 iconset = gtk_style_lookup_icon_set(gtk_widget_get_style(win),
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
205 stock_icons[i].filename);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
206 }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
207 else
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
208 {
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
209 filename = find_file(stock_icons[i].dir, stock_icons[i].filename);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
210
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
211 if (filename == NULL)
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
212 continue;
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
213
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
214 pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
215
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
216 g_free(filename);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
217
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
218 if (!strcmp(stock_icons[i].name, GAIM_STOCK_LOGO))
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
219 gaim_gtk_stock_versionize(&pixbuf, win);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
220
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
221 iconset = gtk_icon_set_new_from_pixbuf(pixbuf);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
222
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
223 g_object_unref(G_OBJECT(pixbuf));
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
224 }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
225
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
226 gtk_icon_factory_add(icon_factory, stock_icons[i].name, iconset);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
227
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
228 gtk_icon_set_unref(iconset);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
229 }
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
230
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
231 gtk_widget_destroy(win);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
232
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
233 /* register custom icon sizes */
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
234 gtk_icon_size_register(GAIM_ICON_SIZE_LOGO, 330, 90);
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
235 gtk_icon_size_register(GAIM_ICON_SIZE_DIALOG_COOL, 40, 60);
10643
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10297
diff changeset
236 gtk_icon_size_register(GAIM_ICON_SIZE_STATUS, 30, 30);
10297
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
237
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
238 g_object_unref(G_OBJECT(icon_factory));
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
239
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
240 /* Register the stock items. */
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
241 gtk_stock_add_static(stock_items, G_N_ELEMENTS(stock_items));
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
242 }