Commit 81d5a6c6ee2ad0e7997267753287b061ceecb4d8
1 parent
b7b8a75e
Exists in
master
and in
4 other branches
Refactoring the open session/url from command line.
Showing
3 changed files
with
27 additions
and
17 deletions
Show diff stats
src/include/pw3270/window.h
@@ -62,9 +62,6 @@ | @@ -62,9 +62,6 @@ | ||
62 | /// @brief Create a new terminal tab. | 62 | /// @brief Create a new terminal tab. |
63 | GtkWidget * pw3270_application_window_new_tab(GtkWidget *window, const gchar *session_file); | 63 | GtkWidget * pw3270_application_window_new_tab(GtkWidget *window, const gchar *session_file); |
64 | 64 | ||
65 | - /// @brief Get the active terminal widget. | ||
66 | - GtkWidget * pw3270_window_get_terminal_widget(GtkWidget *window); | ||
67 | - | ||
68 | /// @brief Get the active session handle. | 65 | /// @brief Get the active session handle. |
69 | H3270 * pw3270_window_get_session_handle(GtkWidget *window); | 66 | H3270 * pw3270_window_get_session_handle(GtkWidget *window); |
70 | 67 |
src/objects/application/open.c
@@ -31,33 +31,45 @@ | @@ -31,33 +31,45 @@ | ||
31 | 31 | ||
32 | void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) { | 32 | void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) { |
33 | 33 | ||
34 | - GtkWindow * window = gtk_application_get_active_window(GTK_APPLICATION(application)); | 34 | + GtkWidget * window = GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))); |
35 | 35 | ||
36 | gint file; | 36 | gint file; |
37 | - gint last = -1; | ||
38 | 37 | ||
39 | for(file = 0; file < n_files; file++) { | 38 | for(file = 0; file < n_files; file++) { |
40 | 39 | ||
40 | + g_autofree gchar *path = g_file_get_path(files[file]); | ||
41 | + GtkWidget * terminal = NULL; | ||
41 | 42 | ||
42 | - } | 43 | + if(!window) { |
44 | + window = pw3270_application_window_new(GTK_APPLICATION(application), path); | ||
45 | + terminal = gtk_window_get_default_widget(GTK_WINDOW(window)); | ||
46 | + } else { | ||
47 | + terminal = pw3270_application_window_new_tab(window,path); | ||
48 | + } | ||
43 | 49 | ||
44 | - /* | 50 | + if(!path) { |
45 | 51 | ||
46 | - debug("%s was called with %d files (active_window=%p)", __FUNCTION__, n_files, window); | 52 | + // It's not a session file descriptor, is it an URL? |
53 | + g_autofree gchar * scheme = g_file_get_uri_scheme(files[file]); | ||
47 | 54 | ||
48 | - if(!window) | ||
49 | - window = GTK_WINDOW(pw3270_application_window_new(GTK_APPLICATION(application))); | 55 | + if(!(g_ascii_strcasecmp(scheme,"tn3270") && g_ascii_strcasecmp(scheme,"tn3270s"))) { |
50 | 56 | ||
51 | - // Add tabs to the window | ||
52 | - last = pw3270_window_append_page(GTK_WIDGET(window), files[file]); | ||
53 | - } | 57 | + g_autofree gchar * uri = g_file_get_uri(files[file]); |
58 | + size_t sz = strlen(uri); | ||
59 | + | ||
60 | + if(sz > 0 && uri[sz-1] == '/') | ||
61 | + uri[sz-1] = 0; | ||
54 | 62 | ||
63 | + v3270_set_url(terminal,uri); | ||
55 | 64 | ||
56 | - if(last != -1) | ||
57 | - pw3270_window_set_current_page(GTK_WIDGET(window),last); | 65 | + } |
66 | + | ||
67 | + } | ||
68 | + | ||
69 | + } | ||
58 | 70 | ||
59 | - */ | 71 | + if(window) |
72 | + gtk_window_present(GTK_WINDOW(window)); | ||
60 | 73 | ||
61 | - gtk_window_present(window); | ||
62 | } | 74 | } |
63 | 75 |
src/objects/window/window.c