Commit 5421303d726094d50c7c648035ecaea1f05e541e
1 parent
9306acb3
Exists in
master
and in
4 other branches
Toolbar action list is now set from gsettings.
Showing
5 changed files
with
77 additions
and
15 deletions
Show diff stats
schemas/application.gschema.xml.in
@@ -68,6 +68,12 @@ | @@ -68,6 +68,12 @@ | ||
68 | <description></description> | 68 | <description></description> |
69 | </key> | 69 | </key> |
70 | 70 | ||
71 | + <key name="toolbar-action-names" type="s"> | ||
72 | + <default>'win.copy,win.paste,win.select-all,separator,win.connect,win.disconnect,separator,win.session.properties,win.file.transfer,win.print,app.quit'</default> | ||
73 | + <summary>The toolbar action list</summary> | ||
74 | + <description></description> | ||
75 | + </key> | ||
76 | + | ||
71 | </schema> | 77 | </schema> |
72 | 78 | ||
73 | </schemalist> | 79 | </schemalist> |
src/include/pw3270/toolbar.h
@@ -60,6 +60,8 @@ | @@ -60,6 +60,8 @@ | ||
60 | GtkWidget * pw3270_toolbar_insert_action(GtkWidget *toolbar, const gchar *name, gint pos); | 60 | GtkWidget * pw3270_toolbar_insert_action(GtkWidget *toolbar, const gchar *name, gint pos); |
61 | 61 | ||
62 | void pw3270_toolbar_set_actions(GtkWidget *toolbar, const gchar *action_names); | 62 | void pw3270_toolbar_set_actions(GtkWidget *toolbar, const gchar *action_names); |
63 | + gchar * pw3270_toolbar_get_actions(GtkWidget *toolbar); | ||
64 | + | ||
63 | 65 | ||
64 | void pw3270_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); | 66 | void pw3270_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); |
65 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size); | 67 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size); |
src/objects/application/application.c
@@ -155,16 +155,20 @@ | @@ -155,16 +155,20 @@ | ||
155 | "br.com.bb." PACKAGE_NAME, | 155 | "br.com.bb." PACKAGE_NAME, |
156 | TRUE); | 156 | TRUE); |
157 | 157 | ||
158 | - g_settings_schema_source_unref(source); | 158 | + debug("schema %s=%p","br.com.bb." PACKAGE_NAME,schema); |
159 | 159 | ||
160 | app->settings = g_settings_new_full(schema, NULL, path); | 160 | app->settings = g_settings_new_full(schema, NULL, path); |
161 | 161 | ||
162 | + g_settings_schema_source_unref(source); | ||
163 | + | ||
162 | #else | 164 | #else |
163 | 165 | ||
164 | app->settings = g_settings_new_with_path("br.com.bb." PACKAGE_NAME, path); | 166 | app->settings = g_settings_new_with_path("br.com.bb." PACKAGE_NAME, path); |
165 | 167 | ||
166 | #endif // DEBUG | 168 | #endif // DEBUG |
167 | 169 | ||
170 | + debug("app->settings=%p",app->settings); | ||
171 | + | ||
168 | } | 172 | } |
169 | 173 | ||
170 | // Bind properties | 174 | // Bind properties |
src/objects/toolbar/toolbar.c
@@ -35,6 +35,8 @@ | @@ -35,6 +35,8 @@ | ||
35 | static gboolean popup_context_menu(GtkToolbar *toolbar, gint x, gint y, gint button_number); | 35 | static gboolean popup_context_menu(GtkToolbar *toolbar, gint x, gint y, gint button_number); |
36 | static void finalize(GObject *object); | 36 | static void finalize(GObject *object); |
37 | static void pw3270_toolbar_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); | 37 | static void pw3270_toolbar_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); |
38 | + static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); | ||
39 | + static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); | ||
38 | 40 | ||
39 | static const struct icon_size { | 41 | static const struct icon_size { |
40 | const gchar * label; | 42 | const gchar * label; |
@@ -82,8 +84,12 @@ | @@ -82,8 +84,12 @@ | ||
82 | .label = N_( "Icons & text" ), | 84 | .label = N_( "Icons & text" ), |
83 | .style = GTK_TOOLBAR_BOTH | 85 | .style = GTK_TOOLBAR_BOTH |
84 | }, | 86 | }, |
85 | -}; | 87 | + }; |
86 | 88 | ||
89 | + enum { | ||
90 | + PROP_NONE, | ||
91 | + PROP_ACTION_NAMES, | ||
92 | + }; | ||
87 | 93 | ||
88 | 94 | ||
89 | struct _pw3270ToolBar { | 95 | struct _pw3270ToolBar { |
@@ -109,14 +115,57 @@ | @@ -109,14 +115,57 @@ | ||
109 | 115 | ||
110 | static void pw3270ToolBar_class_init(pw3270ToolBarClass *klass) { | 116 | static void pw3270ToolBar_class_init(pw3270ToolBarClass *klass) { |
111 | 117 | ||
118 | + GObjectClass *object_class = G_OBJECT_CLASS(klass); | ||
112 | GtkToolbarClass * toolbar = GTK_TOOLBAR_CLASS(klass); | 119 | GtkToolbarClass * toolbar = GTK_TOOLBAR_CLASS(klass); |
113 | 120 | ||
114 | toolbar->popup_context_menu = popup_context_menu; | 121 | toolbar->popup_context_menu = popup_context_menu; |
115 | 122 | ||
116 | G_OBJECT_CLASS(klass)->finalize = finalize; | 123 | G_OBJECT_CLASS(klass)->finalize = finalize; |
117 | 124 | ||
125 | + object_class->set_property = set_property; | ||
126 | + object_class->get_property = get_property; | ||
127 | + | ||
128 | + g_object_class_install_property( | ||
129 | + object_class, | ||
130 | + PROP_ACTION_NAMES, | ||
131 | + g_param_spec_string ("action-names", | ||
132 | + N_("Action Names"), | ||
133 | + N_("The name of the actions in the toolbar"), | ||
134 | + NULL, | ||
135 | + G_PARAM_READABLE|G_PARAM_WRITABLE) | ||
136 | + ); | ||
137 | + | ||
138 | + | ||
118 | } | 139 | } |
119 | 140 | ||
141 | + void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { | ||
142 | + | ||
143 | + switch (prop_id) { | ||
144 | + case PROP_ACTION_NAMES: | ||
145 | + g_value_take_string(value,pw3270_toolbar_get_actions(GTK_WIDGET(object))); | ||
146 | + break; | ||
147 | + | ||
148 | + default: | ||
149 | + g_assert_not_reached (); | ||
150 | + } | ||
151 | + | ||
152 | + } | ||
153 | + | ||
154 | + void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { | ||
155 | + | ||
156 | + switch (prop_id) | ||
157 | + { | ||
158 | + case PROP_ACTION_NAMES: | ||
159 | + pw3270_toolbar_set_actions(GTK_WIDGET(object), g_value_get_string(value)); | ||
160 | + break; | ||
161 | + | ||
162 | + default: | ||
163 | + g_assert_not_reached (); | ||
164 | + } | ||
165 | + | ||
166 | + } | ||
167 | + | ||
168 | + | ||
120 | static void detacher(GtkWidget *attach_widget, GtkMenu G_GNUC_UNUSED(*menu)) { | 169 | static void detacher(GtkWidget *attach_widget, GtkMenu G_GNUC_UNUSED(*menu)) { |
121 | 170 | ||
122 | pw3270ToolBar * toolbar = PW3270_TOOLBAR(attach_widget); | 171 | pw3270ToolBar * toolbar = PW3270_TOOLBAR(attach_widget); |
@@ -297,17 +346,6 @@ | @@ -297,17 +346,6 @@ | ||
297 | 346 | ||
298 | } | 347 | } |
299 | 348 | ||
300 | - /* | ||
301 | - static void update_child(GtkToolButton *item, GtkWidget *toolbar) { | ||
302 | - | ||
303 | - if(!GTK_IS_TOOL_BUTTON(item)) | ||
304 | - return; | ||
305 | - | ||
306 | - debug("[%s]", gtk_tool_button_get_icon_name(item)); | ||
307 | - | ||
308 | - } | ||
309 | - */ | ||
310 | - | ||
311 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size) { | 349 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size) { |
312 | 350 | ||
313 | debug("%s(%d)",__FUNCTION__,(int) icon_size); | 351 | debug("%s(%d)",__FUNCTION__,(int) icon_size); |
src/objects/window/window.c
@@ -154,10 +154,12 @@ | @@ -154,10 +154,12 @@ | ||
154 | 154 | ||
155 | { | 155 | { |
156 | 156 | ||
157 | + /* | ||
157 | pw3270_toolbar_set_actions( | 158 | pw3270_toolbar_set_actions( |
158 | GTK_WIDGET(widget->toolbar), | 159 | GTK_WIDGET(widget->toolbar), |
159 | "win.copy,win.paste,win.select-all,separator,win.connect,win.disconnect,separator,win.session.properties,win.file.transfer,win.print,app.quit" | 160 | "win.copy,win.paste,win.select-all,separator,win.connect,win.disconnect,separator,win.session.properties,win.file.transfer,win.print,app.quit" |
160 | ); | 161 | ); |
162 | + */ | ||
161 | 163 | ||
162 | g_action_map_add_action( | 164 | g_action_map_add_action( |
163 | G_ACTION_MAP(widget), | 165 | G_ACTION_MAP(widget), |
@@ -169,8 +171,8 @@ | @@ -169,8 +171,8 @@ | ||
169 | G_ACTION(g_property_action_new("menubar", widget, "show-menubar")) | 171 | G_ACTION(g_property_action_new("menubar", widget, "show-menubar")) |
170 | ); | 172 | ); |
171 | 173 | ||
172 | - g_autofree gchar * action_names = pw3270_toolbar_get_actions(GTK_WIDGET(widget->toolbar)); | ||
173 | - debug("[%s]",action_names); | 174 | + //g_autofree gchar * action_names = pw3270_toolbar_get_actions(GTK_WIDGET(widget->toolbar)); |
175 | + //debug("[%s]",action_names); | ||
174 | 176 | ||
175 | } | 177 | } |
176 | 178 | ||
@@ -183,6 +185,8 @@ | @@ -183,6 +185,8 @@ | ||
183 | 185 | ||
184 | g_autoptr(GSettings) settings = pw3270_application_get_settings(G_APPLICATION(application)); | 186 | g_autoptr(GSettings) settings = pw3270_application_get_settings(G_APPLICATION(application)); |
185 | 187 | ||
188 | + debug("*************** settings=%p",settings); | ||
189 | + | ||
186 | g_return_val_if_fail(GTK_IS_APPLICATION(application), NULL); | 190 | g_return_val_if_fail(GTK_IS_APPLICATION(application), NULL); |
187 | pw3270ApplicationWindow * window = | 191 | pw3270ApplicationWindow * window = |
188 | g_object_new( | 192 | g_object_new( |
@@ -276,6 +280,14 @@ | @@ -276,6 +280,14 @@ | ||
276 | G_SETTINGS_BIND_DEFAULT | 280 | G_SETTINGS_BIND_DEFAULT |
277 | ); | 281 | ); |
278 | 282 | ||
283 | + g_settings_bind( | ||
284 | + settings, | ||
285 | + "toolbar-action-names", | ||
286 | + window->toolbar, | ||
287 | + "action-names", | ||
288 | + G_SETTINGS_BIND_DEFAULT | ||
289 | + ); | ||
290 | + | ||
279 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); | 291 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); |
280 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); | 292 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); |
281 | 293 |