Commit d1bc4ea45d7db3946218fbc3ae8f60c9cc970152

Authored by Perry Werneck
1 parent a195cce0

Fixing set host action.

src/include/pw3270/actions.h
@@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@
38 38
39 #include <gio/gio.h> 39 #include <gio/gio.h>
40 #include <lib3270.h> 40 #include <lib3270.h>
  41 + #include <lib3270/actions.h>
41 42
42 G_BEGIN_DECLS 43 G_BEGIN_DECLS
43 44
@@ -48,13 +49,45 @@ @@ -48,13 +49,45 @@
48 #define PW3270_IS_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PW3270_TYPE_ACTION)) 49 #define PW3270_IS_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PW3270_TYPE_ACTION))
49 #define PW3270_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PW3270_TYPE_ACTION, pw3270ActionClass)) 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 GType pw3270Action_get_type(void) G_GNUC_CONST; 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 const gchar * pw3270_action_get_name(GAction *action); 90 const gchar * pw3270_action_get_name(GAction *action);
57 - void pw3270_action_set_name(GAction *action, const gchar *name);  
58 91
59 /// @brief Get the action icon name. 92 /// @brief Get the action icon name.
60 const gchar * pw3270_action_get_icon_name(GAction *action); 93 const gchar * pw3270_action_get_icon_name(GAction *action);
src/objects/actions/private.h
@@ -51,42 +51,13 @@ @@ -51,42 +51,13 @@
51 /* not really I18N-related, but also a string marker macro */ 51 /* not really I18N-related, but also a string marker macro */
52 #define I_(string) g_intern_static_string (string) 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 G_GNUC_INTERNAL GAction * pw3270_toggle_action_new_from_lib3270(const LIB3270_TOGGLE * definition); 54 G_GNUC_INTERNAL GAction * pw3270_toggle_action_new_from_lib3270(const LIB3270_TOGGLE * definition);
85 G_GNUC_INTERNAL GAction * pw3270_action_new_pfkey(void); 55 G_GNUC_INTERNAL GAction * pw3270_action_new_pfkey(void);
86 G_GNUC_INTERNAL GAction * pw3270_action_new_pakey(void); 56 G_GNUC_INTERNAL GAction * pw3270_action_new_pakey(void);
87 57
88 G_GNUC_INTERNAL void pw3270_action_change_state_boolean(GAction *action, gboolean state); 58 G_GNUC_INTERNAL void pw3270_action_change_state_boolean(GAction *action, gboolean state);
89 G_GNUC_INTERNAL void pw3270_action_notify_enabled(GAction *action); 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 // Internal actions 62 // Internal actions
92 G_GNUC_INTERNAL GAction * pw3270_connect_action_new(void); 63 G_GNUC_INTERNAL GAction * pw3270_connect_action_new(void);
src/objects/window/actions/sethost.c
@@ -29,9 +29,23 @@ @@ -29,9 +29,23 @@
29 29
30 #include "../private.h" 30 #include "../private.h"
31 #include <pw3270/window.h> 31 #include <pw3270/window.h>
  32 + #include <pw3270/actions.h>
32 #include <v3270/settings.h> 33 #include <v3270/settings.h>
33 #include <v3270/dialogs.h> 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 static void on_response(GtkDialog *dialog, gint response_id, GtkWidget *settings) { 49 static void on_response(GtkDialog *dialog, gint response_id, GtkWidget *settings) {
36 50
37 v3270_settings_on_dialog_response(dialog,response_id,settings); 51 v3270_settings_on_dialog_response(dialog,response_id,settings);
@@ -44,14 +58,8 @@ @@ -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 if(!GTK_IS_V3270(terminal)) 63 if(!GTK_IS_V3270(terminal))
56 return; 64 return;
57 65
@@ -65,8 +73,7 @@ @@ -65,8 +73,7 @@
65 if(dialog) { 73 if(dialog) {
66 74
67 v3270_dialog_setup(dialog,_("Setup host"),_("C_onnect")); 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 g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL); 78 g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL);
72 g_signal_connect(dialog,"response",G_CALLBACK(on_response),settings); 79 g_signal_connect(dialog,"response",G_CALLBACK(on_response),settings);
src/objects/window/private.h
@@ -65,10 +65,11 @@ @@ -65,10 +65,11 @@
65 G_GNUC_INTERNAL GtkWidget * pw3270_setup_image_button(GtkWidget *button, const gchar *image_name); 65 G_GNUC_INTERNAL GtkWidget * pw3270_setup_image_button(GtkWidget *button, const gchar *image_name);
66 66
67 // Actions 67 // Actions
  68 + GAction * pw3270_set_host_action_new(void);
  69 +
68 G_GNUC_INTERNAL void pw3270_window_open_activated(GSimpleAction * action, GVariant *parameter, gpointer application); 70 G_GNUC_INTERNAL void pw3270_window_open_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
69 G_GNUC_INTERNAL void pw3270_window_close_activated(GSimpleAction * action, GVariant *parameter, gpointer application); 71 G_GNUC_INTERNAL void pw3270_window_close_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
70 G_GNUC_INTERNAL void pw3270_window_preferences_activated(GSimpleAction * action, GVariant *parameter, gpointer application); 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 #endif // PRIVATE_H_INCLUDED 75 #endif // PRIVATE_H_INCLUDED
src/objects/window/window.c
@@ -95,6 +95,20 @@ @@ -95,6 +95,20 @@
95 // 95 //
96 pw3270_window_add_actions(GTK_WIDGET(widget)); 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 // Setup Window actions. 113 // Setup Window actions.
100 // 114 //
@@ -115,12 +129,6 @@ @@ -115,12 +129,6 @@
115 .activate = pw3270_window_preferences_activated, 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 g_action_map_add_action_entries( 134 g_action_map_add_action_entries(