[glade] Added new custom editor GladeWindowEditor.



commit ff1a3af6df800b9aa500e47beb38305add476796
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Sun Apr 28 22:37:28 2013 +0900

    Added new custom editor GladeWindowEditor.

 plugins/gtk+/Makefile.am                       |    9 +-
 plugins/gtk+/glade-gtk-resources.gresource.xml |    1 +
 plugins/gtk+/glade-gtk.c                       |   49 ++-
 plugins/gtk+/glade-window-editor.c             |  191 +++++
 plugins/gtk+/glade-window-editor.h             |   57 ++
 plugins/gtk+/glade-window-editor.ui            |  879 ++++++++++++++++++++++++
 plugins/gtk+/gtk+.xml.in                       |   57 +-
 po/POTFILES.in                                 |    1 +
 8 files changed, 1219 insertions(+), 25 deletions(-)
---
diff --git a/plugins/gtk+/Makefile.am b/plugins/gtk+/Makefile.am
index 8358a1c..559ecdf 100644
--- a/plugins/gtk+/Makefile.am
+++ b/plugins/gtk+/Makefile.am
@@ -49,7 +49,8 @@ libgladegtk_la_SOURCES =              \
        glade-tool-button-editor.c      \
        glade-tool-item-group-editor.c  \
        glade-treeview-editor.c         \
-       glade-widget-editor.c
+       glade-widget-editor.c           \
+       glade-window-editor.c
 
 libgladegtk_la_LDFLAGS     = -module -avoid-version $(AM_LDFLAGS)
 libgladegtk_la_LIBADD      = $(libgladeui) $(GTK_LIBS)
@@ -76,7 +77,8 @@ noinst_HEADERS =                      \
        glade-tool-button-editor.h      \
        glade-tool-item-group-editor.h  \
        glade-treeview-editor.h         \
-       glade-widget-editor.h
+       glade-widget-editor.h           \
+       glade-window-editor.h
 
 if PLATFORM_WIN32
 libgladegtk_la_LDFLAGS += -no-undefined
@@ -108,7 +110,8 @@ UI_FILES =                          \
        glade-image-editor.ui           \
        glade-label-editor.ui           \
        glade-tool-button-editor.ui     \
-       glade-widget-editor.ui
+       glade-widget-editor.ui          \
+       glade-window-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 8b51fc6..3044561 100644
--- a/plugins/gtk+/glade-gtk-resources.gresource.xml
+++ b/plugins/gtk+/glade-gtk-resources.gresource.xml
@@ -8,5 +8,6 @@
     <file compressed="true" preprocess="xml-stripblanks">glade-label-editor.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">glade-tool-button-editor.ui</file>
     <file compressed="true" preprocess="xml-stripblanks">glade-widget-editor.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">glade-window-editor.ui</file>
   </gresource>
 </gresources>
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index 9c9beec..7ac9dec 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -32,6 +32,7 @@
 #include "glade-icon-sources.h"
 #include "glade-button-editor.h"
 #include "glade-widget-editor.h"
+#include "glade-window-editor.h"
 #include "glade-tool-button-editor.h"
 #include "glade-image-editor.h"
 #include "glade-image-item-editor.h"
@@ -90,7 +91,6 @@ glade_gtk_stop_emission_POINTER (gpointer instance, gpointer dummy,
 void
 glade_gtk_init (const gchar * name)
 {
-
 }
 
 /* ----------------------------- GtkWidget ------------------------------ */
@@ -3218,10 +3218,15 @@ glade_gtk_window_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);
 
+  /* Sync the icon mode */
+  if (glade_widget_property_original_default (widget, "icon") == FALSE)
+    glade_widget_property_set (widget, "glade-window-icon-name", FALSE);
+  else
+    glade_widget_property_set (widget, "glade-window-icon-name", TRUE);
+
   glade_gtk_window_read_accel_groups (widget, node);
 }
 
-
 static void
 glade_gtk_window_write_accel_groups (GladeWidget * widget,
                                      GladeXmlContext * context,
@@ -3269,6 +3274,46 @@ glade_gtk_window_write_widget (GladeWidgetAdaptor * adaptor,
   glade_gtk_window_write_accel_groups (widget, context, node);
 }
 
+GladeEditable *
+glade_gtk_window_create_editable (GladeWidgetAdaptor * adaptor,
+                                 GladeEditorPageType type)
+{
+  GladeEditable *editable;
+
+  if (type == GLADE_PAGE_GENERAL &&
+      /* Don't show all the GtkWindow properties for offscreen windows.
+       *
+       * We spoof the offscreen window type instead of using the real GType,
+       * so don't check it by GType but use strcmp() instead.
+       */
+      strcmp (glade_widget_adaptor_get_name (adaptor), "GtkOffscreenWindow") != 0)
+    editable = (GladeEditable *) glade_window_editor_new ();
+  else
+    editable = GWA_GET_CLASS (GTK_TYPE_WIDGET)->create_editable (adaptor, type);
+
+  return editable;
+}
+
+void
+glade_gtk_window_set_property (GladeWidgetAdaptor * adaptor,
+                              GObject * object,
+                              const gchar * id, const GValue * value)
+{
+  if (!strcmp (id, "glade-window-icon-name"))
+    {
+      GladeWidget *gwidget = glade_widget_get_from_gobject (object);
+
+      glade_widget_property_set_sensitive (gwidget, "icon", FALSE, NOT_SELECTED_MSG);
+      glade_widget_property_set_sensitive (gwidget, "icon-name", FALSE, NOT_SELECTED_MSG);
+
+      if (g_value_get_boolean (value))
+       glade_widget_property_set_sensitive (gwidget, "icon-name", TRUE, NULL);
+      else
+       glade_widget_property_set_sensitive (gwidget, "icon", TRUE, NULL);
+    }
+  else
+    GWA_GET_CLASS (GTK_TYPE_CONTAINER)->set_property (adaptor, object, id, value);
+}
 
 /* ----------------------------- GtkDialog(s) ------------------------------ */
 static void
diff --git a/plugins/gtk+/glade-window-editor.c b/plugins/gtk+/glade-window-editor.c
new file mode 100644
index 0000000..aba5ec9
--- /dev/null
+++ b/plugins/gtk+/glade-window-editor.c
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2013 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 <glib/gi18n-lib.h>
+#include <gdk/gdkkeysyms.h>
+
+#include "glade-window-editor.h"
+
+static void glade_window_editor_editable_init (GladeEditableIface * iface);
+static void glade_window_editor_grab_focus (GtkWidget * widget);
+
+/* Callbacks */
+static void icon_name_toggled    (GtkWidget *widget, GladeWindowEditor * window_editor);
+static void icon_file_toggled    (GtkWidget *widget, GladeWindowEditor * window_editor);
+
+struct _GladeWindowEditorPrivate {
+  GtkWidget *embed;
+
+  GtkWidget *icon_name_radio;
+  GtkWidget *icon_file_radio;
+};
+
+static GladeEditableIface *parent_editable_iface;
+
+G_DEFINE_TYPE_WITH_CODE (GladeWindowEditor, glade_window_editor, GLADE_TYPE_EDITOR_SKELETON,
+                         G_IMPLEMENT_INTERFACE (GLADE_TYPE_EDITABLE,
+                                                glade_window_editor_editable_init));
+
+static void
+glade_window_editor_class_init (GladeWindowEditorClass * klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  widget_class->grab_focus = glade_window_editor_grab_focus;
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/gladegtk/glade-window-editor.ui");
+  gtk_widget_class_bind_child (widget_class, GladeWindowEditorPrivate, embed);
+  gtk_widget_class_bind_child (widget_class, GladeWindowEditorPrivate, icon_name_radio);
+  gtk_widget_class_bind_child (widget_class, GladeWindowEditorPrivate, icon_file_radio);
+
+  gtk_widget_class_bind_callback (widget_class, icon_name_toggled);
+  gtk_widget_class_bind_callback (widget_class, icon_file_toggled);
+
+  g_type_class_add_private (object_class, sizeof (GladeWindowEditorPrivate));  
+}
+
+static void
+glade_window_editor_init (GladeWindowEditor * self)
+{
+  self->priv = 
+    G_TYPE_INSTANCE_GET_PRIVATE (self,
+                                GLADE_TYPE_WINDOW_EDITOR,
+                                GladeWindowEditorPrivate);
+
+  gtk_widget_init_template (GTK_WIDGET (self));
+}
+
+static void
+glade_window_editor_grab_focus (GtkWidget * widget)
+{
+  GladeWindowEditor *window_editor =
+      GLADE_WINDOW_EDITOR (widget);
+
+  gtk_widget_grab_focus (window_editor->priv->embed);
+}
+
+static void
+glade_window_editor_load (GladeEditable *editable,
+                         GladeWidget   *gwidget)
+{
+  GladeWindowEditor *window_editor = GLADE_WINDOW_EDITOR (editable);
+  GladeWindowEditorPrivate *priv = window_editor->priv;
+
+  /* Chain up to default implementation */
+  parent_editable_iface->load (editable, gwidget);
+
+  if (gwidget)
+    {
+      gboolean icon_name;
+
+      glade_widget_property_get (gwidget, "glade-window-icon-name", &icon_name);
+
+      if (icon_name)
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->icon_name_radio), TRUE);
+      else
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->icon_file_radio), TRUE);
+    }
+}
+
+static void
+glade_window_editor_editable_init (GladeEditableIface * iface)
+{
+  parent_editable_iface = g_type_interface_peek_parent (iface);
+
+  iface->load = glade_window_editor_load;
+}
+
+static void
+icon_name_toggled (GtkWidget         *widget,
+                  GladeWindowEditor *window_editor)
+{
+  GladeWindowEditorPrivate *priv = window_editor->priv;
+  GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (window_editor));
+  GladeProperty *property;
+
+  if (glade_editable_loading (GLADE_EDITABLE (window_editor)) || !gwidget)
+    return;
+
+  if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->icon_name_radio)))
+    return;
+
+  glade_editable_block (GLADE_EDITABLE (window_editor));
+
+  glade_command_push_group (_("Setting %s to use a named icon"),
+                            glade_widget_get_name (gwidget));
+
+  property = glade_widget_get_property (gwidget, "icon-name");
+  glade_command_set_property (property, NULL);
+  property = glade_widget_get_property (gwidget, "icon");
+  glade_command_set_property (property, NULL);
+  property = glade_widget_get_property (gwidget, "glade-window-icon-name");
+  glade_command_set_property (property, TRUE);
+
+  glade_command_pop_group ();
+
+  glade_editable_unblock (GLADE_EDITABLE (window_editor));
+
+  /* reload buttons and sensitivity and stuff... */
+  glade_editable_load (GLADE_EDITABLE (window_editor), gwidget);
+}
+
+static void
+icon_file_toggled (GtkWidget         *widget,
+                  GladeWindowEditor *window_editor)
+{
+  GladeWindowEditorPrivate *priv = window_editor->priv;
+  GladeWidget   *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (window_editor));
+  GladeProperty *property;
+
+  if (glade_editable_loading (GLADE_EDITABLE (window_editor)) || !gwidget)
+    return;
+
+  if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->icon_file_radio)))
+    return;
+
+  glade_editable_block (GLADE_EDITABLE (window_editor));
+
+  glade_command_push_group (_("Setting %s to use an icon file"),
+                            glade_widget_get_name (gwidget));
+
+  property = glade_widget_get_property (gwidget, "icon-name");
+  glade_command_set_property (property, NULL);
+  property = glade_widget_get_property (gwidget, "icon");
+  glade_command_set_property (property, NULL);
+  property = glade_widget_get_property (gwidget, "glade-window-icon-name");
+  glade_command_set_property (property, FALSE);
+
+  glade_command_pop_group ();
+
+  glade_editable_unblock (GLADE_EDITABLE (window_editor));
+
+  /* reload buttons and sensitivity and stuff... */
+  glade_editable_load (GLADE_EDITABLE (window_editor), gwidget);
+}
+
+
+GtkWidget *
+glade_window_editor_new (void)
+{
+  return g_object_new (GLADE_TYPE_WINDOW_EDITOR, NULL);
+}
diff --git a/plugins/gtk+/glade-window-editor.h b/plugins/gtk+/glade-window-editor.h
new file mode 100644
index 0000000..773a5ca
--- /dev/null
+++ b/plugins/gtk+/glade-window-editor.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2013 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_WINDOW_EDITOR_H_
+#define _GLADE_WINDOW_EDITOR_H_
+
+#include <gtk/gtk.h>
+#include <gladeui/glade.h>
+
+G_BEGIN_DECLS
+
+#define GLADE_TYPE_WINDOW_EDITOR                   (glade_window_editor_get_type ())
+#define GLADE_WINDOW_EDITOR(obj)                   (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
GLADE_TYPE_WINDOW_EDITOR, GladeWindowEditor))
+#define GLADE_WINDOW_EDITOR_CLASS(klass)           (G_TYPE_CHECK_CLASS_CAST ((klass), 
GLADE_TYPE_WINDOW_EDITOR, GladeWindowEditorClass))
+#define GLADE_IS_WINDOW_EDITOR(obj)        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_WINDOW_EDITOR))
+#define GLADE_IS_WINDOW_EDITOR_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_WINDOW_EDITOR))
+#define GLADE_WINDOW_EDITOR_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_WINDOW_EDITOR, 
GladeWindowEditorClass))
+
+typedef struct _GladeWindowEditor        GladeWindowEditor;
+typedef struct _GladeWindowEditorClass   GladeWindowEditorClass;
+typedef struct _GladeWindowEditorPrivate GladeWindowEditorPrivate;
+
+struct _GladeWindowEditor
+{
+  GladeEditorSkeleton  parent;
+
+  GladeWindowEditorPrivate *priv;
+};
+
+struct _GladeWindowEditorClass
+{
+  GladeEditorSkeletonClass parent;
+};
+
+GType            glade_window_editor_get_type (void) G_GNUC_CONST;
+GtkWidget       *glade_window_editor_new      (void);
+
+G_END_DECLS
+
+#endif  /* _GLADE_WINDOW_EDITOR_H_ */
diff --git a/plugins/gtk+/glade-window-editor.ui b/plugins/gtk+/glade-window-editor.ui
new file mode 100644
index 0000000..7833378
--- /dev/null
+++ b/plugins/gtk+/glade-window-editor.ui
@@ -0,0 +1,879 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gladeui 0.0 -->
+  <!-- interface-requires gtk+ 3.10 -->
+  <template class="GladeWindowEditor" 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="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="GtkLabel" id="params_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">Window Parameters</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="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="margin_left">12</property>
+            <property name="hexpand">False</property>
+            <property name="property_name">type</property>
+            <property name="custom_text" translatable="yes">Type:</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="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">type</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">2</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="type_hint_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">type-hint</property>
+            <property name="custom_text" translatable="yes">Hint:</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">3</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="type_hint_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">type-hint</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">3</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="position_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">window-position</property>
+            <property name="custom_text" translatable="yes">Position:</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="gravity_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">gravity</property>
+            <property name="custom_text" translatable="yes">Gravity:</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">3</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="position_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">window-position</property>
+          </object>
+          <packing>
+            <property name="left_attach">4</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="gravity_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">gravity</property>
+          </object>
+          <packing>
+            <property name="left_attach">4</property>
+            <property name="top_attach">3</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="groups_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">accel-groups</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="groups_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">accel-groups</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">4</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="transient_for_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">transient-for</property>
+            <property name="custom_text" translatable="yes">Transient For:</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="GladePropertyLabel" id="attached_to_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">attached-to</property>
+            <property name="custom_text" translatable="yes">Attached To:</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="transient_for_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">transient-for</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">5</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="attached_to_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">attached-to</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">6</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="role_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">role</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="role_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">role</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="startup_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">startup-id</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="startup_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">startup-id</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="GtkLabel" id="appearance_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">Appearance</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">9</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="title_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">title</property>
+            <property name="custom_text" translatable="yes">Title:</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="title_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">title</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>
+          <object class="GtkRadioButton" id="icon_file_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="icon_file_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="icon_file_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">icon</property>
+                <property name="custom_text" translatable="yes">Icon File</property>
+              </object>
+            </child>
+          </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="GtkRadioButton" id="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">icon_file_radio</property>
+            <signal name="toggled" handler="icon_name_toggled" swapped="no"/>
+            <child>
+              <object class="GladePropertyLabel" id="icon_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="property_name">icon-name</property>
+                <property name="custom_text" translatable="yes">Icon Name</property>
+              </object>
+            </child>
+          </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="icon_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="hexpand">False</property>
+            <property name="property_name">icon-name</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">12</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="icon_file_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">icon</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">13</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyLabel" id="default_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">default-width</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="GladePropertyLabel" id="default_height_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">default-height</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="default_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">default-width</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="GladePropertyShell" id="default_height_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">default-height</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="GtkLabel" id="flags_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">Window Flags</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">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="hide_titlebar_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">hide-titlebar-when-maximized</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">11</property>
+            <property name="width">4</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="decorated_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">decorated</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="deletable_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">deletable</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">17</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="destroy_with_parent_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">destroy-with-parent</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">17</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="resizable_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">resizable</property>
+            <property name="editor_type">GladeEpropCheck</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="urgent_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">urgency-hint</property>
+            <property name="editor_type">GladeEpropCheck</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="resize_grip_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-resize-grip</property>
+            <property name="editor_type">GladeEpropCheck</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="GladePropertyShell" id="modal_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">modal</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">17</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="skip_taskbar_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">skip-taskbar-hint</property>
+            <property name="editor_type">GladeEpropCheck</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="GladePropertyShell" id="skip_pager_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">skip-pager-hint</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">3</property>
+            <property name="top_attach">19</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="accept_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">accept-focus</property>
+            <property name="editor_type">GladeEpropCheck</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">20</property>
+            <property name="width">2</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GladePropertyShell" id="focus_on_map_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">focus-on-map</property>
+            <property name="editor_type">GladeEpropCheck</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>
+          <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="type_label"/>
+      <editor id="type_editor"/>
+      <editor id="type_hint_label"/>
+      <editor id="type_hint_editor"/>
+      <editor id="position_label"/>
+      <editor id="gravity_label"/>
+      <editor id="position_editor"/>
+      <editor id="gravity_editor"/>
+      <editor id="groups_label"/>
+      <editor id="groups_editor"/>
+      <editor id="transient_for_label"/>
+      <editor id="attached_to_label"/>
+      <editor id="transient_for_editor"/>
+      <editor id="attached_to_editor"/>
+      <editor id="role_label"/>
+      <editor id="role_editor"/>
+      <editor id="startup_label"/>
+      <editor id="startup_editor"/>
+      <editor id="title_label"/>
+      <editor id="title_editor"/>
+      <editor id="icon_file_label"/>
+      <editor id="icon_name_label"/>
+      <editor id="icon_name_editor"/>
+      <editor id="icon_file_editor"/>
+      <editor id="default_width_label"/>
+      <editor id="default_height_label"/>
+      <editor id="default_width_editor"/>
+      <editor id="default_height_editor"/>
+      <editor id="hide_titlebar_editor"/>
+      <editor id="decorated_editor"/>
+      <editor id="deletable_editor"/>
+      <editor id="destroy_with_parent_editor"/>
+      <editor id="resizable_editor"/>
+      <editor id="urgent_editor"/>
+      <editor id="resize_grip_editor"/>
+      <editor id="modal_editor"/>
+      <editor id="skip_taskbar_editor"/>
+      <editor id="skip_pager_editor"/>
+      <editor id="accept_focus_editor"/>
+      <editor id="focus_on_map_editor"/>
+    </child-editors>
+  </template>
+</interface>
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index 49ce4ec..bf3a1e9 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -405,25 +405,27 @@ embedded in another object</_tooltip>
     <glade-widget-class name="GtkWindow" generic-name="window" _title="Window" toplevel="True" 
default-width="440" default-height="250">
       <read-widget-function>glade_gtk_window_read_widget</read-widget-function>
       <write-widget-function>glade_gtk_window_write_widget</write-widget-function>
+      <create-editable-function>glade_gtk_window_create_editable</create-editable-function>
+      <set-property-function>glade_gtk_window_set_property</set-property-function>
 
       <properties> 
        <!-- Virtual accel-groups property to record accel groups -->
-       <property id="accel-groups" name="Accel Groups" ignore="True" since="2.16" save="False" weight="0.5">
+       <property id="accel-groups" name="Accel Groups" ignore="True" since="2.16" save="False" weight="0.5" 
custom-layout="True">
          <parameter-spec>
            <type>GladeParamObjects</type>
            <value-type>GtkAccelGroup</value-type>
          </parameter-spec>
          <_tooltip>A list of accel groups to be added to this window</_tooltip>
        </property>
-       <property id="attached-to" since="3.4" ignore="True"/>
-       <property id="opacity" since="2.12" ignore="True"/>
-       <property id="startup-id" since="2.12"/>
-       <property id="deletable" since="2.10"/>
-       <property id="transient-for" since="2.10" ignore="True"/>
+       <property id="attached-to" since="3.4" ignore="True" custom-layout="True"/>
+       <property id="startup-id" since="2.12" custom-layout="True"/>
+       <property id="deletable" since="2.10" custom-layout="True"/>
+       <property id="transient-for" since="2.10" ignore="True" custom-layout="True"/>
+       <property id="focus-visible" disabled="True"/>
        <property id="visible" default="False"/>
-       <property id="icon" ignore="True"/>
-       <property id="icon-name" themed-icon="True" ignore="True"/>
-       <property id="gravity">
+       <property id="icon" ignore="True" custom-layout="True"/>
+       <property id="icon-name" themed-icon="True" ignore="True" custom-layout="True"/>
+       <property id="gravity" custom-layout="True">
          <displayable-values>
            <value id="GDK_GRAVITY_NORTH_WEST" _name="North West"/>
            <value id="GDK_GRAVITY_NORTH" _name="North"/>
@@ -437,10 +439,10 @@ embedded in another object</_tooltip>
            <value id="GDK_GRAVITY_STATIC" _name="Static"/>
          </displayable-values>
        </property>
-       <property id="modal" ignore="True"/>
-       <property id="default-width" default="440" optional="True" optional-default="False"/>
-       <property id="default-height" default="250" optional="True" optional-default="False"/>
-       <property id="type-hint" ignore="True">
+       <property id="modal" ignore="True" custom-layout="True"/>
+       <property id="default-width" default="440" optional="True" optional-default="False" 
custom-layout="True"/>
+       <property id="default-height" default="250" optional="True" optional-default="False" 
custom-layout="True"/>
+       <property id="type-hint" ignore="True" custom-layout="True">
          <displayable-values>
            <value id="GDK_WINDOW_TYPE_HINT_NORMAL" _name="Normal"/>
            <value id="GDK_WINDOW_TYPE_HINT_DIALOG" _name="Dialog"/>
@@ -458,7 +460,7 @@ embedded in another object</_tooltip>
            <value id="GDK_WINDOW_TYPE_HINT_DND" _name="Drag and Drop"/>
          </displayable-values>
        </property>
-       <property id="type" ignore="True">
+       <property id="type" ignore="True" custom-layout="True">
          <displayable-values>
            <value id="GTK_WINDOW_TOPLEVEL" _name="Top Level"/>
            <value id="GTK_WINDOW_POPUP" _name="Popup"/>
@@ -469,10 +471,10 @@ embedded in another object</_tooltip>
        <property id="allow-grow" disabled="True" />
        <property id="resize-mode" disabled="True" />
        <property id="screen" disabled="True" />
-       <property id="resizable" ignore="True" />
-       <property id="decorated" ignore="True" />
-       <property id="title" ignore="True" translatable="True"/>
-       <property id="window-position" ignore="True">
+       <property id="resizable" ignore="True" custom-layout="True"/>
+       <property id="decorated" ignore="True" custom-layout="True"/>
+       <property id="title" ignore="True" translatable="True" custom-layout="True"/>
+       <property id="window-position" ignore="True" custom-layout="True">
          <displayable-values>
            <value id="GTK_WIN_POS_NONE" _name="None"/>
            <value id="GTK_WIN_POS_CENTER" _name="Center"/>
@@ -481,11 +483,26 @@ embedded in another object</_tooltip>
            <value id="GTK_WIN_POS_CENTER_ON_PARENT" _name="Center on Parent"/>
           </displayable-values>
        </property>
-       <property id="accept-focus" ignore="True"/>
+
+       <property id="role" ignore="True" custom-layout="True"/>
+       <property id="urgency-hint" ignore="True" custom-layout="True"/>
+       <property id="skip-taskbar-hint" ignore="True" custom-layout="True"/>
+       <property id="skip-pager-hint" ignore="True" custom-layout="True"/>
+       <property id="destroy-with-parent" ignore="True" custom-layout="True"/>
+       <property id="hide-titlebar-when-maximized" ignore="True" custom-layout="True"/>
+       <property id="accept-focus" ignore="True" custom-layout="True"/>
+       <property id="focus-on-map" ignore="True" custom-layout="True"/>
        <property id="application" since="3.0" disabled="True"/>
-       <property id="has-resize-grip" since="3.0"/>
+       <property id="has-resize-grip" since="3.0" custom-layout="True"/>
        <property id="resize-grip-visible" since="3.0" disabled="True"/>
        <property id="mnemonics-visible" disabled="True"/>
+
+       <!-- A virtual property to drive the radio button selecting icon name or icon file -->
+        <property id="glade-window-icon-name" default="True" save="False" visible="False">
+         <parameter-spec>
+           <type>GParamBoolean</type>
+         </parameter-spec>
+       </property>
       </properties>
     </glade-widget-class>
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f4c4760..2e2f0d5 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -85,3 +85,4 @@ plugins/gtk+/gtk+.xml.in
 [type: gettext/glade]plugins/gtk+/glade-label-editor.ui
 [type: gettext/glade]plugins/gtk+/glade-tool-button-editor.ui
 [type: gettext/glade]plugins/gtk+/glade-widget-editor.ui
+[type: gettext/glade]plugins/gtk+/glade-window-editor.ui


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