From 8263506c27ffaae15fbfc62abf76a9cd0847673e Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Tue, 29 Oct 2019 12:34:13 -0300 Subject: [PATCH] Working on actions. --- src/objects/actions/abstract.c | 19 ++++--------------- src/objects/actions/connect.c | 11 +++-------- src/objects/actions/lib3270/action.c | 12 ++++-------- src/objects/actions/lib3270/pakey.c | 6 +----- src/objects/actions/lib3270/pfkey.c | 10 +++------- src/objects/actions/lib3270/toggle.c | 35 +++++++++++++---------------------- src/objects/actions/private.h | 2 +- src/objects/actions/window.c | 9 --------- 8 files changed, 29 insertions(+), 75 deletions(-) diff --git a/src/objects/actions/abstract.c b/src/objects/actions/abstract.c index 99a8254..60be025 100644 --- a/src/objects/actions/abstract.c +++ b/src/objects/actions/abstract.c @@ -251,7 +251,7 @@ switch (prop_id) { case PROP_NAME: -// pw3270_action_set_name(action, g_value_get_string(value)); + pw3270_action_set_name(action, g_value_get_string(value)); break; case PROP_PARAMETER_TYPE: @@ -273,24 +273,13 @@ } const gchar * pw3270_action_get_name(GAction *action) { - return PW3270_ACTION(action)->get_name(action); + return PW3270_ACTION(action)->name; } void pw3270_action_set_name(GAction *object, const gchar *name) { -/* - pw3270Action * action = PW3270_ACTION(object); - -// debug("%s %s -> %s", __FUNCTION__, action->name, name); - - if(action->name) - g_free(action->name); - - if(name) - action->name = g_strdup(name); - else - action->name = NULL; -*/ + if(name) + g_warning("Invalid call to %s on action %s with value \"%s\"",__FUNCTION__,g_action_get_name(object),name); } diff --git a/src/objects/actions/connect.c b/src/objects/actions/connect.c index 59bede1..e533b87 100644 --- a/src/objects/actions/connect.c +++ b/src/objects/actions/connect.c @@ -41,18 +41,13 @@ } - static const gchar * get_name(GAction G_GNUC_UNUSED(*action)) { - return "connect"; - } - GAction * pw3270_connect_action_new(void) { - GAction * object = pw3270_action_new_from_lib3270(lib3270_action_get_by_name("reconnect")); + pw3270Action * action = PW3270_ACTION(pw3270_action_new_from_lib3270(lib3270_action_get_by_name("reconnect"))); - pw3270Action * action = PW3270_ACTION(object); action->activate = activate; - action->get_name = get_name; + action->name = "connect"; - return object; + return G_ACTION(action); } diff --git a/src/objects/actions/lib3270/action.c b/src/objects/actions/lib3270/action.c index e2baa9c..8bd2e1c 100644 --- a/src/objects/actions/lib3270/action.c +++ b/src/objects/actions/lib3270/action.c @@ -114,15 +114,10 @@ } - static const gchar * get_name(GAction *action) { - return PW3270_LIB3270_ACTION(action)->definition->name; - } - - void Lib3270Action_init(Lib3270Action *object) { - pw3270Action * action = PW3270_ACTION(object); + void Lib3270Action_init(Lib3270Action *action) { - action->activate = activate; - action->get_name = get_name; + action->parent.activate = activate; + action->parent.name = "tn3270"; } @@ -133,6 +128,7 @@ // Setup hooks. action->definition = definition; action->listener = NULL; + action->parent.name = definition->name; return G_ACTION(action); } diff --git a/src/objects/actions/lib3270/pakey.c b/src/objects/actions/lib3270/pakey.c index 22fc08c..6e53b06 100644 --- a/src/objects/actions/lib3270/pakey.c +++ b/src/objects/actions/lib3270/pakey.c @@ -109,15 +109,11 @@ } - static const gchar * get_name(GAction G_GNUC_UNUSED(*action)) { - return "pakey"; - } - void Lib3270PaAction_init(Lib3270PaAction *object) { pw3270Action * action = PW3270_ACTION(object); action->activate = activate; - action->get_name = get_name; + action->name = "pakey"; } diff --git a/src/objects/actions/lib3270/pfkey.c b/src/objects/actions/lib3270/pfkey.c index e4239e6..074f8bb 100644 --- a/src/objects/actions/lib3270/pfkey.c +++ b/src/objects/actions/lib3270/pfkey.c @@ -108,15 +108,11 @@ } - static const gchar * get_name(GAction *action) { - return "pakey"; - } + void Lib3270PfAction_init(Lib3270PfAction *action) { - void Lib3270PfAction_init(Lib3270PfAction *object) { - pw3270Action * action = PW3270_ACTION(object); + action->parent.activate = activate; + action->parent.name = "pfkey"; - action->activate = activate; - action->get_name = get_name; } GAction * pw3270_action_new_pfkey(void) { diff --git a/src/objects/actions/lib3270/toggle.c b/src/objects/actions/lib3270/toggle.c index f792fc9..8fbf444 100644 --- a/src/objects/actions/lib3270/toggle.c +++ b/src/objects/actions/lib3270/toggle.c @@ -58,8 +58,12 @@ G_DEFINE_TYPE(Lib3270ToggleAction, Lib3270ToggleAction, PW3270_TYPE_ACTION); - static void change_state(H3270 G_GNUC_UNUSED(*hSession), LIB3270_TOGGLE_ID id, char state, void * action) { - debug("%s: %s",__FUNCTION__,state ? "ON" : "OFF"); + static void change_state(H3270 G_GNUC_UNUSED(*hSession), LIB3270_TOGGLE_ID G_GNUC_UNUSED(id), char state, void * action) { + debug("%s: State on action %s is %s", + __FUNCTION__, + g_action_get_name(G_ACTION(action)), + state ? "ON" : "OFF" + ); pw3270_action_change_state_boolean((GAction *) action, state == 0 ? FALSE : TRUE); } @@ -105,35 +109,22 @@ } - static const gchar * get_name(GAction *action) { - return PW3270_LIB3270_TOGGLE_ACTION(action)->definition->name; - } - - void Lib3270ToggleAction_init(Lib3270ToggleAction *toggle) { + void Lib3270ToggleAction_init(Lib3270ToggleAction *action) { - toggle->definition = NULL; - toggle->listener = NULL; + action->definition = NULL; + action->listener = NULL; - pw3270Action * action = PW3270_ACTION(toggle); - action->activate = activate; - action->get_name = get_name; + action->parent.activate = activate; + action->parent.name = "toggle"; } GAction * pw3270_toggle_action_new_from_lib3270(const LIB3270_TOGGLE * definition) { Lib3270ToggleAction * action = (Lib3270ToggleAction *) g_object_new(PW3270_TYPE_LIB3270_TOGGLE_ACTION, NULL); - action->definition = definition; - // Setup the default name. - pw3270Action * abstract = PW3270_ACTION(action); - - /* - if(abstract->name) - g_free(abstract->name); - - abstract->name = g_strconcat("win.",definition->name,NULL); - */ + action->definition = definition; + action->parent.name = definition->name; return G_ACTION(action); diff --git a/src/objects/actions/private.h b/src/objects/actions/private.h index 18d6059..22d9838 100644 --- a/src/objects/actions/private.h +++ b/src/objects/actions/private.h @@ -54,12 +54,12 @@ struct _pw3270Action { GObject parent; + const gchar * name; GVariantType * parameter_type; GVariant * state; GtkWidget * terminal; void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal); - const gchar * (*get_name)(GAction *action); }; diff --git a/src/objects/actions/window.c b/src/objects/actions/window.c index 8e3f20a..83699db 100644 --- a/src/objects/actions/window.c +++ b/src/objects/actions/window.c @@ -43,15 +43,6 @@ // Map lib3270 actions { - GAction * action = pw3270_action_new_from_lib3270(lib3270_action_get_by_name("disconnect")); - - pw3270_action_set_name(G_ACTION(action),"disconnect"); - - g_action_map_add_action(map,action); - - } - - { const LIB3270_ACTION * actions = lib3270_get_actions(); for(ix = 0; actions[ix].name; ix++) { -- libgit2 0.21.2