Commit b962a055db341bbd21bad07c61ed5833b30e4cf5

Authored by Perry Werneck
1 parent c80d53ee

Working on command line session file parser.

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