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
27 #include <glib/gi18n.h>
28 #include <gtk/gtkiconfactory.h>
29 #include <gtk/gtkstock.h>
30 #include <gdk-pixbuf/gdk-pixdata.h>
32 #include "stock-pixmaps/stockpixbufs.h"
35 /*========================================================*/
36 /* Private macros and constants. */
37 /*========================================================*/
39 /*========================================================*/
41 /*========================================================*/
43 /*===========================================*/
45 /*===========================================*/
47 /*===========================================*/
48 /* Local function prototypes */
49 /*===========================================*/
51 static add_icons (GtkIconFactory *factory,
52 const gchar *stock_id,
53 const guchar *inline_24,
54 const guchar *inline_16);
56 static add_button_icon (GtkIconFactory *factory,
57 const gchar *stock_id,
58 const guchar *inline_24);
61 /****************************************************************************/
62 /* Initialize our stock icons. */
63 /****************************************************************************/
67 GtkIconFactory *factory;
69 static GtkStockItem items[] = {
70 { GL_STOCK_ARROW, N_("_Select Mode"), 0, 0, NULL },
71 { GL_STOCK_TEXT, N_("_Text"), 0, 0, NULL },
72 { GL_STOCK_LINE, N_("_Line"), 0, 0, NULL },
73 { GL_STOCK_BOX, N_("_Box"), 0, 0, NULL },
74 { GL_STOCK_ELLIPSE, N_("_Ellipse"), 0, 0, NULL },
75 { GL_STOCK_IMAGE, N_("_Image"), 0, 0, NULL },
76 { GL_STOCK_BARCODE, N_("Bar_code"), 0, 0, NULL },
77 { GL_STOCK_MERGE, N_("_Merge Properties"), 0, 0, NULL },
78 { GL_STOCK_PROPERTIES, N_("Object _Properties"), 0, 0, NULL },
79 { GL_STOCK_ORDER_TOP, N_("Bring to _Front"), 0, 0, NULL },
80 { GL_STOCK_ORDER_BOTTOM, N_("Send to _Back"), 0, 0, NULL },
81 { GL_STOCK_ROTATE_LEFT, N_("Rotate _Left"), 0, 0, NULL },
82 { GL_STOCK_ROTATE_RIGHT, N_("Rotate _Right"), 0, 0, NULL },
83 { GL_STOCK_FLIP_HORIZ, N_("Flip _Horizontally"), 0, 0, NULL },
84 { GL_STOCK_FLIP_VERT, N_("Flip _Vertically"), 0, 0, NULL },
85 { GL_STOCK_ALIGN_LEFT, N_("_Lefts"), 0, 0, NULL },
86 { GL_STOCK_ALIGN_RIGHT, N_("_Rights"), 0, 0, NULL },
87 { GL_STOCK_ALIGN_HCENTER, N_("_Centers"), 0, 0, NULL },
88 { GL_STOCK_ALIGN_TOP, N_("_Tops"), 0, 0, NULL },
89 { GL_STOCK_ALIGN_BOTTOM, N_("Bottoms"), 0, 0, NULL },
90 { GL_STOCK_ALIGN_VCENTER, N_("Centers"), 0, 0, NULL },
91 { GL_STOCK_CENTER_HORIZ, N_("Label Ce_nter"), 0, 0, NULL },
92 { GL_STOCK_CENTER_VERT, N_("Label Ce_nter"), 0, 0, NULL },
93 { GL_STOCK_BUCKET_FILL, N_("Fill color"), 0, 0, NULL },
94 { GL_STOCK_PENCIL, N_("Line color"), 0, 0, NULL },
95 { GL_STOCK_HCHAIN, N_("Linked"), 0, 0, NULL },
96 { GL_STOCK_HCHAIN_BROKEN, N_("Not Linked"), 0, 0, NULL },
97 { GL_STOCK_VCHAIN, N_("Linked"), 0, 0, NULL },
98 { GL_STOCK_VCHAIN_BROKEN, N_("Not Linked"), 0, 0, NULL },
101 gtk_stock_add (items, G_N_ELEMENTS (items));
103 factory = gtk_icon_factory_new ();
104 gtk_icon_factory_add_default (factory);
106 add_icons (factory, GL_STOCK_ARROW, stock_arrow_24, stock_arrow_16);
107 add_icons (factory, GL_STOCK_TEXT, stock_text_24, stock_text_16);
108 add_icons (factory, GL_STOCK_LINE, stock_line_24, stock_line_16);
109 add_icons (factory, GL_STOCK_BOX, stock_box_24, stock_box_16);
110 add_icons (factory, GL_STOCK_ELLIPSE, stock_ellipse_24, stock_ellipse_16);
111 add_icons (factory, GL_STOCK_IMAGE, stock_image_24, stock_image_16);
112 add_icons (factory, GL_STOCK_BARCODE, stock_barcode_24, stock_barcode_16);
113 add_icons (factory, GL_STOCK_MERGE, stock_merge_24, stock_merge_16);
115 add_icons (factory, GL_STOCK_PROPERTIES,
117 stock_properties_16);
119 add_icons (factory, GL_STOCK_ORDER_TOP, NULL, stock_order_top_16);
120 add_icons (factory, GL_STOCK_ORDER_BOTTOM, NULL, stock_order_bottom_16);
121 add_icons (factory, GL_STOCK_ROTATE_LEFT, NULL, stock_rotate_left_16);
122 add_icons (factory, GL_STOCK_ROTATE_RIGHT, NULL, stock_rotate_right_16);
123 add_icons (factory, GL_STOCK_FLIP_HORIZ, NULL, stock_flip_horiz_16);
124 add_icons (factory, GL_STOCK_FLIP_VERT, NULL, stock_flip_vert_16);
125 add_icons (factory, GL_STOCK_ALIGN_LEFT, NULL, stock_align_left_16);
126 add_icons (factory, GL_STOCK_ALIGN_RIGHT, NULL, stock_align_right_16);
127 add_icons (factory, GL_STOCK_ALIGN_HCENTER, NULL, stock_align_hcenter_16);
128 add_icons (factory, GL_STOCK_ALIGN_TOP, NULL, stock_align_top_16);
129 add_icons (factory, GL_STOCK_ALIGN_BOTTOM, NULL, stock_align_bottom_16);
130 add_icons (factory, GL_STOCK_ALIGN_VCENTER, NULL, stock_align_vcenter_16);
131 add_icons (factory, GL_STOCK_CENTER_HORIZ, NULL, stock_center_horiz_16);
132 add_icons (factory, GL_STOCK_CENTER_VERT, NULL, stock_center_vert_16);
134 add_icons (factory, GL_STOCK_BUCKET_FILL, stock_bucket_fill_24, stock_bucket_fill_16);
135 add_icons (factory, GL_STOCK_PENCIL, stock_pencil_24, stock_pencil_16);
137 add_button_icon (factory, GL_STOCK_HCHAIN, stock_hchain_24);
138 add_button_icon (factory, GL_STOCK_HCHAIN_BROKEN, stock_hchain_broken_24);
139 add_button_icon (factory, GL_STOCK_VCHAIN, stock_vchain_24);
140 add_button_icon (factory, GL_STOCK_VCHAIN_BROKEN, stock_vchain_broken_24);
142 g_object_unref (G_OBJECT(factory));
145 /*--------------------------------------------------------------------------*/
146 /* PRIVATE. Unpack and associate given icons with stock_id. */
147 /*--------------------------------------------------------------------------*/
148 static add_icons (GtkIconFactory *factory,
149 const gchar *stock_id,
150 const guchar *inline_24,
151 const guchar *inline_16)
154 GtkIconSet *icon_set;
155 GtkIconSource *icon_source;
157 if ( inline_24 != NULL ) {
158 /* Create icon set with default image */
159 pixbuf = gdk_pixbuf_new_from_inline (-1, inline_24, FALSE, NULL);
160 icon_set = gtk_icon_set_new_from_pixbuf (pixbuf);
161 g_object_unref (G_OBJECT(pixbuf));
163 /* Create an empty icon set */
164 icon_set = gtk_icon_set_new ();
167 if ( inline_16 != NULL ) {
168 /* Add 16x16 icon for menus to icon set */
169 icon_source = gtk_icon_source_new ();
170 pixbuf = gdk_pixbuf_new_from_inline (-1, inline_16,
172 gtk_icon_source_set_pixbuf (icon_source, pixbuf);
173 g_object_unref (G_OBJECT(pixbuf));
174 gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
175 gtk_icon_source_set_size (icon_source, GTK_ICON_SIZE_MENU);
176 gtk_icon_set_add_source (icon_set, icon_source);
177 g_free (icon_source);
180 /* Now associate icon set with stock id */
181 gtk_icon_factory_add (factory, stock_id, icon_set);
182 gtk_icon_set_unref (icon_set);
185 /*--------------------------------------------------------------------------*/
186 /* PRIVATE. Unpack and associate given button icon with stock_id. */
187 /*--------------------------------------------------------------------------*/
188 static add_button_icon (GtkIconFactory *factory,
189 const gchar *stock_id,
190 const guchar *inline_24)
192 GtkIconSet *icon_set;
194 GtkIconSource *icon_source;
196 icon_set = gtk_icon_set_new ();
198 icon_source = gtk_icon_source_new ();
199 pixbuf = gdk_pixbuf_new_from_inline (-1, inline_24, FALSE, NULL);
200 gtk_icon_source_set_pixbuf (icon_source, pixbuf);
201 g_object_unref (G_OBJECT(pixbuf));
202 gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
203 gtk_icon_source_set_size (icon_source, GTK_ICON_SIZE_BUTTON);
204 gtk_icon_set_add_source (icon_set, icon_source);
205 g_free (icon_source);
207 /* Now associate icon set with stock id */
208 gtk_icon_factory_add (factory, stock_id, icon_set);
209 gtk_icon_set_unref (icon_set);