Commit 825ada0c63edf09cd9c773518a35cec0db9da81d
1 parent
22723d84
Exists in
master
and in
2 other branches
Implementing use of symbolic icons in toolbar.
Showing
9 changed files
with
73 additions
and
21 deletions
Show diff stats
schemas/linux/window.gschema.xml.in
@@ -86,14 +86,14 @@ | @@ -86,14 +86,14 @@ | ||
86 | <description></description> | 86 | <description></description> |
87 | </key> | 87 | </key> |
88 | 88 | ||
89 | - <key name="toolbar-icon-symbolic" type="b"> | ||
90 | - <default>false</default> | 89 | + <key name="toolbar-icon-type" type="i"> |
90 | + <default>0</default> | ||
91 | <summary>Use symbolic icons on toolbar</summary> | 91 | <summary>Use symbolic icons on toolbar</summary> |
92 | <description></description> | 92 | <description></description> |
93 | </key> | 93 | </key> |
94 | 94 | ||
95 | - <key name="header-icon-symbolic" type="b"> | ||
96 | - <default>false</default> | 95 | + <key name="header-icon-type" type="i"> |
96 | + <default>0</default> | ||
97 | <summary>Use symbolic icons on title bar</summary> | 97 | <summary>Use symbolic icons on title bar</summary> |
98 | <description></description> | 98 | <description></description> |
99 | </key> | 99 | </key> |
schemas/windows/window.gschema.xml.in
@@ -86,14 +86,14 @@ | @@ -86,14 +86,14 @@ | ||
86 | <description></description> | 86 | <description></description> |
87 | </key> | 87 | </key> |
88 | 88 | ||
89 | - <key name="toolbar-icon-symbolic" type="b"> | ||
90 | - <default>false</default> | 89 | + <key name="toolbar-icon-type" type="i"> |
90 | + <default>0</default> | ||
91 | <summary>Use symbolic icons on toolbar</summary> | 91 | <summary>Use symbolic icons on toolbar</summary> |
92 | <description></description> | 92 | <description></description> |
93 | </key> | 93 | </key> |
94 | 94 | ||
95 | - <key name="header-icon-symbolic" type="b"> | ||
96 | - <default>false</default> | 95 | + <key name="header-icon-type" type="i"> |
96 | + <default>0</default> | ||
97 | <summary>Use symbolic icons on title bar</summary> | 97 | <summary>Use symbolic icons on title bar</summary> |
98 | <description></description> | 98 | <description></description> |
99 | </key> | 99 | </key> |
src/include/pw3270/actions.h
@@ -121,7 +121,7 @@ | @@ -121,7 +121,7 @@ | ||
121 | GdkPixbuf * g_action_get_pixbuf(GAction *action, GtkIconSize icon_size, GtkIconLookupFlags flags); | 121 | GdkPixbuf * g_action_get_pixbuf(GAction *action, GtkIconSize icon_size, GtkIconLookupFlags flags); |
122 | 122 | ||
123 | GtkWidget * gtk_button_new_from_action(GAction *action, GtkIconSize icon_size); | 123 | GtkWidget * gtk_button_new_from_action(GAction *action, GtkIconSize icon_size); |
124 | - GtkToolItem * gtk_tool_button_new_from_action(GAction *action, GtkIconSize icon_size); | 124 | + GtkToolItem * gtk_tool_button_new_from_action(GAction *action, GtkIconSize icon_size, gboolean symbolic); |
125 | 125 | ||
126 | G_END_DECLS | 126 | G_END_DECLS |
127 | 127 |
src/include/pw3270/toolbar.h
@@ -66,9 +66,11 @@ | @@ -66,9 +66,11 @@ | ||
66 | 66 | ||
67 | void pw3270_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); | 67 | void pw3270_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); |
68 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size); | 68 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size); |
69 | + void pw3270_toolbar_set_icon_type(GtkToolbar *toolbar, gint icon_type); | ||
69 | 70 | ||
70 | GtkToolbarStyle pw3270_toolbar_get_style(GtkToolbar *toolbar); | 71 | GtkToolbarStyle pw3270_toolbar_get_style(GtkToolbar *toolbar); |
71 | GtkIconSize pw3270_toolbar_get_icon_size(GtkToolbar *toolbar); | 72 | GtkIconSize pw3270_toolbar_get_icon_size(GtkToolbar *toolbar); |
73 | + gint pw3270_toolbar_get_icon_type(GtkToolbar *toolbar); | ||
72 | 74 | ||
73 | G_END_DECLS | 75 | G_END_DECLS |
74 | 76 |
src/objects/actions/button.c
@@ -62,7 +62,7 @@ | @@ -62,7 +62,7 @@ | ||
62 | return NULL; | 62 | return NULL; |
63 | } | 63 | } |
64 | 64 | ||
65 | - GtkToolItem * gtk_tool_button_new_from_action(GAction *action, GtkIconSize icon_size) { | 65 | + GtkToolItem * gtk_tool_button_new_from_action(GAction *action, GtkIconSize icon_size, gboolean symbolic) { |
66 | 66 | ||
67 | if(!action) | 67 | if(!action) |
68 | return NULL; | 68 | return NULL; |
@@ -75,14 +75,18 @@ | @@ -75,14 +75,18 @@ | ||
75 | } | 75 | } |
76 | 76 | ||
77 | g_autofree gchar * icon_name = g_action_get_icon_name(action); | 77 | g_autofree gchar * icon_name = g_action_get_icon_name(action); |
78 | -// debug("%s(%s).icon_name=%s",__FUNCTION__,g_action_get_name(action),icon_name); | ||
79 | 78 | ||
80 | if(icon_name) { | 79 | if(icon_name) { |
81 | 80 | ||
82 | // Has icon name | 81 | // Has icon name |
83 | GtkToolItem * item = gtk_tool_button_new(NULL,label); | 82 | GtkToolItem * item = gtk_tool_button_new(NULL,label); |
84 | 83 | ||
85 | - gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item),icon_name); | 84 | + if(symbolic && !strstr(icon_name,"-symbolic")) { |
85 | + g_autofree gchar * symbolic_name = g_strconcat(icon_name,"-symbolic",NULL); | ||
86 | + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item),symbolic_name); | ||
87 | + } else { | ||
88 | + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item),icon_name); | ||
89 | + } | ||
86 | 90 | ||
87 | if(tooltip) | 91 | if(tooltip) |
88 | gtk_widget_set_tooltip_markup(GTK_WIDGET(item),tooltip); | 92 | gtk_widget_set_tooltip_markup(GTK_WIDGET(item),tooltip); |
src/objects/toolbar/actions.c
@@ -68,7 +68,6 @@ | @@ -68,7 +68,6 @@ | ||
68 | 68 | ||
69 | if(ptr) { | 69 | if(ptr) { |
70 | action = g_action_map_lookup_action(G_ACTION_MAP(window), ptr+1); | 70 | action = g_action_map_lookup_action(G_ACTION_MAP(window), ptr+1); |
71 | - debug("action(%s)=%p",ptr+1,action); | ||
72 | } | 71 | } |
73 | 72 | ||
74 | } | 73 | } |
@@ -77,7 +76,11 @@ | @@ -77,7 +76,11 @@ | ||
77 | 76 | ||
78 | if(action) { | 77 | if(action) { |
79 | debug("Creating button \"%s\" from action \"%s\"",name,g_action_get_name(G_ACTION(action))); | 78 | debug("Creating button \"%s\" from action \"%s\"",name,g_action_get_name(G_ACTION(action))); |
80 | - item = gtk_tool_button_new_from_action(action,GTK_ICON_SIZE_LARGE_TOOLBAR); | 79 | + item = gtk_tool_button_new_from_action( |
80 | + action, | ||
81 | + GTK_ICON_SIZE_LARGE_TOOLBAR, | ||
82 | + pw3270_toolbar_get_icon_type(GTK_TOOLBAR(toolbar)) == 1 | ||
83 | + ); | ||
81 | } | 84 | } |
82 | 85 | ||
83 | if(item) { | 86 | if(item) { |
src/objects/toolbar/private.h
@@ -37,6 +37,9 @@ | @@ -37,6 +37,9 @@ | ||
37 | #define GETTEXT_PACKAGE PACKAGE_NAME | 37 | #define GETTEXT_PACKAGE PACKAGE_NAME |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | + /* not really I18N-related, but also a string marker macro */ | ||
41 | + #define I_(string) g_intern_static_string (string) | ||
42 | + | ||
40 | #include <libintl.h> | 43 | #include <libintl.h> |
41 | #include <glib/gi18n.h> | 44 | #include <glib/gi18n.h> |
42 | #include <gtk/gtk.h> | 45 | #include <gtk/gtk.h> |
src/objects/toolbar/toolbar.c
@@ -90,12 +90,14 @@ | @@ -90,12 +90,14 @@ | ||
90 | PROP_NONE, | 90 | PROP_NONE, |
91 | PROP_ACTION_NAMES, | 91 | PROP_ACTION_NAMES, |
92 | PROP_ICON_SIZE, | 92 | PROP_ICON_SIZE, |
93 | + PROP_ICON_TYPE, | ||
93 | PROP_STYLE | 94 | PROP_STYLE |
94 | }; | 95 | }; |
95 | 96 | ||
96 | struct _pw3270ToolBar { | 97 | struct _pw3270ToolBar { |
97 | GtkToolbar parent; | 98 | GtkToolbar parent; |
98 | GtkToolbarStyle style; | 99 | GtkToolbarStyle style; |
100 | + int icon_type; | ||
99 | 101 | ||
100 | /// @brief Popup Menu | 102 | /// @brief Popup Menu |
101 | struct { | 103 | struct { |
@@ -131,9 +133,9 @@ | @@ -131,9 +133,9 @@ | ||
131 | object_class, | 133 | object_class, |
132 | PROP_ACTION_NAMES, | 134 | PROP_ACTION_NAMES, |
133 | g_param_spec_string ( | 135 | g_param_spec_string ( |
134 | - "action-names", | ||
135 | - N_("Action Names"), | ||
136 | - N_("The name of the actions in the toolbar"), | 136 | + I_("action-names"), |
137 | + "Action Names", | ||
138 | + _("The name of the actions in the toolbar"), | ||
137 | NULL, | 139 | NULL, |
138 | G_PARAM_READABLE|G_PARAM_WRITABLE) | 140 | G_PARAM_READABLE|G_PARAM_WRITABLE) |
139 | ); | 141 | ); |
@@ -142,8 +144,8 @@ | @@ -142,8 +144,8 @@ | ||
142 | object_class, | 144 | object_class, |
143 | PROP_ICON_SIZE, | 145 | PROP_ICON_SIZE, |
144 | g_param_spec_int( | 146 | g_param_spec_int( |
145 | - "icon-size", | ||
146 | - "icon-size", | 147 | + I_("icon-size"), |
148 | + "icon size", | ||
147 | _("The toolbar icon size"), | 149 | _("The toolbar icon size"), |
148 | INT_MIN, | 150 | INT_MIN, |
149 | INT_MAX, | 151 | INT_MAX, |
@@ -155,7 +157,7 @@ | @@ -155,7 +157,7 @@ | ||
155 | object_class, | 157 | object_class, |
156 | PROP_STYLE, | 158 | PROP_STYLE, |
157 | g_param_spec_int( | 159 | g_param_spec_int( |
158 | - "style", | 160 | + I_("style"), |
159 | "style", | 161 | "style", |
160 | _("The toolbar style"), | 162 | _("The toolbar style"), |
161 | INT_MIN, | 163 | INT_MIN, |
@@ -164,6 +166,19 @@ | @@ -164,6 +166,19 @@ | ||
164 | G_PARAM_READABLE|G_PARAM_WRITABLE) | 166 | G_PARAM_READABLE|G_PARAM_WRITABLE) |
165 | ); | 167 | ); |
166 | 168 | ||
169 | + g_object_class_install_property( | ||
170 | + object_class, | ||
171 | + PROP_ICON_TYPE, | ||
172 | + g_param_spec_int( | ||
173 | + I_("icon-type"), | ||
174 | + I_("icon-type"), | ||
175 | + _("The toolbar icon type"), | ||
176 | + 0, | ||
177 | + 1, | ||
178 | + 0, | ||
179 | + G_PARAM_READABLE|G_PARAM_WRITABLE) | ||
180 | + ); | ||
181 | + | ||
167 | } | 182 | } |
168 | 183 | ||
169 | void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { | 184 | void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { |
@@ -181,6 +196,10 @@ | @@ -181,6 +196,10 @@ | ||
181 | g_value_set_int(value,pw3270_toolbar_get_style(GTK_TOOLBAR(object))); | 196 | g_value_set_int(value,pw3270_toolbar_get_style(GTK_TOOLBAR(object))); |
182 | break; | 197 | break; |
183 | 198 | ||
199 | + case PROP_ICON_TYPE: | ||
200 | + g_value_set_int(value,pw3270_toolbar_get_icon_type(GTK_TOOLBAR(object))); | ||
201 | + break; | ||
202 | + | ||
184 | default: | 203 | default: |
185 | g_assert_not_reached (); | 204 | g_assert_not_reached (); |
186 | } | 205 | } |
@@ -203,13 +222,16 @@ | @@ -203,13 +222,16 @@ | ||
203 | pw3270_toolbar_set_style(GTK_TOOLBAR(object),(GtkToolbarStyle) g_value_get_int(value)); | 222 | pw3270_toolbar_set_style(GTK_TOOLBAR(object),(GtkToolbarStyle) g_value_get_int(value)); |
204 | break; | 223 | break; |
205 | 224 | ||
225 | + case PROP_ICON_TYPE: | ||
226 | + pw3270_toolbar_set_icon_type(GTK_TOOLBAR(object),(GtkToolbarStyle) g_value_get_int(value)); | ||
227 | + break; | ||
228 | + | ||
206 | default: | 229 | default: |
207 | g_assert_not_reached (); | 230 | g_assert_not_reached (); |
208 | } | 231 | } |
209 | 232 | ||
210 | } | 233 | } |
211 | 234 | ||
212 | - | ||
213 | static void detacher(GtkWidget *attach_widget, GtkMenu G_GNUC_UNUSED(*menu)) { | 235 | static void detacher(GtkWidget *attach_widget, GtkMenu G_GNUC_UNUSED(*menu)) { |
214 | 236 | ||
215 | pw3270ToolBar * toolbar = PW3270_TOOLBAR(attach_widget); | 237 | pw3270ToolBar * toolbar = PW3270_TOOLBAR(attach_widget); |
@@ -379,6 +401,15 @@ | @@ -379,6 +401,15 @@ | ||
379 | return PW3270_TOOLBAR(toolbar)->style; | 401 | return PW3270_TOOLBAR(toolbar)->style; |
380 | } | 402 | } |
381 | 403 | ||
404 | + gint pw3270_toolbar_get_icon_type(GtkToolbar *toolbar) { | ||
405 | + return PW3270_TOOLBAR(toolbar)->icon_type; | ||
406 | + } | ||
407 | + | ||
408 | + void pw3270_toolbar_set_icon_type(GtkToolbar *toolbar, gint icon_type) { | ||
409 | + PW3270_TOOLBAR(toolbar)->icon_type = icon_type; | ||
410 | + g_object_notify(G_OBJECT(toolbar), "icon-type"); | ||
411 | + } | ||
412 | + | ||
382 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size) { | 413 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size) { |
383 | 414 | ||
384 | debug("%s(%d)",__FUNCTION__,(int) icon_size); | 415 | debug("%s(%d)",__FUNCTION__,(int) icon_size); |
src/objects/window/window.c
@@ -284,6 +284,7 @@ | @@ -284,6 +284,7 @@ | ||
284 | } | 284 | } |
285 | 285 | ||
286 | widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new()); | 286 | widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new()); |
287 | + | ||
287 | gtk_box_pack_start(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); | 288 | gtk_box_pack_start(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); |
288 | 289 | ||
289 | // | 290 | // |
@@ -578,6 +579,14 @@ | @@ -578,6 +579,14 @@ | ||
578 | 579 | ||
579 | g_settings_bind( | 580 | g_settings_bind( |
580 | settings, | 581 | settings, |
582 | + "toolbar-icon-type", | ||
583 | + window->toolbar, | ||
584 | + "icon-type", | ||
585 | + G_SETTINGS_BIND_DEFAULT | ||
586 | + ); | ||
587 | + | ||
588 | + g_settings_bind( | ||
589 | + settings, | ||
581 | "toolbar-action-names", | 590 | "toolbar-action-names", |
582 | window->toolbar, | 591 | window->toolbar, |
583 | "action-names", | 592 | "action-names", |