From 8ad94851a8f6c58c023cac660f07615b4fb9ec09 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Mon, 15 Oct 2012 12:39:26 +0000 Subject: [PATCH] Ajustes para compatibilizar com GTK 2.16 --- src/pw3270/actions.c | 42 +++++++++++++++++++++++++++++++++--------- src/pw3270/uiparser/action.c | 10 ++++++++++ src/pw3270/uiparser/parser.c | 8 -------- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/pw3270/actions.c b/src/pw3270/actions.c index a581b41..37639ad 100644 --- a/src/pw3270/actions.c +++ b/src/pw3270/actions.c @@ -472,6 +472,30 @@ static int setup_block_action(const gchar *name, const gchar *attr, GError **err return id; } +static GtkAction * new_action(const gchar *name, const gchar **names, const gchar **values) +{ +#if GTK_CHECK_VERSION(2,16,0) + const gchar *label = ui_get_attribute("label",names,values); + const gchar *tooltip = ui_get_attribute("tooltip",names,values); + const gchar *id = ui_get_attribute("label",names,values); + GtkAction *action = NULL; + + if(id) + { + gchar * stock = g_strconcat("gtk-",id,NULL); + action = gtk_action_new(name,label,tooltip,stock); + g_free(stock); + } + else + { + action = gtk_action_new(name,label,tooltip,NULL); + } + return action; +#else + return gtk_action_new(nm,NULL,NULL,NULL); +#endif // GTK(2,16) +} + GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash, const gchar **names, const gchar **values, GError **error) { static const gchar *actionname[ACTION_COUNT] = { "pastenext", @@ -723,7 +747,7 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash switch(action_type) { case ACTION_TYPE_DEFAULT: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); connect_standard_action(action,widget,name); break; @@ -737,47 +761,47 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash break; case ACTION_TYPE_MOVE: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); connect_move_action(action,widget,attr,flags,error); break; case ACTION_TYPE_PFKEY: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); g_object_set_data(G_OBJECT(action),"pfkey",GINT_TO_POINTER(id)); g_signal_connect(action,"activate",G_CALLBACK(action_pfkey),widget); break; case ACTION_TYPE_PAKEY: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); g_object_set_data(G_OBJECT(action),"pakey",GINT_TO_POINTER(id)); g_signal_connect(action,"activate",G_CALLBACK(action_pakey),widget); break; case ACTION_TYPE_SET: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); g_object_set_data(G_OBJECT(action),"toggle_id",GINT_TO_POINTER(id)); g_signal_connect(action,"activate",G_CALLBACK(action_set_toggle),widget); break; case ACTION_TYPE_RESET: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); g_object_set_data(G_OBJECT(action),"toggle_id",GINT_TO_POINTER(id)); g_signal_connect(action,"activate",G_CALLBACK(action_reset_toggle),widget); break; case ACTION_TYPE_TABLE: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); g_signal_connect(action,"activate",callback[id],widget); break; case ACTION_TYPE_LIB3270: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); g_object_set_data(G_OBJECT(action),"lib3270_call",callback[id]); g_signal_connect(action,"activate",G_CALLBACK(lib3270_action),widget); break; case ACTION_TYPE_STRING: - action = gtk_action_new(nm,NULL,NULL,NULL); + action = new_action(nm,names,values); g_signal_connect(action,"activate",G_CALLBACK(action_string),widget); break; } diff --git a/src/pw3270/uiparser/action.c b/src/pw3270/uiparser/action.c index d3a3fc8..12f822b 100644 --- a/src/pw3270/uiparser/action.c +++ b/src/pw3270/uiparser/action.c @@ -83,9 +83,11 @@ } else if(!g_ascii_strcasecmp(name[f],"icon")) { +#if GTK_CHECK_VERSION(2,16,0) gchar * stock = g_strconcat("gtk-",value[f],NULL); gtk_action_set_stock_id(action,stock); g_free(stock); +#endif // GTK(2,16) } else if(!g_ascii_strcasecmp(name[f],"sensitive")) { @@ -93,19 +95,27 @@ } else if(!g_ascii_strcasecmp(name[f],"label")) { +#if GTK_CHECK_VERSION(2,16,0) gtk_action_set_label(action,gettext(value[f])); +#endif // GTK(2,16) } else if(!g_ascii_strcasecmp(name[f],"short-label")) { +#if GTK_CHECK_VERSION(2,16,0) gtk_action_set_short_label(action,gettext(value[f])); +#endif // GTK(2,16) } else if(!g_ascii_strcasecmp(name[f],"tooltip")) { +#if GTK_CHECK_VERSION(2,16,0) gtk_action_set_tooltip(action,gettext(value[f])); +#endif // GTK(2,16) } else if(!g_ascii_strcasecmp(name[f],"important")) { +#if GTK_CHECK_VERSION(2,16,0) gtk_action_set_is_important(action,get_boolean(value[f])); +#endif // GTK(2,16) } else if(!g_ascii_strcasecmp(name[f],"key")) { diff --git a/src/pw3270/uiparser/parser.c b/src/pw3270/uiparser/parser.c index 900d190..04a0f3b 100644 --- a/src/pw3270/uiparser/parser.c +++ b/src/pw3270/uiparser/parser.c @@ -141,14 +141,6 @@ static void action_group_setup(gpointer key, GtkAction *action, struct action_in { const gchar * key_name = g_object_get_data(G_OBJECT(action),"accel_attr"); GSList * child = gtk_action_get_proxies(action); -/* - - Trace("Adding action %s in group %s key=%s", - gtk_action_get_name(action), - gtk_action_group_get_name(info->group[group_id]), - key_name); -*/ - if(key_name && !v3270_set_keyboard_action(info->widget,key_name,action)) { -- libgit2 0.21.2