2 * (GLABELS) Label and Business Card Creation program for GNOME
4 * stock.h: Stock image module header file
6 * Copyright (C) 2001-2002 Jim Evins <evins@snaught.com>.
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.
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.
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
25 #include <gdk-pixbuf/gdk-pixdata.h>
27 #include "stock-pixmaps/stockpixbufs.h"
30 /*========================================================*/
31 /* Private macros and constants. */
32 /*========================================================*/
34 /*========================================================*/
36 /*========================================================*/
38 /*===========================================*/
40 /*===========================================*/
42 /*===========================================*/
43 /* Local function prototypes */
44 /*===========================================*/
46 static add_icons (GtkIconFactory *factory,
47 const gchar *stock_id,
48 const guchar *inline_24,
49 const guchar *inline_16);
51 static add_button_icon (GtkIconFactory *factory,
52 const gchar *stock_id,
53 const guchar *inline_24);
56 /****************************************************************************/
57 /* Initialize our stock icons. */
58 /****************************************************************************/
62 GtkIconFactory *factory;
64 static GtkStockItem items[] = {
65 { GL_STOCK_ARROW, N_("_Select Mode"), 0, 0, NULL },
66 { GL_STOCK_TEXT, N_("_Text"), 0, 0, NULL },
67 { GL_STOCK_LINE, N_("_Line"), 0, 0, NULL },
68 { GL_STOCK_BOX, N_("_Box"), 0, 0, NULL },
69 { GL_STOCK_ELLIPSE, N_("_Ellipse"), 0, 0, NULL },
70 { GL_STOCK_IMAGE, N_("_Image"), 0, 0, NULL },
71 { GL_STOCK_BARCODE, N_("Bar_code"), 0, 0, NULL },
72 { GL_STOCK_MERGE, N_("_Merge Properties"), 0, 0, NULL },
73 { GL_STOCK_PROPERTIES, N_("Object _Properties"), 0, 0, NULL },
74 { GL_STOCK_ORDER_TOP, N_("Bring to _Front"), 0, 0, NULL },
75 { GL_STOCK_ORDER_BOTTOM, N_("Send to _Back"), 0, 0, NULL },
76 { GL_STOCK_ROTATE_LEFT, N_("Rotate _Left"), 0, 0, NULL },
77 { GL_STOCK_ROTATE_RIGHT, N_("Rotate _Right"), 0, 0, NULL },
78 { GL_STOCK_FLIP_HORIZ, N_("Flip _Horizontally"), 0, 0, NULL },
79 { GL_STOCK_FLIP_VERT, N_("Flip _Vertically"), 0, 0, NULL },
80 { GL_STOCK_ALIGN_LEFT, N_("_Lefts"), 0, 0, NULL },
81 { GL_STOCK_ALIGN_RIGHT, N_("_Rights"), 0, 0, NULL },
82 { GL_STOCK_ALIGN_HCENTER, N_("_Centers"), 0, 0, NULL },
83 { GL_STOCK_ALIGN_TOP, N_("_Tops"), 0, 0, NULL },
84 { GL_STOCK_ALIGN_BOTTOM, N_("Bottoms"), 0, 0, NULL },
85 { GL_STOCK_ALIGN_VCENTER, N_("Centers"), 0, 0, NULL },
86 { GL_STOCK_CENTER_HORIZ, N_("Label Ce_nter"), 0, 0, NULL },
87 { GL_STOCK_CENTER_VERT, N_("Label Ce_nter"), 0, 0, NULL },
88 { GL_STOCK_BUCKET_FILL, N_("Fill color"), 0, 0, NULL },
89 { GL_STOCK_PENCIL, N_("Line color"), 0, 0, NULL },
90 { GL_STOCK_HCHAIN, N_("Linked"), 0, 0, NULL },
91 { GL_STOCK_HCHAIN_BROKEN, N_("Not Linked"), 0, 0, NULL },
92 { GL_STOCK_VCHAIN, N_("Linked"), 0, 0, NULL },
93 { GL_STOCK_VCHAIN_BROKEN, N_("Not Linked"), 0, 0, NULL },
96 gtk_stock_add (items, G_N_ELEMENTS (items));
98 factory = gtk_icon_factory_new ();
99 gtk_icon_factory_add_default (factory);
101 add_icons (factory, GL_STOCK_ARROW, stock_arrow_24, stock_arrow_16);
102 add_icons (factory, GL_STOCK_TEXT, stock_text_24, stock_text_16);
103 add_icons (factory, GL_STOCK_LINE, stock_line_24, stock_line_16);
104 add_icons (factory, GL_STOCK_BOX, stock_box_24, stock_box_16);
105 add_icons (factory, GL_STOCK_ELLIPSE, stock_ellipse_24, stock_ellipse_16);
106 add_icons (factory, GL_STOCK_IMAGE, stock_image_24, stock_image_16);
107 add_icons (factory, GL_STOCK_BARCODE, stock_barcode_24, stock_barcode_16);
108 add_icons (factory, GL_STOCK_MERGE, stock_merge_24, stock_merge_16);
110 add_icons (factory, GL_STOCK_PROPERTIES,
112 stock_properties_16);
114 add_icons (factory, GL_STOCK_ORDER_TOP, NULL, stock_order_top_16);
115 add_icons (factory, GL_STOCK_ORDER_BOTTOM, NULL, stock_order_bottom_16);
116 add_icons (factory, GL_STOCK_ROTATE_LEFT, NULL, stock_rotate_left_16);
117 add_icons (factory, GL_STOCK_ROTATE_RIGHT, NULL, stock_rotate_right_16);
118 add_icons (factory, GL_STOCK_FLIP_HORIZ, NULL, stock_flip_horiz_16);
119 add_icons (factory, GL_STOCK_FLIP_VERT, NULL, stock_flip_vert_16);
120 add_icons (factory, GL_STOCK_ALIGN_LEFT, NULL, stock_align_left_16);
121 add_icons (factory, GL_STOCK_ALIGN_RIGHT, NULL, stock_align_right_16);
122 add_icons (factory, GL_STOCK_ALIGN_HCENTER, NULL, stock_align_hcenter_16);
123 add_icons (factory, GL_STOCK_ALIGN_TOP, NULL, stock_align_top_16);
124 add_icons (factory, GL_STOCK_ALIGN_BOTTOM, NULL, stock_align_bottom_16);
125 add_icons (factory, GL_STOCK_ALIGN_VCENTER, NULL, stock_align_vcenter_16);
126 add_icons (factory, GL_STOCK_CENTER_HORIZ, NULL, stock_center_horiz_16);
127 add_icons (factory, GL_STOCK_CENTER_VERT, NULL, stock_center_vert_16);
129 add_icons (factory, GL_STOCK_BUCKET_FILL, stock_bucket_fill_24, stock_bucket_fill_16);
130 add_icons (factory, GL_STOCK_PENCIL, stock_pencil_24, stock_pencil_16);
132 add_button_icon (factory, GL_STOCK_HCHAIN, stock_hchain_24);
133 add_button_icon (factory, GL_STOCK_HCHAIN_BROKEN, stock_hchain_broken_24);
134 add_button_icon (factory, GL_STOCK_VCHAIN, stock_vchain_24);
135 add_button_icon (factory, GL_STOCK_VCHAIN_BROKEN, stock_vchain_broken_24);
137 g_object_unref (G_OBJECT(factory));
140 /*--------------------------------------------------------------------------*/
141 /* PRIVATE. Unpack and associate given icons with stock_id. */
142 /*--------------------------------------------------------------------------*/
143 static add_icons (GtkIconFactory *factory,
144 const gchar *stock_id,
145 const guchar *inline_24,
146 const guchar *inline_16)
149 GtkIconSet *icon_set;
150 GtkIconSource *icon_source;
152 if ( inline_24 != NULL ) {
153 /* Create icon set with default image */
154 pixbuf = gdk_pixbuf_new_from_inline (-1, inline_24, FALSE, NULL);
155 icon_set = gtk_icon_set_new_from_pixbuf (pixbuf);
156 g_object_unref (G_OBJECT(pixbuf));
158 /* Create an empty icon set */
159 icon_set = gtk_icon_set_new ();
162 if ( inline_16 != NULL ) {
163 /* Add 16x16 icon for menus to icon set */
164 icon_source = gtk_icon_source_new ();
165 pixbuf = gdk_pixbuf_new_from_inline (-1, inline_16,
167 gtk_icon_source_set_pixbuf (icon_source, pixbuf);
168 g_object_unref (G_OBJECT(pixbuf));
169 gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
170 gtk_icon_source_set_size (icon_source, GTK_ICON_SIZE_MENU);
171 gtk_icon_set_add_source (icon_set, icon_source);
172 g_free (icon_source);
175 /* Now associate icon set with stock id */
176 gtk_icon_factory_add (factory, stock_id, icon_set);
177 gtk_icon_set_unref (icon_set);
180 /*--------------------------------------------------------------------------*/
181 /* PRIVATE. Unpack and associate given button icon with stock_id. */
182 /*--------------------------------------------------------------------------*/
183 static add_button_icon (GtkIconFactory *factory,
184 const gchar *stock_id,
185 const guchar *inline_24)
187 GtkIconSet *icon_set;
189 GtkIconSource *icon_source;
191 icon_set = gtk_icon_set_new ();
193 icon_source = gtk_icon_source_new ();
194 pixbuf = gdk_pixbuf_new_from_inline (-1, inline_24, FALSE, NULL);
195 gtk_icon_source_set_pixbuf (icon_source, pixbuf);
196 g_object_unref (G_OBJECT(pixbuf));
197 gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
198 gtk_icon_source_set_size (icon_source, GTK_ICON_SIZE_BUTTON);
199 gtk_icon_set_add_source (icon_set, icon_source);
200 g_free (icon_source);
202 /* Now associate icon set with stock id */
203 gtk_icon_factory_add (factory, stock_id, icon_set);
204 gtk_icon_set_unref (icon_set);