[glade] Move GladeWidgetAdaptor code for GtkWindow into it's own C file



commit 37cc8fcf0c662a3d529db378e48ff0d3edeb684b
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Fri May 3 22:36:45 2013 +0900

    Move GladeWidgetAdaptor code for GtkWindow into it's own C file

 plugins/gtk+/Makefile.am        |    1 +
 plugins/gtk+/glade-accels.h     |    3 -
 plugins/gtk+/glade-gtk-window.c |  198 +++++++++++++++++++++++++++++++++++++++
 plugins/gtk+/glade-gtk.c        |  165 --------------------------------
 po/POTFILES.in                  |    1 +
 5 files changed, 200 insertions(+), 168 deletions(-)
---
diff --git a/plugins/gtk+/Makefile.am b/plugins/gtk+/Makefile.am
index 6138ff2..61acae5 100644
--- a/plugins/gtk+/Makefile.am
+++ b/plugins/gtk+/Makefile.am
@@ -47,6 +47,7 @@ libgladegtk_la_SOURCES =              \
        glade-gtk-switch.c              \
        glade-gtk-table.c               \
        glade-gtk-widget.c              \
+       glade-gtk-window.c              \
        glade-icon-factory-editor.c     \
        glade-icon-sources.c            \
        glade-image-editor.c            \
diff --git a/plugins/gtk+/glade-accels.h b/plugins/gtk+/glade-accels.h
index 589a957..0bb1548 100644
--- a/plugins/gtk+/glade-accels.h
+++ b/plugins/gtk+/glade-accels.h
@@ -15,9 +15,6 @@ G_BEGIN_DECLS
 #define GLADE_TAG_ACCEL_MODIFIERS   "modifiers"
 #define GLADE_TAG_ACCEL_SIGNAL      "signal"
 
-#define GLADE_TAG_ACCEL_GROUPS "accel-groups"
-#define GLADE_TAG_ACCEL_GROUP  "group"
-
 
 typedef struct _GladeKey                GladeKey;
 typedef struct _GladeAccelInfo          GladeAccelInfo;
diff --git a/plugins/gtk+/glade-gtk-window.c b/plugins/gtk+/glade-gtk-window.c
new file mode 100644
index 0000000..454cc14
--- /dev/null
+++ b/plugins/gtk+/glade-gtk-window.c
@@ -0,0 +1,198 @@
+/*
+ * glade-gtk-window.c - GladeWidgetAdaptor for GtkWindow
+ *
+ * Copyright (C) 2013 Tristan Van Berkom
+ *
+ * Authors:
+ *      Tristan Van Berkom <tristan van berkom gmail com>
+ *
+ * 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.
+ */
+
+#include <config.h>
+#include <glib/gi18n-lib.h>
+#include <gladeui/glade.h>
+
+#include "glade-window-editor.h"
+#include "glade-about-dialog-editor.h"
+#include "glade-gtk.h"
+
+#define GLADE_TAG_ACCEL_GROUPS "accel-groups"
+#define GLADE_TAG_ACCEL_GROUP  "group"
+
+static void
+glade_gtk_window_read_accel_groups (GladeWidget * widget, GladeXmlNode * node)
+{
+  GladeXmlNode *groups_node;
+  GladeProperty *property;
+  gchar *string = NULL;
+
+  if ((groups_node =
+       glade_xml_search_child (node, GLADE_TAG_ACCEL_GROUPS)) != NULL)
+    {
+      GladeXmlNode *node;
+
+      for (node = glade_xml_node_get_children (groups_node);
+           node; node = glade_xml_node_next (node))
+        {
+          gchar *group_name, *tmp;
+
+          if (!glade_xml_node_verify (node, GLADE_TAG_ACCEL_GROUP))
+            continue;
+
+          group_name = glade_xml_get_property_string_required
+              (node, GLADE_TAG_NAME, NULL);
+
+          if (string == NULL)
+            string = group_name;
+          else if (group_name != NULL)
+            {
+              tmp =
+                  g_strdup_printf ("%s%s%s", string, GPC_OBJECT_DELIMITER,
+                                   group_name);
+              string = (g_free (string), tmp);
+              g_free (group_name);
+            }
+        }
+    }
+
+  if (string)
+    {
+      property = glade_widget_get_property (widget, "accel-groups");
+      g_assert (property);
+
+      /* we must synchronize this directly after loading this project
+       * (i.e. lookup the actual objects after they've been parsed and
+       * are present).
+       */
+      g_object_set_data_full (G_OBJECT (property),
+                              "glade-loaded-object", string, g_free);
+    }
+}
+
+void
+glade_gtk_window_read_widget (GladeWidgetAdaptor * adaptor,
+                              GladeWidget * widget, GladeXmlNode * node)
+{
+  if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
+       glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
+    return;
+
+  /* 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,
+                                     GladeXmlNode * node)
+{
+  GladeXmlNode *groups_node, *group_node;
+  GList *groups = NULL, *list;
+  GladeWidget *agroup;
+
+  groups_node = glade_xml_node_new (context, GLADE_TAG_ACCEL_GROUPS);
+
+  if (glade_widget_property_get (widget, "accel-groups", &groups))
+    {
+      for (list = groups; list; list = list->next)
+        {
+          agroup = glade_widget_get_from_gobject (list->data);
+          group_node = glade_xml_node_new (context, GLADE_TAG_ACCEL_GROUP);
+          glade_xml_node_append_child (groups_node, group_node);
+          glade_xml_node_set_property_string (group_node, GLADE_TAG_NAME,
+                                              glade_widget_get_name (agroup));
+        }
+    }
+
+  if (!glade_xml_node_get_children (groups_node))
+    glade_xml_node_delete (groups_node);
+  else
+    glade_xml_node_append_child (node, groups_node);
+
+}
+
+
+void
+glade_gtk_window_write_widget (GladeWidgetAdaptor * adaptor,
+                               GladeWidget * widget,
+                               GladeXmlContext * context, GladeXmlNode * node)
+{
+  if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
+       glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
+    return;
+
+  /* First chain up and read in all the normal properties.. */
+  GWA_GET_CLASS (GTK_TYPE_WIDGET)->write_widget (adaptor, widget, context,
+                                                 node);
+
+  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)
+    {
+      GType window_type = glade_widget_adaptor_get_object_type (adaptor);
+
+      if (g_type_is_a (window_type, GTK_TYPE_ABOUT_DIALOG))
+       editable = (GladeEditable *) glade_about_dialog_editor_new ();
+      else
+       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);
+}
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index b9afb7e..8048dc0 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -85,171 +85,6 @@ glade_gtk_init (const gchar * name)
 {
 }
 
-/* ----------------------------- GtkWindow ------------------------------ */
-static void
-glade_gtk_window_read_accel_groups (GladeWidget * widget, GladeXmlNode * node)
-{
-  GladeXmlNode *groups_node;
-  GladeProperty *property;
-  gchar *string = NULL;
-
-  if ((groups_node =
-       glade_xml_search_child (node, GLADE_TAG_ACCEL_GROUPS)) != NULL)
-    {
-      GladeXmlNode *node;
-
-      for (node = glade_xml_node_get_children (groups_node);
-           node; node = glade_xml_node_next (node))
-        {
-          gchar *group_name, *tmp;
-
-          if (!glade_xml_node_verify (node, GLADE_TAG_ACCEL_GROUP))
-            continue;
-
-          group_name = glade_xml_get_property_string_required
-              (node, GLADE_TAG_NAME, NULL);
-
-          if (string == NULL)
-            string = group_name;
-          else if (group_name != NULL)
-            {
-              tmp =
-                  g_strdup_printf ("%s%s%s", string, GPC_OBJECT_DELIMITER,
-                                   group_name);
-              string = (g_free (string), tmp);
-              g_free (group_name);
-            }
-        }
-    }
-
-  if (string)
-    {
-      property = glade_widget_get_property (widget, "accel-groups");
-      g_assert (property);
-
-      /* we must synchronize this directly after loading this project
-       * (i.e. lookup the actual objects after they've been parsed and
-       * are present).
-       */
-      g_object_set_data_full (G_OBJECT (property),
-                              "glade-loaded-object", string, g_free);
-    }
-}
-
-void
-glade_gtk_window_read_widget (GladeWidgetAdaptor * adaptor,
-                              GladeWidget * widget, GladeXmlNode * node)
-{
-  if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
-       glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
-    return;
-
-  /* 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,
-                                     GladeXmlNode * node)
-{
-  GladeXmlNode *groups_node, *group_node;
-  GList *groups = NULL, *list;
-  GladeWidget *agroup;
-
-  groups_node = glade_xml_node_new (context, GLADE_TAG_ACCEL_GROUPS);
-
-  if (glade_widget_property_get (widget, "accel-groups", &groups))
-    {
-      for (list = groups; list; list = list->next)
-        {
-          agroup = glade_widget_get_from_gobject (list->data);
-          group_node = glade_xml_node_new (context, GLADE_TAG_ACCEL_GROUP);
-          glade_xml_node_append_child (groups_node, group_node);
-          glade_xml_node_set_property_string (group_node, GLADE_TAG_NAME,
-                                              glade_widget_get_name (agroup));
-        }
-    }
-
-  if (!glade_xml_node_get_children (groups_node))
-    glade_xml_node_delete (groups_node);
-  else
-    glade_xml_node_append_child (node, groups_node);
-
-}
-
-
-void
-glade_gtk_window_write_widget (GladeWidgetAdaptor * adaptor,
-                               GladeWidget * widget,
-                               GladeXmlContext * context, GladeXmlNode * node)
-{
-  if (!(glade_xml_node_verify_silent (node, GLADE_XML_TAG_WIDGET) ||
-       glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE)))
-    return;
-
-  /* First chain up and read in all the normal properties.. */
-  GWA_GET_CLASS (GTK_TYPE_WIDGET)->write_widget (adaptor, widget, context,
-                                                 node);
-
-  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)
-    {
-      GType window_type = glade_widget_adaptor_get_object_type (adaptor);
-
-      if (g_type_is_a (window_type, GTK_TYPE_ABOUT_DIALOG))
-       editable = (GladeEditable *) glade_about_dialog_editor_new ();
-      else
-       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);
-}
 
 /* ----------------------------- GtkAboutDialog ------------------------------ */
 void
diff --git a/po/POTFILES.in b/po/POTFILES.in
index c59ef0b..b0a66fc 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -73,6 +73,7 @@ plugins/gtk+/glade-gtk-notebook.c
 plugins/gtk+/glade-gtk-paned.c
 plugins/gtk+/glade-gtk-table.c
 plugins/gtk+/glade-gtk-widget.c
+plugins/gtk+/glade-gtk-window.c
 plugins/gtk+/glade-icon-factory-editor.c
 plugins/gtk+/glade-icon-sources.c
 plugins/gtk+/glade-image-editor.c


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