Commit d1bc4ea45d7db3946218fbc3ae8f60c9cc970152

Authored by Perry Werneck
1 parent a195cce0

Fixing set host action.

src/include/pw3270/actions.h
... ... @@ -38,6 +38,7 @@
38 38  
39 39 #include <gio/gio.h>
40 40 #include <lib3270.h>
  41 + #include <lib3270/actions.h>
41 42  
42 43 G_BEGIN_DECLS
43 44  
... ... @@ -48,13 +49,45 @@
48 49 #define PW3270_IS_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PW3270_TYPE_ACTION))
49 50 #define PW3270_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PW3270_TYPE_ACTION, pw3270ActionClass))
50 51  
51   - typedef struct _pw3270Action pw3270Action;
52   - typedef struct _pw3270ActionClass pw3270ActionClass;
  52 + typedef struct _pw3270Action {
  53 +
  54 + GObject parent;
  55 +
  56 + const gchar * name; /// @brief Action name (const string).
  57 + GVariantType * parameter_type; /// @brief Parameter type.
  58 + GVariant * state; /// @brief Action state.
  59 + GtkWidget * terminal; /// @brief The active terminal widget.
  60 +
  61 + /// @brief Activation method.
  62 + void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal);
  63 +
  64 + } pw3270Action;
  65 +
  66 + typedef struct _pw3270ActionClass {
  67 +
  68 + GObjectClass parent_class;
  69 +
  70 + struct {
  71 + GParamSpec * state;
  72 + GParamSpec * enabled;
  73 + } properties;
  74 +
  75 + void (*change_widget)(GAction *action, GtkWidget *from, GtkWidget *to);
  76 + gboolean (*get_enabled)(GAction *action, GtkWidget *terminal);
  77 + const GVariantType * (*get_parameter_type)(GAction *action);
  78 + const gchar * (*get_icon_name)(GAction *action);
  79 + const gchar * (*get_label)(GAction *action);
  80 + const gchar * (*get_tooltip)(GAction *action);
  81 +
  82 + } pw3270ActionClass;
53 83  
54 84 GType pw3270Action_get_type(void) G_GNUC_CONST;
55 85  
  86 + /// @brief New action from LIB3270's control data.
  87 + GAction * pw3270_action_new_from_lib3270(const LIB3270_ACTION * definition);
  88 +
  89 + /// @brief Get action name.
56 90 const gchar * pw3270_action_get_name(GAction *action);
57   - void pw3270_action_set_name(GAction *action, const gchar *name);
58 91  
59 92 /// @brief Get the action icon name.
60 93 const gchar * pw3270_action_get_icon_name(GAction *action);
... ...
src/objects/actions/private.h
... ... @@ -51,42 +51,13 @@
51 51 /* not really I18N-related, but also a string marker macro */
52 52 #define I_(string) g_intern_static_string (string)
53 53  
54   - struct _pw3270Action {
55   - GObject parent;
56   -
57   - const gchar * name;
58   - GVariantType * parameter_type;
59   - GVariant * state;
60   - GtkWidget * terminal;
61   -
62   - void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal);
63   -
64   - };
65   -
66   - struct _pw3270ActionClass {
67   - GObjectClass parent_class;
68   -
69   - struct {
70   - GParamSpec * state;
71   - GParamSpec * enabled;
72   - } properties;
73   -
74   - void (*change_widget)(GAction *action, GtkWidget *from, GtkWidget *to);
75   - gboolean (*get_enabled)(GAction *action, GtkWidget *terminal);
76   - const GVariantType * (*get_parameter_type)(GAction *action);
77   - const gchar * (*get_icon_name)(GAction *action);
78   - const gchar * (*get_label)(GAction *action);
79   - const gchar * (*get_tooltip)(GAction *action);
80   -
81   - };
82   -
83   - G_GNUC_INTERNAL GAction * pw3270_action_new_from_lib3270(const LIB3270_ACTION * definition);
84 54 G_GNUC_INTERNAL GAction * pw3270_toggle_action_new_from_lib3270(const LIB3270_TOGGLE * definition);
85 55 G_GNUC_INTERNAL GAction * pw3270_action_new_pfkey(void);
86 56 G_GNUC_INTERNAL GAction * pw3270_action_new_pakey(void);
87 57  
88 58 G_GNUC_INTERNAL void pw3270_action_change_state_boolean(GAction *action, gboolean state);
89 59 G_GNUC_INTERNAL void pw3270_action_notify_enabled(GAction *action);
  60 + G_GNUC_INTERNAL void pw3270_action_set_name(GAction *object, const gchar *name);
90 61  
91 62 // Internal actions
92 63 G_GNUC_INTERNAL GAction * pw3270_connect_action_new(void);
... ...
src/objects/window/actions/sethost.c
... ... @@ -29,9 +29,23 @@
29 29  
30 30 #include "../private.h"
31 31 #include <pw3270/window.h>
  32 + #include <pw3270/actions.h>
32 33 #include <v3270/settings.h>
33 34 #include <v3270/dialogs.h>
34 35  
  36 + static void activate(GAction G_GNUC_UNUSED(*action), GVariant G_GNUC_UNUSED(*parameter), GtkWidget *terminal);
  37 +
  38 + GAction * pw3270_set_host_action_new(void) {
  39 +
  40 + pw3270Action * action = PW3270_ACTION(pw3270_action_new_from_lib3270(lib3270_action_get_by_name("reconnect")));
  41 +
  42 + action->activate = activate;
  43 + action->name = "set.host";
  44 +
  45 + return G_ACTION(action);
  46 +
  47 + }
  48 +
35 49 static void on_response(GtkDialog *dialog, gint response_id, GtkWidget *settings) {
36 50  
37 51 v3270_settings_on_dialog_response(dialog,response_id,settings);
... ... @@ -44,14 +58,8 @@
44 58  
45 59 }
46 60  
47   - void pw3270_window_set_host_activated(GSimpleAction G_GNUC_UNUSED(* action), GVariant G_GNUC_UNUSED(*parameter), gpointer window) {
48   -
49   - debug("%s",__FUNCTION__);
  61 + void activate(GAction G_GNUC_UNUSED(*action), GVariant G_GNUC_UNUSED(*parameter), GtkWidget *terminal) {
50 62  
51   - if(!PW3270_IS_APPLICATION_WINDOW(window))
52   - return;
53   -
54   - GtkWidget * terminal = gtk_window_get_default_widget(GTK_WINDOW(window));
55 63 if(!GTK_IS_V3270(terminal))
56 64 return;
57 65  
... ... @@ -65,8 +73,7 @@
65 73 if(dialog) {
66 74  
67 75 v3270_dialog_setup(dialog,_("Setup host"),_("C_onnect"));
68   -
69   - gtk_window_set_default_size(GTK_WINDOW(dialog), 700, 150);
  76 + gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
70 77  
71 78 g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL);
72 79 g_signal_connect(dialog,"response",G_CALLBACK(on_response),settings);
... ...
src/objects/window/private.h
... ... @@ -65,10 +65,11 @@
65 65 G_GNUC_INTERNAL GtkWidget * pw3270_setup_image_button(GtkWidget *button, const gchar *image_name);
66 66  
67 67 // Actions
  68 + GAction * pw3270_set_host_action_new(void);
  69 +
68 70 G_GNUC_INTERNAL void pw3270_window_open_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
69 71 G_GNUC_INTERNAL void pw3270_window_close_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
70 72 G_GNUC_INTERNAL void pw3270_window_preferences_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
71   - G_GNUC_INTERNAL void pw3270_window_set_host_activated(GSimpleAction G_GNUC_UNUSED(* action), GVariant G_GNUC_UNUSED(*parameter), gpointer application);
72 73  
73 74  
74 75 #endif // PRIVATE_H_INCLUDED
... ...
src/objects/window/window.c
... ... @@ -95,6 +95,20 @@
95 95 //
96 96 pw3270_window_add_actions(GTK_WIDGET(widget));
97 97  
  98 + // Map special actions
  99 + {
  100 + size_t ix;
  101 +
  102 + GAction * actions[] = {
  103 + pw3270_set_host_action_new()
  104 + };
  105 +
  106 + for(ix = 0; ix < G_N_ELEMENTS(actions); ix++) {
  107 + g_action_map_add_action(G_ACTION_MAP(widget),actions[ix]);
  108 + }
  109 +
  110 + }
  111 +
98 112 //
99 113 // Setup Window actions.
100 114 //
... ... @@ -115,12 +129,6 @@
115 129 .activate = pw3270_window_preferences_activated,
116 130 },
117 131  
118   - {
119   - .name = "set.host",
120   - .activate = pw3270_window_set_host_activated,
121   - },
122   -
123   -
124 132 };
125 133  
126 134 g_action_map_add_action_entries(
... ...