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