[glade3] * gladeui/glade-editor-property.[ch]: Privatized members of GladeEditorProperty.



commit 094588c1afcf7c3eeb6875ffb55a72c31b7f3cc9
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Tue Jan 4 17:34:37 2011 +0900

    	* gladeui/glade-editor-property.[ch]: Privatized members of GladeEditorProperty.
    
    	* plugins/gtk+/*.c: updated all custom editors to used eprop accessors now

 ChangeLog                                 |    4 +
 gladeui/glade-base-editor.c               |    4 +-
 gladeui/glade-editor-property.c           |  476 ++++++++++++++++-------------
 gladeui/glade-editor-property.h           |   64 ++---
 gladeui/glade-editor-table.c              |    4 +-
 plugins/gtk+/glade-accels.c               |   44 ++--
 plugins/gtk+/glade-activatable-editor.c   |    4 +-
 plugins/gtk+/glade-attributes.c           |   67 +++--
 plugins/gtk+/glade-button-editor.c        |   12 +-
 plugins/gtk+/glade-cell-renderer-editor.c |   12 +-
 plugins/gtk+/glade-column-types.c         |   52 ++--
 plugins/gtk+/glade-entry-editor.c         |   36 ++--
 plugins/gtk+/glade-icon-factory-editor.c  |    2 +-
 plugins/gtk+/glade-icon-sources.c         |   27 +-
 plugins/gtk+/glade-image-editor.c         |   10 +-
 plugins/gtk+/glade-image-item-editor.c    |    8 +-
 plugins/gtk+/glade-label-editor.c         |   25 +-
 plugins/gtk+/glade-model-data.c           |   51 ++--
 plugins/gtk+/glade-store-editor.c         |    4 +-
 plugins/gtk+/glade-tool-button-editor.c   |   10 +-
 20 files changed, 501 insertions(+), 415 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 3ef4d9d..295beff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,6 +18,10 @@
 
 	* gladeui/glade-editor-table.[ch]: Privatized members of GladeEditorTable.
 
+	* gladeui/glade-editor-property.[ch]: Privatized members of GladeEditorProperty.
+
+	* plugins/gtk+/*.c: updated all custom editors to used eprop accessors now
+
 2011-01-03  Tristan Van Berkom <tristanvb openismus com>
 
 	* gladeui/glade-app.[ch]:
diff --git a/gladeui/glade-base-editor.c b/gladeui/glade-base-editor.c
index 8fa9397..563577f 100644
--- a/gladeui/glade-base-editor.c
+++ b/gladeui/glade-base-editor.c
@@ -2070,8 +2070,8 @@ glade_base_editor_add_properties (GladeBaseEditor * editor,
           glade_widget_create_editor_property (gchild, property, packing, TRUE);
       if (eprop)
         glade_base_editor_table_attach (editor,
-                                        GLADE_EDITOR_PROPERTY (eprop)->
-                                        item_label, GTK_WIDGET (eprop));
+					glade_editor_property_get_item_label (eprop), 
+					GTK_WIDGET (eprop));
       property = va_arg (args, gchar *);
     }
   va_end (args);
diff --git a/gladeui/glade-editor-property.c b/gladeui/glade-editor-property.c
index cbf26c3..de04ced 100644
--- a/gladeui/glade-editor-property.c
+++ b/gladeui/glade-editor-property.c
@@ -73,6 +73,35 @@ static guint glade_eprop_signals[LAST_SIGNAL] = { 0, };
 #define FLAGS_COLUMN_SETTING             0
 #define FLAGS_COLUMN_SYMBOL              1
 
+struct _GladeEditorPropertyPrivate
+{
+  GladePropertyClass *klass;          /* The property class this GladeEditorProperty was created for */
+  GladeProperty      *property;       /* The currently loaded property */
+
+  GtkWidget          *item_label;     /* The property name portion of the eprop */
+  GtkWidget          *label;          /* The actual property name label */
+  GtkWidget          *warning;        /* Icon to show warnings */
+  GtkWidget          *input;          /* Input part of property (need to set sensitivity seperately)  */
+  GtkWidget          *check;          /* Check button for optional properties. */
+
+  gulong              tooltip_id;     /* signal connection id for tooltip changes        */
+  gulong              sensitive_id;   /* signal connection id for sensitivity changes    */
+  gulong              changed_id;     /* signal connection id for value changes          */
+  gulong              enabled_id;     /* signal connection id for enable/disable changes */
+  gulong              state_id;       /* signal connection id for state changes          */
+	
+  gboolean            loading;        /* True during glade_editor_property_load calls, this
+				       * is used to avoid feedback from input widgets.
+				       */
+  guint               committing : 1; /* True while the editor property itself is applying
+				       * the property with glade_editor_property_commit_no_callback ().
+				       */
+  guint               use_command : 1; /* Whether we should use the glade command interface
+					* or skip directly to GladeProperty interface.
+					* (used for query dialogs).
+					*/
+};
+
 
 /*******************************************************************************
                                GladeEditorPropertyClass
@@ -86,20 +115,20 @@ static void
 glade_editor_property_commit_common (GladeEditorProperty * eprop,
                                      GValue * value)
 {
-  if (eprop->use_command == FALSE)
-    glade_property_set_value (eprop->property, value);
+  if (eprop->priv->use_command == FALSE)
+    glade_property_set_value (eprop->priv->property, value);
   else
-    glade_command_set_property_value (eprop->property, value);
+    glade_command_set_property_value (eprop->priv->property, value);
 
   /* If the value was denied by a verify function, we'll have to
    * reload the real value.
    */
-  if (glade_property_equals_value (eprop->property, value))
-    GLADE_EDITOR_PROPERTY_GET_CLASS (eprop)->load (eprop, eprop->property);
+  if (glade_property_equals_value (eprop->priv->property, value))
+    GLADE_EDITOR_PROPERTY_GET_CLASS (eprop)->load (eprop, eprop->priv->property);
   else
     /* publish a value change to those interested */
     g_signal_emit (G_OBJECT (eprop), glade_eprop_signals[CHANGED], 0,
-                   eprop->property);
+                   eprop->priv->property);
 }
 
 void
@@ -108,16 +137,47 @@ glade_editor_property_commit_no_callback (GladeEditorProperty * eprop,
 {
   g_return_if_fail (GLADE_IS_EDITOR_PROPERTY (eprop));
 
-  if (eprop->committing)
+  if (eprop->priv->committing)
     return;
 
-  g_signal_handler_block (G_OBJECT (eprop->property), eprop->changed_id);
-  eprop->committing = TRUE;
+  g_signal_handler_block (G_OBJECT (eprop->priv->property), eprop->priv->changed_id);
+  eprop->priv->committing = TRUE;
   glade_editor_property_commit (eprop, value);
-  eprop->committing = FALSE;
-  g_signal_handler_unblock (G_OBJECT (eprop->property), eprop->changed_id);
+  eprop->priv->committing = FALSE;
+  g_signal_handler_unblock (G_OBJECT (eprop->priv->property), eprop->priv->changed_id);
+}
+
+GtkWidget *
+glade_editor_property_get_item_label  (GladeEditorProperty *eprop)
+{
+  g_return_val_if_fail (GLADE_IS_EDITOR_PROPERTY (eprop), NULL);
+
+  return eprop->priv->item_label;
+}
+
+GladePropertyClass *
+glade_editor_property_get_pclass (GladeEditorProperty *eprop)
+{
+  g_return_val_if_fail (GLADE_IS_EDITOR_PROPERTY (eprop), NULL);
+
+  return eprop->priv->klass;
+}
+
+GladeProperty *
+glade_editor_property_get_property (GladeEditorProperty *eprop)
+{
+  g_return_val_if_fail (GLADE_IS_EDITOR_PROPERTY (eprop), NULL);
+
+  return eprop->priv->property;
 }
 
+gboolean
+glade_editor_property_loading (GladeEditorProperty *eprop)
+{
+  g_return_val_if_fail (GLADE_IS_EDITOR_PROPERTY (eprop), FALSE);
+
+  return eprop->priv->loading;
+}
 
 static void
 glade_editor_property_tooltip_cb (GladeProperty * property,
@@ -133,9 +193,9 @@ glade_editor_property_tooltip_cb (GladeProperty * property,
   else
     choice_tooltip = insensitive;
 
-  gtk_widget_set_tooltip_text (eprop->input, choice_tooltip);
-  gtk_widget_set_tooltip_text (eprop->label, choice_tooltip);
-  gtk_widget_set_tooltip_text (eprop->warning, support);
+  gtk_widget_set_tooltip_text (eprop->priv->input, choice_tooltip);
+  gtk_widget_set_tooltip_text (eprop->priv->label, choice_tooltip);
+  gtk_widget_set_tooltip_text (eprop->priv->warning, support);
 }
 
 static void
@@ -143,14 +203,14 @@ glade_editor_property_sensitivity_cb (GladeProperty * property,
                                       GParamSpec * pspec,
                                       GladeEditorProperty * eprop)
 {
-  gboolean sensitive = glade_property_get_sensitive (eprop->property);
+  gboolean sensitive = glade_property_get_sensitive (eprop->priv->property);
   gboolean support_sensitive =
-    (glade_property_get_state (eprop->property) & GLADE_STATE_SUPPORT_DISABLED) == 0;
+    (glade_property_get_state (eprop->priv->property) & GLADE_STATE_SUPPORT_DISABLED) == 0;
 
-  gtk_widget_set_sensitive (eprop->input, sensitive && support_sensitive &&
+  gtk_widget_set_sensitive (eprop->priv->input, sensitive && support_sensitive &&
                             glade_property_get_enabled (property));
-  if (eprop->check)
-    gtk_widget_set_sensitive (eprop->check, sensitive && support_sensitive);
+  if (eprop->priv->check)
+    gtk_widget_set_sensitive (eprop->priv->check, sensitive && support_sensitive);
 }
 
 static void
@@ -159,8 +219,8 @@ glade_editor_property_value_changed_cb (GladeProperty * property,
                                         GValue * value,
                                         GladeEditorProperty * eprop)
 {
-  g_assert (eprop->property == property);
-  glade_editor_property_load (eprop, eprop->property);
+  g_assert (eprop->priv->property == property);
+  glade_editor_property_load (eprop, eprop->priv->property);
 }
 
 static void
@@ -168,25 +228,25 @@ glade_editor_property_fix_label (GladeEditorProperty * eprop)
 {
   gchar *text = NULL;
 
-  if (!eprop->property)
+  if (!eprop->priv->property)
     return;
 
   /* refresh label */
-  if ((glade_property_get_state (eprop->property) & GLADE_STATE_CHANGED) != 0)
-    text = g_strdup_printf ("<b>%s:</b>", glade_property_class_get_name (eprop->klass));
+  if ((glade_property_get_state (eprop->priv->property) & GLADE_STATE_CHANGED) != 0)
+    text = g_strdup_printf ("<b>%s:</b>", glade_property_class_get_name (eprop->priv->klass));
   else
-    text = g_strdup_printf ("%s:", glade_property_class_get_name (eprop->klass));
-  gtk_label_set_markup (GTK_LABEL (eprop->label), text);
+    text = g_strdup_printf ("%s:", glade_property_class_get_name (eprop->priv->klass));
+  gtk_label_set_markup (GTK_LABEL (eprop->priv->label), text);
   g_free (text);
 
   /* refresh icon */
-  if ((glade_property_get_state (eprop->property) & GLADE_STATE_UNSUPPORTED) != 0)
-    gtk_widget_show (eprop->warning);
+  if ((glade_property_get_state (eprop->priv->property) & GLADE_STATE_UNSUPPORTED) != 0)
+    gtk_widget_show (eprop->priv->warning);
   else
-    gtk_widget_hide (eprop->warning);
+    gtk_widget_hide (eprop->priv->warning);
 
   /* check sensitivity */
-  glade_editor_property_sensitivity_cb (eprop->property, NULL, eprop);
+  glade_editor_property_sensitivity_cb (eprop->priv->property, NULL, eprop);
 }
 
 static void
@@ -202,20 +262,20 @@ glade_editor_property_enabled_cb (GladeProperty * property,
                                   GladeEditorProperty * eprop)
 {
   gboolean enabled;
-  g_assert (eprop->property == property);
+  g_assert (eprop->priv->property == property);
 
-  if (glade_property_class_optional (eprop->klass))
+  if (glade_property_class_optional (eprop->priv->klass))
     {
       enabled = glade_property_get_enabled (property);
 
       /* sensitive = enabled && support enabled && sensitive */
       if (enabled == FALSE)
-        gtk_widget_set_sensitive (eprop->input, FALSE);
+        gtk_widget_set_sensitive (eprop->priv->input, FALSE);
       else if (glade_property_get_sensitive (property) ||
                (glade_property_get_state (property) & GLADE_STATE_SUPPORT_DISABLED) != 0)
-        gtk_widget_set_sensitive (eprop->input, TRUE);
+        gtk_widget_set_sensitive (eprop->priv->input, TRUE);
 
-      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (eprop->check), enabled);
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (eprop->priv->check), enabled);
     }
 }
 
@@ -223,7 +283,7 @@ static void
 glade_editor_property_enabled_toggled_cb (GtkWidget * check,
                                           GladeEditorProperty * eprop)
 {
-  glade_property_set_enabled (eprop->property,
+  glade_property_set_enabled (eprop->priv->property,
                               gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
                                                             (check)));
 }
@@ -235,7 +295,7 @@ glade_editor_property_button_pressed (GtkWidget * widget,
 {
   if (glade_popup_is_popup_event (event))
     {
-      glade_popup_property_pop (eprop->property, event);
+      glade_popup_property_pop (eprop->priv->property, event);
       return TRUE;
     }
   return FALSE;
@@ -251,7 +311,7 @@ glade_editor_property_constructor (GType type,
   GladeEditorProperty *eprop;
   GtkWidget *hbox;
 
-  /* Invoke parent constructor (eprop->klass should be resolved by this point) . */
+  /* Invoke parent constructor (eprop->priv->klass should be resolved by this point) . */
   obj = G_OBJECT_CLASS (table_class)->constructor
       (type, n_construct_properties, construct_properties);
 
@@ -259,51 +319,51 @@ glade_editor_property_constructor (GType type,
 
   /* Create hbox and possibly check button
    */
-  if (glade_property_class_optional (eprop->klass))
+  if (glade_property_class_optional (eprop->priv->klass))
     {
-      eprop->check = gtk_check_button_new ();
-      gtk_widget_show (eprop->check);
-      gtk_box_pack_start (GTK_BOX (eprop), eprop->check, FALSE, FALSE, 0);
-      g_signal_connect (G_OBJECT (eprop->check), "toggled",
+      eprop->priv->check = gtk_check_button_new ();
+      gtk_widget_show (eprop->priv->check);
+      gtk_box_pack_start (GTK_BOX (eprop), eprop->priv->check, FALSE, FALSE, 0);
+      g_signal_connect (G_OBJECT (eprop->priv->check), "toggled",
                         G_CALLBACK (glade_editor_property_enabled_toggled_cb),
                         eprop);
     }
 
   /* Create the class specific input widget and add it */
-  eprop->input = GLADE_EDITOR_PROPERTY_GET_CLASS (eprop)->create_input (eprop);
-  gtk_widget_set_hexpand (eprop->input, TRUE);
-  gtk_widget_show (eprop->input);
+  eprop->priv->input = GLADE_EDITOR_PROPERTY_GET_CLASS (eprop)->create_input (eprop);
+  gtk_widget_set_hexpand (eprop->priv->input, TRUE);
+  gtk_widget_show (eprop->priv->input);
 
   /* Create the warning icon */
-  eprop->warning = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
+  eprop->priv->warning = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
                                              GTK_ICON_SIZE_MENU);
-  gtk_widget_set_no_show_all (eprop->warning, TRUE);
+  gtk_widget_set_no_show_all (eprop->priv->warning, TRUE);
 
   /* Create & setup label */
-  eprop->item_label = gtk_event_box_new ();
-  eprop->label = gtk_label_new (NULL);
-  gtk_event_box_set_visible_window (GTK_EVENT_BOX (eprop->item_label), FALSE);
+  eprop->priv->item_label = gtk_event_box_new ();
+  eprop->priv->label = gtk_label_new (NULL);
+  gtk_event_box_set_visible_window (GTK_EVENT_BOX (eprop->priv->item_label), FALSE);
 
   hbox = gtk_hbox_new (FALSE, 4);
 
-  gtk_label_set_line_wrap (GTK_LABEL (eprop->label), TRUE);
-  gtk_label_set_width_chars (GTK_LABEL (eprop->label), 10);
-  gtk_label_set_line_wrap_mode (GTK_LABEL (eprop->label), PANGO_WRAP_WORD_CHAR);
+  gtk_label_set_line_wrap (GTK_LABEL (eprop->priv->label), TRUE);
+  gtk_label_set_width_chars (GTK_LABEL (eprop->priv->label), 10);
+  gtk_label_set_line_wrap_mode (GTK_LABEL (eprop->priv->label), PANGO_WRAP_WORD_CHAR);
 
-  gtk_misc_set_alignment (GTK_MISC (eprop->label), 0.0, 0.5);
+  gtk_misc_set_alignment (GTK_MISC (eprop->priv->label), 0.0, 0.5);
 
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->label, TRUE, TRUE, 0);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->warning, FALSE, FALSE, 0);
-  gtk_container_add (GTK_CONTAINER (eprop->item_label), hbox);
-  gtk_widget_show_all (eprop->item_label);
+  gtk_box_pack_start (GTK_BOX (hbox), eprop->priv->label, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox), eprop->priv->warning, FALSE, FALSE, 0);
+  gtk_container_add (GTK_CONTAINER (eprop->priv->item_label), hbox);
+  gtk_widget_show_all (eprop->priv->item_label);
 
   glade_editor_property_fix_label (eprop);
 
-  gtk_box_pack_start (GTK_BOX (eprop), eprop->input, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (eprop), eprop->priv->input, TRUE, TRUE, 0);
 
-  g_signal_connect (G_OBJECT (eprop->item_label), "button-press-event",
+  g_signal_connect (G_OBJECT (eprop->priv->item_label), "button-press-event",
                     G_CALLBACK (glade_editor_property_button_pressed), eprop);
-  g_signal_connect (G_OBJECT (eprop->input), "button-press-event",
+  g_signal_connect (G_OBJECT (eprop->priv->input), "button-press-event",
                     G_CALLBACK (glade_editor_property_button_pressed), eprop);
 
   return obj;
@@ -330,10 +390,10 @@ glade_editor_property_set_property (GObject * object,
   switch (prop_id)
     {
       case PROP_PROPERTY_CLASS:
-        eprop->klass = g_value_get_pointer (value);
+        eprop->priv->klass = g_value_get_pointer (value);
         break;
       case PROP_USE_COMMAND:
-        eprop->use_command = g_value_get_boolean (value);
+        eprop->priv->use_command = g_value_get_boolean (value);
         break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -342,19 +402,19 @@ glade_editor_property_set_property (GObject * object,
 }
 
 static void
-glade_editor_property_get_property (GObject * object,
-                                    guint prop_id,
-                                    GValue * value, GParamSpec * pspec)
+glade_editor_property_real_get_property (GObject * object,
+					 guint prop_id,
+					 GValue * value, GParamSpec * pspec)
 {
   GladeEditorProperty *eprop = GLADE_EDITOR_PROPERTY (object);
 
   switch (prop_id)
     {
       case PROP_PROPERTY_CLASS:
-        g_value_set_pointer (value, eprop->klass);
+        g_value_set_pointer (value, eprop->priv->klass);
         break;
       case PROP_USE_COMMAND:
-        g_value_set_boolean (value, eprop->use_command);
+        g_value_set_boolean (value, eprop->priv->use_command);
         break;
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -366,12 +426,12 @@ static void
 glade_eprop_property_finalized (GladeEditorProperty * eprop,
                                 GladeProperty * where_property_was)
 {
-  eprop->tooltip_id = 0;
-  eprop->sensitive_id = 0;
-  eprop->changed_id = 0;
-  eprop->enabled_id = 0;
-  eprop->state_id = 0;
-  eprop->property = NULL;
+  eprop->priv->tooltip_id = 0;
+  eprop->priv->sensitive_id = 0;
+  eprop->priv->changed_id = 0;
+  eprop->priv->enabled_id = 0;
+  eprop->priv->state_id = 0;
+  eprop->priv->property = NULL;
 
   glade_editor_property_load (eprop, NULL);
 }
@@ -383,27 +443,27 @@ glade_editor_property_load_common (GladeEditorProperty * eprop,
   /* NOTE THIS CODE IS FINALIZE SAFE */
 
   /* disconnect anything from previously loaded property */
-  if (eprop->property != property && eprop->property != NULL)
+  if (eprop->priv->property != property && eprop->priv->property != NULL)
     {
-      if (eprop->tooltip_id > 0)
-        g_signal_handler_disconnect (eprop->property, eprop->tooltip_id);
-      if (eprop->sensitive_id > 0)
-        g_signal_handler_disconnect (eprop->property, eprop->sensitive_id);
-      if (eprop->changed_id > 0)
-        g_signal_handler_disconnect (eprop->property, eprop->changed_id);
-      if (eprop->state_id > 0)
-        g_signal_handler_disconnect (eprop->property, eprop->state_id);
-      if (eprop->enabled_id > 0)
-        g_signal_handler_disconnect (eprop->property, eprop->enabled_id);
-
-      eprop->tooltip_id = 0;
-      eprop->sensitive_id = 0;
-      eprop->changed_id = 0;
-      eprop->enabled_id = 0;
-      eprop->state_id = 0;
+      if (eprop->priv->tooltip_id > 0)
+        g_signal_handler_disconnect (eprop->priv->property, eprop->priv->tooltip_id);
+      if (eprop->priv->sensitive_id > 0)
+        g_signal_handler_disconnect (eprop->priv->property, eprop->priv->sensitive_id);
+      if (eprop->priv->changed_id > 0)
+        g_signal_handler_disconnect (eprop->priv->property, eprop->priv->changed_id);
+      if (eprop->priv->state_id > 0)
+        g_signal_handler_disconnect (eprop->priv->property, eprop->priv->state_id);
+      if (eprop->priv->enabled_id > 0)
+        g_signal_handler_disconnect (eprop->priv->property, eprop->priv->enabled_id);
+
+      eprop->priv->tooltip_id = 0;
+      eprop->priv->sensitive_id = 0;
+      eprop->priv->changed_id = 0;
+      eprop->priv->enabled_id = 0;
+      eprop->priv->state_id = 0;
 
       /* Unref it here */
-      g_object_weak_unref (G_OBJECT (eprop->property),
+      g_object_weak_unref (G_OBJECT (eprop->priv->property),
                            (GWeakNotify) glade_eprop_property_finalized, eprop);
 
 
@@ -413,40 +473,40 @@ glade_editor_property_load_common (GladeEditorProperty * eprop,
        */
       if (property == NULL)
         {
-          eprop->property = NULL;
+          eprop->priv->property = NULL;
         }
     }
 
   /* Connect new stuff, deal with tooltip
    */
-  if (eprop->property != property && property != NULL)
+  if (eprop->priv->property != property && property != NULL)
     {
       GladePropertyClass *pclass = glade_property_get_class (property);
 
-      eprop->property = property;
+      eprop->priv->property = property;
 
-      eprop->tooltip_id =
-          g_signal_connect (G_OBJECT (eprop->property),
+      eprop->priv->tooltip_id =
+          g_signal_connect (G_OBJECT (eprop->priv->property),
                             "tooltip-changed",
                             G_CALLBACK (glade_editor_property_tooltip_cb),
                             eprop);
-      eprop->sensitive_id =
-          g_signal_connect (G_OBJECT (eprop->property),
+      eprop->priv->sensitive_id =
+          g_signal_connect (G_OBJECT (eprop->priv->property),
                             "notify::sensitive",
                             G_CALLBACK (glade_editor_property_sensitivity_cb),
                             eprop);
-      eprop->changed_id =
-          g_signal_connect (G_OBJECT (eprop->property),
+      eprop->priv->changed_id =
+          g_signal_connect (G_OBJECT (eprop->priv->property),
                             "value-changed",
                             G_CALLBACK (glade_editor_property_value_changed_cb),
                             eprop);
-      eprop->enabled_id =
-          g_signal_connect (G_OBJECT (eprop->property),
+      eprop->priv->enabled_id =
+          g_signal_connect (G_OBJECT (eprop->priv->property),
                             "notify::enabled",
                             G_CALLBACK (glade_editor_property_enabled_cb),
                             eprop);
-      eprop->state_id =
-          g_signal_connect (G_OBJECT (eprop->property),
+      eprop->priv->state_id =
+          g_signal_connect (G_OBJECT (eprop->priv->property),
                             "notify::state",
                             G_CALLBACK (glade_editor_property_state_cb), eprop);
 
@@ -454,7 +514,7 @@ glade_editor_property_load_common (GladeEditorProperty * eprop,
       /* In query dialogs when the user hits cancel, 
        * these babies go away (so better stay protected).
        */
-      g_object_weak_ref (G_OBJECT (eprop->property),
+      g_object_weak_ref (G_OBJECT (eprop->priv->property),
                          (GWeakNotify) glade_eprop_property_finalized, eprop);
 
       /* Load initial tooltips
@@ -481,6 +541,11 @@ glade_editor_property_load_common (GladeEditorProperty * eprop,
 static void
 glade_editor_property_init (GladeEditorProperty * eprop)
 {
+  eprop->priv =
+    G_TYPE_INSTANCE_GET_PRIVATE ((eprop),
+				 GLADE_TYPE_EDITOR_PROPERTY,
+				 GladeEditorPropertyPrivate);
+
 }
 
 static void
@@ -498,7 +563,7 @@ glade_editor_property_class_init (GladeEditorPropertyClass * eprop_class)
   /* GObjectClass */
   object_class->constructor = glade_editor_property_constructor;
   object_class->finalize = glade_editor_property_finalize;
-  object_class->get_property = glade_editor_property_get_property;
+  object_class->get_property = glade_editor_property_real_get_property;
   object_class->set_property = glade_editor_property_set_property;
 
   /* Class methods */
@@ -507,13 +572,13 @@ glade_editor_property_class_init (GladeEditorPropertyClass * eprop_class)
   eprop_class->create_input = NULL;
 
 
-        /**
-	 * GladeEditorProperty::value-changed:
-	 * @gladeeditorproperty: the #GladeEditorProperty which changed value
-	 * @arg1: the #GladeProperty that's value changed.
-	 *
-	 * Emitted when a contained property changes value
-	 */
+  /**
+   * GladeEditorProperty::value-changed:
+   * @gladeeditorproperty: the #GladeEditorProperty which changed value
+   * @arg1: the #GladeProperty that's value changed.
+   *
+   * Emitted when a contained property changes value
+   */
   glade_eprop_signals[CHANGED] =
       g_signal_new ("value-changed",
                     G_TYPE_FROM_CLASS (object_class),
@@ -523,14 +588,14 @@ glade_editor_property_class_init (GladeEditorPropertyClass * eprop_class)
                     g_cclosure_marshal_VOID__OBJECT,
                     G_TYPE_NONE, 1, GLADE_TYPE_PROPERTY);
 
-        /**
-	 * GladeEditorProperty::commit:
-	 * @gladeeditorproperty: the #GladeEditorProperty which changed value
-	 * @arg1: the new #GValue to commit.
-	 *
-	 * Emitted when a property's value is committed, can be useful to serialize
-	 * commands before and after the property's commit command from custom editors.
-	 */
+  /**
+   * GladeEditorProperty::commit:
+   * @gladeeditorproperty: the #GladeEditorProperty which changed value
+   * @arg1: the new #GValue to commit.
+   *
+   * Emitted when a property's value is committed, can be useful to serialize
+   * commands before and after the property's commit command from custom editors.
+   */
   glade_eprop_signals[COMMIT] =
       g_signal_new ("commit",
                     G_TYPE_FROM_CLASS (object_class),
@@ -554,6 +619,8 @@ glade_editor_property_class_init (GladeEditorPropertyClass * eprop_class)
        ("use-command", _("Use Command"),
         _("Whether we should use the command API for the undo/redo stack"),
         FALSE, G_PARAM_READWRITE));
+
+  g_type_class_add_private (eprop_class, sizeof (GladeEditorPropertyPrivate));
 }
 
 
@@ -618,7 +685,7 @@ glade_eprop_numeric_load (GladeEditorProperty * eprop, GladeProperty * property)
   if (property)
     {
       value = glade_property_inline_value (property);
-      pspec = glade_property_class_get_pspec (eprop->klass);
+      pspec = glade_property_class_get_pspec (eprop->priv->klass);
 
       if (G_IS_PARAM_SPEC_INT (pspec))
         val = (gfloat) g_value_get_int (value);
@@ -650,10 +717,10 @@ glade_eprop_numeric_changed (GtkWidget * spin, GladeEditorProperty * eprop)
   GValue val = { 0, };
   GParamSpec *pspec;
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
-  pspec = glade_property_class_get_pspec (eprop->klass);
+  pspec = glade_property_class_get_pspec (eprop->priv->klass);
   g_value_init (&val, pspec->value_type);
 
   if (G_IS_PARAM_SPEC_INT (pspec))
@@ -695,8 +762,8 @@ glade_eprop_numeric_create_input (GladeEditorProperty * eprop)
   GtkAdjustment *adjustment;
   GParamSpec *pspec;
 
-  pspec      = glade_property_class_get_pspec (eprop->klass);
-  adjustment = glade_property_class_make_adjustment (eprop->klass);
+  pspec      = glade_property_class_get_pspec (eprop->priv->klass);
+  adjustment = glade_property_class_make_adjustment (eprop->priv->klass);
   eprop_numeric->spin = 
     gtk_spin_button_new (adjustment, 4,
 			 G_IS_PARAM_SPEC_FLOAT (pspec) ||
@@ -745,7 +812,7 @@ glade_eprop_enum_load (GladeEditorProperty * eprop, GladeProperty * property)
 
   if (property)
     {
-      pspec  = glade_property_class_get_pspec (eprop->klass);
+      pspec  = glade_property_class_get_pspec (eprop->priv->klass);
       eclass = g_type_class_ref (pspec->value_type);
       value  = g_value_get_enum (glade_property_inline_value (property));
 
@@ -769,15 +836,15 @@ glade_eprop_enum_changed (GtkWidget * combo_box, GladeEditorProperty * eprop)
   GtkTreeModel *tree_model;
   GtkTreeIter iter;
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   tree_model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box));
   gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo_box), &iter);
   gtk_tree_model_get (tree_model, &iter, 1, &ival, -1);
 
-  property = eprop->property;
-  pspec    = glade_property_class_get_pspec (eprop->klass);
+  property = eprop->priv->property;
+  pspec    = glade_property_class_get_pspec (eprop->priv->klass);
 
   g_value_init (&val, pspec->value_type);
   g_value_set_enum (&val, ival);
@@ -798,7 +865,7 @@ glade_eprop_enum_create_input (GladeEditorProperty * eprop)
   GtkCellRenderer *cell_renderer;
   guint i;
 
-  klass  = eprop->klass;
+  klass  = eprop->priv->klass;
   pspec  = glade_property_class_get_pspec (klass);
   eclass = g_type_class_ref (pspec->value_type);
 
@@ -884,7 +951,7 @@ glade_eprop_flags_load (GladeEditorProperty * eprop, GladeProperty * property)
       /* Populate the model with the flags. */
       klass = g_type_class_ref (G_VALUE_TYPE (glade_property_inline_value (property)));
       value = g_value_get_flags (glade_property_inline_value (property));
-      pspec = glade_property_class_get_pspec (eprop->klass);
+      pspec = glade_property_class_get_pspec (eprop->priv->klass);
 
       /* Step through each of the flags in the class. */
       for (flag_num = 0; flag_num < klass->n_values; flag_num++)
@@ -941,10 +1008,10 @@ flag_toggled_direct (GtkCellRendererToggle * cell,
 
   GladeEPropFlags *eprop_flags = GLADE_EPROP_FLAGS (eprop);
 
-  if (!eprop->property)
+  if (!eprop->priv->property)
     return;
 
-  gvalue = glade_property_inline_value (eprop->property);
+  gvalue = glade_property_inline_value (eprop->priv->property);
 
   klass = g_type_class_ref (G_VALUE_TYPE (gvalue));
   value = g_value_get_flags (gvalue);
@@ -1189,7 +1256,7 @@ glade_eprop_color_changed (GtkWidget * button, GladeEditorProperty * eprop)
   GdkColor color = { 0, };
   GValue value = { 0, };
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   gtk_color_button_get_color (GTK_COLOR_BUTTON (button), &color);
@@ -1278,7 +1345,7 @@ glade_eprop_named_icon_changed_common (GladeEditorProperty * eprop,
 
   g_value_init (val, G_TYPE_STRING);
 
-  glade_property_get (eprop->property, &prop_text);
+  glade_property_get (eprop->priv->property, &prop_text);
 
   /* Here we try not to modify the project state by not 
    * modifying a null value for an unchanged property.
@@ -1300,11 +1367,11 @@ glade_eprop_named_icon_changed (GtkWidget * entry, GladeEditorProperty * eprop)
 {
   gchar *text;
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   text = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
-  glade_eprop_named_icon_changed_common (eprop, text, eprop->use_command);
+  glade_eprop_named_icon_changed_common (eprop, text, eprop->priv->use_command);
 
   g_free (text);
 }
@@ -1365,7 +1432,6 @@ chooser_response (GladeNamedIconChooserDialog * dialog,
     }
 }
 
-
 static void
 glade_eprop_named_icon_show_chooser_dialog (GtkWidget * button,
                                             GladeEditorProperty * eprop)
@@ -1471,7 +1537,7 @@ glade_eprop_text_load (GladeEditorProperty * eprop, GladeProperty * property)
   if (property == NULL)
     return;
 
-  pspec = glade_property_class_get_pspec (eprop->klass);
+  pspec = glade_property_class_get_pspec (eprop->priv->klass);
 
   if (GTK_IS_COMBO_BOX (eprop_text->text_entry))
     {
@@ -1547,16 +1613,16 @@ glade_eprop_text_changed_common (GladeEditorProperty * eprop,
   GParamSpec *pspec;
   gchar *prop_text;
 
-  pspec = glade_property_class_get_pspec (eprop->klass);
+  pspec = glade_property_class_get_pspec (eprop->priv->klass);
 
   if (pspec->value_type == G_TYPE_STRV ||
       pspec->value_type == G_TYPE_VALUE_ARRAY ||
       pspec->value_type == GDK_TYPE_PIXBUF)
     {
       val = glade_property_class_make_gvalue_from_string
-          (eprop->klass, text,
-           glade_widget_get_project (glade_property_get_widget (eprop->property)), 
-	   glade_property_get_widget (eprop->property));
+          (eprop->priv->klass, text,
+           glade_widget_get_project (glade_property_get_widget (eprop->priv->property)), 
+	   glade_property_get_widget (eprop->priv->property));
     }
   else
     {
@@ -1564,7 +1630,7 @@ glade_eprop_text_changed_common (GladeEditorProperty * eprop,
 
       g_value_init (val, G_TYPE_STRING);
 
-      glade_property_get (eprop->property, &prop_text);
+      glade_property_get (eprop->priv->property, &prop_text);
 
       /* Here we try not to modify the project state by not 
        * modifying a null value for an unchanged property.
@@ -1587,11 +1653,11 @@ glade_eprop_text_changed (GtkWidget * entry, GladeEditorProperty * eprop)
 {
   gchar *text;
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   text = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
-  glade_eprop_text_changed_common (eprop, text, eprop->use_command);
+  glade_eprop_text_changed_common (eprop, text, eprop->priv->use_command);
 
   g_free (text);
 }
@@ -1603,14 +1669,14 @@ glade_eprop_text_buffer_changed (GtkTextBuffer * buffer,
   gchar *text;
   GtkTextIter start, end;
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   gtk_text_buffer_get_start_iter (buffer, &start);
   gtk_text_buffer_get_end_iter (buffer, &end);
 
   text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
-  glade_eprop_text_changed_common (eprop, text, eprop->use_command);
+  glade_eprop_text_changed_common (eprop, text, eprop->priv->use_command);
   g_free (text);
 }
 
@@ -1840,19 +1906,19 @@ static void
 glade_eprop_text_show_i18n_dialog (GtkWidget * entry,
                                    GladeEditorProperty * eprop)
 {
-  gchar *text = glade_property_make_string (eprop->property);
-  gchar *context = g_strdup (glade_property_i18n_get_context (eprop->property));
-  gchar *comment = g_strdup (glade_property_i18n_get_comment (eprop->property));
+  gchar *text = glade_property_make_string (eprop->priv->property);
+  gchar *context = g_strdup (glade_property_i18n_get_context (eprop->priv->property));
+  gchar *comment = g_strdup (glade_property_i18n_get_comment (eprop->priv->property));
   gboolean translatable =
-      glade_property_i18n_get_translatable (eprop->property);
+      glade_property_i18n_get_translatable (eprop->priv->property);
 
   if (glade_editor_property_show_i18n_dialog
       (entry, &text, &context, &comment, &translatable))
     {
-      glade_command_set_i18n (eprop->property, translatable, context, comment);
-      glade_eprop_text_changed_common (eprop, text, eprop->use_command);
+      glade_command_set_i18n (eprop->priv->property, translatable, context, comment);
+      glade_eprop_text_changed_common (eprop, text, eprop->priv->use_command);
 
-      glade_editor_property_load (eprop, eprop->property);
+      glade_editor_property_load (eprop, eprop->priv->property);
 
       g_free (text);
       g_free (context);
@@ -1920,15 +1986,15 @@ static void
 glade_eprop_text_show_resource_dialog (GtkWidget * entry,
                                        GladeEditorProperty * eprop)
 {
-  GladeWidget  *widget  = glade_property_get_widget (eprop->property);
+  GladeWidget  *widget  = glade_property_get_widget (eprop->priv->property);
   GladeProject *project = glade_widget_get_project (widget);
   gchar *text = NULL;
 
   if (glade_editor_property_show_resource_dialog (project, entry, &text))
     {
-      glade_eprop_text_changed_common (eprop, text, eprop->use_command);
+      glade_eprop_text_changed_common (eprop, text, eprop->priv->use_command);
 
-      glade_editor_property_load (eprop, eprop->property);
+      glade_editor_property_load (eprop, eprop->priv->property);
 
       g_free (text);
     }
@@ -1980,21 +2046,21 @@ eprop_text_stock_changed (GtkComboBox * combo, GladeEditorProperty * eprop)
   gchar *text = NULL;
   const gchar *str;
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   if (gtk_combo_box_get_active_iter (combo, &iter))
     {
       gtk_tree_model_get (GTK_TREE_MODEL (eprop_text->store), &iter,
                           COMBO_COLUMN_PIXBUF, &text, -1);
-      glade_eprop_text_changed_common (eprop, text, eprop->use_command);
+      glade_eprop_text_changed_common (eprop, text, eprop->priv->use_command);
       g_free (text);
     }
   else if (gtk_combo_box_get_has_entry (combo))
     {
       str =
           gtk_entry_get_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo))));
-      glade_eprop_text_changed_common (eprop, str, eprop->use_command);
+      glade_eprop_text_changed_common (eprop, str, eprop->priv->use_command);
     }
 }
 
@@ -2006,7 +2072,7 @@ glade_eprop_text_create_input (GladeEditorProperty * eprop)
   GParamSpec *pspec;
   GtkWidget *hbox;
 
-  klass = eprop->klass;
+  klass = eprop->priv->klass;
   pspec = glade_property_class_get_pspec (klass);
 
   hbox = gtk_hbox_new (FALSE, 0);
@@ -2169,7 +2235,7 @@ glade_eprop_bool_changed (GtkWidget * button, GladeEditorProperty * eprop)
   gboolean state;
   GValue val = { 0, };
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
@@ -2248,7 +2314,7 @@ glade_eprop_unichar_changed (GtkWidget * entry, GladeEditorProperty * eprop)
 {
   const gchar *text;
 
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
 
   if ((text = gtk_entry_get_text (GTK_ENTRY (entry))) != NULL)
@@ -2270,7 +2336,7 @@ glade_eprop_unichar_delete (GtkEditable * editable,
                             gint start_pos,
                             gint end_pos, GladeEditorProperty * eprop)
 {
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
   gtk_editable_select_region (editable, 0, -1);
   g_signal_stop_emission_by_name (G_OBJECT (editable), "delete_text");
@@ -2282,7 +2348,7 @@ glade_eprop_unichar_insert (GtkWidget * entry,
                             gint length,
                             gint * position, GladeEditorProperty * eprop)
 {
-  if (eprop->loading)
+  if (eprop->priv->loading)
     return;
   g_signal_handlers_block_by_func
       (G_OBJECT (entry), G_CALLBACK (glade_eprop_unichar_changed), eprop);
@@ -2621,9 +2687,9 @@ glade_eprop_object_dialog_title (GladeEditorProperty * eprop)
   GParamSpec *pspec;
   const gchar *format;
 
-  pspec = glade_property_class_get_pspec (eprop->klass);
+  pspec = glade_property_class_get_pspec (eprop->priv->klass);
 
-  if (glade_property_class_parentless_widget (eprop->klass))
+  if (glade_property_class_parentless_widget (eprop->priv->klass))
     format = GLADE_IS_PARAM_SPEC_OBJECTS (pspec) ?
         _("Choose parentless %s type objects in this project") :
         _("Choose a parentless %s in this project");
@@ -2774,14 +2840,14 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
   GladeWidgetAdaptor *create_adaptor = NULL;
   GList *selected_list = NULL, *exception_list = NULL;
 
-  widget  = glade_property_get_widget (eprop->property);
+  widget  = glade_property_get_widget (eprop->priv->property);
   project = glade_widget_get_project (widget);
   parent  = gtk_widget_get_toplevel (GTK_WIDGET (eprop));
-  pspec   = glade_property_class_get_pspec (eprop->klass);
+  pspec   = glade_property_class_get_pspec (eprop->priv->klass);
 
-  if (glade_property_class_create_type (eprop->klass))
+  if (glade_property_class_create_type (eprop->priv->klass))
     create_adaptor =
-      glade_widget_adaptor_get_by_name (glade_property_class_create_type (eprop->klass));
+      glade_widget_adaptor_get_by_name (glade_property_class_create_type (eprop->priv->klass));
   if (!create_adaptor &&
       G_TYPE_IS_INSTANTIATABLE (pspec->value_type) && !G_TYPE_IS_ABSTRACT (pspec->value_type))
     create_adaptor = glade_widget_adaptor_get_by_type (pspec->value_type);
@@ -2857,17 +2923,17 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
 
 
   exception_list = g_list_prepend (exception_list, widget);
-  if (g_value_get_object (glade_property_inline_value (eprop->property)))
+  if (g_value_get_object (glade_property_inline_value (eprop->priv->property)))
     selected_list = g_list_prepend (selected_list,
                                     glade_widget_get_from_gobject
                                     (g_value_get_object
-                                     (glade_property_inline_value (eprop->property))));
+                                     (glade_property_inline_value (eprop->priv->property))));
 
   tree_view = glade_eprop_object_view (TRUE);
   glade_eprop_object_populate_view (project, GTK_TREE_VIEW (tree_view),
                                     selected_list, exception_list,
                                     pspec->value_type,
-                                    glade_property_class_parentless_widget (eprop->klass));
+                                    glade_property_class_parentless_widget (eprop->priv->klass));
   g_list_free (selected_list);
   g_list_free (exception_list);
 
@@ -2900,10 +2966,10 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
                                        TRUE);
 
           value = glade_property_class_make_gvalue_from_string
-	    (eprop->klass, glade_widget_get_name (selected), project, widget);
+	    (eprop->priv->klass, glade_widget_get_name (selected), project, widget);
 
           /* Unparent the widget so we can reuse it for this property */
-          if (glade_property_class_parentless_widget (eprop->klass))
+          if (glade_property_class_parentless_widget (eprop->priv->klass))
             {
               GObject *new_object, *old_object = NULL;
               GladeWidget *new_widget;
@@ -2914,7 +2980,7 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
                     ("Parentless widget property should be of object type");
               else
                 {
-                  glade_property_get (eprop->property, &old_object);
+                  glade_property_get (eprop->priv->property, &old_object);
                   new_object = g_value_get_object (value);
                   new_widget = glade_widget_get_from_gobject (new_object);
 
@@ -2924,7 +2990,7 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
                            glade_widget_get_parentless_widget_ref (new_widget)))
                         {
                           glade_command_push_group (_("Setting %s of %s to %s"),
-                                                    glade_property_class_get_name (eprop->klass),
+                                                    glade_property_class_get_name (eprop->priv->klass),
 						    glade_widget_get_name (widget), 
 						    glade_widget_get_name (new_widget));
                           glade_command_set_property (old_ref, NULL);
@@ -2951,7 +3017,7 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
       /* translators: Creating 'a widget' for 'a property' of 'a widget' */
       glade_command_push_group (_("Creating %s for %s of %s"),
                                 glade_widget_adaptor_get_name (create_adaptor),
-                                glade_property_class_get_name (eprop->klass),
+                                glade_property_class_get_name (eprop->priv->klass),
                                 glade_widget_get_name (widget));
 
       /* Dont bother if the user canceled the widget */
@@ -2961,7 +3027,7 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
           glade_project_selection_set (project, glade_widget_get_object (widget), TRUE);
 
           value = glade_property_class_make_gvalue_from_string
-	    (eprop->klass, glade_widget_get_name (new_widget), project, NULL);
+	    (eprop->priv->klass, glade_widget_get_name (new_widget), project, NULL);
 
           glade_editor_property_commit (eprop, value);
 
@@ -2974,7 +3040,7 @@ glade_eprop_object_show_dialog (GtkWidget * dialog_button,
   else if (res == GLADE_RESPONSE_CLEAR)
     {
       GValue *value = glade_property_class_make_gvalue_from_string
-	(eprop->klass, NULL, project, glade_property_get_widget (eprop->property));
+	(eprop->priv->klass, NULL, project, glade_property_get_widget (eprop->priv->property));
 
       glade_editor_property_commit (eprop, value);
 
@@ -2999,8 +3065,8 @@ glade_eprop_object_load (GladeEditorProperty * eprop, GladeProperty * property)
     return;
 
   if ((obj_name = glade_widget_adaptor_string_from_value
-       (glade_property_class_get_adaptor (eprop->klass),
-        eprop->klass, glade_property_inline_value (property))) != NULL)
+       (glade_property_class_get_adaptor (eprop->priv->klass),
+        eprop->priv->klass, glade_property_inline_value (property))) != NULL)
     {
       gtk_entry_set_text (GTK_ENTRY (eprop_object->entry), obj_name);
       g_free (obj_name);
@@ -3069,8 +3135,8 @@ glade_eprop_objects_load (GladeEditorProperty * eprop, GladeProperty * property)
     return;
 
   if ((obj_name = glade_widget_adaptor_string_from_value
-       (glade_property_class_get_adaptor (eprop->klass),
-        eprop->klass, glade_property_inline_value (property))) != NULL)
+       (glade_property_class_get_adaptor (eprop->priv->klass),
+        eprop->priv->klass, glade_property_inline_value (property))) != NULL)
     {
       gtk_entry_set_text (GTK_ENTRY (eprop_objects->entry), obj_name);
       g_free (obj_name);
@@ -3116,10 +3182,10 @@ glade_eprop_objects_show_dialog (GtkWidget * dialog_button,
   gint res;
   GList *selected_list = NULL, *exception_list = NULL, *selected_objects = NULL;
 
-  widget  = glade_property_get_widget (eprop->property);
+  widget  = glade_property_get_widget (eprop->priv->property);
   project = glade_widget_get_project (widget);
   parent  = gtk_widget_get_toplevel (GTK_WIDGET (eprop));
-  pspec   = glade_property_class_get_pspec (eprop->klass);
+  pspec   = glade_property_class_get_pspec (eprop->priv->klass);
 
   dialog = gtk_dialog_new_with_buttons (title,
                                         GTK_WINDOW (parent),
@@ -3161,10 +3227,10 @@ glade_eprop_objects_show_dialog (GtkWidget * dialog_button,
   exception_list = g_list_prepend (exception_list, widget);
 
   /* XXX This looks broken, do "object list" properties hold an object ? I doubt it... */
-  if (g_value_get_object (glade_property_inline_value (eprop->property)))
+  if (g_value_get_object (glade_property_inline_value (eprop->priv->property)))
     {
       GList *l;
-      glade_property_get (eprop->property, &selected_objects);
+      glade_property_get (eprop->priv->property, &selected_objects);
       for (l = selected_objects; l; l = l->next)
         selected_list = g_list_prepend (selected_list,
                                         glade_widget_get_from_gobject (l->data));
@@ -3172,7 +3238,7 @@ glade_eprop_objects_show_dialog (GtkWidget * dialog_button,
   glade_eprop_object_populate_view (project, GTK_TREE_VIEW (tree_view),
                                     selected_list, exception_list,
                                     pspec->value_type,
-                                    glade_property_class_parentless_widget (eprop->klass));
+                                    glade_property_class_parentless_widget (eprop->priv->klass));
   g_list_free (selected_list);
   g_list_free (exception_list);
 
@@ -3193,7 +3259,7 @@ glade_eprop_objects_show_dialog (GtkWidget * dialog_button,
            (GtkTreeModelForeachFunc)
            glade_eprop_objects_selected_widget, &selected);
 
-      value = glade_property_class_make_gvalue (eprop->klass, selected);
+      value = glade_property_class_make_gvalue (eprop->priv->klass, selected);
 
       glade_editor_property_commit (eprop, value);
 
@@ -3202,7 +3268,7 @@ glade_eprop_objects_show_dialog (GtkWidget * dialog_button,
     }
   else if (res == GLADE_RESPONSE_CLEAR)
     {
-      GValue *value = glade_property_class_make_gvalue (eprop->klass, NULL);
+      GValue *value = glade_property_class_make_gvalue (eprop->priv->klass, NULL);
 
       glade_editor_property_commit (eprop, value);
 
@@ -3270,12 +3336,12 @@ glade_editor_property_load (GladeEditorProperty * eprop,
   g_return_if_fail (GLADE_IS_EDITOR_PROPERTY (eprop));
   g_return_if_fail (property == NULL || GLADE_IS_PROPERTY (property));
 
-  if (eprop->committing)
+  if (eprop->priv->committing)
     return;
 
-  eprop->loading = TRUE;
+  eprop->priv->loading = TRUE;
   GLADE_EDITOR_PROPERTY_GET_CLASS (eprop)->load (eprop, property);
-  eprop->loading = FALSE;
+  eprop->priv->loading = FALSE;
 }
 
 
@@ -3299,24 +3365,24 @@ glade_editor_property_load_by_widget (GladeEditorProperty * eprop,
   if (widget)
     {
       /* properties are allowed to be missing on some internal widgets */
-      if (glade_property_class_get_is_packing (eprop->klass))
-        property = glade_widget_get_pack_property (widget, glade_property_class_id (eprop->klass));
+      if (glade_property_class_get_is_packing (eprop->priv->klass))
+        property = glade_widget_get_pack_property (widget, glade_property_class_id (eprop->priv->klass));
       else
-        property = glade_widget_get_property (widget, glade_property_class_id (eprop->klass));
+        property = glade_widget_get_property (widget, glade_property_class_id (eprop->priv->klass));
 
       glade_editor_property_load (eprop, property);
 
       if (property)
         {
-          g_assert (eprop->klass == glade_property_get_class (property));
+          g_assert (eprop->priv->klass == glade_property_get_class (property));
 
           gtk_widget_show (GTK_WIDGET (eprop));
-          gtk_widget_show (GTK_WIDGET (eprop->item_label));
+          gtk_widget_show (GTK_WIDGET (eprop->priv->item_label));
         }
       else
         {
           gtk_widget_hide (GTK_WIDGET (eprop));
-          gtk_widget_hide (GTK_WIDGET (eprop->item_label));
+          gtk_widget_hide (GTK_WIDGET (eprop->priv->item_label));
         }
     }
   else
diff --git a/gladeui/glade-editor-property.h b/gladeui/glade-editor-property.h
index 8ed99c4..fd75882 100644
--- a/gladeui/glade-editor-property.h
+++ b/gladeui/glade-editor-property.h
@@ -74,60 +74,27 @@ GLADE_MAKE_EPROP_TYPE(func, type, GLADE_TYPE_EDITOR_PROPERTY)
 
 typedef struct _GladeEditorProperty        GladeEditorProperty;
 typedef struct _GladeEditorPropertyClass   GladeEditorPropertyClass;
+typedef struct _GladeEditorPropertyPrivate GladeEditorPropertyPrivate;
 
 struct _GladeEditorProperty
 {
-	GtkHBox             parent_instance;
-
-	GladePropertyClass *klass;          /* The property class this GladeEditorProperty was created for
-					     */
-	GladeProperty      *property;       /* The currently loaded property
-					     */
-
-	GtkWidget          *item_label;     /* The property name portion of the eprop
-					     */
-
-	GtkWidget          *label;          /* The actual property name label
-					     */
-
-	GtkWidget          *warning;        /* Icon to show warnings
-					     */
-
-	GtkWidget          *input;          /* Input part of property (need to set sensitivity seperately)
-					     */
-
-	GtkWidget          *check;          /* Check button for optional properties.
-					     */
-
-	gulong              tooltip_id;     /* signal connection id for tooltip changes        */
-	gulong              sensitive_id;   /* signal connection id for sensitivity changes    */
-	gulong              changed_id;     /* signal connection id for value changes          */
-	gulong              enabled_id;     /* signal connection id for enable/disable changes */
-	gulong              state_id;       /* signal connection id for state changes          */
-	
-	gboolean            loading;        /* True during glade_editor_property_load calls, this
-					     * is used to avoid feedback from input widgets.
-					     */
-	gboolean            committing;     /* True while the editor property itself is applying
-					     * the property with glade_editor_property_commit_no_callback ().
-					     */
-
-	gboolean            use_command;    /* Whether we should use the glade command interface
-					     * or skip directly to GladeProperty interface.
-					     * (used for query dialogs).
-					     */
+  GtkHBox             parent_instance;
+
+  GladeEditorPropertyPrivate *priv;
 };
 
 struct _GladeEditorPropertyClass {
-	GtkHBoxClass  parent_class;
-
-	void        (* load)          (GladeEditorProperty *, GladeProperty *);
+  GtkHBoxClass  parent_class;
 
-	GtkWidget  *(* create_input)  (GladeEditorProperty *);
+  void        (* load)          (GladeEditorProperty *, GladeProperty *);
+  GtkWidget  *(* create_input)  (GladeEditorProperty *);
+  void        (* commit)        (GladeEditorProperty *, GValue *);
+  void       *(* changed)       (GladeEditorProperty *, GladeProperty *);
 
-	void        (* commit)        (GladeEditorProperty *, GValue *);
-
-	void       *(* changed)       (GladeEditorProperty *, GladeProperty *);
+  void   (* glade_reserved1)   (void);
+  void   (* glade_reserved2)   (void);
+  void   (* glade_reserved3)   (void);
+  void   (* glade_reserved4)   (void);
 };
 
 
@@ -146,6 +113,11 @@ void                 glade_editor_property_commit         (GladeEditorProperty *
 void                 glade_editor_property_commit_no_callback (GladeEditorProperty *eprop,
 							       GValue              *value);
 
+GtkWidget           *glade_editor_property_get_item_label  (GladeEditorProperty *eprop);
+GladePropertyClass  *glade_editor_property_get_pclass      (GladeEditorProperty *eprop);
+GladeProperty       *glade_editor_property_get_property    (GladeEditorProperty *eprop);
+gboolean             glade_editor_property_loading         (GladeEditorProperty *eprop);
+
 gboolean             glade_editor_property_show_i18n_dialog (GtkWidget            *parent,
 							     gchar               **text,
 							     gchar               **context,
diff --git a/gladeui/glade-editor-table.c b/gladeui/glade-editor-table.c
index e8af27e..101bc0a 100644
--- a/gladeui/glade-editor-table.c
+++ b/gladeui/glade-editor-table.c
@@ -370,9 +370,9 @@ append_item (GladeEditorTable * table,
     }
 
   gtk_widget_show (GTK_WIDGET (property));
-  gtk_widget_show_all (property->item_label);
+  gtk_widget_show_all (glade_editor_property_get_item_label (property));
 
-  glade_editor_table_attach (table, property->item_label, 0, table->priv->rows);
+  glade_editor_table_attach (table, glade_editor_property_get_item_label (property), 0, table->priv->rows);
   glade_editor_table_attach (table, GTK_WIDGET (property), 1, table->priv->rows);
 
   table->priv->rows++;
diff --git a/plugins/gtk+/glade-accels.c b/plugins/gtk+/glade-accels.c
index b9daf1c..59f32d6 100644
--- a/plugins/gtk+/glade-accels.c
+++ b/plugins/gtk+/glade-accels.c
@@ -202,7 +202,9 @@ glade_eprop_accel_populate_view (GladeEditorProperty * eprop,
 {
   GladeEPropAccel *eprop_accel = GLADE_EPROP_ACCEL (eprop);
   GladeSignalClass *sclass;
-  GladeWidgetAdaptor *adaptor = glade_property_class_get_adaptor (eprop->klass);
+  GladePropertyClass *pclass = glade_editor_property_get_pclass (eprop);
+  GladeProperty      *property = glade_editor_property_get_property (eprop);
+  GladeWidgetAdaptor *adaptor = glade_property_class_get_adaptor (pclass);
   GtkTreeStore *model = (GtkTreeStore *) gtk_tree_view_get_model (view);
   GtkTreeIter iter;
   GladeEpropIterTab *parent_tab;
@@ -211,7 +213,7 @@ glade_eprop_accel_populate_view (GladeEditorProperty * eprop,
   gchar *name, *accel_text;
   const GList *list;
 
-  accelerators = g_value_get_boxed (glade_property_inline_value (eprop->property));
+  accelerators = g_value_get_boxed (glade_property_inline_value (property));
 
   /* First make parent iters...
    */
@@ -338,10 +340,13 @@ accel_edited (GtkCellRendererAccel * accel,
   gboolean key_was_set;
   GtkTreeIter iter, parent_iter, new_iter;
   gchar *accel_text;
-  GladeWidgetAdaptor *adaptor =
-      glade_property_class_get_adaptor (GLADE_EDITOR_PROPERTY (eprop_accel)->klass);
+  GladePropertyClass *pclass;
+  GladeWidgetAdaptor *adaptor;
   gboolean is_action;
 
+  pclass = glade_editor_property_get_pclass (GLADE_EDITOR_PROPERTY (eprop_accel));
+  adaptor = glade_property_class_get_adaptor (pclass);
+
   if (!gtk_tree_model_get_iter_from_string (eprop_accel->model,
                                             &iter, path_string))
     return;
@@ -416,22 +421,23 @@ glade_eprop_accel_view (GladeEditorProperty * eprop)
   GtkCellRenderer *renderer;
   GtkTreeViewColumn *column;
 
-  eprop_accel->model = (GtkTreeModel *) gtk_tree_store_new (ACCEL_NUM_COLUMNS, G_TYPE_STRING,   /* The GSignal name formatted for display */
-                                                            G_TYPE_STRING,      /* The GSignal name */
-                                                            G_TYPE_STRING,      /* The text to show in the accelerator cell */
-                                                            G_TYPE_INT, /* PangoWeight attribute for bold headers */
-                                                            G_TYPE_INT, /* PangoStyle attribute for italic grey unset items */
-                                                            G_TYPE_STRING,      /* Foreground colour for italic grey unset items */
-                                                            G_TYPE_BOOLEAN,     /* Visible attribute to hide items for header entries */
-                                                            G_TYPE_BOOLEAN,     /* Whether the key has been entered for this row */
-                                                            G_TYPE_UINT,        /* Hardware keycode */
-                                                            G_TYPE_INT);        /* GdkModifierType */
-
+  eprop_accel->model = (GtkTreeModel *) 
+    gtk_tree_store_new (ACCEL_NUM_COLUMNS, G_TYPE_STRING,   /* The GSignal name formatted for display */
+			G_TYPE_STRING,      /* The GSignal name */
+			G_TYPE_STRING,      /* The text to show in the accelerator cell */
+			G_TYPE_INT, /* PangoWeight attribute for bold headers */
+			G_TYPE_INT, /* PangoStyle attribute for italic grey unset items */
+			G_TYPE_STRING,      /* Foreground colour for italic grey unset items */
+			G_TYPE_BOOLEAN,     /* Visible attribute to hide items for header entries */
+			G_TYPE_BOOLEAN,     /* Whether the key has been entered for this row */
+			G_TYPE_UINT,        /* Hardware keycode */
+			G_TYPE_INT);        /* GdkModifierType */
+  
   view_widget = gtk_tree_view_new_with_model (eprop_accel->model);
   gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (view_widget), FALSE);
   gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view_widget), FALSE);
 
-        /********************* signal name column *********************/
+  /********************* signal name column *********************/
   renderer = gtk_cell_renderer_text_new ();
   g_object_set (G_OBJECT (renderer), "editable", FALSE, NULL);
 
@@ -443,7 +449,7 @@ glade_eprop_accel_view (GladeEditorProperty * eprop)
   gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE);
   gtk_tree_view_append_column (GTK_TREE_VIEW (view_widget), column);
 
-        /********************* accel editor column *********************/
+  /********************* accel editor column *********************/
   renderer = gtk_cell_renderer_accel_new ();
   g_object_set (G_OBJECT (renderer), "editable", TRUE, NULL);
 
@@ -501,11 +507,13 @@ glade_eprop_accel_show_dialog (GtkWidget * dialog_button,
   GladeEPropAccel *eprop_accel = GLADE_EPROP_ACCEL (eprop);
   GtkWidget *dialog, *parent, *vbox, *sw, *tree_view;
   GladeProject *project;
+  GladeProperty *property;
   GValue value = { 0, };
   GList *accelerators = NULL;
   gint res;
 
-  project = glade_widget_get_project (glade_property_get_widget (eprop->property));
+  property = glade_editor_property_get_property (eprop);
+  project = glade_widget_get_project (glade_property_get_widget (property));
   parent = gtk_widget_get_toplevel (GTK_WIDGET (eprop));
 
   dialog = gtk_dialog_new_with_buttons (_("Choose accelerator keys..."),
diff --git a/plugins/gtk+/glade-activatable-editor.c b/plugins/gtk+/glade-activatable-editor.c
index 345aedd..e535718 100644
--- a/plugins/gtk+/glade-activatable-editor.c
+++ b/plugins/gtk+/glade-activatable-editor.c
@@ -417,7 +417,7 @@ glade_activatable_editor_new (GladeWidgetAdaptor * adaptor,
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "related-action",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, row);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   activatable_editor->properties =
       g_list_prepend (activatable_editor->properties, eprop);
@@ -432,7 +432,7 @@ glade_activatable_editor_new (GladeWidgetAdaptor * adaptor,
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "use-action-appearance", FALSE,
                                                  TRUE);
-  table_attach (table, eprop->item_label, 0, row);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   activatable_editor->properties =
       g_list_prepend (activatable_editor->properties, eprop);
diff --git a/plugins/gtk+/glade-attributes.c b/plugins/gtk+/glade-attributes.c
index 7587dd9..93e3dfe 100644
--- a/plugins/gtk+/glade-attributes.c
+++ b/plugins/gtk+/glade-attributes.c
@@ -675,8 +675,10 @@ sync_object (GladeEPropAttrs * eprop_attrs, gboolean use_command)
     }
   else
     {
-      glade_property_set (GLADE_EDITOR_PROPERTY (eprop_attrs)->property,
-                          g_list_reverse (attributes));
+      GladeProperty *property = 
+	glade_editor_property_get_property (GLADE_EDITOR_PROPERTY (eprop_attrs));
+
+      glade_property_set (property, g_list_reverse (attributes));
       glade_attr_list_free (attributes);
     }
 }
@@ -830,32 +832,33 @@ glade_eprop_attrs_view (GladeEditorProperty * eprop)
   GtkTreeViewColumn *column;
   GtkAdjustment *adjustment;
 
-  eprop_attrs->model = (GtkTreeModel *) gtk_list_store_new (NUM_COLUMNS,
-                                                            /* Main Data */
-                                                            G_TYPE_STRING,      // COLUMN_NAME
-                                                            G_TYPE_INT, // COLUMN_NAME_WEIGHT
-                                                            G_TYPE_INT, // COLUMN_TYPE
-                                                            G_TYPE_INT, // COLUMN_EDIT_TYPE
-                                                            G_TYPE_POINTER,     // COLUMN_VALUE
-                                                            G_TYPE_UINT,        // COLUMN_START
-                                                            G_TYPE_UINT,        // COLUMN_END
-                                                            /* Editor renderer related */
-                                                            G_TYPE_BOOLEAN,     // COLUMN_TOGGLE_ACTIVE
-                                                            G_TYPE_BOOLEAN,     // COLUMN_TOGGLE_DOWN
-                                                            G_TYPE_BOOLEAN,     // COLUMN_BUTTON_ACTIVE
-                                                            G_TYPE_STRING,      // COLUMN_TEXT
-                                                            G_TYPE_INT, // COLUMN_TEXT_STYLE
-                                                            G_TYPE_STRING,      // COLUMN_TEXT_FG
-                                                            G_TYPE_BOOLEAN,     // COLUMN_COMBO_ACTIVE
-                                                            GTK_TYPE_LIST_STORE,        // COLUMN_COMBO_MODEL
-                                                            G_TYPE_BOOLEAN,     // COLUMN_SPIN_ACTIVE
-                                                            G_TYPE_UINT);       // COLUMN_SPIN_DIGITS
-
+  eprop_attrs->model = (GtkTreeModel *) 
+    gtk_list_store_new (NUM_COLUMNS,
+			/* Main Data */
+			G_TYPE_STRING,      // COLUMN_NAME
+			G_TYPE_INT, // COLUMN_NAME_WEIGHT
+			G_TYPE_INT, // COLUMN_TYPE
+			G_TYPE_INT, // COLUMN_EDIT_TYPE
+			G_TYPE_POINTER,     // COLUMN_VALUE
+			G_TYPE_UINT,        // COLUMN_START
+			G_TYPE_UINT,        // COLUMN_END
+			/* Editor renderer related */
+			G_TYPE_BOOLEAN,     // COLUMN_TOGGLE_ACTIVE
+			G_TYPE_BOOLEAN,     // COLUMN_TOGGLE_DOWN
+			G_TYPE_BOOLEAN,     // COLUMN_BUTTON_ACTIVE
+			G_TYPE_STRING,      // COLUMN_TEXT
+			G_TYPE_INT, // COLUMN_TEXT_STYLE
+			G_TYPE_STRING,      // COLUMN_TEXT_FG
+			G_TYPE_BOOLEAN,     // COLUMN_COMBO_ACTIVE
+			GTK_TYPE_LIST_STORE,        // COLUMN_COMBO_MODEL
+			G_TYPE_BOOLEAN,     // COLUMN_SPIN_ACTIVE
+			G_TYPE_UINT);       // COLUMN_SPIN_DIGITS
+  
   view_widget = gtk_tree_view_new_with_model (eprop_attrs->model);
   gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (view_widget), FALSE);
   gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view_widget), FALSE);
 
-        /********************* attribute name column *********************/
+  /********************* attribute name column *********************/
   renderer = gtk_cell_renderer_text_new ();
   g_object_set (G_OBJECT (renderer), "editable", FALSE, NULL);
   column = gtk_tree_view_column_new_with_attributes
@@ -865,7 +868,7 @@ glade_eprop_attrs_view (GladeEditorProperty * eprop)
   gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE);
   gtk_tree_view_append_column (GTK_TREE_VIEW (view_widget), column);
 
-        /********************* attribute value column *********************/
+  /********************* attribute value column *********************/
   column = gtk_tree_view_column_new ();
   gtk_tree_view_column_set_title (column, _("Value"));
 
@@ -949,9 +952,11 @@ glade_eprop_attrs_populate_view (GladeEditorProperty * eprop,
   GtkListStore *model = (GtkListStore *) gtk_tree_view_get_model (view);
   GtkTreeIter *iter;
   GladeAttribute *gattr;
+  GladeProperty *property;
   gchar *text;
 
-  attributes = g_value_get_boxed (glade_property_inline_value (eprop->property));
+  property   = glade_editor_property_get_property (eprop);
+  attributes = g_value_get_boxed (glade_property_inline_value (property));
 
   append_empty_row (model, PANGO_ATTR_LANGUAGE);
   append_empty_row (model, PANGO_ATTR_STYLE);
@@ -1009,15 +1014,17 @@ glade_eprop_attrs_show_dialog (GtkWidget * dialog_button,
   GladeEPropAttrs *eprop_attrs = GLADE_EPROP_ATTRS (eprop);
   GtkWidget *dialog, *parent, *vbox, *sw, *tree_view;
   GladeProject *project;
+  GladeProperty *property;
   GList *old_attributes;
   gint res;
 
-  project = glade_widget_get_project (glade_property_get_widget (eprop->property));
-  parent = gtk_widget_get_toplevel (GTK_WIDGET (eprop));
+  property = glade_editor_property_get_property (eprop);
+  project  = glade_widget_get_project (glade_property_get_widget (property));
+  parent   = gtk_widget_get_toplevel (GTK_WIDGET (eprop));
 
 
   /* Keep a copy for commit time... */
-  old_attributes = g_value_dup_boxed (glade_property_inline_value (eprop->property));
+  old_attributes = g_value_dup_boxed (glade_property_inline_value (property));
 
   dialog = gtk_dialog_new_with_buttons (_("Setup Text Attributes"),
                                         GTK_WINDOW (parent),
@@ -1059,7 +1066,7 @@ glade_eprop_attrs_show_dialog (GtkWidget * dialog_button,
       /* Update from old attributes so that there a property change 
        * sitting on the undo stack.
        */
-      glade_property_set (eprop->property, old_attributes);
+      glade_property_set (property, old_attributes);
       sync_object (eprop_attrs, TRUE);
     }
   else if (res == GLADE_RESPONSE_CLEAR)
diff --git a/plugins/gtk+/glade-button-editor.c b/plugins/gtk+/glade-button-editor.c
index 288e04f..34a29dd 100644
--- a/plugins/gtk+/glade-button-editor.c
+++ b/plugins/gtk+/glade-button-editor.c
@@ -508,14 +508,14 @@ glade_button_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
 
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "stock", FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 0);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
 
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "image-position",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 1);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
 
@@ -538,27 +538,27 @@ glade_button_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
 
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "label", FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 0);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
 
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "use-underline",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 1);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
 
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "image", FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 2);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 2);
   table_attach (table, GTK_WIDGET (eprop), 1, 2);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
 
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "image-position",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 3);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 3);
   table_attach (table, GTK_WIDGET (eprop), 1, 3);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
 
diff --git a/plugins/gtk+/glade-cell-renderer-editor.c b/plugins/gtk+/glade-cell-renderer-editor.c
index 59eaf0e..637922a 100644
--- a/plugins/gtk+/glade-cell-renderer-editor.c
+++ b/plugins/gtk+/glade-cell-renderer-editor.c
@@ -408,14 +408,14 @@ glade_cell_renderer_editor_new (GladeWidgetAdaptor * adaptor,
 
           /* Edit property */
           eprop = glade_widget_adaptor_create_eprop (adaptor, pclass, TRUE);
-          gtk_box_pack_start (GTK_BOX (hbox_left), eprop->item_label, TRUE,
+          gtk_box_pack_start (GTK_BOX (hbox_left), glade_editor_property_get_item_label (eprop), TRUE,
                               TRUE, 4);
           gtk_box_pack_start (GTK_BOX (hbox_right), GTK_WIDGET (eprop), FALSE,
                               FALSE, 4);
           renderer_editor->properties =
               g_list_prepend (renderer_editor->properties, eprop);
 
-          tab->use_prop_label = eprop->item_label;
+          tab->use_prop_label = glade_editor_property_get_item_label (eprop);
           tab->use_prop_eprop = GTK_WIDGET (eprop);
 
           /* Edit attribute */
@@ -429,7 +429,7 @@ glade_cell_renderer_editor_new (GladeWidgetAdaptor * adaptor,
           gtk_grid_attach (GTK_GRID (grid), hbox_left, 0, row, 1, 1);
           gtk_grid_attach (GTK_GRID (grid), hbox_right, 1, row++, 1, 1);
 
-          tab->use_attr_label = eprop->item_label;
+          tab->use_attr_label = glade_editor_property_get_item_label (eprop);
           tab->use_attr_eprop = GTK_WIDGET (eprop);
 
           g_signal_connect (G_OBJECT (tab->attributes_check), "toggled",
@@ -584,7 +584,7 @@ combo_changed (GtkWidget * combo, GladeEditorProperty * eprop)
 {
   GValue val = { 0, };
 
-  if (eprop->loading)
+  if (glade_editor_property_loading (eprop))
     return;
 
   g_value_init (&val, G_TYPE_INT);
@@ -600,7 +600,7 @@ spin_changed (GtkWidget * spin, GladeEditorProperty * eprop)
 {
   GValue val = { 0, };
 
-  if (eprop->loading)
+  if (glade_editor_property_loading (eprop))
     return;
 
   g_value_init (&val, G_TYPE_INT);
@@ -619,7 +619,7 @@ glade_eprop_cell_attribute_create_input (GladeEditorProperty * eprop)
 
   hbox = gtk_hbox_new (FALSE, 2);
 
-  adjustment = glade_property_class_make_adjustment (eprop->klass);
+  adjustment = glade_property_class_make_adjustment (glade_editor_property_get_pclass (eprop));
   eprop_attribute->spin = gtk_spin_button_new (adjustment, 1.0, 0);
 
   eprop_attribute->columns =
diff --git a/plugins/gtk+/glade-column-types.c b/plugins/gtk+/glade-column-types.c
index c8d679e..ce124f3 100644
--- a/plugins/gtk+/glade-column-types.c
+++ b/plugins/gtk+/glade-column-types.c
@@ -285,9 +285,9 @@ eprop_column_adjust_rows (GladeEditorProperty * eprop, GList * columns)
 {
   GladeColumnType *column;
   GNode *data_tree = NULL;
-  GladeWidget *widget = glade_property_get_widget (eprop->property);
+  GladeProperty *property, *prop = glade_editor_property_get_property (eprop);  
+  GladeWidget *widget = glade_property_get_widget (prop);
   GList *list;
-  GladeProperty *property;
   gint idx;
 
   property = glade_widget_get_property (widget, "data");
@@ -326,15 +326,19 @@ eprop_column_adjust_rows (GladeEditorProperty * eprop, GList * columns)
 }
 
 static void
-eprop_column_append (GladeEditorProperty * eprop,
-                     const gchar * type_name, const gchar * column_name)
+eprop_column_append (GladeEditorProperty *eprop,
+                     const gchar         *type_name, 
+		     const gchar         *column_name)
 {
   GladeEPropColumnTypes *eprop_types = GLADE_EPROP_COLUMN_TYPES (eprop);
   GList *columns = NULL;
   GladeColumnType *data;
   GValue value = { 0, };
+  GladeProperty *property;
+
+  property = glade_editor_property_get_property (eprop);
 
-  glade_property_get (eprop->property, &columns);
+  glade_property_get (property, &columns);
   if (columns)
     columns = glade_column_list_copy (columns);
 
@@ -344,7 +348,7 @@ eprop_column_append (GladeEditorProperty * eprop,
 
   eprop_types->adding_column = TRUE;
   glade_command_push_group (_("Setting columns on %s"),
-                            glade_widget_get_name (glade_property_get_widget (eprop->property)));
+                            glade_widget_get_name (glade_property_get_widget (property)));
 
   g_value_init (&value, GLADE_TYPE_COLUMN_TYPE_LIST);
   g_value_take_boxed (&value, columns);
@@ -359,8 +363,9 @@ eprop_column_append (GladeEditorProperty * eprop,
 }
 
 static gboolean
-eprop_treeview_key_press (GtkWidget * treeview,
-                          GdkEventKey * event, GladeEditorProperty * eprop)
+eprop_treeview_key_press (GtkWidget           *treeview,
+                          GdkEventKey         *event, 
+			  GladeEditorProperty *eprop)
 {
   /* Remove from list and commit value, dont touch the liststore except in load() */
   GladeEPropColumnTypes *eprop_types = GLADE_EPROP_COLUMN_TYPES (eprop);
@@ -369,6 +374,9 @@ eprop_treeview_key_press (GtkWidget * treeview,
   GladeColumnType *column;
   GValue value = { 0, };
   gchar *column_name;
+  GladeProperty *property;
+
+  property = glade_editor_property_get_property (eprop);
 
   if (event->keyval == GDK_KEY_Delete &&
       gtk_tree_selection_get_selected (eprop_types->selection, NULL, &iter))
@@ -380,7 +388,7 @@ eprop_treeview_key_press (GtkWidget * treeview,
       if (!column_name)
         return TRUE;
 
-      glade_property_get (eprop->property, &columns);
+      glade_property_get (property, &columns);
       if (columns)
         columns = glade_column_list_copy (columns);
       g_assert (columns);
@@ -392,7 +400,7 @@ eprop_treeview_key_press (GtkWidget * treeview,
       glade_column_type_free (column);
 
       glade_command_push_group (_("Setting columns on %s"),
-                                glade_widget_get_name (glade_property_get_widget (eprop->property)));
+                                glade_widget_get_name (glade_property_get_widget (property)));
 
       eprop_types->want_focus = TRUE;
 
@@ -422,8 +430,11 @@ columns_changed_idle (GladeEditorProperty * eprop)
   GList *new_list = NULL, *columns = NULL, *list;
   GtkTreeIter iter;
   gchar *column_name;
+  GladeProperty *property;
 
-  glade_property_get (eprop->property, &columns);
+  property = glade_editor_property_get_property (eprop);
+
+  glade_property_get (property, &columns);
   g_assert (columns);
   columns = glade_column_list_copy (columns);
 
@@ -457,7 +468,7 @@ columns_changed_idle (GladeEditorProperty * eprop)
   g_list_free (columns);
 
   glade_command_push_group (_("Setting columns on %s"),
-                            glade_widget_get_name (glade_property_get_widget (eprop->property)));
+                            glade_widget_get_name (glade_property_get_widget (property)));
 
   g_value_init (&value, GLADE_TYPE_COLUMN_TYPE_LIST);
   g_value_take_boxed (&value, g_list_reverse (new_list));
@@ -474,7 +485,7 @@ static void
 eprop_treeview_row_deleted (GtkTreeModel * tree_model,
                             GtkTreePath * path, GladeEditorProperty * eprop)
 {
-  if (eprop->loading)
+  if (glade_editor_property_loading (eprop))
     return;
 
   g_idle_add ((GSourceFunc) columns_changed_idle, eprop);
@@ -631,7 +642,9 @@ column_name_edited (GtkCellRendererText * cell,
   GladeColumnType *column;
   GValue value = { 0, };
   GNode *data_tree = NULL;
-  GladeProperty *property;
+  GladeProperty *property, *prop;
+
+  prop = glade_editor_property_get_property (eprop);
 
   if (eprop_types->adding_column)
     return;
@@ -648,7 +661,7 @@ column_name_edited (GtkCellRendererText * cell,
     return;
 
   /* Attempt to rename the column, and commit if successfull... */
-  glade_property_get (eprop->property, &columns);
+  glade_property_get (prop, &columns);
   if (columns)
     columns = glade_column_list_copy (columns);
   g_assert (columns);
@@ -676,7 +689,7 @@ column_name_edited (GtkCellRendererText * cell,
   column_name = g_strdup (column_name);
 
   glade_command_push_group (_("Setting columns on %s"),
-                            glade_widget_get_name (glade_property_get_widget (eprop->property)));
+                            glade_widget_get_name (glade_property_get_widget (prop)));
 
   eprop_types->want_focus = TRUE;
 
@@ -685,7 +698,7 @@ column_name_edited (GtkCellRendererText * cell,
   glade_editor_property_commit (eprop, &value);
   g_value_unset (&value);
 
-  property = glade_widget_get_property (glade_property_get_widget (eprop->property), "data");
+  property = glade_widget_get_property (glade_property_get_widget (prop), "data");
   glade_property_get (property, &data_tree);
   if (data_tree)
     {
@@ -710,12 +723,15 @@ column_type_edited (GtkCellRendererText * cell,
 {
   GladeEPropColumnTypes *eprop_types = GLADE_EPROP_COLUMN_TYPES (eprop);
   GtkTreeIter iter;
+  GladeProperty *property;
   gchar *column_name;
 
   if (!gtk_tree_model_get_iter_from_string
       (GTK_TREE_MODEL (eprop_types->store), &iter, path))
     return;
 
+  property = glade_editor_property_get_property (eprop);
+
   if (type_name && type_name[0])
     {
       column_name =
@@ -726,7 +742,7 @@ column_type_edited (GtkCellRendererText * cell,
   else
     {
       eprop_types->want_focus = TRUE;
-      glade_editor_property_load (eprop, eprop->property);
+      glade_editor_property_load (eprop, property);
       eprop_types->want_focus = FALSE;
     }
 }
diff --git a/plugins/gtk+/glade-entry-editor.c b/plugins/gtk+/glade-entry-editor.c
index 6ed5eee..be0243d 100644
--- a/plugins/gtk+/glade-entry-editor.c
+++ b/plugins/gtk+/glade-entry-editor.c
@@ -579,7 +579,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   entry_editor->text_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->text_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -593,7 +593,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       (GTK_RADIO_BUTTON (entry_editor->text_radio));
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->buffer_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -622,7 +622,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "progress-fraction",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 0);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -630,7 +630,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "progress-pulse-step",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 1);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -662,7 +662,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   entry_editor->primary_pixbuf_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->primary_pixbuf_radio, FALSE,
                       FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -676,7 +676,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       (GTK_RADIO_BUTTON (entry_editor->primary_pixbuf_radio));
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->primary_stock_radio, FALSE,
                       FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -690,7 +690,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       (GTK_RADIO_BUTTON (entry_editor->primary_pixbuf_radio));
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->primary_icon_name_radio,
                       FALSE, FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 2);
   table_attach (table, GTK_WIDGET (eprop), 1, 2);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -700,7 +700,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "primary-icon-activatable",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 3);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 3);
   table_attach (table, GTK_WIDGET (eprop), 1, 3);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -708,7 +708,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "primary-icon-sensitive",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 4);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 4);
   table_attach (table, GTK_WIDGET (eprop), 1, 4);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -716,7 +716,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "primary-icon-tooltip-text",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 5);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 5);
   table_attach (table, GTK_WIDGET (eprop), 1, 5);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -724,7 +724,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "primary-icon-tooltip-markup",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 6);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 6);
   table_attach (table, GTK_WIDGET (eprop), 1, 6);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -756,7 +756,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   entry_editor->secondary_pixbuf_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->secondary_pixbuf_radio,
                       FALSE, FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -770,7 +770,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       (GTK_RADIO_BUTTON (entry_editor->secondary_pixbuf_radio));
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->secondary_stock_radio,
                       FALSE, FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -785,7 +785,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       (GTK_RADIO_BUTTON (entry_editor->secondary_pixbuf_radio));
   gtk_box_pack_start (GTK_BOX (hbox), entry_editor->secondary_icon_name_radio,
                       FALSE, FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 2);
   table_attach (table, GTK_WIDGET (eprop), 1, 2);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
@@ -795,7 +795,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "secondary-icon-activatable",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 3);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 3);
   table_attach (table, GTK_WIDGET (eprop), 1, 3);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -803,7 +803,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "secondary-icon-sensitive",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 4);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 4);
   table_attach (table, GTK_WIDGET (eprop), 1, 4);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -811,7 +811,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "secondary-icon-tooltip-text",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 5);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 5);
   table_attach (table, GTK_WIDGET (eprop), 1, 5);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
@@ -819,7 +819,7 @@ glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       glade_widget_adaptor_create_eprop_by_name (adaptor,
                                                  "secondary-icon-tooltip-markup",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 6);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 6);
   table_attach (table, GTK_WIDGET (eprop), 1, 6);
   entry_editor->properties = g_list_prepend (entry_editor->properties, eprop);
 
diff --git a/plugins/gtk+/glade-icon-factory-editor.c b/plugins/gtk+/glade-icon-factory-editor.c
index 5205877..60e5945 100644
--- a/plugins/gtk+/glade-icon-factory-editor.c
+++ b/plugins/gtk+/glade-icon-factory-editor.c
@@ -187,7 +187,7 @@ glade_icon_factory_editor_new (GladeWidgetAdaptor * adaptor,
   factory_editor->properties =
       g_list_prepend (factory_editor->properties, eprop);
   frame = gtk_frame_new (NULL);
-  gtk_frame_set_label_widget (GTK_FRAME (frame), eprop->item_label);
+  gtk_frame_set_label_widget (GTK_FRAME (frame), glade_editor_property_get_item_label (eprop));
   gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
   gtk_box_pack_start (GTK_BOX (factory_editor), frame, FALSE, FALSE, 12);
 
diff --git a/plugins/gtk+/glade-icon-sources.c b/plugins/gtk+/glade-icon-sources.c
index fd8bc98..ef868fd 100644
--- a/plugins/gtk+/glade-icon-sources.c
+++ b/plugins/gtk+/glade-icon-sources.c
@@ -237,15 +237,16 @@ static void
 populate_store (GladeEPropIconSources * eprop_sources)
 {
   GladeIconSources *sources = NULL;
+  GladeProperty *property;
 
   gtk_tree_store_clear (eprop_sources->store);
   gtk_list_store_clear (eprop_sources->icon_names_store);
 
-  if (!GLADE_EDITOR_PROPERTY (eprop_sources)->property)
+  property = glade_editor_property_get_property (GLADE_EDITOR_PROPERTY (eprop_sources));
+  if (property)
     return;
 
-  glade_property_get (GLADE_EDITOR_PROPERTY (eprop_sources)->property,
-                      &sources);
+  glade_property_get (property, &sources);
 
   if (sources)
     g_hash_table_foreach (sources->sources, (GHFunc) populate_store_foreach,
@@ -272,7 +273,9 @@ glade_eprop_icon_sources_load (GladeEditorProperty * eprop,
 static gboolean
 reload_icon_sources_idle (GladeEditorProperty * eprop)
 {
-  glade_editor_property_load (eprop, eprop->property);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
+
+  glade_editor_property_load (eprop, property);
   return FALSE;
 }
 
@@ -398,6 +401,7 @@ static void
 delete_clicked (GtkWidget * button, GladeEditorProperty * eprop)
 {
   GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (eprop);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
   GtkTreeIter iter;
   GladeIconSources *icon_sources = NULL;
   GList *list, *sources, *new_list_head;
@@ -422,7 +426,7 @@ delete_clicked (GtkWidget * button, GladeEditorProperty * eprop)
       return;
     }
 
-  glade_property_get (eprop->property, &icon_sources);
+  glade_property_get (property, &icon_sources);
   if (icon_sources)
     {
       icon_sources = glade_icon_sources_copy (icon_sources);
@@ -454,6 +458,7 @@ value_filename_edited (GtkCellRendererText * cell,
                        const gchar * new_text, GladeEditorProperty * eprop)
 {
   GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (eprop);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
   GtkTreeIter iter;
   GladeIconSources *icon_sources = NULL;
   GtkIconSource *source;
@@ -479,12 +484,12 @@ value_filename_edited (GtkCellRendererText * cell,
 
   /* get new pixbuf value... */
   value = glade_utils_value_from_string (GDK_TYPE_PIXBUF, new_text,
-                                         glade_widget_get_project (glade_property_get_widget (eprop->property)),
-                                         glade_property_get_widget (eprop->property));
+                                         glade_widget_get_project (glade_property_get_widget (property)),
+                                         glade_property_get_widget (property));
   pixbuf = g_value_get_object (value);
 
 
-  glade_property_get (eprop->property, &icon_sources);
+  glade_property_get (property, &icon_sources);
   if (icon_sources)
     {
       icon_sources = glade_icon_sources_copy (icon_sources);
@@ -533,6 +538,7 @@ value_attribute_toggled (GtkCellRendererToggle * cell_renderer,
                          gchar * path, GladeEditorProperty * eprop)
 {
   GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (eprop);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
   GtkTreeIter iter;
   GladeIconSources *icon_sources = NULL;
   GtkIconSource *source;
@@ -551,7 +557,7 @@ value_attribute_toggled (GtkCellRendererToggle * cell_renderer,
                       COLUMN_ICON_NAME, &icon_name, COLUMN_LIST_INDEX, &index,
                       edit_column, &edit_column_active, -1);
 
-  glade_property_get (eprop->property, &icon_sources);
+  glade_property_get (property, &icon_sources);
 
   if (icon_sources)
     icon_sources = glade_icon_sources_copy (icon_sources);
@@ -593,6 +599,7 @@ value_attribute_edited (GtkCellRendererText * cell,
                         const gchar * new_text, GladeEditorProperty * eprop)
 {
   GladeEPropIconSources *eprop_sources = GLADE_EPROP_ICON_SOURCES (eprop);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
   GtkTreeIter iter;
   GladeIconSources *icon_sources = NULL;
   GtkIconSource *source;
@@ -612,7 +619,7 @@ value_attribute_edited (GtkCellRendererText * cell,
                       COLUMN_ICON_NAME, &icon_name, COLUMN_LIST_INDEX, &index,
                       -1);
 
-  glade_property_get (eprop->property, &icon_sources);
+  glade_property_get (property, &icon_sources);
 
   if (icon_sources)
     icon_sources = glade_icon_sources_copy (icon_sources);
diff --git a/plugins/gtk+/glade-image-editor.c b/plugins/gtk+/glade-image-editor.c
index fb462d7..f42661d 100644
--- a/plugins/gtk+/glade-image-editor.c
+++ b/plugins/gtk+/glade-image-editor.c
@@ -368,7 +368,7 @@ glade_image_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   image_editor->stock_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), image_editor->stock_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   image_editor->properties = g_list_prepend (image_editor->properties, eprop);
@@ -382,7 +382,7 @@ glade_image_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       (GTK_RADIO_BUTTON (image_editor->stock_radio));
   gtk_box_pack_start (GTK_BOX (hbox), image_editor->icon_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   image_editor->properties = g_list_prepend (image_editor->properties, eprop);
@@ -396,7 +396,7 @@ glade_image_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       (GTK_RADIO_BUTTON (image_editor->stock_radio));
   gtk_box_pack_start (GTK_BOX (hbox), image_editor->file_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 2);
   table_attach (table, GTK_WIDGET (eprop), 1, 2);
   image_editor->properties = g_list_prepend (image_editor->properties, eprop);
@@ -425,7 +425,7 @@ glade_image_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "icon-size", FALSE,
                                                  TRUE);
-  table_attach (table, eprop->item_label, 0, 0);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   image_editor->properties = g_list_prepend (image_editor->properties, eprop);
 
@@ -433,7 +433,7 @@ glade_image_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "pixel-size", FALSE,
                                                  TRUE);
-  table_attach (table, eprop->item_label, 0, 1);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   image_editor->properties = g_list_prepend (image_editor->properties, eprop);
 
diff --git a/plugins/gtk+/glade-image-item-editor.c b/plugins/gtk+/glade-image-item-editor.c
index 6ce6156..f6be1b0 100644
--- a/plugins/gtk+/glade-image-item-editor.c
+++ b/plugins/gtk+/glade-image-item-editor.c
@@ -363,7 +363,7 @@ glade_image_item_editor_new (GladeWidgetAdaptor * adaptor,
   /* The stock item */
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "stock", FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 0);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   item_editor->properties = g_list_prepend (item_editor->properties, eprop);
 
@@ -371,7 +371,7 @@ glade_image_item_editor_new (GladeWidgetAdaptor * adaptor,
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "accel-group", FALSE,
                                                  TRUE);
-  table_attach (table, eprop->item_label, 0, 1);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   item_editor->properties = g_list_prepend (item_editor->properties, eprop);
 
@@ -408,7 +408,7 @@ glade_image_item_editor_new (GladeWidgetAdaptor * adaptor,
   /* The menu label... */
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "label", FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 0);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   item_editor->properties = g_list_prepend (item_editor->properties, eprop);
 
@@ -416,7 +416,7 @@ glade_image_item_editor_new (GladeWidgetAdaptor * adaptor,
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "use-underline",
                                                  FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 1);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   item_editor->properties = g_list_prepend (item_editor->properties, eprop);
 
diff --git a/plugins/gtk+/glade-label-editor.c b/plugins/gtk+/glade-label-editor.c
index 3baf2e9..af270b4 100644
--- a/plugins/gtk+/glade-label-editor.c
+++ b/plugins/gtk+/glade-label-editor.c
@@ -589,7 +589,7 @@ append_label_appearance (GladeLabelEditor * label_editor,
   /* Edit the label itself... */
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "label", FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, 0);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
 
@@ -601,7 +601,7 @@ append_label_appearance (GladeLabelEditor * label_editor,
   label_editor->attributes_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), label_editor->attributes_radio, FALSE,
                       FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
@@ -615,7 +615,7 @@ append_label_appearance (GladeLabelEditor * label_editor,
       (GTK_RADIO_BUTTON (label_editor->attributes_radio));
   gtk_box_pack_start (GTK_BOX (hbox), label_editor->markup_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 2);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
   markup_property = eprop;      /* Its getting into a hidden row on the bottom... */
@@ -629,7 +629,7 @@ append_label_appearance (GladeLabelEditor * label_editor,
       (GTK_RADIO_BUTTON (label_editor->attributes_radio));
   gtk_box_pack_start (GTK_BOX (hbox), label_editor->pattern_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 3);
   table_attach (table, GTK_WIDGET (eprop), 1, 3);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
@@ -673,7 +673,7 @@ append_label_formatting (GladeLabelEditor * label_editor,
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "ellipsize", FALSE,
                                                  TRUE);
-  table_attach (table, eprop->item_label, 0, row);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
 
@@ -681,14 +681,14 @@ append_label_formatting (GladeLabelEditor * label_editor,
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "justify", FALSE,
                                                  TRUE);
-  table_attach (table, eprop->item_label, 0, row);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
 
   /* angle... */
   eprop =
       glade_widget_adaptor_create_eprop_by_name (adaptor, "angle", FALSE, TRUE);
-  table_attach (table, eprop->item_label, 0, row);
+  table_attach (table, glade_editor_property_get_item_label (eprop), 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
 
@@ -700,7 +700,7 @@ append_label_formatting (GladeLabelEditor * label_editor,
   label_editor->width_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), label_editor->width_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
@@ -714,7 +714,7 @@ append_label_formatting (GladeLabelEditor * label_editor,
       (GTK_RADIO_BUTTON (label_editor->width_radio));
   gtk_box_pack_start (GTK_BOX (hbox), label_editor->max_width_radio, FALSE,
                       FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
@@ -769,8 +769,8 @@ append_label_wrapping (GladeLabelEditor * label_editor,
       (GTK_RADIO_BUTTON (label_editor->wrap_free_radio));
   gtk_box_pack_start (GTK_BOX (hbox), label_editor->single_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), single_line_eprop->item_label, TRUE, TRUE,
-                      2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (single_line_eprop), 
+		      TRUE, TRUE, 2);
   table_attach (table, hbox, 0, row++);
   label_editor->properties =
       g_list_prepend (label_editor->properties, single_line_eprop);
@@ -784,7 +784,8 @@ append_label_wrapping (GladeLabelEditor * label_editor,
       (GTK_RADIO_BUTTON (label_editor->wrap_free_radio));
   gtk_box_pack_start (GTK_BOX (hbox), label_editor->wrap_mode_radio, FALSE,
                       FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), 
+		      TRUE, TRUE, 2);
   table_attach (table, hbox, 0, row);
   table_attach (table, GTK_WIDGET (eprop), 1, row++);
   label_editor->properties = g_list_prepend (label_editor->properties, eprop);
diff --git a/plugins/gtk+/glade-model-data.c b/plugins/gtk+/glade-model-data.c
index de3c63d..59e6869 100644
--- a/plugins/gtk+/glade-model-data.c
+++ b/plugins/gtk+/glade-model-data.c
@@ -333,6 +333,7 @@ static gboolean
 update_and_focus_data_tree_idle (GladeEditorProperty * eprop)
 {
   GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
+  GladeProperty       *property = glade_editor_property_get_property (eprop);
 
   eprop_data->want_focus = TRUE;
   eprop_data->want_next_focus = TRUE;
@@ -340,7 +341,7 @@ update_and_focus_data_tree_idle (GladeEditorProperty * eprop)
   update_data_tree_idle (eprop);
 
   /* XXX Have to load it regardless if it changed, this is a slow and redundant way... */
-  glade_editor_property_load (eprop, eprop->property);
+  glade_editor_property_load (eprop, property);
 
   eprop_data->want_next_focus = FALSE;
   eprop_data->want_focus = FALSE;
@@ -386,9 +387,10 @@ glade_eprop_model_data_add_row (GladeEditorProperty * eprop)
   GValue value = { 0, };
   GNode *node = NULL;
   GList *columns = NULL;
+  GladeProperty *property = glade_editor_property_get_property (eprop);
 
-  glade_property_get (eprop->property, &node);
-  glade_widget_property_get (glade_property_get_widget (eprop->property), "columns", &columns);
+  glade_property_get (property, &node);
+  glade_widget_property_get (glade_property_get_widget (property), "columns", &columns);
 
   if (!columns)
     return;
@@ -417,6 +419,7 @@ glade_eprop_model_data_delete_selected (GladeEditorProperty * eprop)
 {
   GtkTreeIter iter;
   GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
   GNode *data_tree = NULL, *row;
   gint rownum = -1;
 
@@ -429,7 +432,7 @@ glade_eprop_model_data_delete_selected (GladeEditorProperty * eprop)
   g_assert (rownum >= 0);
 
   /* if theres a sected row, theres data... */
-  glade_property_get (eprop->property, &data_tree);
+  glade_property_get (property, &data_tree);
   g_assert (data_tree);
 
   data_tree = glade_model_data_tree_copy (data_tree);
@@ -491,11 +494,12 @@ static gboolean
 data_changed_idle (GladeEditorProperty * eprop)
 {
   GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
   GNode *data_tree = NULL, *new_tree, *row;
   GtkTreeIter iter;
   gint rownum;
 
-  glade_property_get (eprop->property, &data_tree);
+  glade_property_get (property, &data_tree);
   g_assert (data_tree);
 
   new_tree = g_node_new (NULL);
@@ -532,7 +536,7 @@ static void
 eprop_treeview_row_deleted (GtkTreeModel * tree_model,
                             GtkTreePath * path, GladeEditorProperty * eprop)
 {
-  if (eprop->loading)
+  if (glade_editor_property_loading (eprop))
     return;
 
   g_idle_add ((GSourceFunc) data_changed_idle, eprop);
@@ -559,10 +563,10 @@ eprop_model_data_generate_store (GladeEditorProperty * eprop)
   GArray *gtypes = g_array_new (FALSE, TRUE, sizeof (GType));
   GtkTreeIter iter;
   gint column_num, row_num;
-  GType index_type = G_TYPE_INT, string_type = G_TYPE_STRING, pointer_type =
-      G_TYPE_POINTER;
+  GType index_type = G_TYPE_INT, string_type = G_TYPE_STRING, pointer_type = G_TYPE_POINTER;
+  GladeProperty *property = glade_editor_property_get_property (eprop);
 
-  glade_property_get (eprop->property, &data_tree);
+  glade_property_get (property, &data_tree);
 
   if (!data_tree || !data_tree->children || !data_tree->children->children)
     return NULL;
@@ -624,12 +628,12 @@ value_toggled (GtkCellRendererToggle * cell,
 {
   GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
   GtkTreeIter iter;
-  gint colnum =
-      GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column-number"));
+  gint colnum = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column-number"));
   gint row;
   GNode *data_tree = NULL;
   GladeModelData *data;
   gboolean active;
+  GladeProperty *property = glade_editor_property_get_property (eprop);
 
   if (!gtk_tree_model_get_iter_from_string
       (GTK_TREE_MODEL (eprop_data->store), &iter, path))
@@ -638,7 +642,7 @@ value_toggled (GtkCellRendererToggle * cell,
   gtk_tree_model_get (GTK_TREE_MODEL (eprop_data->store), &iter,
                       COLUMN_ROW, &row, NUM_COLUMNS + colnum, &active, -1);
 
-  glade_property_get (eprop->property, &data_tree);
+  glade_property_get (property, &data_tree);
 
   /* if we are editing, then there is data in the datatree */
   g_assert (data_tree);
@@ -664,12 +668,12 @@ value_i18n_activate (GladeCellRendererIcon * cell,
 {
   GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
   GtkTreeIter iter;
-  gint colnum =
-      GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column-number"));
+  gint colnum = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column-number"));
   gint row;
   GNode *data_tree = NULL;
   GladeModelData *data;
   gchar *new_text;
+  GladeProperty *property = glade_editor_property_get_property (eprop);
 
   if (!gtk_tree_model_get_iter_from_string
       (GTK_TREE_MODEL (eprop_data->store), &iter, path))
@@ -679,7 +683,7 @@ value_i18n_activate (GladeCellRendererIcon * cell,
   gtk_tree_model_get (GTK_TREE_MODEL (eprop_data->store), &iter,
                       COLUMN_ROW, &row, -1);
 
-  glade_property_get (eprop->property, &data_tree);
+  glade_property_get (property, &data_tree);
 
   /* if we are editing, then there is data in the datatree */
   g_assert (data_tree);
@@ -720,12 +724,12 @@ value_text_edited (GtkCellRendererText * cell,
 {
   GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
   GtkTreeIter iter;
-  gint colnum =
-      GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column-number"));
+  gint colnum = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column-number"));
   gint row;
   GNode *data_tree = NULL;
   GladeModelData *data;
   GValue *value;
+  GladeProperty *property = glade_editor_property_get_property (eprop);
 
   if (!gtk_tree_model_get_iter_from_string
       (GTK_TREE_MODEL (eprop_data->store), &iter, path))
@@ -734,7 +738,7 @@ value_text_edited (GtkCellRendererText * cell,
   gtk_tree_model_get (GTK_TREE_MODEL (eprop_data->store), &iter,
                       COLUMN_ROW, &row, -1);
 
-  glade_property_get (eprop->property, &data_tree);
+  glade_property_get (property, &data_tree);
 
   /* if we are editing, then there is data in the datatree */
   g_assert (data_tree);
@@ -750,13 +754,13 @@ value_text_edited (GtkCellRendererText * cell,
                                            (G_VALUE_TYPE (&data->value),
                                             new_text),
                                            glade_widget_get_project
-					   (glade_property_get_widget (eprop->property)),
-                                           glade_property_get_widget (eprop->property));
+					   (glade_property_get_widget (property)),
+                                           glade_property_get_widget (property));
   else
     value =
         glade_utils_value_from_string (G_VALUE_TYPE (&data->value), new_text,
-                                       glade_widget_get_project (glade_property_get_widget (eprop->property)),
-                                       glade_property_get_widget (eprop->property));
+                                       glade_widget_get_project (glade_property_get_widget (property)),
+                                       glade_property_get_widget (property));
 
 
   g_value_copy (value, &data->value);
@@ -986,12 +990,13 @@ static void
 eprop_model_data_generate_columns (GladeEditorProperty * eprop)
 {
   GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop);
+  GladeProperty *property = glade_editor_property_get_property (eprop);
   GladeModelData *iter_data;
   GtkTreeViewColumn *column;
   GNode *data_tree = NULL, *iter_node;
   gint colnum;
 
-  glade_property_get (eprop->property, &data_tree);
+  glade_property_get (property, &data_tree);
 
   if (!data_tree || !data_tree->children || !data_tree->children->children)
     return;
diff --git a/plugins/gtk+/glade-store-editor.c b/plugins/gtk+/glade-store-editor.c
index 0c23466..8211dd3 100644
--- a/plugins/gtk+/glade-store-editor.c
+++ b/plugins/gtk+/glade-store-editor.c
@@ -181,7 +181,7 @@ glade_store_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
                                                  TRUE);
   store_editor->properties = g_list_prepend (store_editor->properties, eprop);
   frame = gtk_frame_new (NULL);
-  gtk_frame_set_label_widget (GTK_FRAME (frame), eprop->item_label);
+  gtk_frame_set_label_widget (GTK_FRAME (frame), glade_editor_property_get_item_label (eprop));
   gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
   gtk_box_pack_start (GTK_BOX (store_editor), frame, FALSE, FALSE, 12);
 
@@ -214,7 +214,7 @@ glade_store_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
       store_editor->properties =
           g_list_prepend (store_editor->properties, eprop);
       frame = gtk_frame_new (NULL);
-      gtk_frame_set_label_widget (GTK_FRAME (frame), eprop->item_label);
+      gtk_frame_set_label_widget (GTK_FRAME (frame), glade_editor_property_get_item_label (eprop));
       gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
       gtk_box_pack_start (GTK_BOX (store_editor), frame, FALSE, FALSE, 12);
 
diff --git a/plugins/gtk+/glade-tool-button-editor.c b/plugins/gtk+/glade-tool-button-editor.c
index 9d2d7dd..3f8e947 100644
--- a/plugins/gtk+/glade-tool-button-editor.c
+++ b/plugins/gtk+/glade-tool-button-editor.c
@@ -453,7 +453,7 @@ glade_tool_button_editor_new (GladeWidgetAdaptor * adaptor,
   button_editor->standard_label_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), button_editor->standard_label_radio,
                       FALSE, FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
@@ -467,7 +467,7 @@ glade_tool_button_editor_new (GladeWidgetAdaptor * adaptor,
       (GTK_RADIO_BUTTON (button_editor->standard_label_radio));
   gtk_box_pack_start (GTK_BOX (hbox), button_editor->custom_label_radio, FALSE,
                       FALSE, 2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
@@ -501,7 +501,7 @@ glade_tool_button_editor_new (GladeWidgetAdaptor * adaptor,
   button_editor->stock_radio = gtk_radio_button_new (NULL);
   gtk_box_pack_start (GTK_BOX (hbox), button_editor->stock_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 0);
   table_attach (table, GTK_WIDGET (eprop), 1, 0);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
@@ -515,7 +515,7 @@ glade_tool_button_editor_new (GladeWidgetAdaptor * adaptor,
       (GTK_RADIO_BUTTON (button_editor->stock_radio));
   gtk_box_pack_start (GTK_BOX (hbox), button_editor->icon_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 1);
   table_attach (table, GTK_WIDGET (eprop), 1, 1);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);
@@ -529,7 +529,7 @@ glade_tool_button_editor_new (GladeWidgetAdaptor * adaptor,
       (GTK_RADIO_BUTTON (button_editor->stock_radio));
   gtk_box_pack_start (GTK_BOX (hbox), button_editor->custom_radio, FALSE, FALSE,
                       2);
-  gtk_box_pack_start (GTK_BOX (hbox), eprop->item_label, TRUE, TRUE, 2);
+  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
   table_attach (table, hbox, 0, 2);
   table_attach (table, GTK_WIDGET (eprop), 1, 2);
   button_editor->properties = g_list_prepend (button_editor->properties, eprop);



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