Commit 7a5b478653d76ea18c9f3e2cb23745e567c117b4

Authored by Perry Werneck
1 parent 828fe621
Exists in master and in 1 other branch develop

Widget properties are now get/set using lib3270's internal properties.

src/testprogram/testprogram.c
... ... @@ -120,6 +120,21 @@ static void activate(GtkApplication* app, gpointer user_data) {
120 120 g_message("URL=%s",g_value_get_string(&val));
121 121 g_value_unset(&val);
122 122  
  123 + g_value_init(&val, G_TYPE_BOOLEAN);
  124 + g_object_get_property(G_OBJECT(terminal),"tso",&val);
  125 + g_message("TSO=%s",g_value_get_boolean(&val) ? "Yes" : "No");
  126 + g_value_unset(&val);
  127 +
  128 + g_value_init(&val, G_TYPE_BOOLEAN);
  129 + g_object_get_property(G_OBJECT(terminal),"monocase",&val);
  130 + g_message("monocase=%s",g_value_get_boolean(&val) ? "Yes" : "No");
  131 + g_value_unset(&val);
  132 +
  133 + g_value_init(&val, G_TYPE_INT);
  134 + g_object_get_property(G_OBJECT(terminal),"width",&val);
  135 + g_message("width=%d",(int) g_value_get_int(&val));
  136 + g_value_unset(&val);
  137 +
123 138 g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL);
124 139  
125 140 // Setup and show window
... ...
src/v3270/properties.c
... ... @@ -47,10 +47,6 @@
47 47  
48 48 #define PROP_BEGIN 2
49 49  
50   -/*--[ Globals ]--------------------------------------------------------------------------------------*/
51   -
52   -// GParamSpec * v3270_properties[PROP_LAST] = { 0 };
53   -
54 50 /*--[ Implement ]------------------------------------------------------------------------------------*/
55 51  
56 52 static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
... ... @@ -59,11 +55,7 @@
59 55  
60 56 debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec));
61 57  
62   - if(prop_id < v3270_properties.type.toggle)
63   - {
64   - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
65   - }
66   - else if(prop_id >= v3270_properties.type.str)
  58 + if(prop_id >= v3270_properties.type.str)
67 59 {
68 60 const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str));
69 61 debug("%s.%s.%s=%s",__FUNCTION__,"string",prop->name,g_value_get_string(value));
... ... @@ -93,6 +85,7 @@
93 85 else if(prop_id >= v3270_properties.type.toggle)
94 86 {
95 87 debug("%s.%s",__FUNCTION__,"toggle");
  88 + lib3270_set_toggle(window->host,prop_id - v3270_properties.type.toggle, (int) g_value_get_boolean (value));
96 89  
97 90 }
98 91 else
... ... @@ -100,36 +93,6 @@
100 93 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
101 94 }
102 95  
103   - /*
104   -
105   - switch (prop_id)
106   - {
107   - case PROP_MODEL:
108   - lib3270_set_model(window->host,g_value_get_string(value));
109   - break;
110   -
111   - case PROP_AUTO_DISCONNECT:
112   - v3270_set_auto_disconnect(GTK_WIDGET(object),g_value_get_uint(value));
113   - break;
114   -
115   - case PROP_URL:
116   - v3270_set_url(GTK_WIDGET(object),g_value_get_string(value));
117   - break;
118   -
119   - case PROP_SESSION_NAME:
120   - v3270_set_session_name(GTK_WIDGET(object),g_value_get_string(value));
121   - break;
122   -
123   - default:
124   - if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT))
125   - {
126   - lib3270_set_toggle(window->host,prop_id - PROP_TOGGLE, (int) g_value_get_boolean (value));
127   - return;
128   - }
129   - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
130   - }
131   - */
132   -
133 96 }
134 97  
135 98 static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec)
... ... @@ -138,11 +101,7 @@
138 101  
139 102 debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec));
140 103  
141   - if(prop_id < v3270_properties.type.toggle)
142   - {
143   - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
144   - }
145   - else if(prop_id >= v3270_properties.type.str)
  104 + if(prop_id >= v3270_properties.type.str)
146 105 {
147 106 const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str));
148 107 debug("%s.%s.%s",__FUNCTION__,"string",prop->name);
... ... @@ -156,6 +115,8 @@
156 115 const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - v3270_properties.type.integer));
157 116 debug("%s.%s.%s",__FUNCTION__,"integer",prop->name);
158 117  
  118 + if(prop->get)
  119 + g_value_set_int(value,prop->get(window->host));
159 120  
160 121 }
161 122 else if(prop_id >= v3270_properties.type.boolean)
... ... @@ -163,11 +124,14 @@
163 124 const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - v3270_properties.type.boolean));
164 125 debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name);
165 126  
  127 + if(prop->get)
  128 + g_value_set_boolean(value,prop->get(window->host) != 0 ? TRUE : FALSE);
166 129  
167 130 }
168 131 else if(prop_id >= v3270_properties.type.toggle)
169 132 {
170   - debug("%s.%s",__FUNCTION__,"toggle");
  133 + debug("%s.%s.%s",__FUNCTION__,"toggle",lib3270_get_toggle_name(prop_id - v3270_properties.type.toggle));
  134 + g_value_set_boolean(value,lib3270_get_toggle(window->host,prop_id - v3270_properties.type.toggle) ? TRUE : FALSE );
171 135  
172 136 }
173 137 else
... ... @@ -175,48 +139,6 @@
175 139 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
176 140 }
177 141  
178   - /*
179   - v3270 *window = GTK_V3270(object);
180   -
181   - switch (prop_id)
182   - {
183   - case PROP_MODEL:
184   - g_value_set_string(value,lib3270_get_model(window->host));
185   - break;
186   -
187   - case PROP_AUTO_DISCONNECT:
188   - g_value_set_uint(value,v3270_get_auto_disconnect(GTK_WIDGET(object)));
189   - break;
190   -
191   - case PROP_LUNAME:
192   - g_value_set_string(value,lib3270_get_luname(window->host));
193   - break;
194   -
195   - case PROP_ONLINE:
196   - g_value_set_boolean(value,lib3270_is_connected(window->host) ? TRUE : FALSE );
197   - break;
198   -
199   - case PROP_SELECTION:
200   - g_value_set_boolean(value,lib3270_has_selection(window->host) ? TRUE : FALSE );
201   - break;
202   -
203   - case PROP_URL:
204   - g_value_set_string(value,lib3270_get_url(window->host));
205   - break;
206   -
207   - case PROP_SESSION_NAME:
208   - g_value_set_string(value,v3270_get_session_name(GTK_WIDGET(object)));
209   - break;
210   -
211   - default:
212   - if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT))
213   - {
214   - g_value_set_boolean(value,lib3270_get_toggle(window->host,prop_id - PROP_TOGGLE) ? TRUE : FALSE );
215   - return;
216   - }
217   - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
218   - }
219   - */
220 142 }
221 143  
222 144 void v3270_init_properties(GObjectClass * gobject_class)
... ...