Commit 81d5a6c6ee2ad0e7997267753287b061ceecb4d8

Authored by Perry Werneck
1 parent b7b8a75e

Refactoring the open session/url from command line.

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
@@ -344,6 +344,7 @@ @@ -344,6 +344,7 @@
344 344
345 // gtk_window_set_interactive_debugging(TRUE); 345 // gtk_window_set_interactive_debugging(TRUE);
346 346
  347 +
347 return GTK_WIDGET(window); 348 return GTK_WIDGET(window);
348 349
349 } 350 }