Commit 7449e7afec8d5966abc290b62d9da0a42710a92f
1 parent
9db919ee
Exists in
master
and in
4 other branches
Implementing action dialog.
Showing
3 changed files
with
28 additions
and
12 deletions
Show diff stats
pw3270.cbp
... | ... | @@ -63,6 +63,9 @@ |
63 | 63 | <Unit filename="src/objects/actions/connect.c"> |
64 | 64 | <Option compilerVar="CC" /> |
65 | 65 | </Unit> |
66 | + <Unit filename="src/objects/actions/dialog.c"> | |
67 | + <Option compilerVar="CC" /> | |
68 | + </Unit> | |
66 | 69 | <Unit filename="src/objects/actions/lib3270/action.c"> |
67 | 70 | <Option compilerVar="CC" /> |
68 | 71 | </Unit> | ... | ... |
src/include/pw3270/actions.h
... | ... | @@ -160,6 +160,22 @@ |
160 | 160 | /// @brief New simple action from LIB3270's action name. |
161 | 161 | pw3270SimpleAction * pw3270_simple_action_new_from_name(const gchar *source_name, const gchar *name); |
162 | 162 | |
163 | + | |
164 | + // | |
165 | + // Dialog action | |
166 | + // | |
167 | + #define PW3270_TYPE_DIALOG_ACTION (pw3270DialogAction_get_type()) | |
168 | + #define PW3270_DIALOG_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), PW3270_TYPE_DIALOG_ACTION, pw3270DialogAction)) | |
169 | + #define PW3270_DIALOG_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PW3270_TYPE_DIALOG_ACTION, pw3270DialogActionClass)) | |
170 | + #define PW3270_IS_DIALOG_ACTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), PW3270_TYPE_DIALOG_ACTION)) | |
171 | + #define PW3270_IS_DIALOG_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PW3270_TYPE_DIALOG_ACTION)) | |
172 | + #define PW3270_DIALOG_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PW3270_TYPE_DIALOG_ACTION, pw3270DialogActionClass)) | |
173 | + | |
174 | + typedef struct _pw3270DialogAction pw3270DialogAction; | |
175 | + typedef struct _pw3270DialogActionClass pw3270DialogActionClass; | |
176 | + | |
177 | + pw3270SimpleAction * pw3270_dialog_action_new(GtkWidget * (*factory)(GtkWidget *)); | |
178 | + | |
163 | 179 | G_END_DECLS |
164 | 180 | |
165 | 181 | #endif // PW3270_ACTIONS_H_INCLUDED | ... | ... |
src/objects/window/actions/sethost.c
... | ... | @@ -33,17 +33,18 @@ |
33 | 33 | #include <v3270/settings.h> |
34 | 34 | #include <v3270/dialogs.h> |
35 | 35 | |
36 | - static void activate(GAction G_GNUC_UNUSED(*action), GVariant G_GNUC_UNUSED(*parameter), GtkWidget *terminal); | |
36 | + static GtkWidget * factory(GtkWidget *terminal); | |
37 | 37 | |
38 | 38 | GAction * pw3270_set_host_action_new(void) { |
39 | 39 | |
40 | - pw3270Action * action = PW3270_ACTION(pw3270_action_new_from_lib3270(lib3270_action_get_by_name("reconnect"))); | |
40 | + pw3270SimpleAction * action = pw3270_dialog_action_new(factory); | |
41 | 41 | |
42 | - action->activate = activate; | |
43 | - action->name = "set.host"; | |
42 | + action->parent.name = "set.host"; | |
43 | + action->group.id = LIB3270_ACTION_GROUP_OFFLINE; | |
44 | + action->icon_name = "network-server"; | |
45 | + action->label = N_("Configure host"); | |
44 | 46 | |
45 | 47 | return G_ACTION(action); |
46 | - | |
47 | 48 | } |
48 | 49 | |
49 | 50 | static void on_response(GtkDialog *dialog, gint response_id, GtkWidget *settings) { |
... | ... | @@ -58,10 +59,7 @@ |
58 | 59 | |
59 | 60 | } |
60 | 61 | |
61 | - void activate(GAction G_GNUC_UNUSED(*action), GVariant G_GNUC_UNUSED(*parameter), GtkWidget *terminal) { | |
62 | - | |
63 | - if(!GTK_IS_V3270(terminal)) | |
64 | - return; | |
62 | + GtkWidget * factory(GtkWidget *terminal) { | |
65 | 63 | |
66 | 64 | GtkWidget * settings = v3270_host_select_new(); |
67 | 65 | GtkWidget * dialog = |
... | ... | @@ -74,12 +72,11 @@ |
74 | 72 | |
75 | 73 | v3270_dialog_setup(dialog,_("Setup host"),_("C_onnect")); |
76 | 74 | gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); |
77 | - | |
78 | - g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL); | |
79 | 75 | g_signal_connect(dialog,"response",G_CALLBACK(on_response),settings); |
80 | 76 | |
81 | - gtk_widget_show_all(dialog); | |
82 | 77 | } |
83 | 78 | |
79 | + return dialog; | |
80 | + | |
84 | 81 | } |
85 | 82 | ... | ... |