Thu, 13 Mar 2003 07:13:34 +0000
[gaim-migrate @ 5051]
DO NOT complain about these icons. They are placeholders until the cooler
icons arrive in the (hopefully very near) future. Squint your eyes and
pretend they're cool looking if you have to.
Oh, in case you're wondering, this puts a nifty icon in the upper-right
corner of the conversation window for when the other person is typing, it
corresponds with changing colors in the tabs. Enjoy!
| 4359 | 1 | /** |
| 2 | * @file stock.c GTK+ Stock resources | |
| 3 | * | |
| 4 | * gaim | |
| 5 | * | |
| 6 | * Copyright (C) 2002-2003, Christian Hammond <chipx86@gnupdate.org> | |
| 7 | * | |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * along with this program; if not, write to the Free Software | |
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 21 | * | |
| 22 | */ | |
| 23 | #include "stock.h" | |
| 24 | #include "core.h" | |
| 25 | #include <gtk/gtk.h> | |
| 26 | #include <string.h> | |
| 27 | ||
|
4363
08b6dea58732
[gaim-migrate @ 4629]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
28 | #ifdef _WIN32 |
|
08b6dea58732
[gaim-migrate @ 4629]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
29 | #include "win32dep.h" |
|
08b6dea58732
[gaim-migrate @ 4629]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
30 | #endif |
|
08b6dea58732
[gaim-migrate @ 4629]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
31 | |
| 4359 | 32 | static struct StockIcon |
| 33 | { | |
| 34 | const char *name; | |
| 35 | const char *dir; | |
| 36 | const char *filename; | |
| 37 | ||
| 38 | } const stock_icons[] = | |
| 39 | { | |
| 40 | { GAIM_STOCK_BGCOLOR, "buttons", "change-bgcolor-small.png" }, | |
| 41 | { GAIM_STOCK_BLOCK, NULL, GTK_STOCK_STOP }, | |
|
4514
40e3588a280f
[gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
42 | { GAIM_STOCK_DOWNLOAD, NULL, GTK_STOCK_GO_DOWN }, |
| 4359 | 43 | { GAIM_STOCK_FGCOLOR, "buttons", "change-fgcolor-small.png" }, |
|
4514
40e3588a280f
[gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
44 | { GAIM_STOCK_FILE_CANCELED, NULL, GTK_STOCK_CANCEL }, |
|
40e3588a280f
[gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
45 | { GAIM_STOCK_FILE_DONE, NULL, GTK_STOCK_APPLY }, |
| 4359 | 46 | { GAIM_STOCK_IGNORE, NULL, GTK_STOCK_DIALOG_ERROR }, |
| 47 | { GAIM_STOCK_IMAGE, "menus", "insert-image-small.png" }, | |
| 48 | { GAIM_STOCK_INFO, NULL, GTK_STOCK_FIND }, | |
| 49 | { GAIM_STOCK_INVITE, NULL, GTK_STOCK_JUMP_TO }, | |
| 50 | { GAIM_STOCK_LINK, "menus", "insert-link-small.png" }, | |
| 51 | { GAIM_STOCK_SEND, NULL, GTK_STOCK_CONVERT }, | |
| 52 | { GAIM_STOCK_SMILEY, "buttons", "insert-smiley-small.png" }, | |
| 53 | { GAIM_STOCK_TEXT_BIGGER, "buttons", "text_bigger.png" }, | |
| 54 | { GAIM_STOCK_TEXT_NORMAL, "buttons", "text_normal.png" }, | |
| 55 | { GAIM_STOCK_TEXT_SMALLER, "buttons", "text_smaller.png" }, | |
| 4736 | 56 | { GAIM_STOCK_TYPED, NULL, GTK_STOCK_JUSTIFY_FILL }, |
| 57 | { GAIM_STOCK_TYPING, NULL, GTK_STOCK_EXECUTE }, | |
|
4514
40e3588a280f
[gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
58 | { GAIM_STOCK_UPLOAD, NULL, GTK_STOCK_GO_UP }, |
| 4687 | 59 | { GAIM_STOCK_WARN, NULL, GTK_STOCK_DIALOG_WARNING }, |
| 60 | { GAIM_STOCK_IM, NULL, GTK_STOCK_CONVERT }, | |
| 61 | { GAIM_STOCK_CHAT, NULL, GTK_STOCK_JUMP_TO }, | |
| 62 | { GAIM_STOCK_AWAY, "buttons", "away.xpm" } | |
| 4359 | 63 | }; |
| 64 | ||
| 65 | static gint stock_icon_count = sizeof(stock_icons) / sizeof(*stock_icons); | |
| 66 | ||
| 67 | static gchar * | |
| 68 | find_file(const char *dir, const char *base) | |
| 69 | { | |
| 70 | char *filename; | |
| 71 | ||
| 72 | if (base == NULL) | |
| 73 | return NULL; | |
| 74 | ||
| 75 | if (!strcmp(dir, "gaim")) | |
| 76 | filename = g_build_filename(DATADIR, "pixmaps", "gaim", base, NULL); | |
| 77 | else | |
| 78 | filename = g_build_filename(DATADIR, "pixmaps", "gaim", | |
| 79 | dir, base, NULL); | |
| 80 | ||
| 81 | if (!g_file_test(filename, G_FILE_TEST_EXISTS)) { | |
| 82 | debug_printf("Unable to load stock pixmap %s\n", base); | |
| 83 | ||
| 84 | g_free(filename); | |
| 85 | ||
| 86 | return NULL; | |
| 87 | } | |
| 88 | ||
| 89 | return filename; | |
| 90 | } | |
| 91 | ||
| 92 | void | |
| 93 | setup_stock() | |
| 94 | { | |
| 95 | GtkIconFactory *icon_factory; | |
| 96 | int i; | |
|
4670
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
97 | GtkWidget *win; |
| 4359 | 98 | |
| 99 | /* Setup the icon factory. */ | |
| 100 | icon_factory = gtk_icon_factory_new(); | |
| 101 | ||
| 102 | gtk_icon_factory_add_default(icon_factory); | |
| 103 | ||
|
4670
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
104 | /* Er, yeah, a hack, but it works. :) */ |
|
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
105 | win = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
|
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
106 | gtk_widget_realize(win); |
|
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
107 | |
| 4359 | 108 | for (i = 0; i < stock_icon_count; i++) { |
| 109 | GdkPixbuf *pixbuf; | |
| 110 | GtkIconSet *iconset; | |
| 111 | gchar *filename; | |
| 112 | ||
| 113 | if (stock_icons[i].dir == NULL) { | |
|
4670
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
114 | |
| 4359 | 115 | /* GTK+ Stock icon */ |
|
4670
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
116 | iconset = gtk_style_lookup_icon_set(gtk_widget_get_style(win), |
|
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
117 | stock_icons[i].filename); |
| 4359 | 118 | } |
| 119 | else { | |
| 120 | filename = find_file(stock_icons[i].dir, stock_icons[i].filename); | |
| 121 | ||
| 122 | if (filename == NULL) | |
| 123 | continue; | |
| 124 | ||
| 125 | pixbuf = gdk_pixbuf_new_from_file(filename, NULL); | |
| 126 | ||
| 127 | g_free(filename); | |
| 128 | ||
| 129 | iconset = gtk_icon_set_new_from_pixbuf(pixbuf); | |
| 130 | } | |
| 131 | ||
| 132 | gtk_icon_factory_add(icon_factory, stock_icons[i].name, iconset); | |
| 133 | ||
| 134 | gtk_icon_set_unref(iconset); | |
| 135 | } | |
| 136 | ||
|
4670
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
137 | gtk_widget_destroy(win); |
|
8b9f47138de1
[gaim-migrate @ 4981]
Christian Hammond <chipx86@chipx86.com>
parents:
4514
diff
changeset
|
138 | |
| 4359 | 139 | g_object_unref(G_OBJECT(icon_factory)); |
| 140 | } |