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,6 +120,21 @@ static void activate(GtkApplication* app, gpointer user_data) { | ||
| 120 | g_message("URL=%s",g_value_get_string(&val)); | 120 | g_message("URL=%s",g_value_get_string(&val)); |
| 121 | g_value_unset(&val); | 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 | g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL); | 138 | g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL); |
| 124 | 139 | ||
| 125 | // Setup and show window | 140 | // Setup and show window |
src/v3270/properties.c
| @@ -47,10 +47,6 @@ | @@ -47,10 +47,6 @@ | ||
| 47 | 47 | ||
| 48 | #define PROP_BEGIN 2 | 48 | #define PROP_BEGIN 2 |
| 49 | 49 | ||
| 50 | -/*--[ Globals ]--------------------------------------------------------------------------------------*/ | ||
| 51 | - | ||
| 52 | -// GParamSpec * v3270_properties[PROP_LAST] = { 0 }; | ||
| 53 | - | ||
| 54 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 50 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 55 | 51 | ||
| 56 | static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) | 52 | static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) |
| @@ -59,11 +55,7 @@ | @@ -59,11 +55,7 @@ | ||
| 59 | 55 | ||
| 60 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); | 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 | const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); | 60 | const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); |
| 69 | debug("%s.%s.%s=%s",__FUNCTION__,"string",prop->name,g_value_get_string(value)); | 61 | debug("%s.%s.%s=%s",__FUNCTION__,"string",prop->name,g_value_get_string(value)); |
| @@ -93,6 +85,7 @@ | @@ -93,6 +85,7 @@ | ||
| 93 | else if(prop_id >= v3270_properties.type.toggle) | 85 | else if(prop_id >= v3270_properties.type.toggle) |
| 94 | { | 86 | { |
| 95 | debug("%s.%s",__FUNCTION__,"toggle"); | 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 | else | 91 | else |
| @@ -100,36 +93,6 @@ | @@ -100,36 +93,6 @@ | ||
| 100 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); | 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 | static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) | 98 | static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) |
| @@ -138,11 +101,7 @@ | @@ -138,11 +101,7 @@ | ||
| 138 | 101 | ||
| 139 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); | 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 | const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); | 106 | const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); |
| 148 | debug("%s.%s.%s",__FUNCTION__,"string",prop->name); | 107 | debug("%s.%s.%s",__FUNCTION__,"string",prop->name); |
| @@ -156,6 +115,8 @@ | @@ -156,6 +115,8 @@ | ||
| 156 | const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - v3270_properties.type.integer)); | 115 | const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - v3270_properties.type.integer)); |
| 157 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); | 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 | else if(prop_id >= v3270_properties.type.boolean) | 122 | else if(prop_id >= v3270_properties.type.boolean) |
| @@ -163,11 +124,14 @@ | @@ -163,11 +124,14 @@ | ||
| 163 | const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - v3270_properties.type.boolean)); | 124 | const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - v3270_properties.type.boolean)); |
| 164 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); | 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 | else if(prop_id >= v3270_properties.type.toggle) | 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 | else | 137 | else |
| @@ -175,48 +139,6 @@ | @@ -175,48 +139,6 @@ | ||
| 175 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); | 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 | void v3270_init_properties(GObjectClass * gobject_class) | 144 | void v3270_init_properties(GObjectClass * gobject_class) |