From f19db94c6e61ed3094b4448f15e93514e5236eb8 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Mon, 1 Jun 2020 16:00:58 -0300 Subject: [PATCH] Working on keypad show/hide actions. --- keypad/00-right.xml | 4 ++-- keypad/10-bottom.xml | 2 +- pw3270.cbp | 4 ++-- src/include/pw3270/keypad.h | 2 ++ src/objects/keypad/keypad.c | 350 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/objects/keypad/load.c | 11 ++++++++++- src/objects/keypad/model.c | 363 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/objects/window/window.c | 11 +++++++++++ 8 files changed, 391 insertions(+), 356 deletions(-) delete mode 100644 src/objects/keypad/keypad.c create mode 100644 src/objects/keypad/model.c diff --git a/keypad/00-right.xml b/keypad/00-right.xml index 0c5ea5d..243b5d6 100644 --- a/keypad/00-right.xml +++ b/keypad/00-right.xml @@ -29,7 +29,7 @@ --> - + Right keypad @@ -93,7 +93,7 @@ win.pfkey(12) -\ diff --git a/keypad/10-bottom.xml b/keypad/10-bottom.xml index 12261ac..06139f5 100644 --- a/keypad/10-bottom.xml +++ b/keypad/10-bottom.xml @@ -29,7 +29,7 @@ --> - + Function bar diff --git a/pw3270.cbp b/pw3270.cbp index 8d8f25f..7291162 100644 --- a/pw3270.cbp +++ b/pw3270.cbp @@ -116,10 +116,10 @@ - + - + diff --git a/src/include/pw3270/keypad.h b/src/include/pw3270/keypad.h index 28d7d12..a2579a7 100644 --- a/src/include/pw3270/keypad.h +++ b/src/include/pw3270/keypad.h @@ -54,6 +54,8 @@ GList * pw3270_keypad_model_new_from_xml(GList *keypads, const gchar *filename); GtkWidget * pw3270_keypad_get_from_model(GObject *model); + const gchar * pw3270_keypad_model_get_action_name(GObject *model); + const gchar * pw3270_keypad_model_get_label(GObject *model); typedef enum _keypad_position { KEYPAD_POSITION_TOP, diff --git a/src/objects/keypad/keypad.c b/src/objects/keypad/keypad.c deleted file mode 100644 index 4b20eb1..0000000 --- a/src/objects/keypad/keypad.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como - e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - */ - - #include "private.h" - #include - -/*---[ Globals & Object definition ]----------------------------------------------------------------*/ - - enum { - PROP_NONE, - PROP_NAME, - PROP_LABEL, - PROP_POSITION, - PROP_WIDTH, - PROP_HEIGHT, - }; - - static const char * positions[] = { - "top", - "left", - "bottom", - "right" - }; - - static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); - static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); - - G_DEFINE_TYPE(KeypadModel, KeypadModel, G_TYPE_OBJECT) - -/*---[ Implement ]----------------------------------------------------------------------------------*/ - - static void finalize(GObject *object) { - - KeypadModel * model = PW_KEYPAD_MODEL(object); - - if(model->elements) { - g_list_free_full(model->elements,g_object_unref); - model->elements = NULL; - } - - if(model->name) { - g_free(model->name); - model->name = NULL; - } - - if(model->label) { - g_free(model->label); - model->label = NULL; - } - - } - - static void KeypadModel_class_init(KeypadModelClass *klass) { - - GObjectClass *object_class = G_OBJECT_CLASS(klass); - - klass->domain = g_quark_from_static_string("keypad"); - - object_class->finalize = finalize; - object_class->get_property = get_property; - object_class->set_property = set_property; - - // Install properties - g_object_class_install_property(object_class, PROP_NAME, - g_param_spec_string ( - I_("name"), - N_("Keypad Name"), - N_("The name used to identify the keypad"), - NULL, - G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE - ) - ); - - g_object_class_install_property(object_class, PROP_LABEL, - g_param_spec_string ( - _("label"), - N_("Keypad Label"), - N_("The Label of the keypad"), - NULL, - G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE - ) - ); - - g_object_class_install_property(object_class, PROP_POSITION, - g_param_spec_string ( - I_("position"), - I_("position"), - N_("The position of the keypad"), - NULL, - G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE - ) - ); - - g_object_class_install_property(object_class, PROP_WIDTH, - g_param_spec_uint( - I_("width"), - I_("width"), - _("Keypad width in columns"), - 1, - 10, - 3, - G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE - ) - ); - - g_object_class_install_property(object_class, PROP_WIDTH, - g_param_spec_uint( - I_("height"), - I_("height"), - _("Keypad height in rows"), - 0, - 100, - 0, - G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE - ) - ); - } - - static void KeypadModel_init(KeypadModel *object) { - - object->position = (unsigned short) KEYPAD_POSITION_BOTTOM; - - } - - static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { - - KeypadModel * model = PW_KEYPAD_MODEL(object); - - switch (prop_id) { - case PROP_NAME: - g_value_set_string(value, model->name); - break; - - case PROP_LABEL: - g_value_set_string(value, model->label); - break; - - case PROP_POSITION: - g_value_set_static_string(value,keypad_model_get_position(object)); - break; - - case PROP_HEIGHT: - g_value_set_uint(value, model->height); - break; - - case PROP_WIDTH: - g_value_set_uint(value, model->width); - break; - - default: - g_assert_not_reached (); - } - - } - - static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { - - KeypadModel * model = PW_KEYPAD_MODEL(object); - - switch (prop_id) { - case PROP_NAME: - - if(model->name) { - g_free(model->name); - model->name = g_value_dup_string(value); - } - break; - - case PROP_LABEL: - - if(model->label) { - g_free(model->label); - model->label = g_value_dup_string(value); - } - break; - - case PROP_POSITION: - keypad_model_set_position(object,g_value_get_string(value)); - break; - - case PROP_HEIGHT: - model->height = (unsigned short) g_value_get_uint(value); - break; - - case PROP_WIDTH: - model->width = (unsigned short) g_value_get_uint(value); - break; - - default: - g_assert_not_reached(); - } - } - - void keypad_model_set_position(GObject *model, const gchar *position) { - - if(position) { - size_t ix; - for(ix = 0; ix < G_N_ELEMENTS(positions); ix++) { - if(!g_ascii_strcasecmp(positions[ix],position)) { - PW_KEYPAD_MODEL(model)->position = (unsigned short) ix; - break; - } - } - } - - } - - const gchar * keypad_model_get_position(GObject *model) { - - size_t ix = (size_t) PW_KEYPAD_MODEL(model)->position; - - if(ix < G_N_ELEMENTS(positions)) - return positions[ix]; - - return "undefined"; - } - - static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, KeypadModel *keypad, GError **error) { - - debug("%s(%s)",__FUNCTION__,element_name); - - if(!g_ascii_strcasecmp(element_name,"button")) { - - const gchar *row, *col, *width, *height; - KeypadElement * element = PW_KEYPAD_ELEMENT(g_object_new(PW_TYPE_KEYPAD_ELEMENT,NULL)); - - if(!g_markup_collect_attributes( - element_name,names,values,error, - G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "row", &row, - G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "column", &col, - G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "width", &width, - G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "height", &height, - G_MARKUP_COLLECT_INVALID - )) { - - return; - - } - - if(col) { - element->col = (unsigned short) atoi(col); - - if(element->col < keypad->current.col) { - keypad->current.row++; - } - - } else { - element->col = keypad->current.col; - } - - if(row) { - element->row = (unsigned short) atoi(row); - } else { - element->row = keypad->current.row; - } - - - if(width) { - element->width = (unsigned short) atoi(width); - } else { - element->width = 1; - } - - if(height) { - element->height = (unsigned short) atoi(height); - } else { - element->height = 1; - } - - keypad->elements = g_list_prepend(keypad->elements,element); - keypad_model_element_parse_context(G_OBJECT(element),context); - - } - - - } - - static void element_end(GMarkupParseContext *context, const gchar *element_name, KeypadModel *keypad, GError G_GNUC_UNUSED(**error)) { - - debug("%s(%s)",__FUNCTION__,element_name); - - if(!g_ascii_strcasecmp(element_name,"button")) { - g_markup_parse_context_pop(context); - - KeypadElement * element = PW_KEYPAD_ELEMENT(g_list_first(keypad->elements)->data); - - keypad->current.row = element->row; - keypad->current.col = element->col + element->width; - - if(keypad->width && keypad->current.col >= keypad->width) { - keypad->current.col = 0; - keypad->current.row++; - } - - } - - } - - void keypad_model_parse_context(GObject *object, GMarkupParseContext *context) { - - static const GMarkupParser parser = { - (void (*)(GMarkupParseContext *, const gchar *, const gchar **, const gchar **, gpointer, GError **)) - element_start, - - (void (*)(GMarkupParseContext *, const gchar *, gpointer, GError **)) - element_end, - NULL, - NULL, - NULL - }; - - KeypadModel * model = PW_KEYPAD_MODEL(object); - - model->elements = g_list_reverse(model->elements); - g_markup_parse_context_push(context, &parser, model); - model->elements = g_list_reverse(model->elements); - - } - - KEYPAD_POSITION pw3270_keypad_get_position(GObject *model) { - g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model), (KEYPAD_POSITION) -1); - return (KEYPAD_POSITION) PW_KEYPAD_MODEL(model)->position; - } - diff --git a/src/objects/keypad/load.c b/src/objects/keypad/load.c index 2d75b88..4f8e3e7 100644 --- a/src/objects/keypad/load.c +++ b/src/objects/keypad/load.c @@ -36,12 +36,13 @@ if(!g_ascii_strcasecmp(element_name,"keypad")) { - const gchar *name, *position, *width, *height; + const gchar *name, *label, *position, *width, *height; GObject * keypad = g_object_new(PW_TYPE_KEYPAD_MODEL,NULL); if(!g_markup_collect_attributes( element_name,names,values,error, G_MARKUP_COLLECT_STRING, "name", &name, + G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "label", &label, G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "position", &position, G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "width", &width, G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "height", &height, @@ -57,6 +58,14 @@ keypad_model_set_position(keypad,position); + if(name) { + PW_KEYPAD_MODEL(keypad)->name = g_strdup(name); + } + + if(label) { + PW_KEYPAD_MODEL(keypad)->label = g_strdup(label); + } + if(width) { PW_KEYPAD_MODEL(keypad)->width = (unsigned short) atoi(width); } diff --git a/src/objects/keypad/model.c b/src/objects/keypad/model.c new file mode 100644 index 0000000..93dab2d --- /dev/null +++ b/src/objects/keypad/model.c @@ -0,0 +1,363 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como - e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + + #include "private.h" + #include + +/*---[ Globals & Object definition ]----------------------------------------------------------------*/ + + enum { + PROP_NONE, + PROP_NAME, + PROP_LABEL, + PROP_POSITION, + PROP_WIDTH, + PROP_HEIGHT, + }; + + static const char * positions[] = { + "top", + "left", + "bottom", + "right" + }; + + static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); + static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); + + G_DEFINE_TYPE(KeypadModel, KeypadModel, G_TYPE_OBJECT) + +/*---[ Implement ]----------------------------------------------------------------------------------*/ + + static void finalize(GObject *object) { + + KeypadModel * model = PW_KEYPAD_MODEL(object); + + if(model->elements) { + g_list_free_full(model->elements,g_object_unref); + model->elements = NULL; + } + + if(model->name) { + g_free(model->name); + model->name = NULL; + } + + if(model->label) { + g_free(model->label); + model->label = NULL; + } + + } + + static void KeypadModel_class_init(KeypadModelClass *klass) { + + GObjectClass *object_class = G_OBJECT_CLASS(klass); + + klass->domain = g_quark_from_static_string("keypad"); + + object_class->finalize = finalize; + object_class->get_property = get_property; + object_class->set_property = set_property; + + // Install properties + g_object_class_install_property(object_class, PROP_NAME, + g_param_spec_string ( + I_("name"), + N_("Keypad Name"), + N_("The name used to identify the keypad"), + NULL, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE + ) + ); + + g_object_class_install_property(object_class, PROP_LABEL, + g_param_spec_string ( + _("label"), + N_("Keypad Label"), + N_("The Label of the keypad"), + NULL, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE + ) + ); + + g_object_class_install_property(object_class, PROP_POSITION, + g_param_spec_string ( + I_("position"), + I_("position"), + N_("The position of the keypad"), + NULL, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE + ) + ); + + g_object_class_install_property(object_class, PROP_WIDTH, + g_param_spec_uint( + I_("width"), + I_("width"), + _("Keypad width in columns"), + 1, + 10, + 3, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE + ) + ); + + g_object_class_install_property(object_class, PROP_WIDTH, + g_param_spec_uint( + I_("height"), + I_("height"), + _("Keypad height in rows"), + 0, + 100, + 0, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE + ) + ); + } + + static void KeypadModel_init(KeypadModel *object) { + + object->position = (unsigned short) KEYPAD_POSITION_BOTTOM; + + } + + static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { + + KeypadModel * model = PW_KEYPAD_MODEL(object); + + switch (prop_id) { + case PROP_NAME: + g_value_set_string(value, model->name); + break; + + case PROP_LABEL: + g_value_set_string(value, model->label); + break; + + case PROP_POSITION: + g_value_set_static_string(value,keypad_model_get_position(object)); + break; + + case PROP_HEIGHT: + g_value_set_uint(value, model->height); + break; + + case PROP_WIDTH: + g_value_set_uint(value, model->width); + break; + + default: + g_assert_not_reached (); + } + + } + + static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { + + KeypadModel * model = PW_KEYPAD_MODEL(object); + + switch (prop_id) { + case PROP_NAME: + + if(model->name) { + g_free(model->name); + } + model->name = g_value_dup_string(value); + break; + + case PROP_LABEL: + + if(model->label) { + g_free(model->label); + } + model->label = g_value_dup_string(value); + break; + + case PROP_POSITION: + keypad_model_set_position(object,g_value_get_string(value)); + break; + + case PROP_HEIGHT: + model->height = (unsigned short) g_value_get_uint(value); + break; + + case PROP_WIDTH: + model->width = (unsigned short) g_value_get_uint(value); + break; + + default: + g_assert_not_reached(); + } + } + + void keypad_model_set_position(GObject *model, const gchar *position) { + + if(position) { + size_t ix; + for(ix = 0; ix < G_N_ELEMENTS(positions); ix++) { + if(!g_ascii_strcasecmp(positions[ix],position)) { + PW_KEYPAD_MODEL(model)->position = (unsigned short) ix; + break; + } + } + } + + } + + const gchar * keypad_model_get_position(GObject *model) { + + size_t ix = (size_t) PW_KEYPAD_MODEL(model)->position; + + if(ix < G_N_ELEMENTS(positions)) + return positions[ix]; + + return "undefined"; + } + + static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, KeypadModel *keypad, GError **error) { + + debug("%s(%s)",__FUNCTION__,element_name); + + if(!g_ascii_strcasecmp(element_name,"button")) { + + const gchar *row, *col, *width, *height; + KeypadElement * element = PW_KEYPAD_ELEMENT(g_object_new(PW_TYPE_KEYPAD_ELEMENT,NULL)); + + if(!g_markup_collect_attributes( + element_name,names,values,error, + G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "row", &row, + G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "column", &col, + G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "width", &width, + G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "height", &height, + G_MARKUP_COLLECT_INVALID + )) { + + return; + + } + + if(col) { + element->col = (unsigned short) atoi(col); + + if(element->col < keypad->current.col) { + keypad->current.row++; + } + + } else { + element->col = keypad->current.col; + } + + if(row) { + element->row = (unsigned short) atoi(row); + } else { + element->row = keypad->current.row; + } + + + if(width) { + element->width = (unsigned short) atoi(width); + } else { + element->width = 1; + } + + if(height) { + element->height = (unsigned short) atoi(height); + } else { + element->height = 1; + } + + keypad->elements = g_list_prepend(keypad->elements,element); + keypad_model_element_parse_context(G_OBJECT(element),context); + + } else if(!g_ascii_strcasecmp(element_name,"attribute")) { + attribute_element_start(context,names,values,G_OBJECT(keypad),error); + } + + } + + static void element_end(GMarkupParseContext *context, const gchar *element_name, KeypadModel *keypad, GError G_GNUC_UNUSED(**error)) { + + debug("%s(%s)",__FUNCTION__,element_name); + + if(!g_ascii_strcasecmp(element_name,"button")) { + g_markup_parse_context_pop(context); + + KeypadElement * element = PW_KEYPAD_ELEMENT(g_list_first(keypad->elements)->data); + + keypad->current.row = element->row; + keypad->current.col = element->col + element->width; + + if(keypad->width && keypad->current.col >= keypad->width) { + keypad->current.col = 0; + keypad->current.row++; + } + + } else if(!g_ascii_strcasecmp(element_name,"attribute")) { + attribute_element_end(context,G_OBJECT(keypad),error); + } + + } + + void keypad_model_parse_context(GObject *object, GMarkupParseContext *context) { + + static const GMarkupParser parser = { + (void (*)(GMarkupParseContext *, const gchar *, const gchar **, const gchar **, gpointer, GError **)) + element_start, + + (void (*)(GMarkupParseContext *, const gchar *, gpointer, GError **)) + element_end, + NULL, + NULL, + NULL + }; + + KeypadModel * model = PW_KEYPAD_MODEL(object); + + model->elements = g_list_reverse(model->elements); + g_markup_parse_context_push(context, &parser, model); + model->elements = g_list_reverse(model->elements); + + } + + KEYPAD_POSITION pw3270_keypad_get_position(GObject *model) { + g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model), (KEYPAD_POSITION) -1); + return (KEYPAD_POSITION) PW_KEYPAD_MODEL(model)->position; + } + + const gchar * pw3270_keypad_model_get_action_name(GObject *model) { + g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model), NULL); + return PW_KEYPAD_MODEL(model)->name; + } + + const gchar * pw3270_keypad_model_get_label(GObject *model) { + g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model), NULL); + return PW_KEYPAD_MODEL(model)->label; + } + diff --git a/src/objects/window/window.c b/src/objects/window/window.c index bdb2388..47dec69 100644 --- a/src/objects/window/window.c +++ b/src/objects/window/window.c @@ -183,6 +183,17 @@ GtkWidget * widget = pw3270_keypad_get_from_model(model); + V3270SimpleAction * action = v3270_property_action_new(widget,"visible",LIB3270_ACTION_GROUP_NONE); + + action->name = pw3270_keypad_model_get_action_name(model); + debug("*********** name=%s",action->name); + action->label = pw3270_keypad_model_get_label(model); + debug("*********** label=%s",action->label); + + g_action_map_add_action( + G_ACTION_MAP(window), + G_ACTION(action) + ); return widget; -- libgit2 0.21.2