Commit 4b6b7ca34e780e3822a70db67ae10368399b9172
1 parent
92790c48
Exists in
master
and in
4 other branches
Implementing "open session in the window" action.
Showing
6 changed files
with
41 additions
and
31 deletions
Show diff stats
src/include/pw3270/window.h
... | ... | @@ -57,10 +57,10 @@ |
57 | 57 | typedef struct _pw3270ApplicationWindow pw3270ApplicationWindow; |
58 | 58 | |
59 | 59 | GType pw3270ApplicationWindow_get_type(); |
60 | - GtkWidget * pw3270_application_window_new(GtkApplication * app); | |
60 | + GtkWidget * pw3270_application_window_new(GtkApplication * app, const gchar *session_file); | |
61 | 61 | |
62 | 62 | /// @brief Create a new terminal tab. |
63 | - GtkWidget * pw3270_terminal_new(GtkWidget *window, const gchar *session_file); | |
63 | + GtkWidget * pw3270_application_window_new_tab(GtkWidget *window, const gchar *session_file); | |
64 | 64 | |
65 | 65 | /// @brief Get the active terminal widget. |
66 | 66 | GtkWidget * pw3270_window_get_terminal_widget(GtkWidget *window); | ... | ... |
src/objects/application/actions/open.c
... | ... | @@ -78,7 +78,7 @@ |
78 | 78 | g_autofree gchar * session_file_name = get_session_file_name(GTK_APPLICATION(application),_("Open session in new tab")); |
79 | 79 | |
80 | 80 | if(session_file_name) { |
81 | - pw3270_terminal_new(GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))), session_file_name); | |
81 | + pw3270_application_window_new_tab(GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))), session_file_name); | |
82 | 82 | } |
83 | 83 | |
84 | 84 | g_simple_action_set_enabled(action,TRUE); |
... | ... | @@ -91,7 +91,9 @@ |
91 | 91 | g_autofree gchar * session_file_name = get_session_file_name(GTK_APPLICATION(application),_("Open session in new window")); |
92 | 92 | |
93 | 93 | if(session_file_name) { |
94 | -// pw3270_terminal_new(pw3270_application_window_new(GTK_APPLICATION(application)), session_file_name); | |
94 | + GtkWidget *window = pw3270_application_window_new(GTK_APPLICATION(application), session_file_name); | |
95 | + pw3270_window_set_current_page(window,0); | |
96 | + gtk_window_present(GTK_WINDOW(window)); | |
95 | 97 | } |
96 | 98 | |
97 | 99 | g_simple_action_set_enabled(action,TRUE); | ... | ... |
src/objects/application/actions/window.c
... | ... | @@ -59,7 +59,7 @@ |
59 | 59 | void pw3270_application_new_tab_activated(GSimpleAction G_GNUC_UNUSED(*action), GVariant G_GNUC_UNUSED(*parameter), gpointer application) { |
60 | 60 | |
61 | 61 | debug("%s",__FUNCTION__); |
62 | - pw3270_terminal_new(GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))), NULL); | |
62 | + pw3270_application_window_new_tab(GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))), NULL); | |
63 | 63 | |
64 | 64 | } |
65 | 65 | ... | ... |
src/objects/application/application.c
... | ... | @@ -286,29 +286,7 @@ |
286 | 286 | |
287 | 287 | void activate(GApplication *application) { |
288 | 288 | |
289 | - size_t ix; | |
290 | - | |
291 | - GtkWidget * window = pw3270_application_window_new(GTK_APPLICATION(application)); | |
292 | - | |
293 | - // Create terminal widget & associated widget | |
294 | - GtkWidget * terminal = pw3270_terminal_new(window, NULL); | |
295 | - | |
296 | - // Create property actions | |
297 | - static const gchar * properties[] = { | |
298 | - "model-number", | |
299 | - "font-family", | |
300 | - "dynamic-font-spacing", | |
301 | - "trace", | |
302 | - }; | |
303 | - | |
304 | - for(ix = 0; ix < G_N_ELEMENTS(properties); ix++) { | |
305 | - | |
306 | - g_action_map_add_action( | |
307 | - G_ACTION_MAP(window), | |
308 | - v3270_property_action_new(terminal,properties[ix]) | |
309 | - ); | |
310 | - | |
311 | - } | |
289 | + GtkWidget * window = pw3270_application_window_new(GTK_APPLICATION(application),NULL); | |
312 | 290 | |
313 | 291 | // Present the new window |
314 | 292 | pw3270_window_set_current_page(window,0); |
... | ... | @@ -318,6 +296,11 @@ |
318 | 296 | |
319 | 297 | void open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) { |
320 | 298 | |
299 | +#ifndef DEBUG | |
300 | + #error Implementar | |
301 | +#endif // DEBUG | |
302 | + | |
303 | + /* | |
321 | 304 | GtkWindow * window = gtk_application_get_active_window(GTK_APPLICATION(application)); |
322 | 305 | |
323 | 306 | debug("%s was called with %d files (active_window=%p)", __FUNCTION__, n_files, window); |
... | ... | @@ -338,6 +321,8 @@ |
338 | 321 | if(last != -1) |
339 | 322 | pw3270_window_set_current_page(GTK_WIDGET(window),last); |
340 | 323 | |
324 | + */ | |
325 | + | |
341 | 326 | } |
342 | 327 | |
343 | 328 | void pw3270_application_set_ui_style(GApplication *app, PW3270_UI_STYLE type) { | ... | ... |
src/objects/window/terminal.c
... | ... | @@ -377,7 +377,7 @@ |
377 | 377 | } |
378 | 378 | |
379 | 379 | |
380 | - GtkWidget * pw3270_terminal_new(GtkWidget *widget, const gchar *session_file) { | |
380 | + GtkWidget * pw3270_application_window_new_tab(GtkWidget *widget, const gchar *session_file) { | |
381 | 381 | |
382 | 382 | struct SessionDescriptor * descriptor; |
383 | 383 | |
... | ... | @@ -468,7 +468,7 @@ |
468 | 468 | if(path) { |
469 | 469 | |
470 | 470 | // It's a session file |
471 | - pw3270_terminal_new(widget, path); | |
471 | + pw3270_application_window_new_tab(widget, path); | |
472 | 472 | return 0; |
473 | 473 | |
474 | 474 | } | ... | ... |
src/objects/window/window.c
... | ... | @@ -199,7 +199,7 @@ |
199 | 199 | |
200 | 200 | } |
201 | 201 | |
202 | - GtkWidget * pw3270_application_window_new(GtkApplication * application) { | |
202 | + GtkWidget * pw3270_application_window_new(GtkApplication * application, const gchar *session_file) { | |
203 | 203 | |
204 | 204 | gchar *title = _( "IBM 3270 Terminal emulator" ); |
205 | 205 | |
... | ... | @@ -316,9 +316,32 @@ |
316 | 316 | G_SETTINGS_BIND_DEFAULT |
317 | 317 | ); |
318 | 318 | |
319 | + | |
320 | + // Setup default position and size | |
319 | 321 | gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); |
320 | 322 | gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); |
321 | 323 | |
324 | + // Create terminal widget | |
325 | + GtkWidget * terminal = pw3270_application_window_new_tab(window, session_file); | |
326 | + | |
327 | + // Create property actions | |
328 | + static const gchar * properties[] = { | |
329 | + "model-number", | |
330 | + "font-family", | |
331 | + "dynamic-font-spacing", | |
332 | + "trace", | |
333 | + }; | |
334 | + | |
335 | + for(ix = 0; ix < G_N_ELEMENTS(properties); ix++) { | |
336 | + | |
337 | + g_action_map_add_action( | |
338 | + G_ACTION_MAP(window), | |
339 | + v3270_property_action_new(terminal,properties[ix]) | |
340 | + ); | |
341 | + | |
342 | + } | |
343 | + | |
344 | + | |
322 | 345 | // gtk_window_set_interactive_debugging(TRUE); |
323 | 346 | |
324 | 347 | return GTK_WIDGET(window); | ... | ... |