[glade] Added GladeWidgetEditor.



commit 7ff3db8df1077f720dd21668362d89641e3d8551
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Sat Apr 20 22:39:15 2013 +0900

    Added GladeWidgetEditor.
    
    A nicely formatted editor for GtkWidget & GtkContainer attributes

 plugins/gtk+/Makefile.am                       |    9 +-
 plugins/gtk+/glade-gtk-resources.gresource.xml |    1 +
 plugins/gtk+/glade-gtk.c                       |   27 +-
 plugins/gtk+/glade-widget-editor.c             |  316 +++++++
 plugins/gtk+/glade-widget-editor.h             |   56 ++
 plugins/gtk+/glade-widget-editor.ui            | 1186 ++++++++++++++++++++++++
 plugins/gtk+/gtk+.xml.in                       |   70 +-
 po/POTFILES.in                                 |    2 +
 8 files changed, 1636 insertions(+), 31 deletions(-)
---
diff --git a/plugins/gtk+/Makefile.am b/plugins/gtk+/Makefile.am
index 0389709..82c6983 100644
--- a/plugins/gtk+/Makefile.am
+++ b/plugins/gtk+/Makefile.am
@@ -47,7 +47,8 @@ libgladegtk_la_SOURCES =              \
        glade-string-list.c             \
        glade-tool-button-editor.c      \
        glade-tool-item-group-editor.c  \
-       glade-treeview-editor.c
+       glade-treeview-editor.c         \
+       glade-widget-editor.c
 
 libgladegtk_la_LDFLAGS     = -module -avoid-version $(AM_LDFLAGS)
 libgladegtk_la_LIBADD      = $(libgladeui) $(GTK_LIBS)
@@ -73,7 +74,8 @@ noinst_HEADERS =                      \
        glade-string-list.h             \
        glade-tool-button-editor.h      \
        glade-tool-item-group-editor.h  \
-       glade-treeview-editor.h
+       glade-treeview-editor.h         \
+       glade-widget-editor.h
 
 if PLATFORM_WIN32
 libgladegtk_la_LDFLAGS += -no-undefined
@@ -100,7 +102,8 @@ BUILT_SOURCES =             \
 
 UI_FILES =                             \
        glade-activatable-editor.ui     \
-       glade-button-editor.ui
+       glade-button-editor.ui          \
+       glade-widget-editor.ui
 
 EXTRA_DIST =                                   \
        $(UI_FILES)                             \
diff --git a/plugins/gtk+/glade-gtk-resources.gresource.xml b/plugins/gtk+/glade-gtk-resources.gresource.xml
index c0b13b3..1cd6fd9 100644
--- a/plugins/gtk+/glade-gtk-resources.gresource.xml
+++ b/plugins/gtk+/glade-gtk-resources.gresource.xml
@@ -3,5 +3,6 @@
   <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-widget-editor.ui</file>
   </gresource>
 </gresources>
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index b731c70..953704c 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -31,6 +31,7 @@
 #include "glade-model-data.h"
 #include "glade-icon-sources.h"
 #include "glade-button-editor.h"
+#include "glade-widget-editor.h"
 #include "glade-tool-button-editor.h"
 #include "glade-image-editor.h"
 #include "glade-image-item-editor.h"
@@ -418,6 +419,8 @@ void
 glade_gtk_widget_read_widget (GladeWidgetAdaptor * adaptor,
                               GladeWidget * widget, GladeXmlNode * node)
 {
+  const gchar *tooltip_markup = NULL;
+
   if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
        glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
     return;
@@ -433,6 +436,11 @@ glade_gtk_widget_read_widget (GladeWidgetAdaptor * adaptor,
 
   /* Read in the style classes */
   glade_gtk_widget_read_style_classes (widget, node);
+
+  /* Resolve the virtual tooltip use markup property */
+  glade_widget_property_get (widget, "tooltip-markup", &tooltip_markup);
+  if (tooltip_markup != NULL)
+    glade_widget_property_set (widget, "glade-tooltip-markup", TRUE);
 }
 
 static void
@@ -702,11 +710,11 @@ glade_gtk_widget_write_widget (GladeWidgetAdaptor * adaptor,
   /* Make sure use-action-appearance and related-action properties are
    * ordered in a sane way and are only saved if there is an action */
   prop = glade_widget_get_property (widget, "use-action-appearance");
-  if (prop)
+  if (prop && glade_property_get_enabled (prop))
     glade_property_write (prop, context, node);
 
   prop = glade_widget_get_property (widget, "related-action");
-  if (prop)
+  if (prop && glade_property_get_enabled (prop))
     glade_property_write (prop, context, node);
 
   /* First chain up and read in all the normal properties.. */
@@ -741,6 +749,21 @@ glade_gtk_widget_create_eprop (GladeWidgetAdaptor * adaptor,
   return eprop;
 }
 
+GladeEditable *
+glade_gtk_widget_create_editable (GladeWidgetAdaptor * adaptor,
+                                 GladeEditorPageType type)
+{
+  GladeEditable *editable;
+
+  /* Get base editable */
+  if (type == GLADE_PAGE_COMMON)
+    editable = (GladeEditable *)glade_widget_editor_new ();
+  else
+    editable = GWA_GET_CLASS (G_TYPE_OBJECT)->create_editable (adaptor, type);
+
+  return editable;
+}
+
 gchar *
 glade_gtk_widget_string_from_value (GladeWidgetAdaptor * adaptor,
                                     GladePropertyClass * klass,
diff --git a/plugins/gtk+/glade-widget-editor.c b/plugins/gtk+/glade-widget-editor.c
new file mode 100644
index 0000000..f4e7206
--- /dev/null
+++ b/plugins/gtk+/glade-widget-editor.c
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2008 Tristan Van Berkom.
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public 
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ *   Tristan Van Berkom <tvb gnome org>
+ */
+
+#include <config.h>
+#include <gladeui/glade.h>
+#include <glib/gi18n-lib.h>
+#include <gdk/gdkkeysyms.h>
+
+#include "glade-widget-editor.h"
+
+
+static void glade_widget_editor_finalize (GObject * object);
+
+static void glade_widget_editor_editable_init (GladeEditableIface * iface);
+
+static void glade_widget_editor_grab_focus (GtkWidget * widget);
+
+static void markup_toggled (GtkWidget * widget, GladeWidgetEditor * widget_editor);
+static void custom_tooltip_toggled (GtkWidget * widget, GladeWidgetEditor * widget_editor);
+
+struct _GladeWidgetEditorPrivate
+{
+  GtkWidget *embed;
+
+  GtkWidget *custom_tooltip_check;
+  GtkWidget *tooltip_markup_check;
+  GtkWidget *tooltip_label_notebook;
+  GtkWidget *tooltip_editor_notebook;
+
+  /* GtkContainer common properties */
+  GtkWidget *resize_mode_label;
+  GtkWidget *resize_mode_editor;
+  GtkWidget *border_width_label;
+  GtkWidget *border_width_editor;
+};
+
+static GladeEditableIface *parent_editable_iface;
+
+#define TOOLTIP_TEXT_PAGE   0
+#define TOOLTIP_MARKUP_PAGE 1
+
+G_DEFINE_TYPE_WITH_CODE (GladeWidgetEditor, glade_widget_editor, GLADE_TYPE_EDITOR_SKELETON,
+                         G_IMPLEMENT_INTERFACE (GLADE_TYPE_EDITABLE,
+                                                glade_widget_editor_editable_init));
+
+static void
+glade_widget_editor_class_init (GladeWidgetEditorClass * klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  object_class->finalize = glade_widget_editor_finalize;
+  widget_class->grab_focus = glade_widget_editor_grab_focus;
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/gladegtk/glade-widget-editor.ui");
+
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, embed);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, custom_tooltip_check);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, tooltip_markup_check);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, tooltip_label_notebook);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, tooltip_editor_notebook);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, resize_mode_label);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, resize_mode_editor);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, border_width_label);
+  gtk_widget_class_bind_child (widget_class, GladeWidgetEditorPrivate, border_width_editor);
+
+  gtk_widget_class_bind_callback (widget_class, markup_toggled);
+  gtk_widget_class_bind_callback (widget_class, custom_tooltip_toggled);
+
+  g_type_class_add_private (object_class, sizeof (GladeWidgetEditorPrivate));  
+}
+
+static void
+glade_widget_editor_init (GladeWidgetEditor * self)
+{
+  self->priv = 
+    G_TYPE_INSTANCE_GET_PRIVATE (self,
+                                GLADE_TYPE_WIDGET_EDITOR,
+                                GladeWidgetEditorPrivate);
+
+  gtk_widget_init_template (GTK_WIDGET (self));
+}
+
+static void
+glade_widget_editor_load (GladeEditable * editable, GladeWidget * gwidget)
+{
+  GladeWidgetEditor        *widget_editor = GLADE_WIDGET_EDITOR (editable);
+  GladeWidgetEditorPrivate *priv = widget_editor->priv;
+
+  /* Chain up to default implementation */
+  parent_editable_iface->load (editable, gwidget);
+
+  if (gwidget)
+    {
+      GtkWidget *widget = (GtkWidget *)glade_widget_get_object (gwidget);
+      gboolean is_container = GTK_IS_CONTAINER (widget);
+      gboolean tooltip_markup = FALSE;
+      gboolean custom_tooltip = FALSE;
+
+      glade_widget_property_get (gwidget, "glade-tooltip-markup", &tooltip_markup);
+      glade_widget_property_get (gwidget, "has-tooltip", &custom_tooltip);
+
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->tooltip_markup_check), tooltip_markup);
+      gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->tooltip_label_notebook),
+                                    tooltip_markup ? TOOLTIP_MARKUP_PAGE : TOOLTIP_TEXT_PAGE);
+      gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->tooltip_editor_notebook),
+                                    tooltip_markup ? TOOLTIP_MARKUP_PAGE : TOOLTIP_TEXT_PAGE);
+
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->custom_tooltip_check), custom_tooltip);
+      gtk_widget_set_sensitive (priv->tooltip_markup_check, !custom_tooltip);
+      gtk_widget_set_sensitive (priv->tooltip_label_notebook, !custom_tooltip);
+      gtk_widget_set_sensitive (priv->tooltip_editor_notebook, !custom_tooltip);
+
+      /* Set visibility of GtkContainer only properties */
+      gtk_widget_set_visible (priv->resize_mode_label,   is_container);
+      gtk_widget_set_visible (priv->resize_mode_editor,  is_container);
+      gtk_widget_set_visible (priv->border_width_label,  is_container);
+      gtk_widget_set_visible (priv->border_width_editor, is_container);
+    }
+}
+
+static void
+glade_widget_editor_editable_init (GladeEditableIface * iface)
+{
+  parent_editable_iface = g_type_interface_peek_parent (iface);
+
+  iface->load = glade_widget_editor_load;
+}
+
+static void
+glade_widget_editor_finalize (GObject * object)
+{
+  glade_editable_load (GLADE_EDITABLE (object), NULL);
+
+  G_OBJECT_CLASS (glade_widget_editor_parent_class)->finalize (object);
+}
+
+static void
+glade_widget_editor_grab_focus (GtkWidget * widget)
+{
+  GladeWidgetEditor *widget_editor = GLADE_WIDGET_EDITOR (widget);
+
+  gtk_widget_grab_focus (widget_editor->priv->embed);
+}
+
+static void
+custom_tooltip_toggled (GtkWidget         *widget,
+                       GladeWidgetEditor *widget_editor)
+{
+  GladeProperty *property;
+  GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (widget_editor));
+  gboolean active;
+
+  if (glade_editable_loading (GLADE_EDITABLE (widget_editor)) || !gwidget)
+    return;
+
+  active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+
+  glade_editable_block (GLADE_EDITABLE (widget_editor));
+
+  if (active)
+    {
+      glade_command_push_group (_("Setting %s to use a custom tooltip"),
+                               glade_widget_get_name (gwidget));
+
+      /* clear out some things... */
+      property = glade_widget_get_property (gwidget, "tooltip-text");
+      glade_command_set_property (property, NULL);
+
+      property = glade_widget_get_property (gwidget, "tooltip-markup");
+      glade_command_set_property (property, NULL);
+
+      property = glade_widget_get_property (gwidget, "glade-tooltip-markup");
+      glade_command_set_property (property, FALSE);
+
+      property = glade_widget_get_property (gwidget, "has-tooltip");
+      glade_command_set_property (property, TRUE);
+
+      glade_command_pop_group ();
+    }
+  else
+    {
+      glade_command_push_group (_("Setting %s to use a custom tooltip"),
+                               glade_widget_get_name (gwidget));
+
+      /* clear out some things... */
+      property = glade_widget_get_property (gwidget, "tooltip-text");
+      glade_command_set_property (property, NULL);
+
+      property = glade_widget_get_property (gwidget, "tooltip-markup");
+      glade_command_set_property (property, NULL);
+
+      property = glade_widget_get_property (gwidget, "glade-tooltip-markup");
+      glade_command_set_property (property, FALSE);
+
+      property = glade_widget_get_property (gwidget, "has-tooltip");
+      glade_command_set_property (property, FALSE);
+
+      glade_command_pop_group ();
+    }
+
+  glade_editable_unblock (GLADE_EDITABLE (widget_editor));
+
+  /* reload widgets and sensitivity and stuff... */
+  glade_editable_load (GLADE_EDITABLE (widget_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
+markup_toggled (GtkWidget         *widget,
+               GladeWidgetEditor *widget_editor)
+{
+  GladeProperty *property;
+  GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (widget_editor));
+  gboolean active;
+
+
+  if (glade_editable_loading (GLADE_EDITABLE (widget_editor)) || !gwidget)
+    return;
+
+  active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+
+  glade_editable_block (GLADE_EDITABLE (widget_editor));
+
+  if (active)
+    {
+      glade_command_push_group (_("Setting %s to use tooltip markup"),
+                               glade_widget_get_name (gwidget));
+
+      transfer_text_property (gwidget, "tooltip-text", "tooltip-markup");
+
+      property = glade_widget_get_property (gwidget, "glade-tooltip-markup");
+      glade_command_set_property (property, TRUE);
+
+      glade_command_pop_group ();
+    }
+  else
+    {
+      glade_command_push_group (_("Setting %s to not use tooltip markup"),
+                               glade_widget_get_name (gwidget));
+
+      transfer_text_property (gwidget, "tooltip-markup", "tooltip-text");
+
+      property = glade_widget_get_property (gwidget, "glade-tooltip-markup");
+      glade_command_set_property (property, FALSE);
+
+      glade_command_pop_group ();
+    }
+
+  glade_editable_unblock (GLADE_EDITABLE (widget_editor));
+
+  /* reload widgets and sensitivity and stuff... */
+  glade_editable_load (GLADE_EDITABLE (widget_editor), gwidget);
+}
+
+GtkWidget *
+glade_widget_editor_new (void)
+{
+  return g_object_new (GLADE_TYPE_WIDGET_EDITOR, NULL);
+}
diff --git a/plugins/gtk+/glade-widget-editor.h b/plugins/gtk+/glade-widget-editor.h
new file mode 100644
index 0000000..7d31340
--- /dev/null
+++ b/plugins/gtk+/glade-widget-editor.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2008 Tristan Van Berkom.
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public 
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ *   Tristan Van Berkom <tvb gnome org>
+ */
+#ifndef _GLADE_WIDGET_EDITOR_H_
+#define _GLADE_WIDGET_EDITOR_H_
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GLADE_TYPE_WIDGET_EDITOR                   (glade_widget_editor_get_type ())
+#define GLADE_WIDGET_EDITOR(obj)                   (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
GLADE_TYPE_WIDGET_EDITOR, GladeWidgetEditor))
+#define GLADE_WIDGET_EDITOR_CLASS(klass)           (G_TYPE_CHECK_CLASS_CAST ((klass), 
GLADE_TYPE_WIDGET_EDITOR, GladeWidgetEditorClass))
+#define GLADE_IS_WIDGET_EDITOR(obj)        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_WIDGET_EDITOR))
+#define GLADE_IS_WIDGET_EDITOR_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_WIDGET_EDITOR))
+#define GLADE_WIDGET_EDITOR_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_WIDGET_EDITOR, 
GladeWidgetEditorClass))
+
+typedef struct _GladeWidgetEditor        GladeWidgetEditor;
+typedef struct _GladeWidgetEditorClass   GladeWidgetEditorClass;
+typedef struct _GladeWidgetEditorPrivate GladeWidgetEditorPrivate;
+
+struct _GladeWidgetEditor
+{
+  GladeEditorSkeleton  parent;
+
+  GladeWidgetEditorPrivate *priv;
+};
+
+struct _GladeWidgetEditorClass
+{
+  GladeEditorSkeletonClass parent;
+};
+
+GType            glade_widget_editor_get_type (void) G_GNUC_CONST;
+GtkWidget       *glade_widget_editor_new      (void);
+
+G_END_DECLS
+
+#endif  /* _GLADE_WIDGET_EDITOR_H_ */
diff --git a/plugins/gtk+/glade-widget-editor.ui b/plugins/gtk+/glade-widget-editor.ui
new file mode 100644
index 0000000..ed89065
--- /dev/null
+++ b/plugins/gtk+/glade-widget-editor.ui
@@ -0,0 +1,1186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface domain="glade">
+  <!-- interface-requires gladeui 0.0 -->
+  <!-- interface-requires gtk+ 3.8 -->
+  <template class="GladeWidgetEditor" 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="editor_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="attributes_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">Widget Attributes</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="GladePropertyLabel" id="name_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">name</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="name_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="property_name">name</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">2</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="style_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">glade-style-classes</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="style_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">glade-style-classes</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">3</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="tooltip_label_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="valign">center</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="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="hexpand">False</property>
+                <property name="property_name">tooltip-text</property>
+                <property name="custom_text" translatable="yes">Tooltip:</property>
+              </object>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GladePropertyLabel" id="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">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">4</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="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="show_tabs">False</property>
+            <property name="show_border">False</property>
+            <child>
+              <object class="GladePropertyShell" id="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">tooltip-text</property>
+              </object>
+            </child>
+            <child type="tab">
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GladePropertyShell" id="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="property_name">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">4</property>
+            <property name="width">4</property>
+            <property name="height">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkCheckButton" id="tooltip_markup_check">
+            <property name="use_action_appearance">False</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 tooltip</property>
+            <property name="valign">end</property>
+            <property name="margin_left">12</property>
+            <property name="xalign">0</property>
+            <property name="draw_indicator">True</property>
+            <signal name="toggled" handler="markup_toggled" swapped="no"/>
+            <child>
+              <object class="GtkLabel" id="label1">
+                <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="label" translatable="yes">Use markup</property>
+                <property name="wrap">True</property>
+              </object>
+            </child>
+          </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="GtkLabel" id="flags_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">Widget Flags</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">11</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="visible_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">visible</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="GladePropertyShell" id="no_show_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">no-show-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="GladePropertyShell" id="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="halign">start</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">sensitive</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">12</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="can_focus_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">can-focus</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">13</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="has_focus_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">has-focus</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">13</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="is_focus_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="halign">start</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">is-focus</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">13</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="can_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="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">can-default</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </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="has_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">has-default</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">14</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="receives_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="halign">start</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">receives-default</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">14</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="app_paintable_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">app-paintable</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </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="double_buffered_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">double-buffered</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">15</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="spacing_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">Widget Spacing</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">16</property>
+            <property name="width">5</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="hexpand_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">hexpand</property>
+            <property name="custom_text" translatable="yes">Horizontal:</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">17</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="hexpand_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">hexpand</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">17</property>
+            <property name="width">3</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="vexpand_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">vexpand</property>
+            <property name="custom_text" translatable="yes">Vertical:</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">18</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="vexpand_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">vexpand</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">18</property>
+            <property name="width">3</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="accelerator_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">accelerator</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">8</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="accelerator_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">accelerator</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">8</property>
+            <property name="width">4</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>
+            <property name="page_type">common</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="opacity_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">opacity</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="opacity_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">opacity</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">7</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="width_request_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="margin_top">4</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">width-request</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">24</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="height_request_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">height-request</property>
+          </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="GladePropertyShell" id="width_request_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_top">4</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">width-request</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">24</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="height_request_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">height-request</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">25</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="events_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">events</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">9</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="events_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">events</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">9</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkCheckButton" id="custom_tooltip_check">
+            <property name="label" translatable="yes">Custom</property>
+            <property name="use_action_appearance">False</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">Use the "query-tooltip" to present a tooltip
+instead of setting a literal 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="custom_tooltip_toggled" swapped="no"/>
+          </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="GtkLabel" id="expand_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="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="label" translatable="yes">Expand</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">17</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="alignment_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="margin_left">12</property>
+            <property name="margin_top">4</property>
+            <property name="hexpand">False</property>
+            <property name="label" translatable="yes">Alignment</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="GladePropertyLabel" id="halign_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="margin_left">24</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">halign</property>
+            <property name="custom_text" translatable="yes">Horizontal:</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">20</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="valign_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="margin_left">24</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">valign</property>
+            <property name="custom_text" translatable="yes">Vertical:</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">21</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="halign_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">halign</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">20</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="valign_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">valign</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">21</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="margins_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="margin_left">12</property>
+            <property name="margin_top">4</property>
+            <property name="hexpand">False</property>
+            <property name="label" translatable="yes">Margins</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">19</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="margin_top_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="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">margin-top</property>
+            <property name="custom_text" translatable="yes">Top:</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">20</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="margin_top_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">margin-top</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">20</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="margin_bottom_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="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">margin-bottom</property>
+            <property name="custom_text" translatable="yes">Bottom:</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="GladePropertyShell" id="margin_bottom_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">margin-bottom</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">21</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="margin_left_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="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">margin-left</property>
+            <property name="custom_text" translatable="yes">Left:</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="margin_left_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">margin-left</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">22</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="margin_right_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="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">margin-right</property>
+            <property name="custom_text" translatable="yes">Right:</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="GladePropertyShell" id="margin_right_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">margin-right</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">23</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="border_width_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">border-width</property>
+          </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="GladePropertyShell" id="border_width_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">border-width</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">26</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="resize_mode_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">resize-mode</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="resize_mode_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">resize-mode</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">10</property>
+            <property name="width">4</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>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child-editors>
+      <editor id="name_label"/>
+      <editor id="name_editor"/>
+      <editor id="style_label"/>
+      <editor id="style_editor"/>
+      <editor id="tooltip_text_label"/>
+      <editor id="tooltip_markup_label"/>
+      <editor id="tooltip_text_editor"/>
+      <editor id="tooltip_markup_editor"/>
+      <editor id="visible_editor"/>
+      <editor id="no_show_all_editor"/>
+      <editor id="sensitive_editor"/>
+      <editor id="can_focus_editor"/>
+      <editor id="has_focus_editor"/>
+      <editor id="is_focus_editor"/>
+      <editor id="can_default_editor"/>
+      <editor id="has_default_editor"/>
+      <editor id="receives_default_editor"/>
+      <editor id="app_paintable_editor"/>
+      <editor id="double_buffered_editor"/>
+      <editor id="hexpand_label"/>
+      <editor id="hexpand_editor"/>
+      <editor id="vexpand_label"/>
+      <editor id="vexpand_editor"/>
+      <editor id="accelerator_label"/>
+      <editor id="accelerator_editor"/>
+      <editor id="embed"/>
+      <editor id="opacity_label"/>
+      <editor id="opacity_editor"/>
+      <editor id="width_request_label"/>
+      <editor id="height_request_label"/>
+      <editor id="width_request_editor"/>
+      <editor id="height_request_editor"/>
+      <editor id="events_label"/>
+      <editor id="events_editor"/>
+      <editor id="halign_label"/>
+      <editor id="valign_label"/>
+      <editor id="halign_editor"/>
+      <editor id="valign_editor"/>
+      <editor id="margin_top_label"/>
+      <editor id="margin_top_editor"/>
+      <editor id="margin_bottom_label"/>
+      <editor id="margin_bottom_editor"/>
+      <editor id="margin_left_label"/>
+      <editor id="margin_left_editor"/>
+      <editor id="margin_right_label"/>
+      <editor id="margin_right_editor"/>
+      <editor id="border_width_label"/>
+      <editor id="border_width_editor"/>
+      <editor id="resize_mode_label"/>
+      <editor id="resize_mode_editor"/>
+    </child-editors>
+  </template>
+</interface>
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index 46afef7..a3409c0 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -19,6 +19,7 @@
       <read-widget-function>glade_gtk_widget_read_widget</read-widget-function>
       <write-widget-function>glade_gtk_widget_write_widget</write-widget-function>
       <create-editor-property-function>glade_gtk_widget_create_eprop</create-editor-property-function>
+      <create-editable-function>glade_gtk_widget_create_editable</create-editable-function>
       <string-from-value-function>glade_gtk_widget_string_from_value</string-from-value-function>
 
       <signals>
@@ -55,28 +56,43 @@
       </actions>
 
       <properties>
-       <property id="opacity" since="3.8" />
-       <property id="tooltip-text" since="2.12" weight="4.2" translatable="True" multiline="True" 
ignore="True"/>
-        <property id="can-focus" common="True" save-always="True"/>
-       <property id="has-default" common="True" ignore="True"/>
-       <property id="can-default" common="True" />
-       <property id="tooltip-markup" since="2.12" weight="4.1" translatable="True" multiline="True" 
ignore="True"/>
-       <property id="visible" default="True" common="True" ignore="True"/>
-       <property id="width-request"  common="True" optional="True" optional-default="False" default="0"/>
-       <property id="height-request" common="True" optional="True" optional-default="False" default="0"/>
-       <property id="no-show-all" weight="4.6" ignore="True"/>
+       <property id="opacity" since="3.8" custom-layout="True"/>
+       <property id="tooltip-text" since="2.12" weight="4.2" translatable="True" custom-layout="True"
+                 multiline="True" ignore="True"/>
+       <property id="has-tooltip" custom-layout="True" ignore="True"/>
+        <property id="can-focus" common="True" custom-layout="True" save-always="True"/>
+        <property id="has-focus" common="True" custom-layout="True" save-always="True"/>
+        <property id="is-focus" common="True" custom-layout="True" save-always="True"/>
+       <property id="has-default" common="True" custom-layout="True" ignore="True"/>
+       <property id="can-default" common="True" custom-layout="True"/>
+       <property id="receives-default" common="True" custom-layout="True"/>
+       <property id="tooltip-markup" since="2.12" weight="4.1" translatable="True" custom-layout="True" 
+                 multiline="True" ignore="True"/>
+       <property id="visible" default="True" common="True" custom-layout="True" ignore="True"/>
+       <property id="width-request"  common="True" custom-layout="True" optional="True" 
optional-default="False" default="0"/>
+       <property id="height-request" common="True" custom-layout="True" optional="True" 
optional-default="False" default="0"/>
+       <property id="no-show-all" weight="4.6" custom-layout="True" ignore="True"/>
        <property id="expand" disabled="True" since="3.0"/>
-       <property id="hexpand" common="True" since="3.0" needs-sync="True" optional="True" 
optional-default="False"/>
-       <property id="vexpand" common="True" since="3.0" needs-sync="True" optional="True" 
optional-default="False"/>
+       <property id="hexpand" common="True" since="3.0" needs-sync="True" custom-layout="True"
+                 optional="True" optional-default="False"/>
+       <property id="vexpand" common="True" since="3.0" needs-sync="True" custom-layout="True"
+                 optional="True" optional-default="False"/>
        <property id="hexpand-set" disabled="True" since="3.0"/>
        <property id="vexpand-set" disabled="True" since="3.0"/>
        <property id="margin" disabled="True" since="3.0"/>
-       <property id="margin-left" common="True" since="3.0"/>
-       <property id="margin-right" common="True" since="3.0"/>
-       <property id="margin-top" common="True" since="3.0"/>
-       <property id="margin-bottom" common="True" since="3.0"/>
+       <property id="margin-left" common="True" custom-layout="True" since="3.0"/>
+       <property id="margin-right" common="True" custom-layout="True" since="3.0"/>
+       <property id="margin-top" common="True" custom-layout="True" since="3.0"/>
+       <property id="margin-bottom" common="True" custom-layout="True" since="3.0"/>
+
+        <property id="glade-tooltip-markup" save="False" custom-layout="True" ignore="True" default="False">
+         <parameter-spec>
+           <type>GParamBoolean</type>
+         </parameter-spec>
+        </property>
 
-       <property id="glade-style-classes" _name="Style Classes" weight="4.25" common="True" save="False" 
ignore="True" since="3.0">
+       <property id="glade-style-classes" _name="Style Classes" weight="4.25" custom-layout="True"
+                 common="True" save="False" ignore="True" since="3.0">
          <parameter-spec>
            <type>GParamBoxed</type>
            <value-type>GladeStringList</value-type>
@@ -84,7 +100,7 @@
          <_tooltip>A list of style class names to apply to this widget</_tooltip>
        </property>
 
-       <property id="halign" common="True" since="3.0">
+       <property id="halign" common="True" custom-layout="True" since="3.0">
          <displayable-values>
            <value id="GTK_ALIGN_FILL" _name="Fill"/>
            <value id="GTK_ALIGN_START" _name="Start"/>
@@ -92,7 +108,7 @@
            <value id="GTK_ALIGN_END" _name="End"/>
          </displayable-values>
        </property>
-       <property id="valign" common="True" since="3.0"/>
+       <property id="valign" common="True" custom-layout="True" since="3.0"/>
 
        <property id="extension-events" common="True">
          <displayable-values>
@@ -102,7 +118,7 @@
          </displayable-values>
        </property>
 
-       <property id="events" ignore="True" common="True">
+       <property id="events" custom-layout="True" ignore="True" common="True">
          <displayable-values>
            <value id="GDK_EXPOSURE_MASK" _name="Exposure"/>
            <value id="GDK_POINTER_MOTION_MASK" _name="Pointer Motion"/>
@@ -132,16 +148,17 @@
        </property>
 
        <!-- Put the name in the main properties page glade-editor-table.c ensures it's always at the top -->
-       <property id="name" common="False"/>
+       <property id="name" common="True" custom-layout="True"/>
 
        <property id="window" disabled="True" since="2.14"/>
        <property id="parent" disabled="True"/>
        <property id="style" disabled="True"/>
-       <property id="sensitive" ignore="True"/>
-       <property id="double-buffered" since="2.18"/>
+       <property id="sensitive" ignore="True" custom-layout="True"/>
+       <property id="app-paintable" custom-layout="True"/>
+       <property id="double-buffered" custom-layout="True" since="2.18"/>
 
        <!-- Accelerators -->
-       <property id="accelerator" _name="Accelerators" ignore="True" common="True" save="False">
+       <property id="accelerator" _name="Accelerators" ignore="True" custom-layout="True" common="True" 
save="False">
          <parameter-spec>
            <type>GParamBoxed</type>
            <value-type>GladeAccelGList</value-type>
@@ -316,8 +333,9 @@ embedded in another object</_tooltip>
       <get-children-function>glade_gtk_container_get_children</get-children-function>
 
       <properties>
-        <property id="border-width" common="True" weight="2.5"/>
-        <property id="resize-mode" ignore="True" common="True" weight="4.7">
+        <property id="border-width" common="True" custom-layout="True"
+                 optional="True" optional-default="False"/>
+        <property id="resize-mode" ignore="True" custom-layout="True" common="True">
          <displayable-values>
            <value id="GTK_RESIZE_PARENT" _name="Parent"/>
            <value id="GTK_RESIZE_QUEUE" _name="Queue"/>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d3c4155..02dbcb5 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -75,7 +75,9 @@ plugins/gtk+/glade-string-list.c
 plugins/gtk+/glade-tool-button-editor.c
 plugins/gtk+/glade-tool-item-group-editor.c
 plugins/gtk+/glade-treeview-editor.c
+plugins/gtk+/glade-widget-editor.c
 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-widget-editor.ui


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