[POS-commit] r280 - libglade

Johan Dahlin jdahlin at async.com.br
Thu Mar 31 20:16:54 BRT 2005


Author: jdahlin
Date: 2005-03-31 20:16:53 -0300 (Thu, 31 Mar 2005)
New Revision: 280

Modified:
   libglade/glade-gtk.c
Log:
Add support for accelerators, add back a fake noop property for it too. God, so many hacks

Modified: libglade/glade-gtk.c
===================================================================
--- libglade/glade-gtk.c	2005-03-31 22:40:49 UTC (rev 279)
+++ libglade/glade-gtk.c	2005-03-31 23:16:53 UTC (rev 280)
@@ -37,6 +37,12 @@
 #define FLOAT(s) (g_strtod ((s), NULL))
 
 static void
+noop(GladeXML *xml, GObject *obj,
+     const gchar *prop_name, const gchar *prop_value)
+{
+}
+
+static void
 set_visible(GladeXML *xml, GObject *obj,
 	    const gchar *prop_name, const gchar *prop_value)
 {
@@ -450,8 +456,9 @@
 action_group_build_children(GladeXML *self, GObject *obj,
 			    GladeObjectInfo *info)
 {
-    gint i;
-
+    gint i, j;
+    gchar *accelerator = NULL;
+    
     if (info->n_children == 0)
 	return;
 
@@ -461,8 +468,19 @@
 	GladeObjectInfo *childinfo = info->children[i].child;
 
 	child = glade_xml_build_object(self, childinfo);
-	/* TODO: accelerator and callback */
-	gtk_action_group_add_action(GTK_ACTION_GROUP(obj), GTK_ACTION(child));
+
+	for (j = 0; j < childinfo->n_properties; j++)
+	    if (!strcmp (childinfo->properties[j].name, "accelerator"))
+		accelerator = childinfo->properties[j].value;
+
+	if (accelerator)
+	    gtk_action_group_add_action_with_accel(GTK_ACTION_GROUP(obj),
+						   GTK_ACTION(child),
+						   accelerator);
+	else
+	    gtk_action_group_add_action(GTK_ACTION_GROUP(obj),
+					GTK_ACTION(child));
+	accelerator = NULL;
     }
     g_object_unref(obj);
 }
@@ -934,7 +952,7 @@
     glade_register_custom_prop (GTK_TYPE_WIDGET, "has_default", set_has_default);
     glade_register_custom_prop (GTK_TYPE_WIDGET, "has_focus", set_has_focus);
     glade_register_custom_prop (GTK_TYPE_WIDGET, "sizegroup", set_sizegroup);
-
+    glade_register_custom_prop (GTK_TYPE_ACTION, "accelerator", noop);
     glade_register_custom_prop (GTK_TYPE_BUTTON, "response_id", button_set_response_id);
     glade_register_custom_prop (GTK_TYPE_CALENDAR, "display_options", calendar_set_display_options);
     glade_register_custom_prop (GTK_TYPE_COMBO_BOX, "items", combo_box_set_items);



More information about the POS-commit mailing list