Commit 9306acb35298ee66b252826f577fdcb952904776
1 parent
3881b3c9
Exists in
master
and in
4 other branches
Adding methods to get/set toolbar action names.
Showing
3 changed files
with
63 additions
and
21 deletions
Show diff stats
src/include/pw3270/toolbar.h
| ... | ... | @@ -59,6 +59,8 @@ |
| 59 | 59 | GtkWidget * pw3270_toolbar_insert_lib3270_action(GtkWidget *toolbar, const LIB3270_ACTION *action, gint pos); |
| 60 | 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); | |
| 63 | + | |
| 62 | 64 | void pw3270_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); |
| 63 | 65 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size); |
| 64 | 66 | ... | ... |
src/objects/toolbar/toolbar.c
| ... | ... | @@ -336,3 +336,56 @@ |
| 336 | 336 | // gtk_container_foreach(GTK_CONTAINER(toolbar),(GtkCallback) update_child, toolbar); |
| 337 | 337 | |
| 338 | 338 | } |
| 339 | + | |
| 340 | + void pw3270_toolbar_clear(GtkWidget *toolbar) { | |
| 341 | + | |
| 342 | + GList * children = gtk_container_get_children(GTK_CONTAINER(toolbar)); | |
| 343 | + GList * item; | |
| 344 | + | |
| 345 | + for(item = children;item;item = g_list_next(item)) { | |
| 346 | + gtk_container_remove(GTK_CONTAINER(toolbar),GTK_WIDGET(item->data)); | |
| 347 | + } | |
| 348 | + | |
| 349 | + g_list_free(children); | |
| 350 | + } | |
| 351 | + | |
| 352 | + void pw3270_toolbar_set_actions(GtkWidget *toolbar, const gchar *action_names) { | |
| 353 | + | |
| 354 | + gchar ** actions = g_strsplit(action_names,",",-1); | |
| 355 | + size_t ix; | |
| 356 | + | |
| 357 | + pw3270_toolbar_clear(toolbar); | |
| 358 | + | |
| 359 | + for(ix = 0; actions[ix]; ix++) { | |
| 360 | + pw3270_toolbar_insert_action(toolbar,actions[ix],-1); | |
| 361 | + } | |
| 362 | + | |
| 363 | + g_strfreev(actions); | |
| 364 | + | |
| 365 | + } | |
| 366 | + | |
| 367 | + gchar * pw3270_toolbar_get_actions(GtkWidget *toolbar) { | |
| 368 | + | |
| 369 | + GString * str = g_string_new(""); | |
| 370 | + | |
| 371 | + GList * children = gtk_container_get_children(GTK_CONTAINER(toolbar)); | |
| 372 | + GList * item; | |
| 373 | + | |
| 374 | + for(item = children;item;item = g_list_next(item)) { | |
| 375 | + | |
| 376 | + if(*str->str) | |
| 377 | + g_string_append(str,","); | |
| 378 | + | |
| 379 | + if(GTK_IS_SEPARATOR_TOOL_ITEM(item->data)) { | |
| 380 | + g_string_append(str,"separator"); | |
| 381 | + } else if(GTK_IS_TOOL_BUTTON(item->data)) { | |
| 382 | + g_string_append(str,gtk_actionable_get_action_name(GTK_ACTIONABLE(item->data))); | |
| 383 | + } | |
| 384 | + | |
| 385 | + } | |
| 386 | + | |
| 387 | + g_list_free(children); | |
| 388 | + | |
| 389 | + | |
| 390 | + return g_string_free(str,FALSE); | |
| 391 | + } | ... | ... |
src/objects/window/window.c
| ... | ... | @@ -151,29 +151,13 @@ |
| 151 | 151 | // |
| 152 | 152 | // Setup toolbar |
| 153 | 153 | // |
| 154 | - { | |
| 155 | - static const gchar *actions[] = { | |
| 156 | - | |
| 157 | - "win.copy", | |
| 158 | - "win.paste", | |
| 159 | - "win.select-all", | |
| 160 | - "separator", | |
| 161 | - "win.connect", | |
| 162 | - "win.disconnect", | |
| 163 | - "separator", | |
| 164 | - "win.set.colors", | |
| 165 | - "win.session.properties", | |
| 166 | - "win.file.transfer", | |
| 167 | - "win.print", | |
| 168 | - "app.quit" | |
| 169 | - | |
| 170 | - }; | |
| 171 | 154 | |
| 172 | - size_t ix; | |
| 155 | + { | |
| 173 | 156 | |
| 174 | - for(ix = 0; ix < G_N_ELEMENTS(actions); ix++) { | |
| 175 | - pw3270_toolbar_insert_action(GTK_WIDGET(widget->toolbar),actions[ix],-1); | |
| 176 | - } | |
| 157 | + pw3270_toolbar_set_actions( | |
| 158 | + 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 | + ); | |
| 177 | 161 | |
| 178 | 162 | g_action_map_add_action( |
| 179 | 163 | G_ACTION_MAP(widget), |
| ... | ... | @@ -185,6 +169,9 @@ |
| 185 | 169 | G_ACTION(g_property_action_new("menubar", widget, "show-menubar")) |
| 186 | 170 | ); |
| 187 | 171 | |
| 172 | + g_autofree gchar * action_names = pw3270_toolbar_get_actions(GTK_WIDGET(widget->toolbar)); | |
| 173 | + debug("[%s]",action_names); | |
| 174 | + | |
| 188 | 175 | } |
| 189 | 176 | |
| 190 | 177 | } | ... | ... |