Commit 7a5b478653d76ea18c9f3e2cb23745e567c117b4
1 parent
828fe621
Exists in
master
and in
1 other branch
Widget properties are now get/set using lib3270's internal properties.
Showing
2 changed files
with
24 additions
and
87 deletions
Show diff stats
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) | ... | ... |