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) | ... | ... |