From 58012c44aa039e580ad4226542df999b84992fa2 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 21 Mar 2012 22:22:23 +0000 Subject: [PATCH] Implementando actions. --- src/gtk/actions.c | 39 ++++++++++++++++++++++++++++++++++++--- src/gtk/pw3270-GTK.cbp | 3 +++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/gtk/actions.c b/src/gtk/actions.c index 68222af..8dc8809 100644 --- a/src/gtk/actions.c +++ b/src/gtk/actions.c @@ -49,7 +49,6 @@ static void lib3270_action(GtkAction *action, GtkWidget *widget) static void connect_action(GtkAction *action, GtkWidget *widget) { gchar *host = (gchar *) g_object_get_data(G_OBJECT(action),"host"); - int f; trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); @@ -71,6 +70,11 @@ static void connect_action(GtkAction *action, GtkWidget *widget) hostname_action(action,widget); } +static void nop_action(GtkAction *action, GtkWidget *widget) +{ + trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); +} + static void disconnect_action(GtkAction *action, GtkWidget *widget) { trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); @@ -200,8 +204,6 @@ static void cursor_move_action(GtkAction *action, GtkWidget *widget) static void connect_move_action(GtkAction *action, GtkWidget *widget, const gchar *target, unsigned short flags, GError **error) { - int f; - if(!target) { gtk_action_set_sensitive(action,FALSE); @@ -378,6 +380,37 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash nm = g_strconcat(name,attr, NULL); } + else if(!(g_strcasecmp(name,"save") && g_strcasecmp(name,"print"))) + { + action_type = ACTION_TYPE_TABLE; + attr = ui_get_attribute("src",names,values); + + if(!attr) + { + *error = g_error_new(ERROR_DOMAIN,EINVAL,_("%s action needs src attribute" ), name); + return NULL; + } + else + { + static const GCallback cbk[] = { G_CALLBACK(nop_action), + G_CALLBACK(nop_action), + G_CALLBACK(nop_action) + }; + static const gchar * src[] = { "all", + "selected", + "copy", + NULL + }; + id = id_from_array(attr,src,error); + if(id < 0) + return NULL; + + callback = cbk; + } + + nm = g_strconcat(name,attr, NULL); + + } else if(!g_strcasecmp(name,"set")) { action_type = ACTION_TYPE_SET; diff --git a/src/gtk/pw3270-GTK.cbp b/src/gtk/pw3270-GTK.cbp index c19f124..b815de2 100644 --- a/src/gtk/pw3270-GTK.cbp +++ b/src/gtk/pw3270-GTK.cbp @@ -46,6 +46,9 @@