Commit 02b4046ad5d811eadbab557581f209a7d99cfde6
1 parent
b0f51585
Exists in
master
and in
2 other branches
Finalizing action editor.
Showing
4 changed files
with
36 additions
and
53 deletions
Show diff stats
src/include/pw3270/settings.h
| ... | ... | @@ -101,7 +101,8 @@ |
| 101 | 101 | |
| 102 | 102 | GType PW3270SettingsActions_get_type(void); |
| 103 | 103 | GtkWidget * pw3270_settings_actions_new(); |
| 104 | - Pw3270ActionList * pw3270_settings_action_load(GtkWidget *widget, Pw3270ActionList *available, const gchar *value); | |
| 104 | + Pw3270ActionList * pw3270_settings_action_set(GtkWidget *widget, Pw3270ActionList *available, const gchar *value); | |
| 105 | + gchar * pw3270_settings_action_get(GtkWidget *widget); | |
| 105 | 106 | |
| 106 | 107 | G_END_DECLS |
| 107 | 108 | ... | ... |
src/objects/actions/view.c
| ... | ... | @@ -436,10 +436,24 @@ |
| 436 | 436 | |
| 437 | 437 | } |
| 438 | 438 | |
| 439 | + struct MoveData { | |
| 440 | + GtkWidget *from; | |
| 441 | + GtkWidget *to; | |
| 442 | + }; | |
| 443 | + | |
| 444 | + static void move_clicked(GtkButton G_GNUC_UNUSED(*button), struct MoveData *args) { | |
| 445 | + pw3270_action_view_move_selected(args->from,args->to); | |
| 446 | + } | |
| 447 | + | |
| 439 | 448 | GtkWidget * pw3270_action_view_move_button_new(GtkWidget *from, GtkWidget *to, const gchar *icon_name) { |
| 440 | 449 | |
| 441 | 450 | GtkWidget * button = gtk_button_new_from_icon_name(icon_name,GTK_ICON_SIZE_DND); |
| 442 | 451 | |
| 452 | + struct MoveData * data = g_new0(struct MoveData,1); | |
| 453 | + data->from = from; | |
| 454 | + data->to = to; | |
| 455 | + g_object_set_data_full(G_OBJECT(button),"move-control-data",data,g_free); | |
| 456 | + | |
| 443 | 457 | gtk_widget_set_focus_on_click(button,FALSE); |
| 444 | 458 | gtk_button_set_relief(GTK_BUTTON(button),GTK_RELIEF_NONE); |
| 445 | 459 | gtk_widget_set_sensitive(button,FALSE); |
| ... | ... | @@ -453,5 +467,12 @@ |
| 453 | 467 | button |
| 454 | 468 | ); |
| 455 | 469 | |
| 470 | + g_signal_connect( | |
| 471 | + button, | |
| 472 | + "clicked", | |
| 473 | + G_CALLBACK(move_clicked), | |
| 474 | + data | |
| 475 | + ); | |
| 476 | + | |
| 456 | 477 | return button; |
| 457 | 478 | } | ... | ... |
src/objects/settings/actionview.c
| ... | ... | @@ -129,6 +129,10 @@ |
| 129 | 129 | |
| 130 | 130 | } |
| 131 | 131 | |
| 132 | + gtk_tree_view_set_reorderable(GTK_TREE_VIEW(grid->views[0]),TRUE); | |
| 133 | + gtk_tree_view_set_reorderable(GTK_TREE_VIEW(grid->views[2]),TRUE); | |
| 134 | + pw3270_action_view_order_by_label(grid->views[1]); | |
| 135 | + | |
| 132 | 136 | // Create buttons |
| 133 | 137 | { |
| 134 | 138 | GtkWidget *buttons[] = { |
| ... | ... | @@ -157,7 +161,7 @@ |
| 157 | 161 | |
| 158 | 162 | } |
| 159 | 163 | |
| 160 | - Pw3270ActionList * pw3270_settings_action_load(GtkWidget *widget, Pw3270ActionList *action_list, const gchar *action_names) { | |
| 164 | + Pw3270ActionList * pw3270_settings_action_set(GtkWidget *widget, Pw3270ActionList *action_list, const gchar *action_names) { | |
| 161 | 165 | |
| 162 | 166 | PW3270SettingsActions *editor = (PW3270SettingsActions *) widget; |
| 163 | 167 | |
| ... | ... | @@ -192,26 +196,12 @@ |
| 192 | 196 | return action_list; |
| 193 | 197 | } |
| 194 | 198 | |
| 195 | - /* | |
| 196 | - static void remove_from_left(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { | |
| 197 | - debug("%s(%p)",__FUNCTION__,settings); | |
| 198 | - pw3270_action_view_move_selected(settings->views[0],settings->views[2]); | |
| 199 | - } | |
| 199 | + gchar * pw3270_settings_action_get(GtkWidget *widget) { | |
| 200 | 200 | |
| 201 | - static void add_to_left(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { | |
| 202 | - debug("%s(%p)",__FUNCTION__,settings); | |
| 203 | - pw3270_action_view_move_selected(settings->views[2],settings->views[0]); | |
| 204 | - } | |
| 201 | + PW3270SettingsActions *editor = (PW3270SettingsActions *) widget; | |
| 205 | 202 | |
| 206 | - static void remove_from_right(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { | |
| 207 | - debug("%s(%p)",__FUNCTION__,settings); | |
| 208 | - pw3270_action_view_move_selected(settings->views[1],settings->views[2]); | |
| 209 | - } | |
| 203 | + g_autofree gchar * left_names = pw3270_action_view_get_action_names(editor->views[0]); | |
| 204 | + g_autofree gchar * right_names = pw3270_action_view_get_action_names(editor->views[2]); | |
| 205 | + return g_strconcat(left_names,":",right_names,NULL); | |
| 210 | 206 | |
| 211 | - static void add_to_right(GtkButton G_GNUC_UNUSED(*button), PW3270SettingsPrivate *settings) { | |
| 212 | - debug("%s(%p)",__FUNCTION__,settings); | |
| 213 | - pw3270_action_view_move_selected(settings->views[2],settings->views[1]); | |
| 214 | 207 | } |
| 215 | - | |
| 216 | - | |
| 217 | -*/ | ... | ... |
src/objects/window/header-settings.c
| ... | ... | @@ -277,45 +277,16 @@ |
| 277 | 277 | // Load settings |
| 278 | 278 | g_autofree gchar * action_names = g_settings_get_string(settings,"header-action-names"); |
| 279 | 279 | |
| 280 | - action_list = pw3270_settings_action_load(page->editor, action_list, action_names); | |
| 281 | - | |
| 282 | - /* | |
| 283 | - gchar **views = g_strsplit(action_names,":",-1); | |
| 284 | - | |
| 285 | - for(view = 0; view < 2; view++) { | |
| 286 | - | |
| 287 | - if(!views[view]) | |
| 288 | - break; | |
| 289 | - | |
| 290 | - gchar ** actions = g_strsplit(views[view],",",-1); | |
| 291 | - | |
| 292 | - for(action = 0; actions[action];action++) { | |
| 293 | - action_list = pw3270_action_list_move_action(action_list,actions[action],page->views[view]); | |
| 294 | - } | |
| 295 | - | |
| 296 | - g_strfreev(actions); | |
| 297 | - } | |
| 298 | - | |
| 299 | - g_strfreev(views); | |
| 300 | - | |
| 301 | - pw3270_action_view_set_actions(page->views[2], action_list); | |
| 302 | - | |
| 303 | - */ | |
| 280 | + action_list = pw3270_settings_action_set(page->editor, action_list, action_names); | |
| 304 | 281 | |
| 305 | 282 | pw3270_action_list_free(action_list); |
| 306 | 283 | } |
| 307 | 284 | |
| 308 | 285 | void apply(GtkWidget *widget, PW3270SettingsPrivate *page) { |
| 309 | 286 | |
| 310 | - /* | |
| 311 | - g_autofree gchar * left_names = pw3270_action_view_get_action_names(page->views[0]); | |
| 312 | - g_autofree gchar * right_names = pw3270_action_view_get_action_names(page->views[1]); | |
| 313 | - g_autofree gchar * action_names = g_strconcat(left_names,":",right_names,NULL); | |
| 314 | - | |
| 315 | - debug("Header actions: [%s]",action_names); | |
| 316 | - | |
| 287 | + g_autofree gchar * action_names = pw3270_settings_action_get(page->editor); | |
| 317 | 288 | g_autoptr(GSettings) settings = pw3270_application_window_settings_new(); |
| 318 | 289 | g_settings_set_string(settings,"header-action-names",action_names); |
| 319 | - */ | |
| 290 | + | |
| 320 | 291 | } |
| 321 | 292 | ... | ... |