Commit b962a055db341bbd21bad07c61ed5833b30e4cf5
1 parent
c80d53ee
Exists in
master
and in
2 other branches
Working on command line session file parser.
Showing
3 changed files
with
60 additions
and
28 deletions
Show diff stats
src/include/pw3270/application.h
... | ... | @@ -90,8 +90,6 @@ GtkBuilder * pw3270_application_get_builder(const gchar *name); |
90 | 90 | |
91 | 91 | void gtk_container_remove_all(GtkContainer *container); |
92 | 92 | |
93 | -gboolean pw3270_application_allow_tabs(GApplication *application); | |
94 | - | |
95 | 93 | // Actions |
96 | 94 | void pw3270_application_print_copy_activated(GAction *action, GVariant *parameter, GtkWidget *terminal); |
97 | 95 | void pw3270_application_save_copy_activated(GAction *action, GVariant *parameter, GtkWidget *terminal); | ... | ... |
src/objects/application/application.c
... | ... | @@ -57,8 +57,6 @@ struct _pw3270Application { |
57 | 57 | GSettings * settings; |
58 | 58 | GList * keypads; |
59 | 59 | gchar * logfile; |
60 | - gboolean allow_tabs; ///< @brief Always open window. | |
61 | - | |
62 | 60 | GSList * plugins; ///< @brief Handlers of the loaded plugins. |
63 | 61 | PW3270_UI_STYLE ui_style; |
64 | 62 | |
... | ... | @@ -230,17 +228,6 @@ static gboolean on_user_interface(const gchar G_GNUC_UNUSED(*option), const gcha |
230 | 228 | |
231 | 229 | } |
232 | 230 | |
233 | -static gboolean on_allow_tabs(const gchar G_GNUC_UNUSED(*option), const gchar *value, gpointer G_GNUC_UNUSED(dunno), GError **error) { | |
234 | - pw3270Application *app = PW3270_APPLICATION(g_application_get_default()); | |
235 | - app->allow_tabs = (g_ascii_strcasecmp(value,"no") != 0); | |
236 | - if(app->allow_tabs) { | |
237 | - g_message("Opening new sessions on tabs"); | |
238 | - } else { | |
239 | - g_message("Opening new sessions on windows"); | |
240 | - } | |
241 | - return TRUE; | |
242 | -} | |
243 | - | |
244 | 231 | static gboolean on_logfile(const gchar G_GNUC_UNUSED(*option), const gchar *value, gpointer G_GNUC_UNUSED(dunno), GError **error) { |
245 | 232 | pw3270_application_set_log_filename(g_application_get_default(),value); |
246 | 233 | return TRUE; |
... | ... | @@ -251,14 +238,11 @@ static void pw3270Application_init(pw3270Application *app) { |
251 | 238 | static GOptionEntry cmd_options[] = { |
252 | 239 | |
253 | 240 | { "user-interface", 'U', 0, G_OPTION_ARG_CALLBACK, &on_user_interface, N_( "Set the user-interface type" ), NULL }, |
254 | - { "allow-tabs", 'T', 0, G_OPTION_ARG_CALLBACK, &on_allow_tabs, N_( "If 'no' allways open a window" ), NULL }, | |
255 | 241 | { "logfile", 'l', 0, G_OPTION_ARG_CALLBACK, &on_logfile, N_( "Set default log file name" ), NULL }, |
256 | 242 | { NULL } |
257 | 243 | |
258 | 244 | }; |
259 | 245 | |
260 | - app->allow_tabs = TRUE; | |
261 | - | |
262 | 246 | g_application_add_main_option_entries(G_APPLICATION(app), cmd_options); |
263 | 247 | |
264 | 248 | #ifdef _WIN32 |
... | ... | @@ -558,11 +542,6 @@ void pw3270_application_plugin_foreach(GApplication *app, GFunc func, gpointer u |
558 | 542 | |
559 | 543 | } |
560 | 544 | |
561 | -gboolean pw3270_application_allow_tabs(GApplication *app) { | |
562 | - g_return_val_if_fail(PW3270_IS_APPLICATION(app),TRUE); | |
563 | - return PW3270_APPLICATION(app)->allow_tabs; | |
564 | -} | |
565 | - | |
566 | 545 | void pw3270_application_plugin_call(GApplication *app, const gchar *method, gpointer user_data) { |
567 | 546 | |
568 | 547 | g_return_if_fail(PW3270_IS_APPLICATION(app)); | ... | ... |
src/objects/application/open.c
... | ... | @@ -70,16 +70,70 @@ gchar * v3270_keyfile_find(const gchar *name) { |
70 | 70 | |
71 | 71 | } |
72 | 72 | |
73 | -void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) { | |
73 | +/// @brief Open session file | |
74 | +static void open(GtkApplication *application, const gchar *filename) { | |
75 | + | |
76 | + g_message("Opening '%s'",filename); | |
77 | + | |
78 | + GtkWindow *window = GTK_WINDOW(pw3270_application_window_new(application, filename)); | |
79 | + gtk_window_present(window); | |
80 | + | |
81 | +} | |
82 | + | |
83 | +void pw3270_application_open_file(GtkApplication *application, GFile *file) { | |
84 | + | |
85 | +// GtkWidget * window = gtk_application_get_active_window(application); | |
86 | + g_autofree gchar * scheme = g_file_get_uri_scheme(file); | |
87 | + | |
88 | + if(g_ascii_strcasecmp(scheme,"file") == 0) { | |
89 | + | |
90 | + // It's a file scheme. | |
91 | + if(g_file_query_exists(file,NULL)) { | |
92 | + | |
93 | + // The file exists, load it. | |
94 | + g_autofree gchar *filename = g_file_get_path(file); | |
95 | + open(application,filename); | |
96 | + | |
97 | + } else { | |
98 | + | |
99 | + // The file doesn't exist, search for. | |
100 | + g_autofree gchar * basename = g_file_get_basename(file); | |
101 | + g_autofree gchar * filename = v3270_keyfile_find(basename); | |
102 | + | |
103 | + if(filename) { | |
104 | + open(application,filename); | |
105 | + } else { | |
106 | + g_warning("Cant find session '%s'",basename); | |
107 | + } | |
108 | + | |
109 | + } | |
110 | + | |
111 | + } else if(g_ascii_strcasecmp(scheme,"tn3270") == 0 || g_ascii_strcasecmp(scheme,"tn3270s") == 0) { | |
112 | + | |
113 | + | |
114 | + } else { | |
115 | + | |
116 | + g_warning("Don't know how to handle '%s' scheme",scheme); | |
117 | + | |
118 | + } | |
119 | + | |
120 | + | |
121 | + | |
122 | +} | |
74 | 123 | |
75 | - GtkWidget * window = GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))); | |
124 | +void pw3270_application_open(GApplication *application, GFile **files, gint n_files, const gchar G_GNUC_UNUSED(*hint)) { | |
76 | 125 | |
77 | 126 | gint file; |
78 | 127 | |
79 | - debug("%s files=%d",__FUNCTION__,n_files); | |
128 | + debug("\n\n%s files=%d",__FUNCTION__,n_files); | |
80 | 129 | |
81 | 130 | for(file = 0; file < n_files; file++) { |
82 | 131 | |
132 | + debug("%s(%d,%p)",__FUNCTION__,file,files[file]); | |
133 | + pw3270_application_open_file(GTK_APPLICATION(application),files[file]); | |
134 | + | |
135 | + /* | |
136 | + | |
83 | 137 | g_autofree gchar *path = g_file_get_path(files[file]); |
84 | 138 | |
85 | 139 | if(!path) { |
... | ... | @@ -152,10 +206,11 @@ void pw3270_application_open(GApplication *application, GFile **files, gint n_fi |
152 | 206 | |
153 | 207 | } |
154 | 208 | |
209 | + */ | |
155 | 210 | } |
156 | 211 | |
157 | - if(window) | |
158 | - gtk_window_present(GTK_WINDOW(window)); | |
212 | +// if(window) | |
213 | +// gtk_window_present(GTK_WINDOW(window)); | |
159 | 214 | |
160 | 215 | } |
161 | 216 | ... | ... |