Commit 9306acb35298ee66b252826f577fdcb952904776

Authored by Perry Werneck
1 parent 3881b3c9

Adding methods to get/set toolbar action names.

src/include/pw3270/toolbar.h
@@ -59,6 +59,8 @@ @@ -59,6 +59,8 @@
59 GtkWidget * pw3270_toolbar_insert_lib3270_action(GtkWidget *toolbar, const LIB3270_ACTION *action, gint pos); 59 GtkWidget * pw3270_toolbar_insert_lib3270_action(GtkWidget *toolbar, const LIB3270_ACTION *action, gint pos);
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);
  63 +
62 void pw3270_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style); 64 void pw3270_toolbar_set_style(GtkToolbar *toolbar, GtkToolbarStyle style);
63 void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size); 65 void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size);
64 66
src/objects/toolbar/toolbar.c
@@ -336,3 +336,56 @@ @@ -336,3 +336,56 @@
336 // gtk_container_foreach(GTK_CONTAINER(toolbar),(GtkCallback) update_child, toolbar); 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,29 +151,13 @@
151 // 151 //
152 // Setup toolbar 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 g_action_map_add_action( 162 g_action_map_add_action(
179 G_ACTION_MAP(widget), 163 G_ACTION_MAP(widget),
@@ -185,6 +169,9 @@ @@ -185,6 +169,9 @@
185 G_ACTION(g_property_action_new("menubar", widget, "show-menubar")) 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 }