diff --git a/src/include/pw3270/actions.h b/src/include/pw3270/actions.h index 377d3f6..cb15516 100644 --- a/src/include/pw3270/actions.h +++ b/src/include/pw3270/actions.h @@ -264,6 +264,7 @@ void pw3270_action_view_set_actions(GtkWidget *view, Pw3270ActionList *list); void pw3270_action_view_move_selected(GtkWidget *from, GtkWidget *to); void pw3270_action_view_append(GtkWidget *widget, const gchar *label, GdkPixbuf *pixbuf, const gchar *action_name, gint flags); + gchar * pw3270_action_view_get_action_names(GtkWidget *widget); Pw3270ActionList * pw3270_action_list_move_action(Pw3270ActionList *action_list, const gchar *action_name, GtkWidget *view); diff --git a/src/objects/actions/save.c b/src/objects/actions/save.c index 848b545..89eb78a 100644 --- a/src/objects/actions/save.c +++ b/src/objects/actions/save.c @@ -66,6 +66,7 @@ action->group.id = LIB3270_ACTION_GROUP_ONLINE; action->parent.name = "save"; + action->icon_name = "document-save"; action->label = N_( "_Save" ); action->tooltip = N_( "Save terminal contents." ); @@ -81,6 +82,7 @@ action->group.id = LIB3270_ACTION_GROUP_ONLINE; action->parent.name = "save.screen"; + action->icon_name = "document-save"; action->label = N_( "Save screen" ); return G_ACTION(action); @@ -95,6 +97,7 @@ action->group.id = LIB3270_ACTION_GROUP_SELECTION; action->parent.name = "save.selected"; + action->icon_name = "document-save"; action->label = N_( "Save selected" ); return G_ACTION(action); diff --git a/src/objects/actions/view.c b/src/objects/actions/view.c index 4a71bf5..e62624e 100644 --- a/src/objects/actions/view.c +++ b/src/objects/actions/view.c @@ -171,6 +171,7 @@ &iter, COLUMN_PIXBUF, element->pixbuf, COLUMN_LABEL, (label ? label : g_action_get_name(element->action)), + COLUMN_ACTION_NAME, element->name, COLUMN_FLAGS, 3, -1 ); @@ -382,5 +383,31 @@ } + } + + gboolean get_action_name(GtkTreeModel *model, GtkTreePath G_GNUC_UNUSED(*path), GtkTreeIter *iter, GString *str) { + + GValue value = G_VALUE_INIT; + gtk_tree_model_get_value(model,iter,COLUMN_ACTION_NAME,&value); + if(*str->str) + g_string_append(str,","); + + g_string_append(str,g_value_get_string(&value)); + + g_value_unset(&value); + return FALSE; } + + gchar * pw3270_action_view_get_action_names(GtkWidget *widget) { + + GString *str = g_string_new(""); + + gtk_tree_model_foreach( + gtk_tree_view_get_model(GTK_TREE_VIEW(widget)), + (GtkTreeModelForeachFunc) get_action_name, + str ); + + return g_string_free(str,FALSE); + } + diff --git a/src/objects/actions/window.c b/src/objects/actions/window.c index aee223c..2b5af10 100644 --- a/src/objects/actions/window.c +++ b/src/objects/actions/window.c @@ -72,10 +72,10 @@ pw3270_action_copy_new(), pw3270_action_cut_new(), pw3270_action_paste_new(), - pw3270_action_save_new(), - pw3270_action_save_screen_new(), - pw3270_action_save_selected_new(), +// pw3270_action_save_new(), +// pw3270_action_save_screen_new(), +// pw3270_action_save_selected_new(), pw3270_action_print_screen_new(), pw3270_action_print_selected_new(), diff --git a/src/objects/application/actions/preferences.c b/src/objects/application/actions/preferences.c index aa1bffe..46c164c 100644 --- a/src/objects/application/actions/preferences.c +++ b/src/objects/application/actions/preferences.c @@ -40,7 +40,7 @@ GSList * pages; } Pw3270SettingsDialog; - static void on_destroy(GtkWidget *dialog, Pw3270SettingsDialog *settings) { + static void on_destroy(GtkWidget G_GNUC_UNUSED(*dialog), Pw3270SettingsDialog *settings) { settings->dialog = NULL; g_slist_free_full(settings->pages,g_free); g_free(settings); @@ -66,7 +66,7 @@ gtk_widget_destroy(GTK_WIDGET(dialog)); } - static void on_page_added(GtkNotebook *notebook, GtkWidget *widget, guint page_num, Pw3270SettingsDialog * settings) { + static void on_page_added(GtkNotebook G_GNUC_UNUSED(*notebook), GtkWidget *widget, guint G_GNUC_UNUSED(page_num), Pw3270SettingsDialog G_GNUC_UNUSED(*settings)) { // https://developer.gnome.org/hig/stable/visual-layout.html.en @@ -83,6 +83,9 @@ static void on_switch_page(GtkNotebook G_GNUC_UNUSED(*notebook), GtkWidget *widget, guint G_GNUC_UNUSED(page_num), Pw3270SettingsDialog * settings) { + + debug("%s: %p",__FUNCTION__,settings->dialog); + if(!settings->dialog) return; @@ -92,7 +95,7 @@ GSList * page; for(page = settings->pages;page;page = page->next) { Pw3270SettingsPage * pg = (Pw3270SettingsPage *) page->data; - if(pg->widget == pg) { + if(pg->widget == widget) { if(pg->title) gtk_header_bar_set_subtitle(GTK_HEADER_BAR(header_bar),pg->title); return; diff --git a/src/objects/application/application.c b/src/objects/application/application.c index 7ad067d..3ab1bfd 100644 --- a/src/objects/application/application.c +++ b/src/objects/application/application.c @@ -315,6 +315,7 @@ const gchar * label; const gchar * tooltip; const gchar * action_name; + const gchar * icon_name; const gchar * property_name; void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal); } conditional_actions[] = { @@ -337,8 +338,9 @@ pw3270SimpleAction * action = PW3270_SIMPLE_ACTION(v3270_conditional_action_new(terminal,conditional_actions[ix].property_name)); action->parent.name = conditional_actions[ix].action_name; - action->label = conditional_actions[ix].label; + action->label = conditional_actions[ix].label; action->tooltip = conditional_actions[ix].tooltip; + action->icon_name = conditional_actions[ix].icon_name; PW3270_ACTION(action)->activate = conditional_actions[ix].activate; g_action_map_add_action( diff --git a/src/objects/toolbar/settings.c b/src/objects/toolbar/settings.c index 6c6b49e..0bb1637 100644 --- a/src/objects/toolbar/settings.c +++ b/src/objects/toolbar/settings.c @@ -79,8 +79,15 @@ } - static void apply(Pw3270SettingsPage *pg, GtkApplication *application, GSettings *settings) { + static void apply(Pw3270SettingsPage *pg, GtkApplication G_GNUC_UNUSED(*application), GSettings *settings) { + debug("%s",__FUNCTION__); + + g_autofree gchar * action_names = pw3270_action_view_get_action_names(((ToolbarSettingsPage *) pg)->views[0]); + g_settings_set_string(settings,"toolbar-action-names",action_names); + + debug("[%s]",action_names); + } static void selection_changed(GtkTreeSelection *selection, GtkWidget *button) { @@ -107,7 +114,7 @@ page->parent.load = load; page->parent.apply = apply; page->parent.label = _("Toolbar"); - page->parent.title = _("Setup toolbar action elements"); + page->parent.title = _("Setup toolbar"); page->parent.widget = gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(page->parent.widget),FALSE); @@ -120,6 +127,9 @@ for(ix = 0; ix < G_N_ELEMENTS(page->views); ix++) { + GtkWidget * label = gtk_label_new(gettext(labels[ix])); + gtk_label_set_xalign(GTK_LABEL(label),0); + page->views[ix] = pw3270_action_view_new(); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(page->views[ix])); @@ -127,7 +137,7 @@ gtk_grid_attach( GTK_GRID(page->parent.widget), - gtk_label_new(gettext(labels[ix])), + label, ix * 3,0,2,1 ); diff --git a/src/objects/window/actions/sessionproperties.c b/src/objects/window/actions/sessionproperties.c index 09ba7ce..cc77152 100644 --- a/src/objects/window/actions/sessionproperties.c +++ b/src/objects/window/actions/sessionproperties.c @@ -60,7 +60,7 @@ // Add settings pages. GtkWidget * elements[] = { v3270_host_settings_new(), - v3270_color_selection_new(), + v3270_color_settings_new(), v3270_font_settings_new(), v3270_accelerator_settings_new() }; -- libgit2 0.21.2