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,8 +90,6 @@ GtkBuilder * pw3270_application_get_builder(const gchar *name); | ||
| 90 | 90 | ||
| 91 | void gtk_container_remove_all(GtkContainer *container); | 91 | void gtk_container_remove_all(GtkContainer *container); |
| 92 | 92 | ||
| 93 | -gboolean pw3270_application_allow_tabs(GApplication *application); | ||
| 94 | - | ||
| 95 | // Actions | 93 | // Actions |
| 96 | void pw3270_application_print_copy_activated(GAction *action, GVariant *parameter, GtkWidget *terminal); | 94 | void pw3270_application_print_copy_activated(GAction *action, GVariant *parameter, GtkWidget *terminal); |
| 97 | void pw3270_application_save_copy_activated(GAction *action, GVariant *parameter, GtkWidget *terminal); | 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,8 +57,6 @@ struct _pw3270Application { | ||
| 57 | GSettings * settings; | 57 | GSettings * settings; |
| 58 | GList * keypads; | 58 | GList * keypads; |
| 59 | gchar * logfile; | 59 | gchar * logfile; |
| 60 | - gboolean allow_tabs; ///< @brief Always open window. | ||
| 61 | - | ||
| 62 | GSList * plugins; ///< @brief Handlers of the loaded plugins. | 60 | GSList * plugins; ///< @brief Handlers of the loaded plugins. |
| 63 | PW3270_UI_STYLE ui_style; | 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,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 | static gboolean on_logfile(const gchar G_GNUC_UNUSED(*option), const gchar *value, gpointer G_GNUC_UNUSED(dunno), GError **error) { | 231 | static gboolean on_logfile(const gchar G_GNUC_UNUSED(*option), const gchar *value, gpointer G_GNUC_UNUSED(dunno), GError **error) { |
| 245 | pw3270_application_set_log_filename(g_application_get_default(),value); | 232 | pw3270_application_set_log_filename(g_application_get_default(),value); |
| 246 | return TRUE; | 233 | return TRUE; |
| @@ -251,14 +238,11 @@ static void pw3270Application_init(pw3270Application *app) { | @@ -251,14 +238,11 @@ static void pw3270Application_init(pw3270Application *app) { | ||
| 251 | static GOptionEntry cmd_options[] = { | 238 | static GOptionEntry cmd_options[] = { |
| 252 | 239 | ||
| 253 | { "user-interface", 'U', 0, G_OPTION_ARG_CALLBACK, &on_user_interface, N_( "Set the user-interface type" ), NULL }, | 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 | { "logfile", 'l', 0, G_OPTION_ARG_CALLBACK, &on_logfile, N_( "Set default log file name" ), NULL }, | 241 | { "logfile", 'l', 0, G_OPTION_ARG_CALLBACK, &on_logfile, N_( "Set default log file name" ), NULL }, |
| 256 | { NULL } | 242 | { NULL } |
| 257 | 243 | ||
| 258 | }; | 244 | }; |
| 259 | 245 | ||
| 260 | - app->allow_tabs = TRUE; | ||
| 261 | - | ||
| 262 | g_application_add_main_option_entries(G_APPLICATION(app), cmd_options); | 246 | g_application_add_main_option_entries(G_APPLICATION(app), cmd_options); |
| 263 | 247 | ||
| 264 | #ifdef _WIN32 | 248 | #ifdef _WIN32 |
| @@ -558,11 +542,6 @@ void pw3270_application_plugin_foreach(GApplication *app, GFunc func, gpointer u | @@ -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 | void pw3270_application_plugin_call(GApplication *app, const gchar *method, gpointer user_data) { | 545 | void pw3270_application_plugin_call(GApplication *app, const gchar *method, gpointer user_data) { |
| 567 | 546 | ||
| 568 | g_return_if_fail(PW3270_IS_APPLICATION(app)); | 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,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 | gint file; | 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 | for(file = 0; file < n_files; file++) { | 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 | g_autofree gchar *path = g_file_get_path(files[file]); | 137 | g_autofree gchar *path = g_file_get_path(files[file]); |
| 84 | 138 | ||
| 85 | if(!path) { | 139 | if(!path) { |
| @@ -152,10 +206,11 @@ void pw3270_application_open(GApplication *application, GFile **files, gint n_fi | @@ -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 |