Commit 7b2c2b0308f194e9b6f0bb923daccd5ef8ee1ba4
1 parent
390db0b4
Exists in
master
and in
4 other branches
Implementing toolbar actions edit dialog.
Showing
8 changed files
with
57 additions
and
11 deletions
Show diff stats
src/include/pw3270/actions.h
@@ -264,6 +264,7 @@ | @@ -264,6 +264,7 @@ | ||
264 | void pw3270_action_view_set_actions(GtkWidget *view, Pw3270ActionList *list); | 264 | void pw3270_action_view_set_actions(GtkWidget *view, Pw3270ActionList *list); |
265 | void pw3270_action_view_move_selected(GtkWidget *from, GtkWidget *to); | 265 | void pw3270_action_view_move_selected(GtkWidget *from, GtkWidget *to); |
266 | void pw3270_action_view_append(GtkWidget *widget, const gchar *label, GdkPixbuf *pixbuf, const gchar *action_name, gint flags); | 266 | void pw3270_action_view_append(GtkWidget *widget, const gchar *label, GdkPixbuf *pixbuf, const gchar *action_name, gint flags); |
267 | + gchar * pw3270_action_view_get_action_names(GtkWidget *widget); | ||
267 | 268 | ||
268 | Pw3270ActionList * pw3270_action_list_move_action(Pw3270ActionList *action_list, const gchar *action_name, GtkWidget *view); | 269 | Pw3270ActionList * pw3270_action_list_move_action(Pw3270ActionList *action_list, const gchar *action_name, GtkWidget *view); |
269 | 270 |
src/objects/actions/save.c
@@ -66,6 +66,7 @@ | @@ -66,6 +66,7 @@ | ||
66 | 66 | ||
67 | action->group.id = LIB3270_ACTION_GROUP_ONLINE; | 67 | action->group.id = LIB3270_ACTION_GROUP_ONLINE; |
68 | action->parent.name = "save"; | 68 | action->parent.name = "save"; |
69 | + action->icon_name = "document-save"; | ||
69 | action->label = N_( "_Save" ); | 70 | action->label = N_( "_Save" ); |
70 | action->tooltip = N_( "Save terminal contents." ); | 71 | action->tooltip = N_( "Save terminal contents." ); |
71 | 72 | ||
@@ -81,6 +82,7 @@ | @@ -81,6 +82,7 @@ | ||
81 | 82 | ||
82 | action->group.id = LIB3270_ACTION_GROUP_ONLINE; | 83 | action->group.id = LIB3270_ACTION_GROUP_ONLINE; |
83 | action->parent.name = "save.screen"; | 84 | action->parent.name = "save.screen"; |
85 | + action->icon_name = "document-save"; | ||
84 | action->label = N_( "Save screen" ); | 86 | action->label = N_( "Save screen" ); |
85 | 87 | ||
86 | return G_ACTION(action); | 88 | return G_ACTION(action); |
@@ -95,6 +97,7 @@ | @@ -95,6 +97,7 @@ | ||
95 | 97 | ||
96 | action->group.id = LIB3270_ACTION_GROUP_SELECTION; | 98 | action->group.id = LIB3270_ACTION_GROUP_SELECTION; |
97 | action->parent.name = "save.selected"; | 99 | action->parent.name = "save.selected"; |
100 | + action->icon_name = "document-save"; | ||
98 | action->label = N_( "Save selected" ); | 101 | action->label = N_( "Save selected" ); |
99 | 102 | ||
100 | return G_ACTION(action); | 103 | return G_ACTION(action); |
src/objects/actions/view.c
@@ -171,6 +171,7 @@ | @@ -171,6 +171,7 @@ | ||
171 | &iter, | 171 | &iter, |
172 | COLUMN_PIXBUF, element->pixbuf, | 172 | COLUMN_PIXBUF, element->pixbuf, |
173 | COLUMN_LABEL, (label ? label : g_action_get_name(element->action)), | 173 | COLUMN_LABEL, (label ? label : g_action_get_name(element->action)), |
174 | + COLUMN_ACTION_NAME, element->name, | ||
174 | COLUMN_FLAGS, 3, | 175 | COLUMN_FLAGS, 3, |
175 | -1 | 176 | -1 |
176 | ); | 177 | ); |
@@ -382,5 +383,31 @@ | @@ -382,5 +383,31 @@ | ||
382 | 383 | ||
383 | } | 384 | } |
384 | 385 | ||
386 | + } | ||
387 | + | ||
388 | + gboolean get_action_name(GtkTreeModel *model, GtkTreePath G_GNUC_UNUSED(*path), GtkTreeIter *iter, GString *str) { | ||
389 | + | ||
390 | + GValue value = G_VALUE_INIT; | ||
391 | + gtk_tree_model_get_value(model,iter,COLUMN_ACTION_NAME,&value); | ||
385 | 392 | ||
393 | + if(*str->str) | ||
394 | + g_string_append(str,","); | ||
395 | + | ||
396 | + g_string_append(str,g_value_get_string(&value)); | ||
397 | + | ||
398 | + g_value_unset(&value); | ||
399 | + return FALSE; | ||
386 | } | 400 | } |
401 | + | ||
402 | + gchar * pw3270_action_view_get_action_names(GtkWidget *widget) { | ||
403 | + | ||
404 | + GString *str = g_string_new(""); | ||
405 | + | ||
406 | + gtk_tree_model_foreach( | ||
407 | + gtk_tree_view_get_model(GTK_TREE_VIEW(widget)), | ||
408 | + (GtkTreeModelForeachFunc) get_action_name, | ||
409 | + str ); | ||
410 | + | ||
411 | + return g_string_free(str,FALSE); | ||
412 | + } | ||
413 | + |
src/objects/actions/window.c
@@ -72,10 +72,10 @@ | @@ -72,10 +72,10 @@ | ||
72 | pw3270_action_copy_new(), | 72 | pw3270_action_copy_new(), |
73 | pw3270_action_cut_new(), | 73 | pw3270_action_cut_new(), |
74 | pw3270_action_paste_new(), | 74 | pw3270_action_paste_new(), |
75 | - pw3270_action_save_new(), | ||
76 | 75 | ||
77 | - pw3270_action_save_screen_new(), | ||
78 | - pw3270_action_save_selected_new(), | 76 | +// pw3270_action_save_new(), |
77 | +// pw3270_action_save_screen_new(), | ||
78 | +// pw3270_action_save_selected_new(), | ||
79 | 79 | ||
80 | pw3270_action_print_screen_new(), | 80 | pw3270_action_print_screen_new(), |
81 | pw3270_action_print_selected_new(), | 81 | pw3270_action_print_selected_new(), |
src/objects/application/actions/preferences.c
@@ -40,7 +40,7 @@ | @@ -40,7 +40,7 @@ | ||
40 | GSList * pages; | 40 | GSList * pages; |
41 | } Pw3270SettingsDialog; | 41 | } Pw3270SettingsDialog; |
42 | 42 | ||
43 | - static void on_destroy(GtkWidget *dialog, Pw3270SettingsDialog *settings) { | 43 | + static void on_destroy(GtkWidget G_GNUC_UNUSED(*dialog), Pw3270SettingsDialog *settings) { |
44 | settings->dialog = NULL; | 44 | settings->dialog = NULL; |
45 | g_slist_free_full(settings->pages,g_free); | 45 | g_slist_free_full(settings->pages,g_free); |
46 | g_free(settings); | 46 | g_free(settings); |
@@ -66,7 +66,7 @@ | @@ -66,7 +66,7 @@ | ||
66 | gtk_widget_destroy(GTK_WIDGET(dialog)); | 66 | gtk_widget_destroy(GTK_WIDGET(dialog)); |
67 | } | 67 | } |
68 | 68 | ||
69 | - static void on_page_added(GtkNotebook *notebook, GtkWidget *widget, guint page_num, Pw3270SettingsDialog * settings) { | 69 | + static void on_page_added(GtkNotebook G_GNUC_UNUSED(*notebook), GtkWidget *widget, guint G_GNUC_UNUSED(page_num), Pw3270SettingsDialog G_GNUC_UNUSED(*settings)) { |
70 | 70 | ||
71 | // https://developer.gnome.org/hig/stable/visual-layout.html.en | 71 | // https://developer.gnome.org/hig/stable/visual-layout.html.en |
72 | 72 | ||
@@ -83,6 +83,9 @@ | @@ -83,6 +83,9 @@ | ||
83 | 83 | ||
84 | static void on_switch_page(GtkNotebook G_GNUC_UNUSED(*notebook), GtkWidget *widget, guint G_GNUC_UNUSED(page_num), Pw3270SettingsDialog * settings) | 84 | static void on_switch_page(GtkNotebook G_GNUC_UNUSED(*notebook), GtkWidget *widget, guint G_GNUC_UNUSED(page_num), Pw3270SettingsDialog * settings) |
85 | { | 85 | { |
86 | + | ||
87 | + debug("%s: %p",__FUNCTION__,settings->dialog); | ||
88 | + | ||
86 | if(!settings->dialog) | 89 | if(!settings->dialog) |
87 | return; | 90 | return; |
88 | 91 | ||
@@ -92,7 +95,7 @@ | @@ -92,7 +95,7 @@ | ||
92 | GSList * page; | 95 | GSList * page; |
93 | for(page = settings->pages;page;page = page->next) { | 96 | for(page = settings->pages;page;page = page->next) { |
94 | Pw3270SettingsPage * pg = (Pw3270SettingsPage *) page->data; | 97 | Pw3270SettingsPage * pg = (Pw3270SettingsPage *) page->data; |
95 | - if(pg->widget == pg) { | 98 | + if(pg->widget == widget) { |
96 | if(pg->title) | 99 | if(pg->title) |
97 | gtk_header_bar_set_subtitle(GTK_HEADER_BAR(header_bar),pg->title); | 100 | gtk_header_bar_set_subtitle(GTK_HEADER_BAR(header_bar),pg->title); |
98 | return; | 101 | return; |
src/objects/application/application.c
@@ -315,6 +315,7 @@ | @@ -315,6 +315,7 @@ | ||
315 | const gchar * label; | 315 | const gchar * label; |
316 | const gchar * tooltip; | 316 | const gchar * tooltip; |
317 | const gchar * action_name; | 317 | const gchar * action_name; |
318 | + const gchar * icon_name; | ||
318 | const gchar * property_name; | 319 | const gchar * property_name; |
319 | void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal); | 320 | void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal); |
320 | } conditional_actions[] = { | 321 | } conditional_actions[] = { |
@@ -337,8 +338,9 @@ | @@ -337,8 +338,9 @@ | ||
337 | pw3270SimpleAction * action = PW3270_SIMPLE_ACTION(v3270_conditional_action_new(terminal,conditional_actions[ix].property_name)); | 338 | pw3270SimpleAction * action = PW3270_SIMPLE_ACTION(v3270_conditional_action_new(terminal,conditional_actions[ix].property_name)); |
338 | 339 | ||
339 | action->parent.name = conditional_actions[ix].action_name; | 340 | action->parent.name = conditional_actions[ix].action_name; |
340 | - action->label = conditional_actions[ix].label; | 341 | + action->label = conditional_actions[ix].label; |
341 | action->tooltip = conditional_actions[ix].tooltip; | 342 | action->tooltip = conditional_actions[ix].tooltip; |
343 | + action->icon_name = conditional_actions[ix].icon_name; | ||
342 | PW3270_ACTION(action)->activate = conditional_actions[ix].activate; | 344 | PW3270_ACTION(action)->activate = conditional_actions[ix].activate; |
343 | 345 | ||
344 | g_action_map_add_action( | 346 | g_action_map_add_action( |
src/objects/toolbar/settings.c
@@ -79,8 +79,15 @@ | @@ -79,8 +79,15 @@ | ||
79 | 79 | ||
80 | } | 80 | } |
81 | 81 | ||
82 | - static void apply(Pw3270SettingsPage *pg, GtkApplication *application, GSettings *settings) { | 82 | + static void apply(Pw3270SettingsPage *pg, GtkApplication G_GNUC_UNUSED(*application), GSettings *settings) { |
83 | + | ||
83 | debug("%s",__FUNCTION__); | 84 | debug("%s",__FUNCTION__); |
85 | + | ||
86 | + g_autofree gchar * action_names = pw3270_action_view_get_action_names(((ToolbarSettingsPage *) pg)->views[0]); | ||
87 | + g_settings_set_string(settings,"toolbar-action-names",action_names); | ||
88 | + | ||
89 | + debug("[%s]",action_names); | ||
90 | + | ||
84 | } | 91 | } |
85 | 92 | ||
86 | static void selection_changed(GtkTreeSelection *selection, GtkWidget *button) { | 93 | static void selection_changed(GtkTreeSelection *selection, GtkWidget *button) { |
@@ -107,7 +114,7 @@ | @@ -107,7 +114,7 @@ | ||
107 | page->parent.load = load; | 114 | page->parent.load = load; |
108 | page->parent.apply = apply; | 115 | page->parent.apply = apply; |
109 | page->parent.label = _("Toolbar"); | 116 | page->parent.label = _("Toolbar"); |
110 | - page->parent.title = _("Setup toolbar action elements"); | 117 | + page->parent.title = _("Setup toolbar"); |
111 | 118 | ||
112 | page->parent.widget = gtk_grid_new(); | 119 | page->parent.widget = gtk_grid_new(); |
113 | gtk_grid_set_row_homogeneous(GTK_GRID(page->parent.widget),FALSE); | 120 | gtk_grid_set_row_homogeneous(GTK_GRID(page->parent.widget),FALSE); |
@@ -120,6 +127,9 @@ | @@ -120,6 +127,9 @@ | ||
120 | 127 | ||
121 | for(ix = 0; ix < G_N_ELEMENTS(page->views); ix++) { | 128 | for(ix = 0; ix < G_N_ELEMENTS(page->views); ix++) { |
122 | 129 | ||
130 | + GtkWidget * label = gtk_label_new(gettext(labels[ix])); | ||
131 | + gtk_label_set_xalign(GTK_LABEL(label),0); | ||
132 | + | ||
123 | page->views[ix] = pw3270_action_view_new(); | 133 | page->views[ix] = pw3270_action_view_new(); |
124 | 134 | ||
125 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(page->views[ix])); | 135 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(page->views[ix])); |
@@ -127,7 +137,7 @@ | @@ -127,7 +137,7 @@ | ||
127 | 137 | ||
128 | gtk_grid_attach( | 138 | gtk_grid_attach( |
129 | GTK_GRID(page->parent.widget), | 139 | GTK_GRID(page->parent.widget), |
130 | - gtk_label_new(gettext(labels[ix])), | 140 | + label, |
131 | ix * 3,0,2,1 | 141 | ix * 3,0,2,1 |
132 | ); | 142 | ); |
133 | 143 |
src/objects/window/actions/sessionproperties.c
@@ -60,7 +60,7 @@ | @@ -60,7 +60,7 @@ | ||
60 | // Add settings pages. | 60 | // Add settings pages. |
61 | GtkWidget * elements[] = { | 61 | GtkWidget * elements[] = { |
62 | v3270_host_settings_new(), | 62 | v3270_host_settings_new(), |
63 | - v3270_color_selection_new(), | 63 | + v3270_color_settings_new(), |
64 | v3270_font_settings_new(), | 64 | v3270_font_settings_new(), |
65 | v3270_accelerator_settings_new() | 65 | v3270_accelerator_settings_new() |
66 | }; | 66 | }; |