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 62 /// @brief Create a new terminal tab.
63 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 65 /// @brief Get the active session handle.
69 66 H3270 * pw3270_window_get_session_handle(GtkWidget *window);
70 67  
... ...
src/objects/application/open.c
... ... @@ -31,33 +31,45 @@
31 31  
32 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 36 gint file;
37   - gint last = -1;
38 37  
39 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 344  
345 345 // gtk_window_set_interactive_debugging(TRUE);
346 346  
  347 +
347 348 return GTK_WIDGET(window);
348 349  
349 350 }
... ...