diff --git a/src/include/pw3270/actions.h b/src/include/pw3270/actions.h index 2742ef4..d5e241e 100644 --- a/src/include/pw3270/actions.h +++ b/src/include/pw3270/actions.h @@ -193,7 +193,7 @@ typedef struct _pw3270DialogAction pw3270DialogAction; typedef struct _pw3270DialogActionClass pw3270DialogActionClass; - pw3270SimpleAction * pw3270_dialog_action_new(GtkWidget * (*factory)(GtkWidget *)); + pw3270SimpleAction * pw3270_dialog_action_new(GtkWidget * (*factory)(pw3270SimpleAction *action, GtkWidget *)); // // V3270 Property Action diff --git a/src/objects/actions/dialog.c b/src/objects/actions/dialog.c index 8661350..b7810d3 100644 --- a/src/objects/actions/dialog.c +++ b/src/objects/actions/dialog.c @@ -45,7 +45,7 @@ pw3270SimpleAction parent; GtkWidget * dialog; - GtkWidget * (*factory)(GtkWidget *); + GtkWidget * (*factory)(pw3270SimpleAction *, GtkWidget *); }; @@ -82,7 +82,7 @@ } - pw3270SimpleAction * pw3270_dialog_action_new(GtkWidget * (*factory)(GtkWidget *)) { + pw3270SimpleAction * pw3270_dialog_action_new(GtkWidget * (*factory)(pw3270SimpleAction *, GtkWidget *)) { pw3270DialogAction * action = (pw3270DialogAction *) g_object_new(PW3270_TYPE_DIALOG_ACTION, NULL); action->factory = factory; @@ -109,7 +109,7 @@ if(action->dialog || !action->factory) return; - action->dialog = action->factory(terminal); + action->dialog = action->factory((pw3270SimpleAction *) object, terminal); pw3270_action_notify_enabled(G_ACTION(action)); if(action->dialog) { diff --git a/src/objects/actions/save.c b/src/objects/actions/save.c index a3724f0..ad87684 100644 --- a/src/objects/actions/save.c +++ b/src/objects/actions/save.c @@ -38,7 +38,7 @@ #include - static GtkWidget * factory(GtkWidget *terminal); + static GtkWidget * factory(pw3270SimpleAction *action, GtkWidget *terminal); static void response(GtkWidget *dialog, gint response_id, GtkWidget *terminal); GAction * pw3270_action_save_session_as_new(void) { @@ -46,19 +46,19 @@ pw3270SimpleAction * action = pw3270_dialog_action_new(factory); action->parent.name = "save.session.as"; - action->label = N_("Save As"); + action->label = _("Save As"); action->icon_name = "document-save-as"; - action->tooltip = N_("Save session properties to file"); + action->tooltip = _("Save session properties"); return G_ACTION(action); } - GtkWidget * factory(GtkWidget *terminal) { + GtkWidget * factory(pw3270SimpleAction *action, GtkWidget *terminal) { GtkWidget * dialog = gtk_file_chooser_dialog_new( - _("Save session properties"), + action->tooltip, GTK_WINDOW(gtk_widget_get_toplevel(terminal)), GTK_FILE_CHOOSER_ACTION_SAVE, _("Save"), GTK_RESPONSE_OK, diff --git a/src/objects/application/actions/open.c b/src/objects/application/actions/open.c index 01163f9..e8f3650 100644 --- a/src/objects/application/actions/open.c +++ b/src/objects/application/actions/open.c @@ -63,7 +63,7 @@ return filename; } - void pw3270_application_open_activated(GSimpleAction * action, GVariant *parameter, gpointer application) { + void pw3270_application_open_activated(GSimpleAction * action, GVariant G_GNUC_UNUSED(*parameter), gpointer G_GNUC_UNUSED(application)) { debug("%s",__FUNCTION__); g_simple_action_set_enabled(action,FALSE); @@ -71,22 +71,28 @@ g_simple_action_set_enabled(action,TRUE); } - void pw3270_application_open_tab_activated(GSimpleAction * action, GVariant *parameter, gpointer application) { + void pw3270_application_open_tab_activated(GSimpleAction * action, GVariant G_GNUC_UNUSED(*parameter), gpointer application) { debug("%s",__FUNCTION__); g_simple_action_set_enabled(action,FALSE); g_autofree gchar * session_file_name = get_session_file_name(GTK_APPLICATION(application),_("Open session in new tab")); + if(session_file_name) { + pw3270_terminal_new(GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))), session_file_name); + } g_simple_action_set_enabled(action,TRUE); } - void pw3270_application_open_window_activated(GSimpleAction * action, GVariant *parameter, gpointer application) { + void pw3270_application_open_window_activated(GSimpleAction * action, GVariant G_GNUC_UNUSED(*parameter), gpointer application) { debug("%s",__FUNCTION__); g_simple_action_set_enabled(action,FALSE); g_autofree gchar * session_file_name = get_session_file_name(GTK_APPLICATION(application),_("Open session in new window")); + if(session_file_name) { +// pw3270_terminal_new(pw3270_application_window_new(GTK_APPLICATION(application)), session_file_name); + } g_simple_action_set_enabled(action,TRUE); } diff --git a/src/objects/application/application.c b/src/objects/application/application.c index eaa399e..50a048d 100644 --- a/src/objects/application/application.c +++ b/src/objects/application/application.c @@ -310,49 +310,6 @@ } - /* - // Create conditional actions. - static const struct { - const gchar * label; - const gchar * tooltip; - const gchar * action_name; - const gchar * icon_name; - const gchar * property_name; - void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal); - } conditional_actions[] = { - { - .label = N_("Save copy"), - .action_name = "save.copy", - .property_name = "has_copy", - .activate = pw3270_application_save_copy_activated - }, - { - .label = N_("Print copy"), - .action_name = "print.copy", - .icon_name = "printer", - .property_name = "has_copy", - .activate = pw3270_application_print_copy_activated - } - }; - - for(ix = 0; ix < G_N_ELEMENTS(conditional_actions); ix++) { - - pw3270SimpleAction * action = PW3270_SIMPLE_ACTION(v3270_conditional_action_new(terminal,conditional_actions[ix].property_name)); - - action->parent.name = conditional_actions[ix].action_name; - action->label = conditional_actions[ix].label; - action->tooltip = conditional_actions[ix].tooltip; - action->icon_name = conditional_actions[ix].icon_name; - PW3270_ACTION(action)->activate = conditional_actions[ix].activate; - - g_action_map_add_action( - G_ACTION_MAP(window), - G_ACTION(action) - ); - - } - */ - // Present the new window pw3270_window_set_current_page(window,0); gtk_window_present(GTK_WINDOW(window)); diff --git a/src/objects/window/actions/hostproperties.c b/src/objects/window/actions/hostproperties.c index 027a2ee..f1a1e80 100644 --- a/src/objects/window/actions/hostproperties.c +++ b/src/objects/window/actions/hostproperties.c @@ -33,7 +33,7 @@ #include #include - static GtkWidget * factory(GtkWidget *terminal); + static GtkWidget * factory(pw3270SimpleAction *action, GtkWidget *terminal); GAction * pw3270_action_host_properties_new(void) { @@ -47,7 +47,7 @@ return G_ACTION(action); } - GtkWidget * factory(GtkWidget *terminal) { + GtkWidget * factory(pw3270SimpleAction G_GNUC_UNUSED(*action), GtkWidget *terminal) { GtkWidget * dialog = v3270_settings_dialog_new(); V3270Settings * settings = GTK_V3270_SETTINGS(v3270_host_settings_new()); diff --git a/src/objects/window/actions/sessionproperties.c b/src/objects/window/actions/sessionproperties.c index cc77152..21efedd 100644 --- a/src/objects/window/actions/sessionproperties.c +++ b/src/objects/window/actions/sessionproperties.c @@ -34,7 +34,7 @@ #include #include - static GtkWidget * factory(GtkWidget *terminal); + static GtkWidget * factory(pw3270SimpleAction *action, GtkWidget *terminal); GAction * pw3270_action_session_properties_new(void) { @@ -42,20 +42,20 @@ action->parent.name = "session.properties"; action->icon_name = "preferences-other"; - action->label = N_("Session properties"); + action->label = _("Session properties"); return G_ACTION(action); } - GtkWidget * factory(GtkWidget *terminal) { + GtkWidget * factory(pw3270SimpleAction *action, GtkWidget *terminal) { size_t ix; GtkWidget * dialog = v3270_settings_dialog_new(); - gtk_window_set_title(GTK_WINDOW(dialog), _("Session properties")); + gtk_window_set_title(GTK_WINDOW(dialog), action->label); // Add settings pages. GtkWidget * elements[] = { diff --git a/src/objects/window/actions/setcolors.c b/src/objects/window/actions/setcolors.c index a12c50c..4d9b6a1 100644 --- a/src/objects/window/actions/setcolors.c +++ b/src/objects/window/actions/setcolors.c @@ -34,7 +34,7 @@ #include #include - static GtkWidget * factory(GtkWidget *terminal); + static GtkWidget * factory(pw3270SimpleAction *action, GtkWidget *terminal); GAction * pw3270_set_color_action_new(void) { @@ -48,7 +48,7 @@ } - GtkWidget * factory(GtkWidget *terminal) { + GtkWidget * factory(pw3270SimpleAction G_GNUC_UNUSED(*action), GtkWidget *terminal) { return v3270_settings_get_edit_dialog(v3270_color_settings_new(),terminal,FALSE); -- libgit2 0.21.2