Commit 2cfebbcb3afcd5d524d749d78418580493a06658

Authored by perry.werneck@gmail.com
1 parent 402173bc

Iniciando inclusão de suporte para "move" actions

src/gtk/uiparser/action.c
... ... @@ -97,6 +97,12 @@
97 97 {
98 98 g_object_set_data_full(G_OBJECT(action),"accel_attr",g_strdup(value[f]),g_free);
99 99 }
  100 + else if(!g_strcasecmp(name[f],"target"))
  101 + {
  102 + }
  103 + else if(!g_strcasecmp(name[f],"direction"))
  104 + {
  105 + }
100 106 else if(!g_strcasecmp(name[f],"id"))
101 107 {
102 108 g_object_set_data(G_OBJECT(action),"action_id",(gpointer) atoi(value[f]));
... ...
src/gtk/uiparser/parsefile.c
... ... @@ -139,7 +139,9 @@
139 139  
140 140 static GtkAction * get_action(const gchar *name, struct parser *info, const gchar **names, const gchar **values, GError **error)
141 141 {
142   - const gchar * id = ui_get_attribute("id",names,values);
  142 + const gchar * target = NULL;
  143 + const gchar * direction = NULL;
  144 + const gchar * id = ui_get_attribute("id",names,values);
143 145 GtkAction * action;
144 146 gchar * nm;
145 147 void (*connect)(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id) = ui_connect_action;
... ... @@ -151,6 +153,19 @@
151 153 create = (GtkAction * (*)(const gchar *,const gchar *,const gchar *,const gchar *)) gtk_toggle_action_new;
152 154 connect = ui_connect_toggle;
153 155 }
  156 + else if(!g_strcasecmp(name,"move"))
  157 + {
  158 + const gchar *target = ui_get_attribute("target",names,values);
  159 + const gchar *direction = ui_get_attribute("direction",names,values);
  160 +
  161 + if(!(target && direction))
  162 + {
  163 + *error = g_error_new(ERROR_DOMAIN,EINVAL,"%s",_("Move action needs target & direction attributes" ));
  164 + return NULL;
  165 + }
  166 +
  167 + nm = g_strconcat("move",target,direction,NULL);
  168 + }
154 169 else if(!g_strcasecmp(name,"toggleset"))
155 170 {
156 171 nm = g_strconcat("set",id,NULL);
... ... @@ -201,6 +216,8 @@
201 216 ui_connect_index_action(info->action[ix] = action,info->center_widget,ix,info->action);
202 217 else if(g_strcasecmp(name,"quit"))
203 218 connect(action,info->center_widget,name,id);
  219 + else if(target)
  220 + ui_connect_target_action(action,info->center_widget,target,direction,error);
204 221 else
205 222 g_signal_connect(action,"activate",G_CALLBACK(gtk_main_quit), NULL);
206 223  
... ...
src/gtk/uiparser/parser.h
... ... @@ -53,6 +53,7 @@
53 53  
54 54 GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, const gchar **actionname, GtkWidget *widget, const UI_WIDGET_SETUP *itn);
55 55 void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id);
  56 + void ui_connect_target_action(GtkAction *action, GtkWidget *widget, const gchar *target, const gchar *direction, GError **error);
56 57 void ui_connect_index_action(GtkAction *action, GtkWidget *widget, int ix, GtkAction **lst);
57 58 void ui_connect_toggle(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id);
58 59 void ui_connect_pfkey(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id);
... ...
src/gtk/uiparser/testprogram.c
... ... @@ -30,6 +30,11 @@ void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name,
30 30 g_signal_connect(action,"activate",G_CALLBACK(activated),widget);
31 31 }
32 32  
  33 +void ui_connect_target_action(GtkAction *action, GtkWidget *widget, const gchar *target, const gchar *direction, GError **error)
  34 +{
  35 + g_signal_connect(action,"activate",G_CALLBACK(activated),widget);
  36 +}
  37 +
33 38 void ui_connect_toggle(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id)
34 39 {
35 40 trace("Connecting action %s with toggle %s and widget %p",gtk_action_get_name(action),id,widget);
... ...