From 2cfebbcb3afcd5d524d749d78418580493a06658 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Mon, 19 Mar 2012 18:08:33 +0000 Subject: [PATCH] Iniciando inclusão de suporte para "move" actions --- src/gtk/uiparser/action.c | 6 ++++++ src/gtk/uiparser/parsefile.c | 19 ++++++++++++++++++- src/gtk/uiparser/parser.h | 1 + src/gtk/uiparser/testprogram.c | 5 +++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/gtk/uiparser/action.c b/src/gtk/uiparser/action.c index b57c79f..964d4e4 100644 --- a/src/gtk/uiparser/action.c +++ b/src/gtk/uiparser/action.c @@ -97,6 +97,12 @@ { g_object_set_data_full(G_OBJECT(action),"accel_attr",g_strdup(value[f]),g_free); } + else if(!g_strcasecmp(name[f],"target")) + { + } + else if(!g_strcasecmp(name[f],"direction")) + { + } else if(!g_strcasecmp(name[f],"id")) { g_object_set_data(G_OBJECT(action),"action_id",(gpointer) atoi(value[f])); diff --git a/src/gtk/uiparser/parsefile.c b/src/gtk/uiparser/parsefile.c index 9d71fd7..9a8542e 100644 --- a/src/gtk/uiparser/parsefile.c +++ b/src/gtk/uiparser/parsefile.c @@ -139,7 +139,9 @@ static GtkAction * get_action(const gchar *name, struct parser *info, const gchar **names, const gchar **values, GError **error) { - const gchar * id = ui_get_attribute("id",names,values); + const gchar * target = NULL; + const gchar * direction = NULL; + const gchar * id = ui_get_attribute("id",names,values); GtkAction * action; gchar * nm; void (*connect)(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id) = ui_connect_action; @@ -151,6 +153,19 @@ create = (GtkAction * (*)(const gchar *,const gchar *,const gchar *,const gchar *)) gtk_toggle_action_new; connect = ui_connect_toggle; } + else if(!g_strcasecmp(name,"move")) + { + const gchar *target = ui_get_attribute("target",names,values); + const gchar *direction = ui_get_attribute("direction",names,values); + + if(!(target && direction)) + { + *error = g_error_new(ERROR_DOMAIN,EINVAL,"%s",_("Move action needs target & direction attributes" )); + return NULL; + } + + nm = g_strconcat("move",target,direction,NULL); + } else if(!g_strcasecmp(name,"toggleset")) { nm = g_strconcat("set",id,NULL); @@ -201,6 +216,8 @@ ui_connect_index_action(info->action[ix] = action,info->center_widget,ix,info->action); else if(g_strcasecmp(name,"quit")) connect(action,info->center_widget,name,id); + else if(target) + ui_connect_target_action(action,info->center_widget,target,direction,error); else g_signal_connect(action,"activate",G_CALLBACK(gtk_main_quit), NULL); diff --git a/src/gtk/uiparser/parser.h b/src/gtk/uiparser/parser.h index fffe5a7..e798e16 100644 --- a/src/gtk/uiparser/parser.h +++ b/src/gtk/uiparser/parser.h @@ -53,6 +53,7 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, const gchar **actionname, GtkWidget *widget, const UI_WIDGET_SETUP *itn); void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id); + void ui_connect_target_action(GtkAction *action, GtkWidget *widget, const gchar *target, const gchar *direction, GError **error); void ui_connect_index_action(GtkAction *action, GtkWidget *widget, int ix, GtkAction **lst); void ui_connect_toggle(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id); void ui_connect_pfkey(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id); diff --git a/src/gtk/uiparser/testprogram.c b/src/gtk/uiparser/testprogram.c index b23a2dc..392f811 100644 --- a/src/gtk/uiparser/testprogram.c +++ b/src/gtk/uiparser/testprogram.c @@ -30,6 +30,11 @@ void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name, g_signal_connect(action,"activate",G_CALLBACK(activated),widget); } +void ui_connect_target_action(GtkAction *action, GtkWidget *widget, const gchar *target, const gchar *direction, GError **error) +{ + g_signal_connect(action,"activate",G_CALLBACK(activated),widget); +} + void ui_connect_toggle(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id) { trace("Connecting action %s with toggle %s and widget %p",gtk_action_get_name(action),id,widget); -- libgit2 0.21.2