[glade] GladeEntryEditor: Ported to use GtkBuilder composite templates.



commit 0d903542cdf433d9c9be3b526ab85e2c9469afe5
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Mon Apr 22 00:46:29 2013 +0900

    GladeEntryEditor: Ported to use GtkBuilder composite templates.
    
    The entry editor is now much improved and better formatted, additionally
    we use a check mark for 'use markup' instead of presenting both
    tooltip-markup / tooltip-text properties (as we do in GladeWidgetEditor).
    
    A few other improvements were made too, don't allow editing 'shadow-type'
    if 'has-frame' is FALSE, don't allow editing 'invisible-char' if 'visibility'
    is TRUE.

 plugins/gtk+/Makefile.am                       |    1 +
 plugins/gtk+/glade-entry-editor.c              |  635 ++++------
 plugins/gtk+/glade-entry-editor.h              |   23 +-
 plugins/gtk+/glade-entry-editor.ui             | 1585 ++++++++++++++++++++++++
 plugins/gtk+/glade-gtk-resources.gresource.xml |    1 +
 plugins/gtk+/glade-gtk.c                       |   54 +-
 plugins/gtk+/gtk+.xml.in                       |   39 +-
 po/POTFILES.in                                 |    1 +
 8 files changed, 1892 insertions(+), 447 deletions(-)
---
diff --git a/plugins/gtk+/Makefile.am b/plugins/gtk+/Makefile.am
index a0b79b2..127ab63 100644
--- a/plugins/gtk+/Makefile.am
+++ b/plugins/gtk+/Makefile.am
@@ -103,6 +103,7 @@ BUILT_SOURCES =             \
 UI_FILES =                             \
        glade-activatable-editor.ui     \
        glade-button-editor.ui          \
+       glade-entry-editor.ui           \
        glade-image-editor.ui           \
        glade-label-editor.ui           \
        glade-widget-editor.ui
diff --git a/plugins/gtk+/glade-entry-editor.c b/plugins/gtk+/glade-entry-editor.c
index 7b31695..70711db 100644
--- a/plugins/gtk+/glade-entry-editor.c
+++ b/plugins/gtk+/glade-entry-editor.c
@@ -27,83 +27,146 @@
 #include "glade-entry-editor.h"
 #include "glade-image-editor.h" // For GladeImageEditMode
 
+static void glade_entry_editor_editable_init (GladeEditableIface *iface);
+static void glade_entry_editor_grab_focus    (GtkWidget          *widget);
+
+/* Callbacks */
+static void text_toggled                     (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void buffer_toggled                   (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void primary_stock_toggled            (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void primary_icon_name_toggled        (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void primary_pixbuf_toggled           (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void primary_tooltip_markup_toggled   (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void secondary_stock_toggled          (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void secondary_icon_name_toggled      (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void secondary_pixbuf_toggled         (GtkWidget *widget, GladeEntryEditor *entry_editor);
+static void secondary_tooltip_markup_toggled (GtkWidget *widget, GladeEntryEditor *entry_editor);
+
+struct _GladeEntryEditorPrivate
+{
+  GtkWidget *embed;
+
+  GtkWidget *text_radio;
+  GtkWidget *buffer_radio;
+
+  GtkWidget *primary_pixbuf_radio;
+  GtkWidget *primary_stock_radio;
+  GtkWidget *primary_icon_name_radio;
+  GtkWidget *primary_tooltip_markup_check;
+  GtkWidget *primary_tooltip_notebook;
+  GtkWidget *primary_tooltip_editor_notebook;
+
+  GtkWidget *secondary_pixbuf_radio;
+  GtkWidget *secondary_stock_radio;
+  GtkWidget *secondary_icon_name_radio;
+  GtkWidget *secondary_tooltip_markup_check;
+  GtkWidget *secondary_tooltip_notebook;
+  GtkWidget *secondary_tooltip_editor_notebook;
 
-static void glade_entry_editor_finalize (GObject * object);
+};
 
-static void glade_entry_editor_editable_init (GladeEditableIface * iface);
+#define TOOLTIP_TEXT_PAGE   0
+#define TOOLTIP_MARKUP_PAGE 1
 
-static void glade_entry_editor_grab_focus (GtkWidget * widget);
+#define ICON_MODE_NAME(primary)       ((primary) ? "primary-icon-mode"    : "secondary-icon-mode")
+#define PIXBUF_NAME(primary)          ((primary) ? "primary-icon-pixbuf"  : "secondary-icon-pixbuf")
+#define ICON_NAME_NAME(primary)       ((primary) ? "primary-icon-name"    : "secondary-icon-name")
+#define STOCK_NAME(primary)           ((primary) ? "primary-icon-stock"   : "secondary-icon-stock")
+
+#define TOOLTIP_MARKUP_NAME(primary)  ((primary) ? "primary-icon-tooltip-markup"  : 
"secondary-icon-tooltip-markup")
+#define TOOLTIP_TEXT_NAME(primary)    ((primary) ? "primary-icon-tooltip-text"    : 
"secondary-icon-tooltip-text")
+#define TOOLTIP_CONTROL_NAME(primary) ((primary) ? "glade-primary-tooltip-markup" : 
"glade-secondary-tooltip-markup")
 
 static GladeEditableIface *parent_editable_iface;
 
-G_DEFINE_TYPE_WITH_CODE (GladeEntryEditor, glade_entry_editor, GTK_TYPE_VBOX,
+G_DEFINE_TYPE_WITH_CODE (GladeEntryEditor, glade_entry_editor, GLADE_TYPE_EDITOR_SKELETON,
                          G_IMPLEMENT_INTERFACE (GLADE_TYPE_EDITABLE,
                                                 glade_entry_editor_editable_init));
 
-
 static void
 glade_entry_editor_class_init (GladeEntryEditorClass * klass)
 {
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GObjectClass   *object_class = G_OBJECT_CLASS (klass);
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
-  object_class->finalize = glade_entry_editor_finalize;
   widget_class->grab_focus = glade_entry_editor_grab_focus;
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/gladegtk/glade-entry-editor.ui");
+
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, embed);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, text_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, buffer_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, primary_stock_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, primary_icon_name_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, primary_pixbuf_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, primary_tooltip_markup_check);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, primary_tooltip_notebook);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, primary_tooltip_editor_notebook);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, secondary_stock_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, secondary_icon_name_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, secondary_pixbuf_radio);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, secondary_tooltip_markup_check);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, secondary_tooltip_notebook);
+  gtk_widget_class_bind_child (widget_class, GladeEntryEditorPrivate, secondary_tooltip_editor_notebook);
+
+  gtk_widget_class_bind_callback (widget_class, text_toggled);
+  gtk_widget_class_bind_callback (widget_class, buffer_toggled);
+  gtk_widget_class_bind_callback (widget_class, primary_stock_toggled);
+  gtk_widget_class_bind_callback (widget_class, primary_icon_name_toggled);
+  gtk_widget_class_bind_callback (widget_class, primary_pixbuf_toggled);
+  gtk_widget_class_bind_callback (widget_class, primary_tooltip_markup_toggled);
+  gtk_widget_class_bind_callback (widget_class, secondary_stock_toggled);
+  gtk_widget_class_bind_callback (widget_class, secondary_icon_name_toggled);
+  gtk_widget_class_bind_callback (widget_class, secondary_pixbuf_toggled);
+  gtk_widget_class_bind_callback (widget_class, secondary_tooltip_markup_toggled);
+
+  g_type_class_add_private (object_class, sizeof (GladeEntryEditorPrivate));  
 }
 
 static void
 glade_entry_editor_init (GladeEntryEditor * self)
 {
+  self->priv = 
+    G_TYPE_INSTANCE_GET_PRIVATE (self,
+                                GLADE_TYPE_ENTRY_EDITOR,
+                                GladeEntryEditorPrivate);
+
+  gtk_widget_init_template (GTK_WIDGET (self));
 }
 
 static void
 glade_entry_editor_load (GladeEditable * editable, GladeWidget * widget)
 {
   GladeEntryEditor *entry_editor = GLADE_ENTRY_EDITOR (editable);
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeImageEditMode icon_mode;
   gboolean use_buffer = FALSE;
-  GList *l;
+  gboolean primary_markup = FALSE;
+  gboolean secondary_markup = FALSE;
 
   /* Chain up to default implementation */
   parent_editable_iface->load (editable, widget);
 
-  /* load the embedded editable... */
-  if (entry_editor->embed)
-    glade_editable_load (GLADE_EDITABLE (entry_editor->embed), widget);
-
-  for (l = entry_editor->properties; l; l = l->next)
-    glade_editor_property_load_by_widget (GLADE_EDITOR_PROPERTY (l->data),
-                                          widget);
-
-
   if (widget)
     {
       glade_widget_property_get (widget, "use-entry-buffer", &use_buffer);
       if (use_buffer)
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                      (entry_editor->buffer_radio), TRUE);
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->buffer_radio), TRUE);
       else
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                      (entry_editor->text_radio), TRUE);
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->text_radio), TRUE);
 
 
       glade_widget_property_get (widget, "primary-icon-mode", &icon_mode);
       switch (icon_mode)
         {
           case GLADE_IMAGE_MODE_STOCK:
-            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                          (entry_editor->primary_stock_radio),
-                                          TRUE);
+            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->primary_stock_radio), TRUE);
             break;
           case GLADE_IMAGE_MODE_ICON:
-            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                          (entry_editor->
-                                           primary_icon_name_radio), TRUE);
+            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->primary_icon_name_radio), TRUE);
             break;
           case GLADE_IMAGE_MODE_FILENAME:
-            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                          (entry_editor->primary_pixbuf_radio),
-                                          TRUE);
+            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->primary_pixbuf_radio), TRUE);
             break;
           default:
             break;
@@ -113,23 +176,33 @@ glade_entry_editor_load (GladeEditable * editable, GladeWidget * widget)
       switch (icon_mode)
         {
           case GLADE_IMAGE_MODE_STOCK:
-            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                          (entry_editor->secondary_stock_radio),
-                                          TRUE);
+            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->secondary_stock_radio), TRUE);
             break;
           case GLADE_IMAGE_MODE_ICON:
-            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                          (entry_editor->
-                                           secondary_icon_name_radio), TRUE);
+            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->secondary_icon_name_radio), TRUE);
             break;
           case GLADE_IMAGE_MODE_FILENAME:
-            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                          (entry_editor->
-                                           secondary_pixbuf_radio), TRUE);
+            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->secondary_pixbuf_radio), TRUE);
             break;
           default:
             break;
         }
+
+      /* Fix up notebook pages and check button state for primary / secondary tooltip markup */
+      glade_widget_property_get (widget, TOOLTIP_CONTROL_NAME (TRUE), &primary_markup);
+      glade_widget_property_get (widget, TOOLTIP_CONTROL_NAME (FALSE), &secondary_markup);
+
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->primary_tooltip_markup_check), primary_markup);
+      gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->primary_tooltip_notebook),
+                                    primary_markup ? TOOLTIP_MARKUP_PAGE : TOOLTIP_TEXT_PAGE);
+      gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->primary_tooltip_editor_notebook),
+                                    primary_markup ? TOOLTIP_MARKUP_PAGE : TOOLTIP_TEXT_PAGE);
+
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->secondary_tooltip_markup_check), 
secondary_markup);
+      gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->secondary_tooltip_notebook),
+                                    secondary_markup ? TOOLTIP_MARKUP_PAGE : TOOLTIP_TEXT_PAGE);
+      gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->secondary_tooltip_editor_notebook),
+                                    secondary_markup ? TOOLTIP_MARKUP_PAGE : TOOLTIP_TEXT_PAGE);
     }
 }
 
@@ -138,46 +211,30 @@ glade_entry_editor_set_show_name (GladeEditable * editable, gboolean show_name)
 {
   GladeEntryEditor *entry_editor = GLADE_ENTRY_EDITOR (editable);
 
-  glade_editable_set_show_name (GLADE_EDITABLE (entry_editor->embed),
-                                show_name);
+  glade_editable_set_show_name (GLADE_EDITABLE (entry_editor->priv->embed), show_name);
 }
 
 static void
 glade_entry_editor_editable_init (GladeEditableIface * iface)
 {
-  parent_editable_iface = g_type_default_interface_peek (GLADE_TYPE_EDITABLE);
+  parent_editable_iface = g_type_interface_peek_parent (iface);
 
   iface->load = glade_entry_editor_load;
   iface->set_show_name = glade_entry_editor_set_show_name;
 }
 
 static void
-glade_entry_editor_finalize (GObject * object)
-{
-  GladeEntryEditor *entry_editor = GLADE_ENTRY_EDITOR (object);
-
-  if (entry_editor->properties)
-    g_list_free (entry_editor->properties);
-  entry_editor->properties = NULL;
-  entry_editor->embed = NULL;
-
-  glade_editable_load (GLADE_EDITABLE (object), NULL);
-
-  G_OBJECT_CLASS (glade_entry_editor_parent_class)->finalize (object);
-}
-
-static void
 glade_entry_editor_grab_focus (GtkWidget * widget)
 {
   GladeEntryEditor *entry_editor = GLADE_ENTRY_EDITOR (widget);
 
-  gtk_widget_grab_focus (entry_editor->embed);
+  gtk_widget_grab_focus (entry_editor->priv->embed);
 }
 
-
 static void
 text_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeProperty *property;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
@@ -185,7 +242,7 @@ text_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->text_radio)))
+      (GTK_TOGGLE_BUTTON (priv->text_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -196,9 +253,7 @@ text_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
   property = glade_widget_get_property (gwidget, "buffer");
   glade_command_set_property (property, NULL);
 
-  property =
-      glade_widget_get_property (gwidget,
-                                 "use-entry-buffer");
+  property = glade_widget_get_property (gwidget, "use-entry-buffer");
   glade_command_set_property (property, FALSE);
 
   /* Text will only take effect after setting the property under the hood */
@@ -219,6 +274,7 @@ text_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 static void
 buffer_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeProperty *property;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
@@ -226,7 +282,7 @@ buffer_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->buffer_radio)))
+      (GTK_TOGGLE_BUTTON (priv->buffer_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -238,8 +294,7 @@ buffer_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
   property = glade_widget_get_property (gwidget, "text");
   glade_command_set_property (property, NULL);
 
-  property =
-      glade_widget_get_property (gwidget, "use-entry-buffer");
+  property = glade_widget_get_property (gwidget, "use-entry-buffer");
   glade_command_set_property (property, TRUE);
 
   glade_command_pop_group ();
@@ -250,12 +305,6 @@ buffer_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
   glade_editable_load (GLADE_EDITABLE (entry_editor), gwidget);
 }
 
-
-#define ICON_MODE_NAME(primary)   ((primary) ? "primary-icon-mode"    : "secondary-icon-mode")
-#define PIXBUF_NAME(primary)      ((primary) ? "primary-icon-pixbuf"  : "secondary-icon-pixbuf")
-#define ICON_NAME_NAME(primary)   ((primary) ? "primary-icon-name"    : "secondary-icon-name")
-#define STOCK_NAME(primary)       ((primary) ? "primary-icon-stock"   : "secondary-icon-stock")
-
 static void
 set_stock_mode (GladeEntryEditor * entry_editor, gboolean primary)
 {
@@ -310,13 +359,14 @@ set_pixbuf_mode (GladeEntryEditor * entry_editor, gboolean primary)
 static void
 primary_stock_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
   if (glade_editable_loading (GLADE_EDITABLE (entry_editor)) || !gwidget)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->primary_stock_radio)))
+      (GTK_TOGGLE_BUTTON (priv->primary_stock_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -332,17 +382,17 @@ primary_stock_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
   glade_editable_load (GLADE_EDITABLE (entry_editor), gwidget);
 }
 
-
 static void
 primary_icon_name_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
   if (glade_editable_loading (GLADE_EDITABLE (entry_editor)) || !gwidget)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->primary_icon_name_radio)))
+      (GTK_TOGGLE_BUTTON (priv->primary_icon_name_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -361,13 +411,14 @@ primary_icon_name_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 static void
 primary_pixbuf_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
   if (glade_editable_loading (GLADE_EDITABLE (entry_editor)) || !gwidget)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->primary_pixbuf_radio)))
+      (GTK_TOGGLE_BUTTON (priv->primary_pixbuf_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -383,17 +434,17 @@ primary_pixbuf_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
   glade_editable_load (GLADE_EDITABLE (entry_editor), gwidget);
 }
 
-
 static void
 secondary_stock_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
   if (glade_editable_loading (GLADE_EDITABLE (entry_editor)) || !gwidget)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->secondary_stock_radio)))
+      (GTK_TOGGLE_BUTTON (priv->secondary_stock_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -409,18 +460,18 @@ secondary_stock_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
   glade_editable_load (GLADE_EDITABLE (entry_editor), gwidget);
 }
 
-
 static void
 secondary_icon_name_toggled (GtkWidget * widget,
                              GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
   if (glade_editable_loading (GLADE_EDITABLE (entry_editor)) || !gwidget)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->secondary_icon_name_radio)))
+      (GTK_TOGGLE_BUTTON (priv->secondary_icon_name_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -439,13 +490,14 @@ secondary_icon_name_toggled (GtkWidget * widget,
 static void
 secondary_pixbuf_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
 {
+  GladeEntryEditorPrivate *priv = entry_editor->priv;
   GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
 
   if (glade_editable_loading (GLADE_EDITABLE (entry_editor)) || !gwidget)
     return;
 
   if (!gtk_toggle_button_get_active
-      (GTK_TOGGLE_BUTTON (entry_editor->secondary_pixbuf_radio)))
+      (GTK_TOGGLE_BUTTON (priv->secondary_pixbuf_radio)))
     return;
 
   glade_editable_block (GLADE_EDITABLE (entry_editor));
@@ -461,329 +513,116 @@ secondary_pixbuf_toggled (GtkWidget * widget, GladeEntryEditor * entry_editor)
   glade_editable_load (GLADE_EDITABLE (entry_editor), gwidget);
 }
 
+static void
+transfer_text_property (GladeWidget *gwidget,
+                       const gchar *from,
+                       const gchar *to)
+{
+  gchar *value = NULL;
+  gchar *comment = NULL, *context = NULL;
+  gboolean translatable = FALSE;
+  GladeProperty *prop_from;
+  GladeProperty *prop_to;
+
+  prop_from = glade_widget_get_property (gwidget, from);
+  prop_to   = glade_widget_get_property (gwidget, to);
+  g_assert (prop_from);
+  g_assert (prop_to);
+
+  glade_property_get (prop_from, &value);
+  comment      = (gchar *)glade_property_i18n_get_comment (prop_from);
+  context      = (gchar *)glade_property_i18n_get_context (prop_from);
+  translatable = glade_property_i18n_get_translatable (prop_from);
+
+  /* Get our own copies */
+  value   = g_strdup (value);
+  context = g_strdup (context);
+  comment = g_strdup (comment);
+
+  /* Set target values */
+  glade_command_set_property (prop_to, value);
+  glade_command_set_i18n (prop_to, translatable, context, comment);
+
+  /* Clear source values */
+  glade_command_set_property (prop_from, NULL);
+  glade_command_set_i18n (prop_from, TRUE, NULL, NULL);
+
+  g_free (value);
+  g_free (comment);
+  g_free (context);
+}
 
 static void
-table_attach (GtkWidget * table, GtkWidget * child, gint pos, gint row)
+toggle_tooltip_markup (GladeEntryEditor *entry_editor,
+                      GtkWidget        *widget,
+                      gboolean          primary)
 {
-  gtk_grid_attach (GTK_GRID (table), child, pos, row, 1, 1);
+  GladeProperty *property;
+  GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (entry_editor));
+  gboolean active;
 
-  if (pos)
-    gtk_widget_set_hexpand (child, TRUE);
+  if (glade_editable_loading (GLADE_EDITABLE (entry_editor)) || !gwidget)
+    return;
+
+  active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+
+  glade_editable_block (GLADE_EDITABLE (entry_editor));
+
+  if (active)
+    {
+      if (primary)
+       glade_command_push_group (_("Setting primary icon of %s to use tooltip markup"),
+                                 glade_widget_get_name (gwidget));
+      else
+       glade_command_push_group (_("Setting secondary icon of %s to use tooltip markup"),
+                                 glade_widget_get_name (gwidget));
+
+      transfer_text_property (gwidget, TOOLTIP_TEXT_NAME (primary), TOOLTIP_MARKUP_NAME (primary));
+
+      property = glade_widget_get_property (gwidget, TOOLTIP_CONTROL_NAME (primary));
+      glade_command_set_property (property, TRUE);
+
+      glade_command_pop_group ();
+    }
+  else
+    {
+      if (primary)
+       glade_command_push_group (_("Setting primary icon of %s to not use tooltip markup"),
+                                 glade_widget_get_name (gwidget));
+      else
+       glade_command_push_group (_("Setting secondary icon of %s to not use tooltip markup"),
+                                 glade_widget_get_name (gwidget));
+
+      transfer_text_property (gwidget, TOOLTIP_MARKUP_NAME (primary), TOOLTIP_TEXT_NAME (primary));
+
+      property = glade_widget_get_property (gwidget, TOOLTIP_CONTROL_NAME (primary));
+      glade_command_set_property (property, FALSE);
+
+      glade_command_pop_group ();
+    }
+
+  glade_editable_unblock (GLADE_EDITABLE (entry_editor));
+
+  /* reload widgets and sensitivity and stuff... */
+  glade_editable_load (GLADE_EDITABLE (entry_editor), gwidget);
+}
+
+static void
+primary_tooltip_markup_toggled (GtkWidget        *widget,
+                               GladeEntryEditor *entry_editor)
+{
+  toggle_tooltip_markup (entry_editor, widget, TRUE);
+}
+
+static void
+secondary_tooltip_markup_toggled (GtkWidget        *widget,
+                                 GladeEntryEditor *entry_editor)
+{
+  toggle_tooltip_markup (entry_editor, widget, FALSE);
 }
 
 GtkWidget *
-glade_entry_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
+glade_entry_editor_new (void)
 {
-  GladeEntryEditor *entry_editor;
-  GladeEditorProperty *eprop;
-  GtkWidget *table, *frame, *alignment, *label, *hbox;
-  gchar *str;
-
-  g_return_val_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor), NULL);
-  g_return_val_if_fail (GLADE_IS_EDITABLE (embed), NULL);
-
-  entry_editor = g_object_new (GLADE_TYPE_ENTRY_EDITOR, NULL);
-  entry_editor->embed = GTK_WIDGET (embed);
-
-  /* Pack the parent on top... */
-  gtk_box_pack_start (GTK_BOX (entry_editor), GTK_WIDGET (embed), FALSE, FALSE,
-                      0);
-
-
-  /* Text... */
-  str = g_strdup_printf ("<b>%s</b>", _("Text"));
-  label = gtk_label_new (str);
-  gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
-  g_free (str);
-  frame = gtk_frame_new (NULL);
-  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
-  gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-  gtk_box_pack_start (GTK_BOX (entry_editor), frame, FALSE, FALSE, 8);
-
-  alignment = gtk_alignment_new (0.5F, 0.5F, 1.0F, 1.0F);
-  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 12, 0);
-  gtk_container_add (GTK_CONTAINER (frame), alignment);
-
-  table = gtk_grid_new ();
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (table),
-                                  GTK_ORIENTATION_VERTICAL);
-  gtk_grid_set_row_spacing (GTK_GRID (table), 4);
-  gtk_container_add (GTK_CONTAINER (alignment), table);
-
-  /* Text */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, "text", FALSE, TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  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), 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);
-
-  /* Buffer */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, "buffer", FALSE,
-                                                 TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  entry_editor->buffer_radio = gtk_radio_button_new_from_widget
-      (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), 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);
-
-  /* Progress... */
-  str = g_strdup_printf ("<b>%s</b>", _("Progress"));
-  label = gtk_label_new (str);
-  gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
-  g_free (str);
-  frame = gtk_frame_new (NULL);
-  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
-  gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-  gtk_box_pack_start (GTK_BOX (entry_editor), frame, FALSE, FALSE, 8);
-
-  alignment = gtk_alignment_new (0.5F, 0.5F, 1.0F, 1.0F);
-  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 12, 0);
-  gtk_container_add (GTK_CONTAINER (frame), alignment);
-
-  table = gtk_grid_new ();
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (table),
-                                  GTK_ORIENTATION_VERTICAL);
-  gtk_grid_set_row_spacing (GTK_GRID (table), 4);
-  gtk_container_add (GTK_CONTAINER (alignment), table);
-
-  /* Fraction */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, "progress-fraction",
-                                                 FALSE, TRUE);
-  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);
-
-  /* Pulse */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, "progress-pulse-step",
-                                                 FALSE, TRUE);
-  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);
-
-  /* Primary icon... */
-  str = g_strdup_printf ("<b>%s</b>", _("Primary icon"));
-  label = gtk_label_new (str);
-  gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
-  g_free (str);
-  frame = gtk_frame_new (NULL);
-  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
-  gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-  gtk_box_pack_start (GTK_BOX (entry_editor), frame, FALSE, FALSE, 8);
-
-  alignment = gtk_alignment_new (0.5F, 0.5F, 1.0F, 1.0F);
-  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 12, 0);
-  gtk_container_add (GTK_CONTAINER (frame), alignment);
-
-  table = gtk_grid_new ();
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (table),
-                                  GTK_ORIENTATION_VERTICAL);
-  gtk_grid_set_row_spacing (GTK_GRID (table), 4);
-  gtk_container_add (GTK_CONTAINER (alignment), table);
-
-  /* Pixbuf */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, PIXBUF_NAME (TRUE),
-                                                 FALSE, TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  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), 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);
-
-  /* Stock */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, STOCK_NAME (TRUE),
-                                                 FALSE, TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  entry_editor->primary_stock_radio = gtk_radio_button_new_from_widget
-      (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), 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);
-
-  /* Icon name */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, ICON_NAME_NAME (TRUE),
-                                                 FALSE, TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  entry_editor->primary_icon_name_radio = gtk_radio_button_new_from_widget
-      (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), 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);
-
-  /* Other primary icon related properties */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "primary-icon-activatable",
-                                                 FALSE, TRUE);
-  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);
-
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "primary-icon-sensitive",
-                                                 FALSE, TRUE);
-  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);
-
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "primary-icon-tooltip-text",
-                                                 FALSE, TRUE);
-  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);
-
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "primary-icon-tooltip-markup",
-                                                 FALSE, TRUE);
-  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);
-
-  /* Secondary icon... */
-  str = g_strdup_printf ("<b>%s</b>", _("Secondary icon"));
-  label = gtk_label_new (str);
-  gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
-  g_free (str);
-  frame = gtk_frame_new (NULL);
-  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
-  gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-  gtk_box_pack_start (GTK_BOX (entry_editor), frame, FALSE, FALSE, 8);
-
-  alignment = gtk_alignment_new (0.5F, 0.5F, 1.0F, 1.0F);
-  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 12, 0);
-  gtk_container_add (GTK_CONTAINER (frame), alignment);
-
-  table = gtk_grid_new ();
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (table),
-                                  GTK_ORIENTATION_VERTICAL);
-  gtk_grid_set_row_spacing (GTK_GRID (table), 4);
-  gtk_container_add (GTK_CONTAINER (alignment), table);
-
-  /* Pixbuf */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, PIXBUF_NAME (FALSE),
-                                                 FALSE, TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  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), 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);
-
-  /* Stock */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor, STOCK_NAME (FALSE),
-                                                 FALSE, TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  entry_editor->secondary_stock_radio = gtk_radio_button_new_from_widget
-      (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), 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);
-
-  /* Icon name */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 ICON_NAME_NAME (FALSE), FALSE,
-                                                 TRUE);
-  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-  entry_editor->secondary_icon_name_radio = gtk_radio_button_new_from_widget
-      (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), 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);
-
-  /* Other secondary icon related properties */
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "secondary-icon-activatable",
-                                                 FALSE, TRUE);
-  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);
-
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "secondary-icon-sensitive",
-                                                 FALSE, TRUE);
-  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);
-
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "secondary-icon-tooltip-text",
-                                                 FALSE, TRUE);
-  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);
-
-  eprop =
-      glade_widget_adaptor_create_eprop_by_name (adaptor,
-                                                 "secondary-icon-tooltip-markup",
-                                                 FALSE, TRUE);
-  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);
-
-  gtk_widget_show_all (GTK_WIDGET (entry_editor));
-
-
-  /* Connect radio button signals... */
-  g_signal_connect (G_OBJECT (entry_editor->text_radio), "toggled",
-                    G_CALLBACK (text_toggled), entry_editor);
-  g_signal_connect (G_OBJECT (entry_editor->buffer_radio), "toggled",
-                    G_CALLBACK (buffer_toggled), entry_editor);
-
-  g_signal_connect (G_OBJECT (entry_editor->primary_stock_radio), "toggled",
-                    G_CALLBACK (primary_stock_toggled), entry_editor);
-  g_signal_connect (G_OBJECT (entry_editor->primary_icon_name_radio), "toggled",
-                    G_CALLBACK (primary_icon_name_toggled), entry_editor);
-  g_signal_connect (G_OBJECT (entry_editor->primary_pixbuf_radio), "toggled",
-                    G_CALLBACK (primary_pixbuf_toggled), entry_editor);
-
-  g_signal_connect (G_OBJECT (entry_editor->secondary_stock_radio), "toggled",
-                    G_CALLBACK (secondary_stock_toggled), entry_editor);
-  g_signal_connect (G_OBJECT (entry_editor->secondary_icon_name_radio),
-                    "toggled", G_CALLBACK (secondary_icon_name_toggled),
-                    entry_editor);
-  g_signal_connect (G_OBJECT (entry_editor->secondary_pixbuf_radio), "toggled",
-                    G_CALLBACK (secondary_pixbuf_toggled), entry_editor);
-
-  return GTK_WIDGET (entry_editor);
+  return g_object_new (GLADE_TYPE_ENTRY_EDITOR, NULL);
 }
diff --git a/plugins/gtk+/glade-entry-editor.h b/plugins/gtk+/glade-entry-editor.h
index 6819b72..efd1329 100644
--- a/plugins/gtk+/glade-entry-editor.h
+++ b/plugins/gtk+/glade-entry-editor.h
@@ -34,35 +34,22 @@ G_BEGIN_DECLS
 
 typedef struct _GladeEntryEditor        GladeEntryEditor;
 typedef struct _GladeEntryEditorClass   GladeEntryEditorClass;
+typedef struct _GladeEntryEditorPrivate GladeEntryEditorPrivate;
 
 struct _GladeEntryEditor
 {
-       GtkVBox  parent;
+  GladeEditorSkeleton  parent;
 
-       GtkWidget *embed;
-
-       GtkWidget *text_radio;
-       GtkWidget *buffer_radio;
-
-       GtkWidget *primary_pixbuf_radio;
-       GtkWidget *primary_stock_radio;
-       GtkWidget *primary_icon_name_radio;
-
-       GtkWidget *secondary_pixbuf_radio;
-       GtkWidget *secondary_stock_radio;
-       GtkWidget *secondary_icon_name_radio;
-
-       GList     *properties;
+  GladeEntryEditorPrivate *priv;
 };
 
 struct _GladeEntryEditorClass
 {
-       GtkVBoxClass parent;
+  GladeEditorSkeletonClass parent;
 };
 
 GType            glade_entry_editor_get_type (void) G_GNUC_CONST;
-GtkWidget       *glade_entry_editor_new      (GladeWidgetAdaptor *adaptor,
-                                             GladeEditable      *editable);
+GtkWidget       *glade_entry_editor_new      (void);
 
 G_END_DECLS
 
diff --git a/plugins/gtk+/glade-entry-editor.ui b/plugins/gtk+/glade-entry-editor.ui
new file mode 100644
index 0000000..7599143
--- /dev/null
+++ b/plugins/gtk+/glade-entry-editor.ui
@@ -0,0 +1,1585 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gladeui 0.0 -->
+  <!-- interface-requires gtk+ 3.8 -->
+  <template class="GladeEntryEditor" parent="GladeEditorSkeleton">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="has_focus">False</property>
+    <property name="is_focus">False</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkGrid" id="grid">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="has_focus">False</property>
+        <property name="is_focus">False</property>
+        <property name="row_spacing">6</property>
+        <property name="column_spacing">6</property>
+        <child>
+          <object class="GtkLabel" id="entry_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="halign">start</property>
+            <property name="valign">center</property>
+            <property name="label" translatable="yes">Entry</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">1</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladeEditorTable" id="embed">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="completion_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">completion</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">2</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="completion_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">completion</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="purpose_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">input-purpose</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">3</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="purpose_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">input-purpose</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">3</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="hints_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">input-hints</property>
+            <property name="custom_text" translatable="yes">Input Hints:</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">4</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="hints_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">input-hints</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">4</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="visibility_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">visibility</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">8</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="invisible_char_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">invisible-char</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">8</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="has_frame_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">has-frame</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">9</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="shadow_type_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">shadow-type</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">9</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="editable_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">editable</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">10</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="activates_default_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">activates-default</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">10</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="overwrite_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">overwrite-mode</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">11</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="truncate_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">truncate-multiline</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">11</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="caps_warn_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">caps-lock-warning</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">12</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="max_length_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">max-length</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">5</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="max_length_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">max-length</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">5</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="populate_all_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">populate-all</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">12</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="text_title">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="halign">start</property>
+            <property name="valign">center</property>
+            <property name="label" translatable="yes">Text</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">13</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="text_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <signal name="toggled" handler="text_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="text_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">text</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">14</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="text-editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="property_name">text</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">14</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="buffer_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <property name="group">text_radio</property>
+            <signal name="toggled" handler="buffer_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="buffer_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">buffer</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">15</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="buffer_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="property_name">buffer</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">15</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="placeholder_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">placeholder-text</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">16</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="placeholder_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="property_name">placeholder-text</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">16</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="progress_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="halign">start</property>
+            <property name="valign">center</property>
+            <property name="label" translatable="yes">Progress</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">17</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="fraction_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">progress-fraction</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">18</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="fraction_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">progress-fraction</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">18</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="pulse_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">progress-pulse-step</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">19</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="pulse_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">progress-pulse-step</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">19</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="primary_icon_title">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="halign">start</property>
+            <property name="valign">center</property>
+            <property name="label" translatable="yes">Primary Icon</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">20</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="primary_stock_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <signal name="toggled" handler="primary_stock_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="primary_stock_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">primary-icon-stock</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">21</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="primary_stock_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">primary-icon-stock</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">21</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="primary_icon_name_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <property name="group">primary_stock_radio</property>
+            <signal name="toggled" handler="primary_icon_name_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="primary_icon_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">primary-icon-name</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">22</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="primary_pixbuf_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <property name="group">primary_stock_radio</property>
+            <signal name="toggled" handler="primary_pixbuf_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="primary_pixbuf_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">primary-icon-pixbuf</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">23</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="primary_icon_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">primary-icon-name</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">22</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="primary_pixbuf_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">primary-icon-pixbuf</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">23</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="primary_tooltip_notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="show_tabs">False</property>
+            <property name="show_border">False</property>
+            <child>
+              <object class="GladePropertyLabel" id="primary_tooltip_text_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">primary-icon-tooltip-text</property>
+                <property name="custom_text" translatable="yes">Tooltip:</property>
+              </object>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GladePropertyLabel" id="primary_tooltip_markup_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">primary-icon-tooltip-markup</property>
+                <property name="custom_text" translatable="yes">Tooltip:</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">25</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkCheckButton" id="primary_tooltip_markup_check">
+            <property name="label" translatable="yes">Use markup</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="tooltip_text" translatable="yes">Whether to use markup in the
+primary icon's tooltip
+</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="draw_indicator">True</property>
+            <signal name="toggled" handler="primary_tooltip_markup_toggled" swapped="no"/>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">26</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="primary_tooltip_editor_notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="show_tabs">False</property>
+            <property name="show_border">False</property>
+            <child>
+              <object class="GladePropertyShell" id="primary_tooltip_text_editor">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="property_name">primary-icon-tooltip-text</property>
+              </object>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GladePropertyShell" id="primary_tooltip_markup_editor">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="property_name">primary-icon-tooltip-markup</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">24</property>
+            <property name="width">4</property>
+            <property name="height">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="primary_icon_sensitive_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">primary-icon-sensitive</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">27</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="primary_icon_activatable_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">primary-icon-activatable</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">27</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="secondary_icon_title">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="halign">start</property>
+            <property name="valign">center</property>
+            <property name="label" translatable="yes">Secondary Icon</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">28</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="secondary_stock_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <signal name="toggled" handler="secondary_stock_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="secondary_stock_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">secondary-icon-stock</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">29</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="secondary_icon_name_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <property name="group">secondary_stock_radio</property>
+            <signal name="toggled" handler="secondary_icon_name_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="secondary_icon_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">secondary-icon-name</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">30</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkRadioButton" id="secondary_pixbuf_radio">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="active">True</property>
+            <property name="draw_indicator">True</property>
+            <property name="group">secondary_stock_radio</property>
+            <signal name="toggled" handler="secondary_pixbuf_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="secondary_pixbuf_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">secondary-icon-pixbuf</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">31</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="secondary_stock_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">secondary-icon-stock</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">29</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="secondary_icon_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">secondary-icon-name</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">30</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="secondary_pixbuf_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">secondary-icon-pixbuf</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">31</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="secondary_tooltip_notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="show_tabs">False</property>
+            <property name="show_border">False</property>
+            <child>
+              <object class="GladePropertyLabel" id="secondary_tooltip_text_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">secondary-icon-tooltip-text</property>
+                <property name="custom_text" translatable="yes">Tooltip:</property>
+              </object>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GladePropertyLabel" id="secondary_tooltip_markup_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="property_name">secondary-icon-tooltip-markup</property>
+                <property name="custom_text" translatable="yes">Tooltip:</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">33</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkCheckButton" id="secondary_tooltip_markup_check">
+            <property name="label" translatable="yes">Use markup</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="receives_default">False</property>
+            <property name="tooltip_text" translatable="yes">Whether to use markup in the
+primary icon's tooltip</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="xalign">0</property>
+            <property name="draw_indicator">True</property>
+            <signal name="toggled" handler="secondary_tooltip_markup_toggled" swapped="no"/>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">34</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="secondary_tooltip_editor_notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="show_tabs">False</property>
+            <property name="show_border">False</property>
+            <child>
+              <object class="GladePropertyShell" id="secondary_tooltip_text_editor">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="property_name">secondary-icon-tooltip-text</property>
+              </object>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GladePropertyShell" id="secondary_tooltip_markup_editor">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_focus">False</property>
+                <property name="is_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="property_name">secondary-icon-tooltip-markup</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">32</property>
+            <property name="width">4</property>
+            <property name="height">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="secondary_icon_sensitive_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">secondary-icon-sensitive</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">35</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="secondary_icon_activatable_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">secondary-icon-activatable</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">35</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="invisible_char_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="halign">end</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">invisible-char</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">8</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="shadow_type_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="halign">end</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">shadow-type</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">9</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="width_chars_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">width-chars</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">6</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="width_chars_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">width-chars</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">6</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="xalign_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">xalign</property>
+            <property name="custom_text" translatable="yes">Horizontal Alignment:</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">7</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="xalign_editor">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="has_focus">False</property>
+            <property name="is_focus">False</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">xalign</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">7</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child-editors>
+      <editor id="embed"/>
+      <editor id="completion_label"/>
+      <editor id="completion_editor"/>
+      <editor id="purpose_label"/>
+      <editor id="purpose_editor"/>
+      <editor id="hints_label"/>
+      <editor id="hints_editor"/>
+      <editor id="visibility_editor"/>
+      <editor id="invisible_char_editor"/>
+      <editor id="has_frame_editor"/>
+      <editor id="shadow_type_editor"/>
+      <editor id="editable_editor"/>
+      <editor id="activates_default_editor"/>
+      <editor id="overwrite_editor"/>
+      <editor id="truncate_editor"/>
+      <editor id="caps_warn_editor"/>
+      <editor id="max_length_label"/>
+      <editor id="max_length_editor"/>
+      <editor id="populate_all_editor"/>
+      <editor id="text_label"/>
+      <editor id="text-editor"/>
+      <editor id="buffer_label"/>
+      <editor id="buffer_editor"/>
+      <editor id="placeholder_label"/>
+      <editor id="placeholder_editor"/>
+      <editor id="fraction_label"/>
+      <editor id="fraction_editor"/>
+      <editor id="pulse_label"/>
+      <editor id="pulse_editor"/>
+      <editor id="primary_stock_label"/>
+      <editor id="primary_stock_editor"/>
+      <editor id="primary_icon_label"/>
+      <editor id="primary_pixbuf_label"/>
+      <editor id="primary_icon_editor"/>
+      <editor id="primary_pixbuf_editor"/>
+      <editor id="primary_tooltip_text_label"/>
+      <editor id="primary_tooltip_markup_label"/>
+      <editor id="primary_tooltip_text_editor"/>
+      <editor id="primary_tooltip_markup_editor"/>
+      <editor id="primary_icon_sensitive_editor"/>
+      <editor id="primary_icon_activatable_editor"/>
+      <editor id="secondary_stock_label"/>
+      <editor id="secondary_icon_label"/>
+      <editor id="secondary_pixbuf_label"/>
+      <editor id="secondary_stock_editor"/>
+      <editor id="secondary_icon_editor"/>
+      <editor id="secondary_pixbuf_editor"/>
+      <editor id="secondary_tooltip_text_label"/>
+      <editor id="secondary_tooltip_markup_label"/>
+      <editor id="secondary_tooltip_text_editor"/>
+      <editor id="secondary_tooltip_markup_editor"/>
+      <editor id="secondary_icon_sensitive_editor"/>
+      <editor id="secondary_icon_activatable_editor"/>
+      <editor id="invisible_char_label"/>
+      <editor id="shadow_type_label"/>
+      <editor id="width_chars_label"/>
+      <editor id="width_chars_editor"/>
+      <editor id="xalign_label"/>
+      <editor id="xalign_editor"/>
+    </child-editors>
+  </template>
+</interface>
diff --git a/plugins/gtk+/glade-gtk-resources.gresource.xml b/plugins/gtk+/glade-gtk-resources.gresource.xml
index c7d6c79..16380e4 100644
--- a/plugins/gtk+/glade-gtk-resources.gresource.xml
+++ b/plugins/gtk+/glade-gtk-resources.gresource.xml
@@ -3,6 +3,7 @@
   <gresource prefix="/org/gnome/gladegtk">
     <file compressed="true" preprocess="xml-stripblanks">glade-activatable-editor.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">glade-button-editor.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">glade-entry-editor.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">glade-image-editor.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">glade-label-editor.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">glade-widget-editor.ui</file>
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index 2e8c30c..a443b99 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -2816,15 +2816,10 @@ GladeEditable *
 glade_gtk_entry_create_editable (GladeWidgetAdaptor * adaptor,
                                  GladeEditorPageType type)
 {
-  GladeEditable *editable;
-
-  /* Get base editable */
-  editable = GWA_GET_CLASS (GTK_TYPE_WIDGET)->create_editable (adaptor, type);
-
   if (type == GLADE_PAGE_GENERAL)
-    return (GladeEditable *) glade_entry_editor_new (adaptor, editable);
-
-  return editable;
+    return (GladeEditable *) glade_entry_editor_new ();
+  else
+    return GWA_GET_CLASS (GTK_TYPE_WIDGET)->create_editable (adaptor, type);
 }
 
 
@@ -2943,7 +2938,24 @@ glade_gtk_entry_set_property (GladeWidgetAdaptor * adaptor,
 
       g_signal_handlers_unblock_by_func (object, glade_gtk_entry_changed,
                                          gwidget);
-
+    }
+  else if (!strcmp (id, "has-frame"))
+    {
+      if (g_value_get_boolean (value))
+       glade_widget_property_set_sensitive (gwidget, "shadow-type", TRUE, NULL);
+      else
+       glade_widget_property_set_sensitive (gwidget, "shadow-type", FALSE,
+                                            _("This property is only available\n"
+                                              "if the entry has a frame"));
+    }
+  else if (!strcmp (id, "visibility"))
+    {
+      if (g_value_get_boolean (value))
+       glade_widget_property_set_sensitive (gwidget, "invisible-char", FALSE,
+                                            _("This property is only available\n"
+                                              "if the entry characters are invisible"));
+      else
+       glade_widget_property_set_sensitive (gwidget, "invisible-char", TRUE, NULL);
     }
   else if (GPC_VERSION_CHECK
            (glade_property_get_class (property), gtk_major_version, gtk_minor_version + 1))
@@ -2963,7 +2975,7 @@ glade_gtk_entry_read_widget (GladeWidgetAdaptor * adaptor,
   /* First chain up and read in all the normal properties.. */
   GWA_GET_CLASS (GTK_TYPE_WIDGET)->read_widget (adaptor, widget, node);
 
-  if (glade_widget_property_original_default (widget, "text") == FALSE)
+  if (!glade_widget_property_original_default (widget, "text"))
     {
       property = glade_widget_get_property (widget, "text");
       glade_widget_property_set (widget, "use-entry-buffer", FALSE);
@@ -2989,21 +3001,19 @@ glade_gtk_entry_read_widget (GladeWidgetAdaptor * adaptor,
         glade_widget_property_set (widget, "use-entry-buffer", FALSE);
     }
 
-  if (glade_widget_property_original_default (widget, "primary-icon-name") ==
-      FALSE)
+  if (!glade_widget_property_original_default (widget, "primary-icon-name"))
     {
       property = glade_widget_get_property (widget, "primary-icon-name");
       glade_widget_property_set (widget, "primary-icon-mode",
                                  GLADE_IMAGE_MODE_ICON);
     }
-  else if (glade_widget_property_original_default
-           (widget, "primary-icon-pixbuf") == FALSE)
+  else if (!glade_widget_property_original_default (widget, "primary-icon-pixbuf"))
     {
       property = glade_widget_get_property (widget, "primary-icon-pixbuf");
       glade_widget_property_set (widget, "primary-icon-mode",
                                  GLADE_IMAGE_MODE_FILENAME);
     }
-  else                          /*  if (glade_widget_property_original_default (widget, "stock") == FALSE) */
+  else /*  if (glade_widget_property_original_default (widget, "stock") == FALSE) */
     {
       property = glade_widget_get_property (widget, "primary-icon-stock");
       glade_widget_property_set (widget, "primary-icon-mode",
@@ -3012,21 +3022,19 @@ glade_gtk_entry_read_widget (GladeWidgetAdaptor * adaptor,
 
   glade_property_sync (property);
 
-  if (glade_widget_property_original_default (widget, "secondary-icon-name") ==
-      FALSE)
+  if (!glade_widget_property_original_default (widget, "secondary-icon-name"))
     {
       property = glade_widget_get_property (widget, "secondary-icon-name");
       glade_widget_property_set (widget, "secondary-icon-mode",
                                  GLADE_IMAGE_MODE_ICON);
     }
-  else if (glade_widget_property_original_default
-           (widget, "secondary-icon-pixbuf") == FALSE)
+  else if (!glade_widget_property_original_default (widget, "secondary-icon-pixbuf"))
     {
       property = glade_widget_get_property (widget, "secondary-icon-pixbuf");
       glade_widget_property_set (widget, "secondary-icon-mode",
                                  GLADE_IMAGE_MODE_FILENAME);
     }
-  else                          /*  if (glade_widget_property_original_default (widget, "stock") == FALSE) */
+  else /*  if (glade_widget_property_original_default (widget, "stock") == FALSE) */
     {
       property = glade_widget_get_property (widget, "secondary-icon-stock");
       glade_widget_property_set (widget, "secondary-icon-mode",
@@ -3034,6 +3042,12 @@ glade_gtk_entry_read_widget (GladeWidgetAdaptor * adaptor,
     }
 
   glade_property_sync (property);
+
+  if (!glade_widget_property_original_default (widget, "primary-icon-tooltip-markup"))
+    glade_widget_property_set (widget, "glade-primary-tooltip-markup", TRUE);
+
+  if (!glade_widget_property_original_default (widget, "secondary-icon-tooltip-markup"))
+    glade_widget_property_set (widget, "glade-secondary-tooltip-markup", TRUE);
 }
 
 /* ----------------------------- GtkFixed/GtkLayout ------------------------------ */
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index 34d14b2..7ab00cd 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -982,7 +982,7 @@ embedded in another object</_tooltip>
 
       <properties>
        <property id="attributes" since="3.6" disabled="True"/>
-       <property id="input-purpose" since="3.6">
+       <property id="input-purpose" since="3.6" custom-layout="True">
          <displayable-values>
            <value id="GTK_INPUT_PURPOSE_FREE_FORM" _name="Free Form"/>
            <value id="GTK_INPUT_PURPOSE_ALPHA" _name="Alpha"/>
@@ -996,7 +996,7 @@ embedded in another object</_tooltip>
            <value id="GTK_INPUT_PURPOSE_PIN" _name="Pin Code"/>
          </displayable-values>
        </property>
-       <property id="input-hints" since="3.6">
+       <property id="input-hints" since="3.6" custom-layout="True">
          <displayable-values>
            <value id="GTK_INPUT_HINT_NONE" _name="None"/>
            <value id="GTK_INPUT_HINT_SPELLCHECK" _name="Spellcheck"/>
@@ -1010,14 +1010,20 @@ embedded in another object</_tooltip>
          </displayable-values>
        </property>
 
-       <property id="attributes" since="3.6" disabled="True"/>
-
+       <property id="overwrite-mode" custom-layout="True"/>
+       <property id="caps-lock-warning" custom-layout="True"/>
+       <property id="editable" custom-layout="True"/>
+       <property id="activates-default" custom-layout="True"/>
+       <property id="xalign" custom-layout="True"/>
+       <property id="width-chars" custom-layout="True"/>
+       <property id="max-length" custom-layout="True"/>
+       <property id="has-frame" custom-layout="True" needs-sync="True"/>
+       <property id="visibility" custom-layout="True" needs-sync="True"/>
        <property id="text" translatable="True" custom-layout="True"/>
         <property id="buffer" create-type="GtkEntryBuffer" since="2.18" custom-layout="True"/>
-       <property id="placeholder-text" translatable="True" since="3.2"/>
-        <property id="inner-border" since="2.10"/>
-        <property id="truncate-multiline" since="2.10"/>
-       <property id="shadow-type" since="2.12"/>
+       <property id="placeholder-text" translatable="True" since="3.2" custom-layout="True"/>
+        <property id="truncate-multiline" custom-layout="True" since="2.10"/>
+       <property id="shadow-type" custom-layout="True" since="2.12"/>
        <property id="editing-canceled" disabled="True" since="2.20"/>
        <property id="primary-icon-gicon" disabled="True"/>
        <property id="secondary-icon-gicon" disabled="True"/>
@@ -1042,7 +1048,9 @@ embedded in another object</_tooltip>
        <property id="progress-fraction" _name="Progress Fraction" since="2.16" custom-layout="True"/>
        <property id="progress-pulse-step" _name="Progress Pulse Step" since="2.16" custom-layout="True"/>
 
-       <property id="invisible-char-set" _name="Invisible Char Set" since="2.16"/>
+       <property id="populate-all" custom-layout="True" since="3.8"/>
+       <property id="invisible-char" custom-layout="True" optional="True" optional-default="False"/>
+       <property id="invisible-char-set" disabled="True" since="2.16"/>
        <property id="primary-icon-tooltip-text" translatable="True" multiline="True" 
                  _name="Primary Icon Tooltip Text" custom-layout="True" since="2.16"/>
        <property id="secondary-icon-tooltip-text" translatable="True" multiline="True"
@@ -1053,8 +1061,7 @@ embedded in another object</_tooltip>
                  _name="Secondary Icon Tooltip Markup" custom-layout="True" since="2.16"/>
 
        <property id="im-module" disabled="True"/>
-
-        <property id="completion" since="3.2"/>
+        <property id="completion" since="3.2" custom-layout="True"/>
 
        <!-- Virtual edit mode properties -->
         <property id="use-entry-buffer" visible="False" save="False" default="False">
@@ -1072,6 +1079,16 @@ embedded in another object</_tooltip>
            <type>GParamInt</type>
          </parameter-spec>
         </property>
+        <property id="glade-primary-tooltip-markup" save="False" custom-layout="True" ignore="True" 
default="False">
+         <parameter-spec>
+           <type>GParamBoolean</type>
+         </parameter-spec>
+        </property>
+        <property id="glade-secondary-tooltip-markup" save="False" custom-layout="True" ignore="True" 
default="False">
+         <parameter-spec>
+           <type>GParamBoolean</type>
+         </parameter-spec>
+        </property>
 
        <!-- Atk activate property -->
        <property id="atk-activate" _name="Activate" ignore="True" atk-property="True" save="False"
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 938fe5e..1361765 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -80,6 +80,7 @@ plugins/gtk+/gtkunixprint.xml.in
 plugins/gtk+/gtk+.xml.in
 [type: gettext/glade]plugins/gtk+/glade-activatable-editor.ui
 [type: gettext/glade]plugins/gtk+/glade-button-editor.ui
+[type: gettext/glade]plugins/gtk+/glade-entry-editor.ui
 [type: gettext/glade]plugins/gtk+/glade-image-editor.ui
 [type: gettext/glade]plugins/gtk+/glade-label-editor.ui
 [type: gettext/glade]plugins/gtk+/glade-widget-editor.ui


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