glade3 r2016 - in trunk: . gladeui plugins/gtk+



Author: tvb
Date: Wed Nov  5 21:48:24 2008
New Revision: 2016
URL: http://svn.gnome.org/viewvc/glade3?rev=2016&view=rev

Log:

	* gladeui/glade-xml-utils.c, gladeui/glade-property-class.c: Added 
	parameter-spec parsing, need to updated docs still.

	* plugins/gtk+/glade-gtk.c, plugins/gtk+/gtk+.xml.in, plugins/gtk+/glade-attributes.c,
	plugins/gtk+/glade-icon-sources.c, plugins/gtk+/glade-accels.c, plugins/gtk+/glade-model-data.c,
	plugins/gtk+/glade-column-types.c:
	- Removed all custom parameter spec implementations in the plugin and replaced them
	  with automatically generated ones parsed by the xml.
	- Fixed hierarchy bugs, some classes were not saving.



Modified:
   trunk/ChangeLog
   trunk/gladeui/glade-property-class.c
   trunk/gladeui/glade-xml-utils.h
   trunk/plugins/gtk+/glade-accels.c
   trunk/plugins/gtk+/glade-accels.h
   trunk/plugins/gtk+/glade-attributes.c
   trunk/plugins/gtk+/glade-attributes.h
   trunk/plugins/gtk+/glade-column-types.c
   trunk/plugins/gtk+/glade-column-types.h
   trunk/plugins/gtk+/glade-gtk.c
   trunk/plugins/gtk+/glade-icon-sources.c
   trunk/plugins/gtk+/glade-icon-sources.h
   trunk/plugins/gtk+/glade-model-data.c
   trunk/plugins/gtk+/glade-model-data.h
   trunk/plugins/gtk+/gtk+.xml.in

Modified: trunk/gladeui/glade-property-class.c
==============================================================================
--- trunk/gladeui/glade-property-class.c	(original)
+++ trunk/gladeui/glade-property-class.c	Wed Nov  5 21:48:24 2008
@@ -1251,6 +1251,168 @@
 	return adjustment;
 }
 
+
+static GParamSpec *
+glade_property_class_parse_specifications (GladePropertyClass *klass, 
+					   GladeXmlNode       *spec_node)
+{
+	gchar *string;
+	GType  spec_type = 0, value_type = 0;
+	GParamSpec *pspec = NULL;
+
+	if ((string = glade_xml_get_value_string_required
+	     (spec_node, GLADE_TAG_TYPE, "Need a type of GParamSpec to define")) != NULL)
+	     	spec_type = glade_util_get_type_from_name (string, FALSE);
+
+	g_free (string);
+	
+	g_return_val_if_fail (spec_type != 0, NULL);
+
+	if (spec_type == G_TYPE_PARAM_ENUM   ||
+	    spec_type == G_TYPE_PARAM_FLAGS  ||
+	    spec_type == G_TYPE_PARAM_BOXED  ||
+	    spec_type == G_TYPE_PARAM_OBJECT ||
+	    spec_type == GLADE_TYPE_PARAM_OBJECTS)
+	{
+		if ((string = glade_xml_get_value_string_required
+		     (spec_node, GLADE_TAG_VALUE_TYPE, 
+		      "Need a value type to define enums flags boxed and object specs")) != NULL)
+			value_type = glade_util_get_type_from_name (string, FALSE);
+		
+		g_free (string);
+	
+		g_return_val_if_fail (value_type != 0, NULL);
+
+		if (spec_type == G_TYPE_PARAM_ENUM)
+		{
+			GEnumClass *eclass = g_type_class_ref (value_type);
+			pspec = g_param_spec_enum ("dummy", "dummy", "dummy",
+						   value_type, eclass->minimum, G_PARAM_READABLE|G_PARAM_WRITABLE);
+			g_type_class_unref (eclass);
+		}
+		else if (spec_type == G_TYPE_PARAM_FLAGS)
+			pspec = g_param_spec_flags ("dummy", "dummy", "dummy",
+						    value_type, 0, G_PARAM_READABLE|G_PARAM_WRITABLE);
+		else if (spec_type == G_TYPE_PARAM_OBJECT)
+			pspec = g_param_spec_object ("dummy", "dummy", "dummy",
+						   value_type, G_PARAM_READABLE|G_PARAM_WRITABLE);
+		else if (spec_type == GLADE_TYPE_PARAM_OBJECTS)
+			pspec = glade_param_spec_objects ("dummy", "dummy", "dummy",
+							  value_type, G_PARAM_READABLE|G_PARAM_WRITABLE);
+		else/*  if (spec_type == G_TYPE_PARAM_BOXED) */
+			pspec = g_param_spec_boxed ("dummy", "dummy", "dummy",
+						    value_type, G_PARAM_READABLE|G_PARAM_WRITABLE);
+	}
+	else if (spec_type == G_TYPE_PARAM_STRING)
+		pspec = g_param_spec_string ("dummy", "dummy", "dummy",
+					     NULL, G_PARAM_READABLE|G_PARAM_WRITABLE);
+	else if (spec_type == G_TYPE_PARAM_BOOLEAN)
+		pspec = g_param_spec_boolean ("dummy", "dummy", "dummy",
+					      FALSE, G_PARAM_READABLE|G_PARAM_WRITABLE);
+	else
+	{
+		gchar *minstr, *maxstr;
+
+		minstr = glade_xml_get_value_string (spec_node, GLADE_TAG_MIN_VALUE);
+		maxstr = glade_xml_get_value_string (spec_node, GLADE_TAG_MAX_VALUE);
+		
+		if (spec_type == G_TYPE_PARAM_CHAR)
+		{
+			gint8 min = minstr ? minstr[0]: G_MININT8;
+			gint8 max = maxstr ? maxstr[0]: G_MAXINT8;
+
+			pspec = g_param_spec_char ("dummy", "dummy", "dummy",
+						   min, max, CLAMP (0, min, max), 
+						   G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_UCHAR)
+		{
+			guint8 min = minstr ? minstr[0]: 0;
+			guint8 max = maxstr ? maxstr[0]: G_MAXUINT8;
+
+			pspec = g_param_spec_uchar ("dummy", "dummy", "dummy",
+						   min, max, 0, 
+						   G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_INT)
+		{
+			gint min = minstr ? g_ascii_strtoll (minstr, NULL, 10): G_MININT;
+			gint max = maxstr ? g_ascii_strtoll (maxstr, NULL, 10): G_MAXINT;
+
+			pspec = g_param_spec_int ("dummy", "dummy", "dummy",
+						  min, max, CLAMP (0, min, max), 
+						  G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_UINT)
+		{
+			guint min = minstr ? g_ascii_strtoll (minstr, NULL, 10): 0;
+			guint max = maxstr ? g_ascii_strtoll (maxstr, NULL, 10): G_MAXUINT;
+
+			pspec = g_param_spec_uint ("dummy", "dummy", "dummy",
+						   min, max, CLAMP (0, min, max), 
+						   G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_LONG)
+		{
+			glong min = minstr ? g_ascii_strtoll (minstr, NULL, 10): G_MINLONG;
+			glong max = maxstr ? g_ascii_strtoll (maxstr, NULL, 10): G_MAXLONG;
+
+			pspec = g_param_spec_long ("dummy", "dummy", "dummy",
+						   min, max, CLAMP (0, min, max), 
+						   G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_ULONG)
+		{
+			gulong min = minstr ? g_ascii_strtoll (minstr, NULL, 10): 0;
+			gulong max = maxstr ? g_ascii_strtoll (maxstr, NULL, 10): G_MAXULONG;
+
+			pspec = g_param_spec_ulong ("dummy", "dummy", "dummy",
+						    min, max, CLAMP (0, min, max), 
+						    G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_INT64)
+		{
+			gint64 min = minstr ? g_ascii_strtoll (minstr, NULL, 10): G_MININT64;
+			gint64 max = maxstr ? g_ascii_strtoll (maxstr, NULL, 10): G_MAXINT64;
+
+			pspec = g_param_spec_int64 ("dummy", "dummy", "dummy",
+						    min, max, CLAMP (0, min, max), 
+						    G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_UINT64)
+		{
+			guint64 min = minstr ? g_ascii_strtoll (minstr, NULL, 10): 0;
+			guint64 max = maxstr ? g_ascii_strtoll (maxstr, NULL, 10): G_MAXUINT64;
+
+			pspec = g_param_spec_uint64 ("dummy", "dummy", "dummy",
+						     min, max, CLAMP (0, min, max), 
+						     G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_FLOAT)
+		{
+			gfloat min = minstr ? (float) g_ascii_strtod (minstr, NULL) : G_MINFLOAT;
+			gfloat max = maxstr ? (float) g_ascii_strtod (maxstr, NULL) : G_MAXFLOAT;
+
+			pspec = g_param_spec_float ("dummy", "dummy", "dummy",
+						    min, max, CLAMP (0, min, max), 
+						    G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else if (spec_type == G_TYPE_PARAM_DOUBLE)
+		{
+			gdouble min = minstr ? g_ascii_strtod (minstr, NULL) : G_MINFLOAT;
+			gdouble max = maxstr ? g_ascii_strtod (maxstr, NULL) : G_MAXFLOAT;
+
+			pspec = g_param_spec_float ("dummy", "dummy", "dummy",
+						    min, max, CLAMP (0, min, max), 
+						    G_PARAM_READABLE|G_PARAM_WRITABLE);
+		}
+		else
+			g_critical ("Unsupported pspec type %s (value -> string)", g_type_name (spec_type));
+	}
+	return pspec;
+}
+
+
 /**
  * glade_property_class_update_from_node:
  * @node: the property node
@@ -1273,8 +1435,9 @@
 				       const gchar         *domain)
 {
 	GladePropertyClass *klass;
+	GParamSpec *pspec = NULL;
 	gchar *buf, *translated;
-	GladeXmlNode *child;
+	GladeXmlNode *child, *spec_node;
 
 	g_return_val_if_fail (property_class != NULL, FALSE);
 
@@ -1301,45 +1464,48 @@
 		return TRUE;
 	}
 
-	/* ...the spec... we could be introducing a new one or even overriding an existing spec... */
-	buf = glade_xml_get_value_string (node, GLADE_TAG_SPEC);
-	if (buf)
+	if ((spec_node = glade_xml_search_child (node, GLADE_TAG_SPECIFICATIONS)) != NULL)
+		pspec = glade_property_class_parse_specifications (klass, spec_node);
+	else if ((buf = glade_xml_get_value_string (node, GLADE_TAG_SPEC)) != NULL)
 	{
-		/* ... get the tooltip from the pspec ... */
-		if ((klass->pspec = glade_utils_get_pspec_from_funcname (buf)) != NULL)
-		{
-			/* Make sure we can tell properties apart by there 
-			 * owning class.
-			 */
-			klass->pspec->owner_type = object_type;
-
-			/* We overrode the pspec, now it *is* a virtual property. */
-			klass->virt              = TRUE;
+		pspec = glade_utils_get_pspec_from_funcname (buf);
+		g_free (buf);
+	}
 
-			if (klass->tooltip) g_free (klass->tooltip);
-			if (klass->name)    g_free (klass->name);
-			
-			klass->tooltip = g_strdup (g_param_spec_get_blurb (klass->pspec));
-			klass->name    = g_strdup (g_param_spec_get_nick (klass->pspec));
-			
-			if (klass->pspec->flags & G_PARAM_CONSTRUCT_ONLY)
-				klass->construct_only = TRUE;
-
-			if (klass->orig_def) {
-				g_value_unset (klass->orig_def);
-				g_free (klass->orig_def);
-			}
-			klass->orig_def = glade_property_class_get_default_from_spec (klass->pspec);
-
-			if (klass->def) {
-				g_value_unset (klass->def);
-				g_free (klass->def);
-			}
-			klass->def = glade_property_class_get_default_from_spec (klass->pspec);			
+	/* ... get the tooltip from the pspec ... */
+	if (pspec != NULL)
+	{
+		klass->pspec = pspec;
 
+		/* Make sure we can tell properties apart by there 
+		 * owning class.
+		 */
+		klass->pspec->owner_type = object_type;
+		
+		/* We overrode the pspec, now it *is* a virtual property. */
+		klass->virt              = TRUE;
+		
+		if (klass->tooltip) g_free (klass->tooltip);
+		if (klass->name)    g_free (klass->name);
+		
+		klass->tooltip = g_strdup (g_param_spec_get_blurb (klass->pspec));
+		klass->name    = g_strdup (g_param_spec_get_nick (klass->pspec));
+		
+		if (klass->pspec->flags & G_PARAM_CONSTRUCT_ONLY)
+			klass->construct_only = TRUE;
+		
+		if (klass->orig_def) {
+			g_value_unset (klass->orig_def);
+			g_free (klass->orig_def);
 		}
-
- 		g_free (buf);
+		klass->orig_def = glade_property_class_get_default_from_spec (klass->pspec);
+		
+		if (klass->def) {
+			g_value_unset (klass->def);
+			g_free (klass->def);
+		}
+		klass->def = glade_property_class_get_default_from_spec (klass->pspec);			
+		
 	}
 	else if (!klass->pspec) 
 	{
@@ -1534,7 +1700,7 @@
 	g_return_val_if_fail (GLADE_IS_PROPERTY_CLASS (klass), -1);
 	
 	/* GLib does not know how to compare a boxed real value */
-	if (G_VALUE_HOLDS_BOXED (value1))
+	if (G_VALUE_HOLDS_BOXED (value1) || G_VALUE_HOLDS_BOXED (value2))
 	{
 		gchar *val1, *val2;
 

Modified: trunk/gladeui/glade-xml-utils.h
==============================================================================
--- trunk/gladeui/glade-xml-utils.h	(original)
+++ trunk/gladeui/glade-xml-utils.h	Wed Nov  5 21:48:24 2008
@@ -146,6 +146,10 @@
 #define GLADE_TAG_ACTION                          "action"
 #define GLADE_TAG_TYPE                            "type"
 #define GLADE_TAG_SPEC                            "spec"
+#define GLADE_TAG_SPECIFICATIONS                  "parameter-spec"
+#define GLADE_TAG_MAX_VALUE                       "max"
+#define GLADE_TAG_MIN_VALUE                       "min"
+#define GLADE_TAG_VALUE_TYPE                      "value-type"
 #define GLADE_TAG_TOOLTIP                         "tooltip"
 #define GLADE_TAG_PARAMETERS                      "parameters"
 #define GLADE_TAG_PARAMETER                       "parameter"

Modified: trunk/plugins/gtk+/glade-accels.c
==============================================================================
--- trunk/plugins/gtk+/glade-accels.c	(original)
+++ trunk/plugins/gtk+/glade-accels.c	Wed Nov  5 21:48:24 2008
@@ -31,18 +31,6 @@
 
 #define GLADE_RESPONSE_CLEAR 42
 
-/**************************************************************
- *              GParamSpec stuff here
- **************************************************************/
-struct _GladeParamSpecAccel {
-	GParamSpec    parent_instance;
-	
-	GType         type; /* The type this accel key is for; this allows
-			     * us to verify the validity of any signals for
-			     * this type.
-			     */
-};
-
 GList *
 glade_accel_list_copy (GList *accels)
 {
@@ -93,121 +81,6 @@
 	return type_id;
 }
 
-static void
-param_accel_init (GParamSpec *pspec)
-{
-	GladeParamSpecAccel *ospec = GLADE_PARAM_SPEC_ACCEL (pspec);
-	ospec->type = G_TYPE_OBJECT;
-}
-
-static void
-param_accel_set_default (GParamSpec *pspec,
-			 GValue     *value)
-{
-	if (value->data[0].v_pointer != NULL)
-	{
-		/* XXX FIXME ?? */
-		g_free (value->data[0].v_pointer);
-	}
-	value->data[0].v_pointer = NULL;
-}
-
-static gboolean
-param_accel_validate (GParamSpec *pspec,
-		      GValue     *value)
-{
-	/* GladeParamSpecAccel *aspec = GLADE_PARAM_SPEC_ACCEL (pspec); */
-	GList               *accels, *list, *toremove = NULL;
-	GladeAccelInfo      *info;
-
-	accels = value->data[0].v_pointer;
-
-	for (list = accels; list; list = list->next)
-	{
-		info = list->data;
-		
-		if (/* Does the modifier contain any unwanted bits ? */
-		    info->modifiers & GDK_MODIFIER_MASK ||
-		    /* Do we have a signal ? */
-		    /* FIXME: Check if the signal is valid for 'type' */
-		    info->signal == NULL)
-			toremove = g_list_prepend (toremove, info);
-	}
-
-	for (list = toremove; list; list = list->next)
-		accels = g_list_remove (accels, list->data);
-
-	if (toremove) g_list_free (toremove);
- 
-	value->data[0].v_pointer = accels;
-
-	return toremove != NULL;
-}
-
-static gint
-param_accel_values_cmp (GParamSpec   *pspec,
-			  const GValue *value1,
-			  const GValue *value2)
-{
-  guint8 *p1 = value1->data[0].v_pointer;
-  guint8 *p2 = value2->data[0].v_pointer;
-
-  /* not much to compare here, try to at least provide stable lesser/greater result */
-
-  return p1 < p2 ? -1 : p1 > p2;
-}
-
-GType
-glade_param_accel_get_type (void)
-{
-	static GType accel_type = 0;
-
-	if (accel_type == 0)
-	{
-		static /* const */ GParamSpecTypeInfo pspec_info = {
-			sizeof (GladeParamSpecAccel),  /* instance_size */
-			16,                         /* n_preallocs */
-			param_accel_init,         /* instance_init */
-			0xdeadbeef,                 /* value_type, assigned further down */
-			NULL,                       /* finalize */
-			param_accel_set_default,  /* value_set_default */
-			param_accel_validate,     /* value_validate */
-			param_accel_values_cmp,   /* values_cmp */
-		};
-		pspec_info.value_type = GLADE_TYPE_ACCEL_GLIST;
-
-		accel_type = g_param_type_register_static
-			("GladeParamAccel", &pspec_info);
-	}
-	return accel_type;
-}
-
-GParamSpec *
-glade_param_spec_accel (const gchar   *name,
-			const gchar   *nick,
-			const gchar   *blurb,
-			GType          widget_type,
-			GParamFlags    flags)
-{
-  GladeParamSpecAccel *pspec;
-
-  pspec = g_param_spec_internal (GLADE_TYPE_PARAM_ACCEL,
-				 name, nick, blurb, flags);
-  
-  pspec->type = widget_type;
-  return G_PARAM_SPEC (pspec);
-}
-
-/* Accelerator spec */
-GParamSpec *
-glade_standard_accel_spec (void)
-{
-	return glade_param_spec_accel ("accelerators", _("Accelerators"),
-				       _("A list of accelerator keys"), 
-				       GTK_TYPE_WIDGET,
-				       G_PARAM_READWRITE);
-}
-
 /* This is not used to save in the glade file... and its a one-way conversion.
  * its only usefull to show the values in the UI.
  */
@@ -623,7 +496,7 @@
 	GladeEPropAccel  *eprop_accel = GLADE_EPROP_ACCEL (eprop);
 	GtkWidget        *dialog, *parent, *vbox, *sw, *tree_view;
 	GladeProject     *project;
-	GValue           *value;
+	GValue            value = { 0, };
 	GList            *accelerators = NULL;
 	gint              res;
 	
@@ -672,25 +545,20 @@
 			 (GtkTreeModelForeachFunc)
 			 glade_eprop_accel_accum_accelerators, &accelerators);
 		
-		value = g_new0 (GValue, 1);
-		g_value_init (value, GLADE_TYPE_ACCEL_GLIST);
-		g_value_take_boxed (value, accelerators);
-
-		glade_editor_property_commit (eprop, value);
+		g_value_init (&value, GLADE_TYPE_ACCEL_GLIST);
+		g_value_take_boxed (&value, accelerators);
 
-		g_value_unset (value);
-		g_free (value);
+		glade_editor_property_commit (eprop, &value);
+		g_value_unset (&value);
 	} 
 	else if (res == GLADE_RESPONSE_CLEAR)
 	{
-		value = g_new0 (GValue, 1);
-		g_value_init (value, GLADE_TYPE_ACCEL_GLIST);
-		g_value_set_boxed (value, NULL);
+		g_value_init (&value, GLADE_TYPE_ACCEL_GLIST);
+		g_value_set_boxed (&value, NULL);
 
-		glade_editor_property_commit (eprop, value);
+		glade_editor_property_commit (eprop, &value);
 
-		g_value_unset (value);
-		g_free (value);
+		g_value_unset (&value);
 	}
 
 	/* Clean up ...

Modified: trunk/plugins/gtk+/glade-accels.h
==============================================================================
--- trunk/plugins/gtk+/glade-accels.h	(original)
+++ trunk/plugins/gtk+/glade-accels.h	Wed Nov  5 21:48:24 2008
@@ -7,19 +7,11 @@
 
 G_BEGIN_DECLS
 
-#define	GLADE_TYPE_PARAM_ACCEL         (glade_param_accel_get_type())
 #define	GLADE_TYPE_ACCEL_GLIST         (glade_accel_glist_get_type())
 #define GLADE_TYPE_EPROP_ACCEL         (glade_eprop_accel_get_type())
 
-#define GLADE_IS_PARAM_SPEC_ACCEL(pspec)       \
-        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),  \
-         GLADE_TYPE_PARAM_ACCEL))
-#define GLADE_PARAM_SPEC_ACCEL(pspec)          \
-        (G_TYPE_CHECK_INSTANCE_CAST ((pspec),  \
-         GLADE_TYPE_PARAM_ACCEL, GladeParamSpecAccel))
 
 typedef struct _GladeKey                GladeKey;
-typedef struct _GladeParamSpecAccel     GladeParamSpecAccel;
 typedef struct _GladeAccelInfo          GladeAccelInfo;
 
 struct _GladeAccelInfo {
@@ -40,22 +32,12 @@
 #define  GLADE_KEYS_LAST_KP          "KP_9"
 #define  GLADE_KEYS_LAST_FKEY        "F35"
 
-GType        glade_param_accel_get_type          (void) G_GNUC_CONST;
-GType        glade_accel_glist_get_type          (void) G_GNUC_CONST;
-GType        glade_eprop_accel_get_type          (void) G_GNUC_CONST;
+GType        glade_accel_glist_get_type    (void) G_GNUC_CONST;
+GType        glade_eprop_accel_get_type    (void) G_GNUC_CONST;
 
 GList       *glade_accel_list_copy         (GList         *accels);
 void         glade_accel_list_free         (GList         *accels);
 
-
-GParamSpec  *glade_param_spec_accel        (const gchar   *name,
-					    const gchar   *nick,
-					    const gchar   *blurb,
-					    GType          widget_type,
-					    GParamFlags    flags);
-
-GParamSpec  *glade_standard_accel_spec     (void);
-
 gchar       *glade_accels_make_string      (GList *accels);
 
 G_END_DECLS

Modified: trunk/plugins/gtk+/glade-attributes.c
==============================================================================
--- trunk/plugins/gtk+/glade-attributes.c	(original)
+++ trunk/plugins/gtk+/glade-attributes.c	Wed Nov  5 21:48:24 2008
@@ -36,12 +36,6 @@
 
 #define GLADE_RESPONSE_CLEAR 42
 
-
-struct _GladeParamSpecAttributes {
-	GParamSpec    parent_instance;
-};
-
-
 static GList *
 glade_attr_list_copy (GList *attrs)
 {
@@ -94,92 +88,6 @@
 	return type_id;
 }
 
-static void
-param_attributes_init (GParamSpec *pspec)
-{
-}
-
-static void
-param_attributes_set_default (GParamSpec *pspec,
-			      GValue     *value)
-{
-	if (value->data[0].v_pointer != NULL)
-	{
-		glade_attr_list_free (value->data[0].v_pointer);
-	}
-	value->data[0].v_pointer = NULL;
-}
-
-static gboolean
-param_attributes_validate (GParamSpec *pspec,
-			   GValue     *value)
-{
-	return TRUE;
-}
-
-static gint
-param_attributes_values_cmp (GParamSpec   *pspec,
-			  const GValue *value1,
-			  const GValue *value2)
-{
-  guint8 *p1 = value1->data[0].v_pointer;
-  guint8 *p2 = value2->data[0].v_pointer;
-
-  /* not much to compare here, try to at least provide stable lesser/greater result */
-
-  return p1 < p2 ? -1 : p1 > p2;
-}
-
-GType
-glade_param_attributes_get_type (void)
-{
-	static GType attributes_type = 0;
-
-	if (attributes_type == 0)
-	{
-		static /* const */ GParamSpecTypeInfo pspec_info = {
-			sizeof (GladeParamSpecAttributes),  /* instance_size */
-			16,                         /* n_preallocs */
-			param_attributes_init,         /* instance_init */
-			0xdeadbeef,                 /* value_type, assigned further down */
-			NULL,                       /* finalize */
-			param_attributes_set_default,  /* value_set_default */
-			param_attributes_validate,     /* value_validate */
-			param_attributes_values_cmp,   /* values_cmp */
-		};
-		pspec_info.value_type = GLADE_TYPE_ATTR_GLIST;
-
-		attributes_type = g_param_type_register_static
-			("GladeParamAttributes", &pspec_info);
-	}
-	return attributes_type;
-}
-
-GParamSpec *
-glade_param_spec_attributes (const gchar   *name,
-			     const gchar   *nick,
-			     const gchar   *blurb,
-			     GParamFlags    flags)
-{
-	GladeParamSpecAttributes *pspec;
-
-	pspec = g_param_spec_internal (GLADE_TYPE_PARAM_ATTRIBUTES,
-				       name, nick, blurb, flags);
-  
-	return G_PARAM_SPEC (pspec);
-}
-
-GParamSpec *
-glade_gtk_attributes_spec (void)
-{
-	return glade_param_spec_attributes ("attributes", _("Attributes"), 
-					    _("A list of attributes"),
-					    G_PARAM_READWRITE);
-}
-
-
-
-
 /**************************************************************
  *              GladeEditorProperty stuff here
  **************************************************************/
@@ -1180,20 +1088,16 @@
 			GladeProperty       *property)
 {
 	GladeEditorPropertyClass *parent_class = 
-		g_type_class_peek_parent (GLADE_EDITOR_PROPERTY_GET_CLASS (eprop));
-	GladeEPropAttrs *eprop_attrs = GLADE_EPROP_ATTRS (eprop);
+		g_type_class_peek_parent (G_OBJECT_GET_CLASS (eprop));
 
-	/* Chain up first */
+	/* No displayable attributes in eprop, just a button. */
 	parent_class->load (eprop, property);
 
-	if (property == NULL) return;
-
 }
 
 static GtkWidget *
 glade_eprop_attrs_create_input (GladeEditorProperty *eprop)
 {
-	GladeEPropAttrs *eprop_attrs = GLADE_EPROP_ATTRS (eprop);
 	GtkWidget        *hbox;
 	GtkWidget        *button;
 

Modified: trunk/plugins/gtk+/glade-attributes.h
==============================================================================
--- trunk/plugins/gtk+/glade-attributes.h	(original)
+++ trunk/plugins/gtk+/glade-attributes.h	Wed Nov  5 21:48:24 2008
@@ -9,18 +9,9 @@
 
 
 #define GLADE_TYPE_EPROP_ATTRS            (glade_eprop_attrs_get_type())
-#define	GLADE_TYPE_PARAM_ATTRIBUTES       (glade_param_attributes_get_type())
 #define	GLADE_TYPE_ATTR_GLIST             (glade_attr_glist_get_type())
 
-#define GLADE_IS_PARAM_SPEC_ATTRIBUTES(pspec)     \
-        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),  \
-         GLADE_TYPE_PARAM_ATTRIBUTES))
-#define GLADE_PARAM_SPEC_ATTRIBUTES(pspec)        \
-        (G_TYPE_CHECK_INSTANCE_CAST ((pspec),  \
-         GLADE_TYPE_PARAM_ATTRIBUTES, GladeParamSpecAttributes))
-
 /* The GladeParamSpecAttributes is a GList * of GladeAttribute structs */
-typedef struct _GladeParamSpecAttributes   GladeParamSpecAttributes;
 typedef struct _GladeAttribute             GladeAttribute;
 
 struct _GladeAttribute {
@@ -32,18 +23,10 @@
 	guint           end;
 };
 
-GType        glade_param_attributes_get_type    (void) G_GNUC_CONST;
+
 GType        glade_eprop_attrs_get_type         (void) G_GNUC_CONST;
 GType        glade_attr_glist_get_type          (void) G_GNUC_CONST;
 
-
-GParamSpec  *glade_param_spec_attributes        (const gchar     *name,
-						 const gchar     *nick,
-						 const gchar     *blurb,
-						 GParamFlags      flags);
-
-GParamSpec  *glade_gtk_attributes_spec          (void);
-
 GladeAttribute *glade_gtk_attribute_from_string (PangoAttrType    type,
 						 const gchar     *strval);
 gchar       *glade_gtk_string_from_attr         (GladeAttribute  *gattr);

Modified: trunk/plugins/gtk+/glade-column-types.c
==============================================================================
--- trunk/plugins/gtk+/glade-column-types.c	(original)
+++ trunk/plugins/gtk+/glade-column-types.c	Wed Nov  5 21:48:24 2008
@@ -193,80 +193,21 @@
 	static GType type_id = 0;
 
 	if (!type_id)
+	{
 		type_id = g_boxed_type_register_static
 			("GladeColumnTypeList", 
 			 (GBoxedCopyFunc) glade_column_list_copy,
 			 (GBoxedFreeFunc) glade_column_list_free);
-	return type_id;
-}
-
-/********************** GladeParamSpecColumnTypes  ***********************/
 
-struct _GladeParamSpecColumnTypes
-{
-	GParamSpec parent_instance;
-};
-
-static gint
-param_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2)
-{
-	GList *l1, *l2;
-	gint retval;
-	
-	l1 = g_value_get_boxed (value1);
-	l2 = g_value_get_boxed (value2);
-	
-	if (l1 == NULL && l2 == NULL) return 0;
-	
-	if (l1 == NULL || l2 == NULL) return l1 - l2;
-	
-	if ((retval = g_list_length (l1) - g_list_length (l2)))
-		return retval;
-	else
-		return GPOINTER_TO_INT (l1->data) - GPOINTER_TO_INT (l2->data);
-}
-
-GType
-glade_param_column_types_get_type (void)
-{
-	static GType accel_type = 0;
-
-	if (accel_type == 0)
-	{
-		 GParamSpecTypeInfo pspec_info = {
-			sizeof (GladeParamSpecColumnTypes),  /* instance_size */
-			16,   /* n_preallocs */
-			NULL, /* instance_init */
-			0,    /* value_type, assigned further down */
-			NULL, /* finalize */
-			NULL, /* value_set_default */
-			NULL, /* value_validate */
-			param_values_cmp, /* values_cmp */
-		};
-		pspec_info.value_type = GLADE_TYPE_COLUMN_TYPE_LIST;
-
-		accel_type = g_param_type_register_static
-			("GladeParamSpecColumnTypes", &pspec_info);
 		types_model = (GtkTreeModel *)gtk_tree_store_new (N_COLUMNS,
 								  G_TYPE_STRING,
 								  G_TYPE_GTYPE,
 								  G_TYPE_STRING);
 
 		column_types_store_populate (GTK_TREE_STORE (types_model));
-	}
-	return accel_type;
-}
-
-GParamSpec *
-glade_standard_column_types_spec (void)
-{
-	GladeParamSpecColumnTypes *pspec;
 
-	pspec = g_param_spec_internal (GLADE_TYPE_PARAM_COLUMN_TYPES,
-				       "column-types", _("Column Types"), 
-				       _("A list of GTypes and thier names"),
-				       G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
-	return G_PARAM_SPEC (pspec);
+	}
+	return type_id;
 }
 
 /**************************** GladeEditorProperty *****************************/

Modified: trunk/plugins/gtk+/glade-column-types.h
==============================================================================
--- trunk/plugins/gtk+/glade-column-types.h	(original)
+++ trunk/plugins/gtk+/glade-column-types.h	Wed Nov  5 21:48:24 2008
@@ -32,23 +32,12 @@
 	gchar *column_name;
 } GladeColumnType;
 
-
 #define	GLADE_TYPE_COLUMN_TYPE_LIST   (glade_column_type_list_get_type())
-#define	GLADE_TYPE_PARAM_COLUMN_TYPES (glade_param_column_types_get_type())
 #define GLADE_TYPE_EPROP_COLUMN_TYPES (glade_eprop_column_types_get_type())
 
-#define GLADE_IS_PARAM_SPEC_COLUMN_TYPES(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GLADE_TYPE_PARAM_COLUMN_TYPES))
-#define GLADE_PARAM_SPEC_COLUMN_TYPES(pspec)    (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GLADE_TYPE_PARAM_COLUMN_TYPES, GladeParamSpecColumnTypes))
-
-typedef struct _GladeParamSpecColumnTypes     GladeParamSpecColumnTypes;
-
 GType        glade_column_type_list_get_type      (void) G_GNUC_CONST;
-GType        glade_param_column_types_get_type    (void) G_GNUC_CONST;
 GType        glade_eprop_column_types_get_type    (void) G_GNUC_CONST;
 
-GParamSpec  *glade_standard_column_types_spec     (void);
-
-
 void         glade_column_list_free               (GList *list);
 GList       *glade_column_list_copy               (GList *list);
 

Modified: trunk/plugins/gtk+/glade-gtk.c
==============================================================================
--- trunk/plugins/gtk+/glade-gtk.c	(original)
+++ trunk/plugins/gtk+/glade-gtk.c	Wed Nov  5 21:48:24 2008
@@ -214,6 +214,15 @@
 	g_signal_stop_emission (instance, GPOINTER_TO_UINT (data) , 0);
 }
 
+
+
+/* Initialize needed pspec types from here */
+void
+glade_gtk_init (const gchar *name)
+{
+
+}
+
 /* ----------------------------- GtkWidget ------------------------------ */
 #define GLADE_TAG_ACCEL             "accelerator"
 #define GLADE_TAG_ACCEL_KEY         "key"
@@ -1004,7 +1013,7 @@
 	GladeEditorProperty *eprop;
 
 	/* chain up.. */
-	if (GLADE_IS_PARAM_SPEC_ACCEL (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_ACCEL_GLIST)
 		eprop = g_object_new (GLADE_TYPE_EPROP_ACCEL,
 				      "property-class", klass, 
 				      "use-command", use_command,
@@ -1023,7 +1032,7 @@
 				    const GValue       *value,
 				    GladeProjectFormat  fmt)
 {
-	if (GLADE_IS_PARAM_SPEC_ACCEL (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_ACCEL_GLIST)
 		return glade_accels_make_string (g_value_get_boxed (value));
 	else
 		return GWA_GET_CLASS 
@@ -5206,7 +5215,7 @@
 		return;
 
 	/* First chain up and read in all the normal properties.. */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
+        GWA_GET_CLASS (GTK_TYPE_CONTAINER)->read_widget (adaptor, widget, node);
 
 	/* Update the stock property */
 	glade_widget_property_get (widget, "use-stock", &use_stock);
@@ -5231,9 +5240,6 @@
 	    (node, GLADE_XML_TAG_WIDGET (glade_project_get_format (widget->project))))
 		return;
 
-	/* First chain up and write all the normal properties (including "use-stock")... */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
-
 	label_prop = glade_widget_get_property (widget, "label");
 
 	/* Make a copy of the GladeProperty, override its value if use-stock is TRUE */
@@ -5246,6 +5252,9 @@
 	}
 	glade_property_write (label_prop, context, node);
 	g_object_unref (G_OBJECT (label_prop));
+
+	/* Write out other normal properties and any other class derived custom properties after ... */
+        GWA_GET_CLASS (GTK_TYPE_CONTAINER)->write_widget (adaptor, widget, context, node);
 }
 
 
@@ -5260,7 +5269,7 @@
 		return;
 
 	/* First chain up and read in all the normal properties.. */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
+        GWA_GET_CLASS (GTK_TYPE_WIDGET)->read_widget (adaptor, widget, node);
 	
 	if (glade_widget_property_original_default (widget, "icon-name") == FALSE)
 		glade_widget_property_set (widget, "image-mode", GLADE_IMAGE_MODE_ICON);
@@ -5289,7 +5298,7 @@
 		return;
 
 	/* First chain up and write all the normal properties (including "use-stock")... */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
+        GWA_GET_CLASS (GTK_TYPE_WIDGET)->write_widget (adaptor, widget, context, node);
 
 	/* We have to save icon-size as an integer, the core will take care of 
 	 * loading the int value though.
@@ -5435,7 +5444,7 @@
 		return;
 
 	/* First chain up and read in all the normal properties.. */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
+        GWA_GET_CLASS (GTK_TYPE_WIDGET)->read_widget (adaptor, widget, node);
 
 	if (glade_project_get_format (widget->project) == GLADE_PROJECT_FORMAT_LIBGLADE &&
 	    widget->parent && GTK_IS_MENU_ITEM (widget->parent->object))
@@ -6271,7 +6280,7 @@
 		return;
 
 	/* First chain up and read in all the normal properties.. */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
+        GWA_GET_CLASS (GTK_TYPE_MENU_ITEM)->read_widget (adaptor, widget, node);
 
 	/* This will read legacy "stock-item" properties and make them usable */
 	glade_gtk_image_menu_item_fix_stock_item (widget);
@@ -7011,7 +7020,7 @@
 		return;
 
 	/* First chain up and read in all the normal properties.. */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
+        GWA_GET_CLASS (GTK_TYPE_TOOL_ITEM)->read_widget (adaptor, widget, node);
 
 	/* Run this after the load so that icon-widget is resolved. */
 	g_signal_connect (glade_widget_get_project (widget),
@@ -7446,7 +7455,7 @@
 		return;
 
 	/* First chain up and read in all the normal properties.. */
-        GWA_GET_CLASS (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
+        GWA_GET_CLASS (GTK_TYPE_WIDGET)->write_widget (adaptor, widget, context, node);
 
 	attrs_node = glade_xml_node_new (context, GLADE_TAG_ATTRIBUTES);
 
@@ -7465,7 +7474,7 @@
 				   const GValue       *value,
 				   GladeProjectFormat  fmt)
 {
-	if (GLADE_IS_PARAM_SPEC_ATTRIBUTES (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_ATTR_GLIST)
 	{
 		GList *l, *list = g_value_get_boxed (value);
 		GString *string = g_string_new ("");
@@ -7501,7 +7510,7 @@
 	GladeEditorProperty *eprop;
 
 	/* chain up.. */
-	if (GLADE_IS_PARAM_SPEC_ATTRIBUTES (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_ATTR_GLIST)
 	{
 		eprop = g_object_new (GLADE_TYPE_EPROP_ATTRS,
 				      "property-class", klass, 
@@ -7523,7 +7532,7 @@
 	GladeEditable *editable;
 
 	/* Get base editable */
-	editable = GWA_GET_CLASS (G_TYPE_OBJECT)->create_editable (adaptor, type);
+	editable = GWA_GET_CLASS (GTK_TYPE_WIDGET)->create_editable (adaptor, type);
 
 	if (type == GLADE_PAGE_GENERAL)
 		return (GladeEditable *)glade_label_editor_new (adaptor, editable);
@@ -8704,12 +8713,12 @@
 	GladeEditorProperty *eprop;
 
 	/* chain up.. */
-	if (GLADE_IS_PARAM_SPEC_COLUMN_TYPES (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_COLUMN_TYPE_LIST)
 		eprop = g_object_new (GLADE_TYPE_EPROP_COLUMN_TYPES,
 				      "property-class", klass, 
 				      "use-command", use_command,
 				      NULL);
-	else if (GLADE_IS_PARAM_SPEC_MODEL_DATA (klass->pspec))
+	else if (klass->pspec->value_type == GLADE_TYPE_MODEL_DATA_TREE)
 		eprop = g_object_new (GLADE_TYPE_EPROP_MODEL_DATA,
 				      "property-class", klass, 
 				      "use-command", use_command,
@@ -8745,7 +8754,7 @@
 {
 	GString *string;
 
-	if (GLADE_IS_PARAM_SPEC_COLUMN_TYPES (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_COLUMN_TYPE_LIST)
 	{
 		GList *l;
 		string = g_string_new ("");		
@@ -8757,7 +8766,7 @@
 		}
 		return g_string_free (string, FALSE);
 	}
-	else if (GLADE_IS_PARAM_SPEC_MODEL_DATA (klass->pspec))
+	else if (klass->pspec->value_type == GLADE_TYPE_MODEL_DATA_TREE)
 	{
 		GladeModelData *data;
 		GNode *data_tree, *row, *iter;
@@ -9675,7 +9684,7 @@
 {
 	GString *string;
 
-	if (GLADE_IS_PARAM_SPEC_ICON_SOURCES (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_ICON_SOURCES)
 	{
 		GladeIconSources *sources = g_value_get_boxed (value);
 		if (!sources)
@@ -9702,8 +9711,7 @@
 {
 	GladeEditorProperty *eprop;
 
-	/* chain up.. */
-	if (GLADE_IS_PARAM_SPEC_ICON_SOURCES (klass->pspec))
+	if (klass->pspec->value_type == GLADE_TYPE_ICON_SOURCES)
 		eprop = g_object_new (GLADE_TYPE_EPROP_ICON_SOURCES,
 				      "property-class", klass, 
 				      "use-command", use_command,

Modified: trunk/plugins/gtk+/glade-icon-sources.c
==============================================================================
--- trunk/plugins/gtk+/glade-icon-sources.c	(original)
+++ trunk/plugins/gtk+/glade-icon-sources.c	Wed Nov  5 21:48:24 2008
@@ -109,73 +109,6 @@
 	return type_id;
 }
 
-/********************** GladeParamIconSources  ***********************/
-
-struct _GladeParamIconSources
-{
-	GParamSpec parent_instance;
-};
-
-static gint
-param_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2)
-{
-	GladeIconSources *s1, *s2;
-	gint retval;
-	
-	s1 = g_value_get_boxed (value1);
-	s2 = g_value_get_boxed (value2);
-	
-	if (s1 == NULL && s2 == NULL) return 0;
-	
-	if (s1 == NULL || s2 == NULL) return s1 - s2;
-	
-	if ((retval = 
-	     g_hash_table_size (s1->sources) - g_hash_table_size (s2->sources)))
-		return retval;
-	else
-		/* XXX We could do alot better here... but right now we are using strings
-		 * and ignoring changes somehow... need to fix that.
-		 */
-		return GPOINTER_TO_INT (s1->sources) - GPOINTER_TO_INT (s2->sources);
-}
-
-GType
-glade_param_icon_sources_get_type (void)
-{
-	static GType icon_sources_type = 0;
-
-	if (icon_sources_type == 0)
-	{
-		 GParamSpecTypeInfo pspec_info = {
-			 sizeof (GladeParamIconSources),  /* instance_size */
-			 16,   /* n_preallocs */
-			 NULL, /* instance_init */
-			 0,    /* value_type, assigned further down */
-			 NULL, /* finalize */
-			 NULL, /* value_set_default */
-			 NULL, /* value_validate */
-			 param_values_cmp, /* values_cmp */
-		 };
-		 pspec_info.value_type = GLADE_TYPE_ICON_SOURCES;
-		 
-		 icon_sources_type = g_param_type_register_static
-			 ("GladeParamIconSources", &pspec_info);
-	}
-	return icon_sources_type;
-}
-
-GParamSpec *
-glade_standard_icon_sources_spec (void)
-{
-	GladeParamIconSources *pspec;
-
-	pspec = g_param_spec_internal (GLADE_TYPE_PARAM_ICON_SOURCES,
-				       "icon-sources", _("Icon Sources"), 
-				       _("A list of sources for an icon factory"),
-				       G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
-	return G_PARAM_SPEC (pspec);
-}
-
 /**************************** GladeEditorProperty *****************************/
 enum {
 	COLUMN_TEXT,             /* Used for display/editing purposes */

Modified: trunk/plugins/gtk+/glade-icon-sources.h
==============================================================================
--- trunk/plugins/gtk+/glade-icon-sources.h	(original)
+++ trunk/plugins/gtk+/glade-icon-sources.h	Wed Nov  5 21:48:24 2008
@@ -36,20 +36,11 @@
 typedef struct _GladeParamIconSources    GladeParamIconSources;
 
 #define	GLADE_TYPE_ICON_SOURCES       (glade_icon_sources_get_type())
-#define	GLADE_TYPE_PARAM_ICON_SOURCES (glade_param_icon_sources_get_type())
 #define GLADE_TYPE_EPROP_ICON_SOURCES (glade_eprop_icon_sources_get_type())
 
-#define GLADE_IS_PARAM_SPEC_ICON_SOURCES(pspec) \
-	(G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GLADE_TYPE_PARAM_ICON_SOURCES))
-#define GLADE_PARAM_SPEC_ICON_SOURCES(pspec)    \
-	(G_TYPE_CHECK_INSTANCE_CAST ((pspec), GLADE_TYPE_PARAM_ICON_SOURCES, GladeParamSpecIconSources))
-
 GType             glade_icon_sources_get_type          (void) G_GNUC_CONST;
-GType             glade_param_icon_sources_get_type    (void) G_GNUC_CONST;
 GType             glade_eprop_icon_sources_get_type    (void) G_GNUC_CONST;
 
-GParamSpec       *glade_standard_icon_sources_spec     (void);
-
 GladeIconSources *glade_icon_sources_new               (void);
 GladeIconSources *glade_icon_sources_copy              (GladeIconSources *sources);
 void              glade_icon_sources_free              (GladeIconSources *sources);

Modified: trunk/plugins/gtk+/glade-model-data.c
==============================================================================
--- trunk/plugins/gtk+/glade-model-data.c	(original)
+++ trunk/plugins/gtk+/glade-model-data.c	Wed Nov  5 21:48:24 2008
@@ -234,73 +234,6 @@
 	return type_id;
 }
 
-/********************** GladeParamModelData  ***********************/
-
-struct _GladeParamModelData
-{
-	GParamSpec parent_instance;
-};
-
-static gint
-param_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2)
-{
-	GNode *n1, *n2;
-	gint retval;
-	
-	n1 = g_value_get_boxed (value1);
-	n2 = g_value_get_boxed (value2);
-	
-	if (n1 == NULL && n2 == NULL) return 0;
-	
-	if (n1 == NULL || n2 == NULL) return n1 - n2;
-	
-	if ((retval = 
-	     g_node_n_nodes (n1, G_TRAVERSE_ALL) - g_node_n_nodes (n2, G_TRAVERSE_ALL)))
-		return retval;
-	else
-		/* XXX We could do alot better here... but right now we are using strings
-		 * and ignoring changes somehow... need to fix that.
-		 */
-		return GPOINTER_TO_INT (n1->data) - GPOINTER_TO_INT (n2->data);
-}
-
-GType
-glade_param_model_data_get_type (void)
-{
-	static GType model_data_type = 0;
-
-	if (model_data_type == 0)
-	{
-		 GParamSpecTypeInfo pspec_info = {
-			 sizeof (GladeParamModelData),  /* instance_size */
-			 16,   /* n_preallocs */
-			 NULL, /* instance_init */
-			 0,    /* value_type, assigned further down */
-			 NULL, /* finalize */
-			 NULL, /* value_set_default */
-			 NULL, /* value_validate */
-			 param_values_cmp, /* values_cmp */
-		 };
-		 pspec_info.value_type = GLADE_TYPE_MODEL_DATA_TREE;
-		 
-		 model_data_type = g_param_type_register_static
-			 ("GladeParamModelData", &pspec_info);
-	}
-	return model_data_type;
-}
-
-GParamSpec *
-glade_standard_model_data_spec (void)
-{
-	GladeParamModelData *pspec;
-
-	pspec = g_param_spec_internal (GLADE_TYPE_PARAM_MODEL_DATA,
-				       "model-data", _("Model Data"), 
-				       _("A datastore property for GtkTreeModel"),
-				       G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
-	return G_PARAM_SPEC (pspec);
-}
-
 /**************************** GladeEditorProperty *****************************/
 enum {
 	COLUMN_ROW = 0, /* row number */

Modified: trunk/plugins/gtk+/glade-model-data.h
==============================================================================
--- trunk/plugins/gtk+/glade-model-data.h	(original)
+++ trunk/plugins/gtk+/glade-model-data.h	Wed Nov  5 21:48:24 2008
@@ -37,24 +37,14 @@
 };
 
 typedef struct _GladeModelData         GladeModelData;
-typedef struct _GladeParamModelData    GladeParamModelData;
 
 
 #define	GLADE_TYPE_MODEL_DATA_TREE  (glade_model_data_tree_get_type())
-#define	GLADE_TYPE_PARAM_MODEL_DATA (glade_param_model_data_get_type())
 #define GLADE_TYPE_EPROP_MODEL_DATA (glade_eprop_model_data_get_type())
 
-#define GLADE_IS_PARAM_SPEC_MODEL_DATA(pspec) \
-	(G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GLADE_TYPE_PARAM_MODEL_DATA))
-#define GLADE_PARAM_SPEC_MODEL_DATA(pspec)    \
-	(G_TYPE_CHECK_INSTANCE_CAST ((pspec), GLADE_TYPE_PARAM_MODEL_DATA, GladeParamSpecModelDataTree))
-
 GType           glade_model_data_tree_get_type     (void) G_GNUC_CONST;
-GType           glade_param_model_data_get_type    (void) G_GNUC_CONST;
 GType           glade_eprop_model_data_get_type    (void) G_GNUC_CONST;
 
-GParamSpec     *glade_standard_model_data_spec     (void);
-
 
 GladeModelData *glade_model_data_new               (GType           type,
 						    const gchar    *column_name);

Modified: trunk/plugins/gtk+/gtk+.xml.in
==============================================================================
--- trunk/plugins/gtk+/gtk+.xml.in	(original)
+++ trunk/plugins/gtk+/gtk+.xml.in	Wed Nov  5 21:48:24 2008
@@ -49,7 +49,9 @@
       <properties>
 	<!-- Disable tooltip-text & tooltip-markup in libglade since we do
 	     conversions of the "tooltip" fake property -->
-	<property id="tooltip-text" since="2.12" weight="4.2" libglade-unsupported="True"/>
+	<property id="tooltip-text" since="2.12" weight="4.2" translatable="True" libglade-unsupported="True">
+	  <visible-lines>2</visible-lines>
+	</property>
 	<property id="tooltip-markup" since="2.12" weight="4.1" libglade-unsupported="True"/>
 	<property id="visible" default="True" common="True" ignore="True"/>
 	<property id="width-request"  common="True" optional="True" optional-default="False" default="0"/>
@@ -58,8 +60,11 @@
 
 	<property common="True" id="tooltip" _name="Tooltip" default="" translatable="True" weight="4.5" 
 		  libglade-only="True">
-	  <spec>glade_standard_string_spec</spec>
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>A tooltip text for this widget</_tooltip>
+	  <visible-lines>2</visible-lines>
 	</property>
 
 	<property common="True" id="extension-events">
@@ -105,102 +110,155 @@
 
 	<!-- Accelerators -->
 	<property id="accelerator" _name="Accelerators" ignore="True" common="True" save="False">
-	  <spec>glade_standard_accel_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GladeAccelGList</value-type>
+	  </parameter-spec>
+	  <_tooltip>A list of accelerator keys</_tooltip>
 	</property>
 
 	<!-- Atk name and description properties -->
 	<property id="AtkObject::accessible-name" _name="Accessible Name" ignore="True" atk-property="True" translatable="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Object instance's name formatted for assistive technology access</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
 
 	<property id="AtkObject::accessible-description" _name="Accessible Description" ignore="True" atk-property="True" translatable="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Description of an object, formatted for assistive technology access</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
 
 	<!-- Atk relationset properties -->
 	<property id="controlled-by" _name="Controlled By" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates an object controlled by one or more target objects</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="controller-for" _name="Controller For" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates an object is a controller for one or more target objects</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="labelled-by" _name="Labelled By" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates an object is labelled by one or more target objects</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="label-for" _name="Label For" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates an object is a label for one or more target objects</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="member-of" _name="Member Of" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates an object is a member of a group of one or more target objects</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="node-child-of" _name="Node Child Of" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates an object is a cell in a treetable which is displayed because a 
 cell in the same column is expanded and identifies that cell</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="flows-to" _name="Flows To" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates that the object has content that flows logically to another 
 AtkObject in a sequential way, (for instance text-flow)</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="flows-from" _name="Flows From" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates that the object has content that flows logically from another 
 AtkObject in a sequential way, (for instance text-flow)</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="subwindow-of" _name="Subwindow Of" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates a subwindow attached to a component but otherwise has no 
 connection in the UI hierarchy to that component</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="embeds" _name="Embeds" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates that the object visually embeds another object's content, i.e. 
 this object's content flows around another's content</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="embedded-by" _name="Embedded By" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Inverse of 'Embeds', indicates that this object's content is visually 
 embedded in another object</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="popup-for" _name="Popup For" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates that an object is a popup for another object</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="parent-window-of" _name="Parent Window Of" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates that an object is a parent window of another object</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="described-by" _name="Described By" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates that another object provides descriptive information about this object; more verbose than 'Labelled By'</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 
 	<property id="description-for" _name="Description For" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>Indicates that an object provides descriptive information about another object; more verbose than 'Label For'</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
       </properties>
 
@@ -249,7 +307,10 @@
 
       <properties>
 	<property id="size" _name="Number of items" query="True" default="3" save="False">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	    <min>1</min>
+	  </parameter-spec>
 	  <_tooltip>The number of items in the box</_tooltip>
 	</property>
       </properties>
@@ -354,7 +415,10 @@
 
       <packing-properties>
         <property id="position" _name="Position" default="-1" save="False">
-          <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	    <min>-1</min>
+	  </parameter-spec>
           <_tooltip>The position of the menu item in the menu shell</_tooltip>
         </property>
       </packing-properties>
@@ -376,17 +440,23 @@
       </actions>
       <properties>
         <property id="label" _name="Label" translatable="True">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>The text of the menu item</_tooltip>
-          <spec>glade_standard_string_spec</spec>
         </property>
         <property id="use-underline" _name="Use Underline">
+	  <parameter-spec>
+	    <type>GParamBoolean</type>
+	  </parameter-spec>
 	  <_tooltip>If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key</_tooltip>
-          <spec>glade_standard_boolean_spec</spec>
         </property>
 	<!-- Atk click property -->
 	<property id="atk-click" _name="Click" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Click atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
         <property id="submenu" since="2.12" disabled="True"/>
@@ -394,7 +464,6 @@
     </glade-widget-class>
 
     <glade-widget-class name="GtkImageMenuItem" generic-name="imagemenuitem" _title="Image Menu Item">
-      <post-create-function>glade_gtk_image_menu_item_post_create</post-create-function>
       <read-widget-function>glade_gtk_image_menu_item_read_widget</read-widget-function>
       <write-widget-function>glade_gtk_image_menu_item_write_widget</write-widget-function>
       <read-child-function>glade_gtk_image_menu_item_read_child</read-child-function>
@@ -406,11 +475,15 @@
       <create-editable-function>glade_gtk_image_menu_item_create_editable</create-editable-function>
       <properties>
         <property id="use-stock" visible="False">
-	  <spec>glade_standard_boolean_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoolean</type>
+	  </parameter-spec>
         </property>
 	<property id="stock" stock="True" _name="Stock Item" save="False" custom-layout="True">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>The stock item for this menu item</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	</property>
 	<!-- We save the label manually with the stock value if use_stock is set. -->
         <property id="label" save="False" custom-layout="True"/>
@@ -512,7 +585,10 @@
 
       <packing-properties>
         <property id="position" _name="Position" default="-1" save="False">
-          <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	    <min>-1</min>
+	  </parameter-spec>
           <_tooltip>The position of the tool item in the toolbar</_tooltip>
         </property>
 	<property id="expand" transfer-on-paste="True" save-always="True"/>
@@ -541,11 +617,15 @@
       <properties>
 	<!-- Virtual label type property -->
         <property id="custom-label" visible="False" save="False">
-	  <spec>glade_standard_boolean_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoolean</type>
+	  </parameter-spec>
         </property>
 	<!-- Virtual image edit mode property -->
         <property id="image-mode" visible="False" save="False">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	  </parameter-spec>
         </property>
 
 	<!-- Virtual stock comboentry property -->
@@ -556,8 +636,12 @@
 	<property id="label-widget" parentless-widget="True" libglade-unsupported="True" 
 		  create-type="GtkLabel" custom-layout="True"/>
         <property id="icon-name" themed-icon="True" custom-layout="True"/>
-	<property id="icon" libglade-only="True" custom-layout="True">
-	  <spec>glade_standard_pixbuf_spec</spec>
+	<property id="icon" libglade-only="True" _name="Icon" custom-layout="True">
+	  <parameter-spec>
+	    <type>GParamObject</type>
+	    <value-type>GdkPixbuf</value-type>
+	  </parameter-spec>
+          <_tooltip>A filname, full or relative path to load an icon for this toolbutton</_tooltip>
 	</property>
         <property id="icon-widget" parentless-widget="True" libglade-unsupported="True" 
 		  create-type="GtkImage" custom-layout="True"/>
@@ -605,21 +689,30 @@
       <properties>
 	<!-- Virtual label content mode property -->
         <property id="label-content-mode" visible="False" save="False">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	  </parameter-spec>
         </property>
 	<!-- Virtual label to control width-chars vs. max-width-chars -->
         <property id="use-max-width" visible="False" save="False">
-	  <spec>glade_standard_boolean_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoolean</type>
+	  </parameter-spec>
         </property>
 	<!-- Virtual label content mode property -->
         <property id="label-wrap-mode" visible="False" save="False">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	  </parameter-spec>
         </property>
       	<property id="label" default="label" translatable="True" custom-layout="True">
             <visible-lines>2</visible-lines>
         </property>
 	<property id="glade-attributes" _name="Attributes" save="False" custom-layout="True">
-	  <spec>glade_gtk_attributes_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GladeAttrGList</value-type>
+	  </parameter-spec>
 	  <_tooltip>The pango attributes for this label</_tooltip>
 	</property>
 	<property id="pattern" custom-layout="True"/>
@@ -669,8 +762,10 @@
 	<property id="shadow-type" since="2.12"/>
 	<!-- Atk activate property -->
 	<property id="atk-activate" _name="Activate" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Activate atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
       </properties>
@@ -683,8 +778,10 @@
       <properties>
 	<!-- Text of the textview -->
 	<property id="text" _name="Text" translatable="True" libglade-only="True">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the text in the view's text buffer</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
       	<property id="wrap-mode">
@@ -717,15 +814,21 @@
 	</property>
 	<property id="use-underline" custom-layout="True"/>
 	<property id="stock" _name="Stock Button" stock="True" save="False" custom-layout="True">
-	  <spec>glade_standard_string_spec</spec>
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>The stock item for this button</_tooltip>
 	</property>
         <property id="custom-child" save="False" custom-layout="True" default="False">
-          <spec>glade_standard_boolean_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoolean</type>
+	  </parameter-spec>
         </property>
 	<property id="image-position" custom-layout="True"/>
 	<property id="response-id" _name="Response ID" default="0" common="False" ignore="True" save-always="True">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	  </parameter-spec>
 	  <_tooltip>The response ID of this button in a dialog</_tooltip>
 	</property>
       	<property id="relief">
@@ -738,22 +841,28 @@
 
 	<!-- Atk click property -->
 	<property id="atk-click" _name="Click" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Click atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
 
 	<!-- Atk press property -->
 	<property id="atk-press" _name="Press" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Press atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
 
 	<!-- Atk release property -->
 	<property id="atk-release" _name="Release" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Release atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
       </properties>
@@ -882,7 +991,10 @@
         <property id="column-span-column" ignore="True"/>
         <property id="row-span-column" ignore="True"/>
 	<property id="items" _name="Items" translatable="True" libglade-only="True">
-	  <spec>glade_standard_strv_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GStrv</value-type>
+	  </parameter-spec>
 	  <_tooltip>The items in this combo box</_tooltip>
 	</property>
 	<property id="button-sensitivity">
@@ -895,8 +1007,10 @@
 
 	<!-- Atk press property -->
 	<property id="atk-press" _name="Press" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Press atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
       </properties>
@@ -938,15 +1052,21 @@
       <write-widget-function>glade_gtk_image_write_widget</write-widget-function>
       <properties>
 	<property id="image-mode" save="False" visible="False">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	  </parameter-spec>
 	</property>
 	<property id="stock" stock-icon="True" custom-layout="True" default="gtk-missing-image"/>
 	<property id="icon-name" _name="Icon Name" themed-icon="True" custom-layout="True" />
 	<property id="pixbuf" _name="File Name" custom-layout="True"/>
 	<property id="pixel-size" custom-layout="True"/>
 	<!-- We have to save/load icon-size as int, and fake the enum -->
-	<property id="icon-size" custom-layout="True" save="False">
-	  <spec>gladegtk_icon_size_spec</spec>
+	<property id="icon-size" _name="Icon Size" custom-layout="True" save="False">
+	  <parameter-spec>
+	    <type>GParamEnum</type>
+	    <value-type>GtkIconSize</value-type>
+	  </parameter-spec>
+	  <_tooltip>A symbolic icon size for the stock icon</_tooltip>
 	</property>
 	<property id="pixbuf-animation" disabled="True"/>
 	<property id="file" disabled="True"/>
@@ -1032,7 +1152,9 @@
 	This virtual property is used to remember child position in undo/redo.
         -->
         <property id="first" save="False" visible="False">
-          <spec>glade_standard_boolean_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoolean</type>
+	  </parameter-spec>
         </property>
       </packing-properties>
     </glade-widget-class>
@@ -1074,7 +1196,10 @@
 	</property>
 
 	<property id="pages" _name="Number of pages" visible="False" save="False" default="3" query="True">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	    <min>1</min>
+	  </parameter-spec>
 	  <_tooltip>The number of pages in the notebook</_tooltip>
 	</property>
       </properties>
@@ -1236,8 +1361,10 @@
 
 	<!-- Atk activate property -->
 	<property id="atk-activate" _name="Activate" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Activate atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
       </properties>
@@ -1394,8 +1521,10 @@
 
 	<!-- Atk press property -->
 	<property id="atk-press" _name="Press" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Press atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
       </properties>
@@ -1406,8 +1535,10 @@
       <properties>
 	<!-- Atk press property -->
 	<property id="atk-press" _name="Press" ignore="True" atk-property="True" save="False">
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>Set the description of the Press atk action</_tooltip>
-	  <spec>glade_standard_string_spec</spec>
 	  <visible-lines>2</visible-lines>
 	</property>
       </properties>
@@ -1435,7 +1566,9 @@
       <get-property-function>glade_gtk_list_item_get_property</get-property-function>
       <properties>
 	<property id="label" _name="Label" translatable="True">
-	  <spec>glade_standard_string_spec</spec>
+	  <parameter-spec>
+	    <type>GParamString</type>
+	  </parameter-spec>
 	  <_tooltip>The text to display</_tooltip>
 	</property>
       </properties>
@@ -1491,8 +1624,11 @@
       <child-get-property-function>glade_gtk_assistant_get_child_property</child-get-property-function>
       <properties>
         <property save="False" id="n-pages" _name="Number of Pages">
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	    <min>1</min>
+	  </parameter-spec>
 	  <_tooltip>Number of pages in this assistant</_tooltip>
-	  <spec>glade_standard_int_spec</spec>
 	</property>
       </properties>
       <packing-properties>
@@ -1507,7 +1643,9 @@
 	  </displayable-values>
 	</property>
         <property save="False" id="position" name="Position">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	  </parameter-spec>
 	  <_tooltip>The page position in the Assistant</_tooltip>
 	</property>
       </packing-properties>
@@ -1558,8 +1696,11 @@
       <set-property-function>glade_gtk_size_group_set_property</set-property-function>
       <properties>
 	<property id="widgets" _name="Widgets" save="False">
+	  <parameter-spec>
+	    <type>GladeParamObjects</type>
+	    <value-type>GtkWidget</value-type>
+	  </parameter-spec>
 	  <_tooltip>List of widgets in this group</_tooltip>
-	  <spec>glade_standard_objects_spec</spec>
 	</property>
 	<property id="mode">
   	  <displayable-values>
@@ -1614,8 +1755,11 @@
       <create-editable-function>glade_gtk_icon_factory_create_editable</create-editable-function>
       <properties>
 	<property id="sources" _name="Icon Sources" save="False" custom-layout="True">
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GladeIconSources</value-type>
+	  </parameter-spec>
 	  <_tooltip>A list of sources for this icon factory</_tooltip>
-	  <spec>glade_standard_icon_sources_spec</spec>
 	</property>
       </properties>
     </glade-widget-class>
@@ -1664,7 +1808,9 @@
       
       <packing-properties>
         <property save="False" id="position" name="Position" visible="False">
-	  <spec>glade_standard_int_spec</spec>
+	  <parameter-spec>
+	    <type>GParamInt</type>
+	  </parameter-spec>
 	  <_tooltip>The column position in the Tree View</_tooltip>
 	</property>
       </packing-properties>
@@ -1682,11 +1828,17 @@
       <read-widget-function>glade_gtk_store_read_widget</read-widget-function>
       <properties>
         <property id="columns" since="2.12" _name="Columns" save="False" construct-only="True" custom-layout="True">
-          <spec>glade_standard_column_types_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GladeColumnTypeList</value-type>
+	  </parameter-spec>
           <_tooltip>Enter a list of column types for this data store</_tooltip>
         </property>
         <property id="data" since="2.12" _name="Data" save="False" custom-layout="True">
-          <spec>glade_standard_model_data_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GladeModelDataTree</value-type>
+	  </parameter-spec>
           <_tooltip>Enter a list of values to be applied on each row</_tooltip>
         </property>
       </properties>
@@ -1702,11 +1854,17 @@
       <read-widget-function>glade_gtk_store_read_widget</read-widget-function>
       <properties>
         <property id="columns" since="2.12" _name="Columns" save="False" construct-only="True" custom-layout="True">
-          <spec>glade_standard_column_types_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GladeColumnTypeList</value-type>
+	  </parameter-spec>
           <_tooltip>Enter a list of column types for this data store</_tooltip>
         </property>
         <property id="data" since="2.12" _name="Data" save="False" custom-layout="True">
-          <spec>glade_standard_model_data_spec</spec>
+	  <parameter-spec>
+	    <type>GParamBoxed</type>
+	    <value-type>GladeModelDataTree</value-type>
+	  </parameter-spec>
           <_tooltip>Enter a list of values to be applied on each row</_tooltip>
         </property>
       </properties>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]