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 | ... | ... |