Commit ef6f40599108b2e6f18ba2a654abe2045d8bc54a
Committed by
GitHub
Exists in
master
and in
1 other branch
Merge pull request #40 from PerryWerneck/develop
Updating master with latest changes.
Showing
11 changed files
with
85 additions
and
40 deletions
Show diff stats
arch/PKGBUILD
rpm/_service
... | ... | @@ -53,11 +53,11 @@ |
53 | 53 | <param name="outfilename">debian.shlibs</param> |
54 | 54 | </service --> |
55 | 55 | |
56 | - <service name="extract_file"> | |
56 | + <!-- service name="extract_file"> | |
57 | 57 | <param name="archive">*.tar</param> |
58 | 58 | <param name="files">*/arch/PKGBUILD</param> |
59 | 59 | <param name="outfilename">PKGBUILD</param> |
60 | - </service> | |
60 | + </service --> | |
61 | 61 | |
62 | 62 | <service name="recompress"> |
63 | 63 | <param name="file">*.tar</param> | ... | ... |
src/include/pw3270/application.h
... | ... | @@ -72,6 +72,10 @@ void pw3270_application_open_file(GtkApplication *application, GtkWindow **w |
72 | 72 | /// @return The internal settings object (Do not unref it). |
73 | 73 | GSettings * pw3270_application_settings_new(); |
74 | 74 | GSettings * pw3270_application_get_settings(GApplication *app); |
75 | + | |
76 | +/// @brief Get boolean from gsettings. | |
77 | +gboolean pw3270_application_get_boolean(GApplication *app, const gchar *option_name, gboolean def); | |
78 | + | |
75 | 79 | GList * pw3270_application_get_keypad_models(GApplication *app); |
76 | 80 | |
77 | 81 | void pw3270_application_set_ui_style(GApplication *app, PW3270_UI_STYLE type); | ... | ... |
src/main/builder.c
... | ... | @@ -21,7 +21,8 @@ |
21 | 21 | #include <pw3270/application.h> |
22 | 22 | #include <pw3270/keypad.h> |
23 | 23 | |
24 | - static GMenu * get_keypad_menu(GApplication *application) { | |
24 | + /* | |
25 | + static GMenu * keypad_menu_new(GApplication *application) { | |
25 | 26 | |
26 | 27 | GList * keypads = pw3270_application_get_keypad_models(application); |
27 | 28 | |
... | ... | @@ -41,6 +42,7 @@ |
41 | 42 | return menu; |
42 | 43 | |
43 | 44 | } |
45 | + */ | |
44 | 46 | |
45 | 47 | GtkBuilder * pw3270_application_builder_new(GApplication *application) { |
46 | 48 | |
... | ... | @@ -100,11 +102,13 @@ |
100 | 102 | // |
101 | 103 | // View options |
102 | 104 | // |
103 | - GMenu * keypad_menu = get_keypad_menu(application); | |
105 | + GList * keypads = pw3270_application_get_keypad_models(application); | |
104 | 106 | |
105 | - if(keypad_menu) { | |
107 | + if(keypads) { | |
106 | 108 | |
107 | 109 | static const gchar * placeholders[] = { |
110 | + "app-menu-view-placeholder", | |
111 | + "top-menu-view-placeholder", | |
108 | 112 | "view-menu-placeholder", |
109 | 113 | "view-when-offline-placeholder", |
110 | 114 | "view-when-online-placeholder" |
... | ... | @@ -114,13 +118,33 @@ |
114 | 118 | |
115 | 119 | placeholder = gtk_builder_get_object(builder, placeholders[ix]); |
116 | 120 | |
117 | - if(placeholder && G_IS_MENU(placeholder)) { | |
118 | - g_menu_append_item(G_MENU(placeholder), g_menu_item_new_submenu(_("Keypads"),G_MENU_MODEL(keypad_menu))); | |
121 | + if(placeholder) { | |
122 | + | |
123 | + if(G_IS_MENU(placeholder)) { | |
124 | + | |
125 | + GMenu * menu = g_menu_new(); | |
126 | + | |
127 | + // Create keypad items. | |
128 | + GList *item; | |
129 | + for(item = keypads; item; item = g_list_next(item)) { | |
130 | + GObject * model = G_OBJECT(item->data); | |
131 | + g_autofree gchar * action_name = g_strconcat("win.keypad.",pw3270_keypad_model_get_name(model),NULL); | |
132 | + g_menu_append(menu,pw3270_keypad_model_get_label(model),action_name); | |
133 | + } | |
134 | + | |
135 | + g_menu_append_item(G_MENU(placeholder), g_menu_item_new_submenu(_("Keypads"),G_MENU_MODEL(menu))); | |
136 | + | |
137 | + g_object_unref(menu); | |
138 | + | |
139 | + } else { | |
140 | + | |
141 | + g_message("Placeholder '%s' is invalid",placeholders[ix]); | |
142 | + | |
143 | + } | |
119 | 144 | } |
120 | 145 | |
121 | 146 | } |
122 | 147 | |
123 | - g_object_unref(keypad_menu); | |
124 | 148 | } |
125 | 149 | |
126 | 150 | return builder; | ... | ... |
src/objects/application/application.c
... | ... | @@ -427,7 +427,7 @@ void startup(GApplication *application) { |
427 | 427 | |
428 | 428 | G_APPLICATION_CLASS(pw3270Application_parent_class)->startup(application); |
429 | 429 | |
430 | - GSettings *settings = pw3270_application_get_settings(application); | |
430 | +// GSettings *settings = pw3270_application_get_settings(application); | |
431 | 431 | |
432 | 432 | // |
433 | 433 | // Common actions |
... | ... | @@ -445,14 +445,14 @@ void startup(GApplication *application) { |
445 | 445 | // |
446 | 446 | // Open session actions. |
447 | 447 | // |
448 | - if(g_settings_get_boolean(settings,"allow-open-session-actions")) { | |
448 | + if(pw3270_application_get_boolean(application,"allow-open-session-actions",TRUE)) { | |
449 | 449 | g_action_map_add_action(G_ACTION_MAP(application),pw3270_open_session_action_new()); |
450 | 450 | } |
451 | 451 | |
452 | 452 | // |
453 | 453 | // New tab actions |
454 | 454 | // |
455 | - if(g_settings_get_boolean(settings,"allow-new-tab-actions")) { | |
455 | + if(pw3270_application_get_boolean(application,"allow-new-tab-actions",TRUE)) { | |
456 | 456 | |
457 | 457 | GAction * new_tab_actions[] = { |
458 | 458 | pw3270_open_tab_action_new(), |
... | ... | @@ -468,7 +468,7 @@ void startup(GApplication *application) { |
468 | 468 | // |
469 | 469 | // New window actions |
470 | 470 | // |
471 | - if(g_settings_get_boolean(settings,"allow-new-window-actions")) { | |
471 | + if(pw3270_application_get_boolean(application,"allow-new-window-actions",TRUE)) { | |
472 | 472 | |
473 | 473 | GAction * new_window_actions[] = { |
474 | 474 | pw3270_open_window_action_new(), |
... | ... | @@ -482,11 +482,6 @@ void startup(GApplication *application) { |
482 | 482 | } |
483 | 483 | |
484 | 484 | // |
485 | - // Setup application menus | |
486 | - // | |
487 | - g_autoptr(GtkBuilder) builder = pw3270_application_builder_new(application); | |
488 | - | |
489 | - // | |
490 | 485 | // Load keypad models |
491 | 486 | // |
492 | 487 | { |
... | ... | @@ -511,6 +506,11 @@ void startup(GApplication *application) { |
511 | 506 | } |
512 | 507 | } |
513 | 508 | |
509 | + // | |
510 | + // Setup application menus | |
511 | + // | |
512 | + g_autoptr(GtkBuilder) builder = pw3270_application_builder_new(application); | |
513 | + | |
514 | 514 | if(gtk_application_prefers_app_menu(GTK_APPLICATION(application))) |
515 | 515 | gtk_application_set_app_menu(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "app-menu"))); |
516 | 516 | |
... | ... | @@ -557,10 +557,13 @@ PW3270_UI_STYLE pw3270_application_get_ui_style(GApplication *app) { |
557 | 557 | } |
558 | 558 | |
559 | 559 | GSettings * pw3270_application_get_settings(GApplication *app) { |
560 | - | |
561 | 560 | g_return_val_if_fail(PW3270_IS_APPLICATION(app),NULL); |
562 | 561 | return PW3270_APPLICATION(app)->settings; |
562 | +} | |
563 | 563 | |
564 | +gboolean pw3270_application_get_boolean(GApplication *app, const gchar *option_name, gboolean def) { | |
565 | + g_return_val_if_fail(PW3270_IS_APPLICATION(app),def); | |
566 | + return g_settings_get_boolean(PW3270_APPLICATION(app)->settings,option_name); | |
564 | 567 | } |
565 | 568 | |
566 | 569 | GSList * pw3270_application_get_plugins(GApplication *app) { | ... | ... |
src/objects/window/actions/sessionproperties.c
... | ... | @@ -43,29 +43,35 @@ GtkWidget * factory(V3270SimpleAction *action, GtkWidget *terminal) { |
43 | 43 | |
44 | 44 | size_t ix; |
45 | 45 | |
46 | - GSettings *settings = pw3270_application_get_settings(g_application_get_default()); | |
46 | + GApplication *application = g_application_get_default(); | |
47 | +// GSettings *settings = pw3270_application_get_settings(g_application_get_default()); | |
47 | 48 | |
48 | 49 | GtkWidget * dialog = v3270_settings_dialog_new(); |
49 | 50 | gtk_window_set_title(GTK_WINDOW(dialog), action->label); |
50 | 51 | |
51 | - // Add settings pages. | |
52 | - GtkWidget * elements[] = { | |
53 | - v3270_color_settings_new(), | |
54 | - v3270_font_settings_new(), | |
55 | - v3270_accelerator_settings_new(), | |
56 | - v3270_clipboard_settings_new() | |
57 | - }; | |
58 | - | |
59 | - if(g_settings_get_boolean(settings,"allow-host-settings")) { | |
52 | + // Host settings is conditional. | |
53 | + if(pw3270_application_get_boolean(application,"allow-host-settings",TRUE)) { | |
60 | 54 | gtk_container_add(GTK_CONTAINER(dialog), v3270_host_settings_new()); |
61 | 55 | } |
62 | 56 | |
63 | - for(ix = 0; ix < G_N_ELEMENTS(elements); ix++) { | |
64 | - gtk_container_add(GTK_CONTAINER(dialog), elements[ix]); | |
57 | + // Add commom settings. | |
58 | + { | |
59 | + | |
60 | + GtkWidget * elements[] = { | |
61 | + v3270_color_settings_new(), | |
62 | + v3270_font_settings_new(), | |
63 | + v3270_accelerator_settings_new(), | |
64 | + v3270_clipboard_settings_new() | |
65 | + }; | |
66 | + | |
67 | + for(ix = 0; ix < G_N_ELEMENTS(elements); ix++) { | |
68 | + gtk_container_add(GTK_CONTAINER(dialog), elements[ix]); | |
69 | + } | |
70 | + | |
65 | 71 | } |
66 | 72 | |
67 | 73 | pw3270_application_plugin_call( |
68 | - g_application_get_default(), | |
74 | + application, | |
69 | 75 | "pw3270_plugin_set_session_properties", |
70 | 76 | dialog |
71 | 77 | ); | ... | ... |
src/objects/window/keyfile.c
... | ... | @@ -216,16 +216,20 @@ V3270KeyFile * v3270_key_file_open(GtkWidget *terminal, const gchar *filename, G |
216 | 216 | |
217 | 217 | if(!*error) { |
218 | 218 | |
219 | - GSettings * settings = pw3270_application_get_settings(g_application_get_default()); | |
219 | + GApplication *application = g_application_get_default(); | |
220 | 220 | |
221 | - if(settings && g_settings_get_boolean(settings,"update-default-session-file")) { | |
221 | + if(pw3270_application_get_boolean(application,"update-default-session-file",TRUE)) { | |
222 | 222 | |
223 | - g_message("Updating default session file to '%s'",filename); | |
224 | - g_settings_set_string(settings,"default-session-file",filename); | |
223 | + GSettings * settings = pw3270_application_get_settings(application); | |
224 | + | |
225 | + if(settings) { | |
226 | + g_message("Updating default session file to '%s'",filename); | |
227 | + g_settings_set_string(settings,"default-session-file",filename); | |
228 | + } | |
225 | 229 | |
226 | 230 | } |
227 | 231 | |
228 | - if(settings && g_settings_get_boolean(settings,"add-session-to-recent-manager")) { | |
232 | + if(pw3270_application_get_boolean(application,"add-session-to-recent-manager",TRUE)) { | |
229 | 233 | |
230 | 234 | // new_session->key_file |
231 | 235 | g_autofree gchar * display_name = g_key_file_get_string(new_session->key_file,"terminal","session-name",NULL); | ... | ... |
ui/linux.ui.xml
ui/macos.ui.xml
ui/windows.ui.xml
win/pack.sh