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 | ... | ... |