diff --git a/src/include/pw3270/settings.h b/src/include/pw3270/settings.h index 22ab92a..0000754 100644 --- a/src/include/pw3270/settings.h +++ b/src/include/pw3270/settings.h @@ -101,7 +101,8 @@ GType PW3270SettingsActions_get_type(void); GtkWidget * pw3270_settings_actions_new(); - Pw3270ActionList * pw3270_settings_action_load(GtkWidget *widget, Pw3270ActionList *available, const gchar *value); + Pw3270ActionList * pw3270_settings_action_set(GtkWidget *widget, Pw3270ActionList *available, const gchar *value); + gchar * pw3270_settings_action_get(GtkWidget *widget); G_END_DECLS diff --git a/src/objects/actions/view.c b/src/objects/actions/view.c index f847c76..a0b6131 100644 --- a/src/objects/actions/view.c +++ b/src/objects/actions/view.c @@ -436,10 +436,24 @@ } + struct MoveData { + GtkWidget *from; + GtkWidget *to; + }; + + static void move_clicked(GtkButton G_GNUC_UNUSED(*button), struct MoveData *args) { + pw3270_action_view_move_selected(args->from,args->to); + } + GtkWidget * pw3270_action_view_move_button_new(GtkWidget *from, GtkWidget *to, const gchar *icon_name) { GtkWidget * button = gtk_button_new_from_icon_name(icon_name,GTK_ICON_SIZE_DND); + struct MoveData * data = g_new0(struct MoveData,1); + data->from = from; + data->to = to; + g_object_set_data_full(G_OBJECT(button),"move-control-data",data,g_free); + gtk_widget_set_focus_on_click(button,FALSE); gtk_button_set_relief(GTK_BUTTON(button),GTK_RELIEF_NONE); gtk_widget_set_sensitive(button,FALSE); @@ -453,5 +467,12 @@ button ); + g_signal_connect( + button, + "clicked", + G_CALLBACK(move_clicked), + data + ); + return button; } diff --git a/src/objects/settings/actionview.c b/src/objects/settings/actionview.c index 2b8e4ff..77e2009 100644 --- a/src/objects/settings/actionview.c +++ b/src/objects/settings/actionview.c @@ -129,6 +129,10 @@ } + gtk_tree_view_set_reorderable(GTK_TREE_VIEW(grid->views[0]),TRUE); + gtk_tree_view_set_reorderable(GTK_TREE_VIEW(grid->views[2]),TRUE); + pw3270_action_view_order_by_label(grid->views[1]); + // Create buttons { GtkWidget *buttons[] = { @@ -157,7 +161,7 @@ } - Pw3270ActionList * pw3270_settings_action_load(GtkWidget *widget, Pw3270ActionList *action_list, const gchar *action_names) { + Pw3270ActionList * pw3270_settings_action_set(GtkWidget *widget, Pw3270ActionList *action_list, const gchar *action_names) { PW3270SettingsActions *editor = (PW3270SettingsActions *) widget; @@ -192,26 +196,12 @@ return action_list; } - /* - static void remove_from_left(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { - debug("%s(%p)",__FUNCTION__,settings); - pw3270_action_view_move_selected(settings->views[0],settings->views[2]); - } + gchar * pw3270_settings_action_get(GtkWidget *widget) { - static void add_to_left(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { - debug("%s(%p)",__FUNCTION__,settings); - pw3270_action_view_move_selected(settings->views[2],settings->views[0]); - } + PW3270SettingsActions *editor = (PW3270SettingsActions *) widget; - static void remove_from_right(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { - debug("%s(%p)",__FUNCTION__,settings); - pw3270_action_view_move_selected(settings->views[1],settings->views[2]); - } + g_autofree gchar * left_names = pw3270_action_view_get_action_names(editor->views[0]); + g_autofree gchar * right_names = pw3270_action_view_get_action_names(editor->views[2]); + return g_strconcat(left_names,":",right_names,NULL); - static void add_to_right(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { - debug("%s(%p)",__FUNCTION__,settings); - pw3270_action_view_move_selected(settings->views[2],settings->views[1]); } - - -*/ diff --git a/src/objects/window/header-settings.c b/src/objects/window/header-settings.c index 6a4e87e..61da247 100644 --- a/src/objects/window/header-settings.c +++ b/src/objects/window/header-settings.c @@ -277,45 +277,16 @@ // Load settings g_autofree gchar * action_names = g_settings_get_string(settings,"header-action-names"); - action_list = pw3270_settings_action_load(page->editor, action_list, action_names); - - /* - gchar **views = g_strsplit(action_names,":",-1); - - for(view = 0; view < 2; view++) { - - if(!views[view]) - break; - - gchar ** actions = g_strsplit(views[view],",",-1); - - for(action = 0; actions[action];action++) { - action_list = pw3270_action_list_move_action(action_list,actions[action],page->views[view]); - } - - g_strfreev(actions); - } - - g_strfreev(views); - - pw3270_action_view_set_actions(page->views[2], action_list); - - */ + action_list = pw3270_settings_action_set(page->editor, action_list, action_names); pw3270_action_list_free(action_list); } void apply(GtkWidget *widget, PW3270SettingsPrivate *page) { - /* - g_autofree gchar * left_names = pw3270_action_view_get_action_names(page->views[0]); - g_autofree gchar * right_names = pw3270_action_view_get_action_names(page->views[1]); - g_autofree gchar * action_names = g_strconcat(left_names,":",right_names,NULL); - - debug("Header actions: [%s]",action_names); - + g_autofree gchar * action_names = pw3270_settings_action_get(page->editor); g_autoptr(GSettings) settings = pw3270_application_window_settings_new(); g_settings_set_string(settings,"header-action-names",action_names); - */ + } -- libgit2 0.21.2