diff --git a/pw3270.cbp b/pw3270.cbp
index 0eea8b5..8316f71 100644
--- a/pw3270.cbp
+++ b/pw3270.cbp
@@ -63,6 +63,9 @@
+
+
+
diff --git a/src/include/pw3270/actions.h b/src/include/pw3270/actions.h
index 1ad06f7..27c9b44 100644
--- a/src/include/pw3270/actions.h
+++ b/src/include/pw3270/actions.h
@@ -160,6 +160,22 @@
/// @brief New simple action from LIB3270's action name.
pw3270SimpleAction * pw3270_simple_action_new_from_name(const gchar *source_name, const gchar *name);
+
+ //
+ // Dialog action
+ //
+ #define PW3270_TYPE_DIALOG_ACTION (pw3270DialogAction_get_type())
+ #define PW3270_DIALOG_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), PW3270_TYPE_DIALOG_ACTION, pw3270DialogAction))
+ #define PW3270_DIALOG_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PW3270_TYPE_DIALOG_ACTION, pw3270DialogActionClass))
+ #define PW3270_IS_DIALOG_ACTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), PW3270_TYPE_DIALOG_ACTION))
+ #define PW3270_IS_DIALOG_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PW3270_TYPE_DIALOG_ACTION))
+ #define PW3270_DIALOG_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PW3270_TYPE_DIALOG_ACTION, pw3270DialogActionClass))
+
+ typedef struct _pw3270DialogAction pw3270DialogAction;
+ typedef struct _pw3270DialogActionClass pw3270DialogActionClass;
+
+ pw3270SimpleAction * pw3270_dialog_action_new(GtkWidget * (*factory)(GtkWidget *));
+
G_END_DECLS
#endif // PW3270_ACTIONS_H_INCLUDED
diff --git a/src/objects/window/actions/sethost.c b/src/objects/window/actions/sethost.c
index f8650d0..c8f8675 100644
--- a/src/objects/window/actions/sethost.c
+++ b/src/objects/window/actions/sethost.c
@@ -33,17 +33,18 @@
#include
#include
- static void activate(GAction G_GNUC_UNUSED(*action), GVariant G_GNUC_UNUSED(*parameter), GtkWidget *terminal);
+ static GtkWidget * factory(GtkWidget *terminal);
GAction * pw3270_set_host_action_new(void) {
- pw3270Action * action = PW3270_ACTION(pw3270_action_new_from_lib3270(lib3270_action_get_by_name("reconnect")));
+ pw3270SimpleAction * action = pw3270_dialog_action_new(factory);
- action->activate = activate;
- action->name = "set.host";
+ action->parent.name = "set.host";
+ action->group.id = LIB3270_ACTION_GROUP_OFFLINE;
+ action->icon_name = "network-server";
+ action->label = N_("Configure host");
return G_ACTION(action);
-
}
static void on_response(GtkDialog *dialog, gint response_id, GtkWidget *settings) {
@@ -58,10 +59,7 @@
}
- void activate(GAction G_GNUC_UNUSED(*action), GVariant G_GNUC_UNUSED(*parameter), GtkWidget *terminal) {
-
- if(!GTK_IS_V3270(terminal))
- return;
+ GtkWidget * factory(GtkWidget *terminal) {
GtkWidget * settings = v3270_host_select_new();
GtkWidget * dialog =
@@ -74,12 +72,11 @@
v3270_dialog_setup(dialog,_("Setup host"),_("C_onnect"));
gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-
- g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL);
g_signal_connect(dialog,"response",G_CALLBACK(on_response),settings);
- gtk_widget_show_all(dialog);
}
+ return dialog;
+
}
--
libgit2 0.21.2