[glade] Move GladeWidgetAdaptor code for Gtk[Recent/File]Filter into it's own C file



commit c90bfb2f1d809c2f702a43d5d308cec8cc317482
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Sat May 4 16:16:06 2013 +0900

    Move GladeWidgetAdaptor code for Gtk[Recent/File]Filter into it's own C file

 plugins/gtk+/Makefile.am                    |    1 +
 plugins/gtk+/glade-gtk-recent-file-filter.c |  281 +++++++++++++++++++++++++++
 plugins/gtk+/glade-gtk.c                    |  255 ------------------------
 po/POTFILES.in                              |    1 +
 4 files changed, 283 insertions(+), 255 deletions(-)
---
diff --git a/plugins/gtk+/Makefile.am b/plugins/gtk+/Makefile.am
index d087282..1443ee3 100644
--- a/plugins/gtk+/Makefile.am
+++ b/plugins/gtk+/Makefile.am
@@ -71,6 +71,7 @@ libgladegtk_la_SOURCES =              \
        glade-gtk-radio-button.c        \
        glade-gtk-radio-menu-item.c     \
        glade-gtk-recent-chooser-menu.c \
+       glade-gtk-recent-file-filter.c  \
        glade-gtk-size-group.c          \
        glade-gtk-spin-button.c         \
        glade-gtk-switch.c              \
diff --git a/plugins/gtk+/glade-gtk-recent-file-filter.c b/plugins/gtk+/glade-gtk-recent-file-filter.c
new file mode 100644
index 0000000..3ba0e76
--- /dev/null
+++ b/plugins/gtk+/glade-gtk-recent-file-filter.c
@@ -0,0 +1,281 @@
+/*
+ * glade-gtk-recent-file-filter.c - GladeWidgetAdaptor for GtkRecentFilter and GtkFileFilter
+ *
+ * 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-string-list.h"
+
+#define GLADE_TAG_PATTERNS     "patterns"
+#define GLADE_TAG_PATTERN      "pattern"
+#define GLADE_TAG_MIME_TYPES   "mime-types"
+#define GLADE_TAG_MIME_TYPE    "mime-type"
+#define GLADE_TAG_APPLICATIONS "applications"
+#define GLADE_TAG_APPLICATION  "application"
+
+typedef enum {
+  FILTER_PATTERN,
+  FILTER_MIME,
+  FILTER_APPLICATION
+} FilterType;
+
+static void
+glade_gtk_filter_read_strings (GladeWidget  *widget,
+                              GladeXmlNode *node,
+                              FilterType    type,
+                              const gchar  *property_name)
+{
+  GladeXmlNode *items_node;
+  GladeXmlNode *item_node;
+  GList        *string_list = NULL;
+  const gchar  *string_group_tag;
+  const gchar  *string_tag;
+
+  switch (type)
+    {
+    case FILTER_PATTERN:
+      string_group_tag = GLADE_TAG_PATTERNS;
+      string_tag       = GLADE_TAG_PATTERN;
+      break;
+    case FILTER_MIME:
+      string_group_tag = GLADE_TAG_MIME_TYPES;
+      string_tag       = GLADE_TAG_MIME_TYPE;
+      break;
+    case FILTER_APPLICATION:
+      string_group_tag = GLADE_TAG_APPLICATIONS;
+      string_tag       = GLADE_TAG_APPLICATION;
+      break;
+    default:
+      g_assert_not_reached ();
+      break;
+    }
+
+  if ((items_node =
+       glade_xml_search_child (node, string_group_tag)) != NULL)
+    {
+
+      for (item_node = glade_xml_node_get_children (items_node);
+          item_node; item_node = glade_xml_node_next (item_node))
+       {
+         gchar *str;
+
+         if (!glade_xml_node_verify (item_node, string_tag))
+           continue;
+
+          if ((str = glade_xml_get_content (item_node)) == NULL)
+           continue;
+
+         string_list = glade_string_list_append (string_list, str, NULL, NULL, FALSE);
+         g_free (str);
+       }
+
+      glade_widget_property_set (widget, property_name, string_list);
+      glade_string_list_free (string_list);
+    }
+}
+
+static void
+glade_gtk_filter_write_strings (GladeWidget     *widget,
+                               GladeXmlContext *context,
+                               GladeXmlNode    *node,
+                               FilterType       type,
+                               const gchar     *property_name)
+{
+  GladeXmlNode *item_node;
+  GList        *string_list = NULL, *l;
+  GladeString  *string;
+  const gchar  *string_tag;
+
+  switch (type)
+    {
+    case FILTER_PATTERN:     string_tag = GLADE_TAG_PATTERN;     break;
+    case FILTER_MIME:        string_tag = GLADE_TAG_MIME_TYPE;   break;
+    case FILTER_APPLICATION: string_tag = GLADE_TAG_APPLICATION; break;
+    default:
+      g_assert_not_reached ();
+      break;
+    }
+
+  if (!glade_widget_property_get (widget, property_name, &string_list) || !string_list)
+    return;
+
+  for (l = string_list; l; l = l->next)
+    {
+      string = l->data;
+
+      item_node = glade_xml_node_new (context, string_tag);
+      glade_xml_node_append_child (node, item_node);
+
+      glade_xml_set_content (item_node, string->string);
+    }
+}
+
+GladeEditorProperty *
+glade_gtk_recent_file_filter_create_eprop (GladeWidgetAdaptor * adaptor,
+                                          GladePropertyClass * klass, 
+                                          gboolean use_command)
+{
+  GladeEditorProperty *eprop;
+  GParamSpec          *pspec;
+
+  pspec = glade_property_class_get_pspec (klass);
+
+  if (pspec->value_type == GLADE_TYPE_STRING_LIST)
+    {
+      eprop = glade_eprop_string_list_new (klass, use_command, FALSE);
+    }
+  else
+    eprop = GWA_GET_CLASS
+        (G_TYPE_OBJECT)->create_eprop (adaptor, klass, use_command);
+
+  return eprop;
+}
+
+gchar *
+glade_gtk_recent_file_filter_string_from_value (GladeWidgetAdaptor * adaptor,
+                                               GladePropertyClass * klass,
+                                               const GValue * value)
+{
+  GParamSpec *pspec;
+
+  pspec = glade_property_class_get_pspec (klass);
+
+  if (pspec->value_type == GLADE_TYPE_STRING_LIST)
+    {
+      GList *list = g_value_get_boxed (value);
+
+      return glade_string_list_to_string (list);
+    }
+  else
+    return GWA_GET_CLASS
+        (G_TYPE_OBJECT)->string_from_value (adaptor, klass, value);
+}
+
+void
+glade_gtk_recent_filter_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 (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
+
+  glade_gtk_filter_read_strings (widget, node, FILTER_MIME, "glade-mime-types");
+  glade_gtk_filter_read_strings (widget, node, FILTER_PATTERN, "glade-patterns");
+  glade_gtk_filter_read_strings (widget, node, FILTER_APPLICATION, "glade-applications");
+}
+
+void
+glade_gtk_recent_filter_write_widget (GladeWidgetAdaptor *adaptor,
+                                     GladeWidget        *widget,
+                                     GladeXmlContext    *context, 
+                                     GladeXmlNode       *node)
+{
+  GladeXmlNode *strings_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 (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
+
+  strings_node = glade_xml_node_new (context, GLADE_TAG_MIME_TYPES);
+  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_MIME, "glade-mime-types");
+
+  if (!glade_xml_node_get_children (strings_node))
+    glade_xml_node_delete (strings_node);
+  else
+    glade_xml_node_append_child (node, strings_node);
+
+
+  strings_node = glade_xml_node_new (context, GLADE_TAG_PATTERNS);
+  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_PATTERN, "glade-patterns");
+
+  if (!glade_xml_node_get_children (strings_node))
+    glade_xml_node_delete (strings_node);
+  else
+    glade_xml_node_append_child (node, strings_node);
+
+  strings_node = glade_xml_node_new (context, GLADE_TAG_APPLICATIONS);
+  glade_gtk_filter_write_strings (widget, context, strings_node, 
+                                 FILTER_APPLICATION, "glade-applications");
+
+  if (!glade_xml_node_get_children (strings_node))
+    glade_xml_node_delete (strings_node);
+  else
+    glade_xml_node_append_child (node, strings_node);
+}
+
+void
+glade_gtk_file_filter_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 (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
+
+  glade_gtk_filter_read_strings (widget, node, FILTER_MIME, "glade-mime-types");
+  glade_gtk_filter_read_strings (widget, node, FILTER_PATTERN, "glade-patterns");
+}
+
+void
+glade_gtk_file_filter_write_widget (GladeWidgetAdaptor *adaptor,
+                                   GladeWidget        *widget,
+                                   GladeXmlContext    *context, 
+                                   GladeXmlNode       *node)
+{
+  GladeXmlNode *strings_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 (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
+
+  strings_node = glade_xml_node_new (context, GLADE_TAG_MIME_TYPES);
+  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_MIME, "glade-mime-types");
+
+  if (!glade_xml_node_get_children (strings_node))
+    glade_xml_node_delete (strings_node);
+  else
+    glade_xml_node_append_child (node, strings_node);
+
+
+  strings_node = glade_xml_node_new (context, GLADE_TAG_PATTERNS);
+  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_PATTERN, "glade-patterns");
+
+  if (!glade_xml_node_get_children (strings_node))
+    glade_xml_node_delete (strings_node);
+  else
+    glade_xml_node_append_child (node, strings_node);
+}
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index 16dee84..bcadf16 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -79,258 +79,3 @@ glade_gtk_init (const gchar * name)
 }
 
 
-/*--------------------------- GtkRecentFilter ---------------------------------*/
-#define GLADE_TAG_PATTERNS     "patterns"
-#define GLADE_TAG_PATTERN      "pattern"
-#define GLADE_TAG_MIME_TYPES   "mime-types"
-#define GLADE_TAG_MIME_TYPE    "mime-type"
-#define GLADE_TAG_APPLICATIONS "applications"
-#define GLADE_TAG_APPLICATION  "application"
-
-typedef enum {
-  FILTER_PATTERN,
-  FILTER_MIME,
-  FILTER_APPLICATION
-} FilterType;
-
-
-static void
-glade_gtk_filter_read_strings (GladeWidget  *widget,
-                              GladeXmlNode *node,
-                              FilterType    type,
-                              const gchar  *property_name)
-{
-  GladeXmlNode *items_node;
-  GladeXmlNode *item_node;
-  GList        *string_list = NULL;
-  const gchar  *string_group_tag;
-  const gchar  *string_tag;
-
-  switch (type)
-    {
-    case FILTER_PATTERN:
-      string_group_tag = GLADE_TAG_PATTERNS;
-      string_tag       = GLADE_TAG_PATTERN;
-      break;
-    case FILTER_MIME:
-      string_group_tag = GLADE_TAG_MIME_TYPES;
-      string_tag       = GLADE_TAG_MIME_TYPE;
-      break;
-    case FILTER_APPLICATION:
-      string_group_tag = GLADE_TAG_APPLICATIONS;
-      string_tag       = GLADE_TAG_APPLICATION;
-      break;
-    default:
-      g_assert_not_reached ();
-      break;
-    }
-
-  if ((items_node =
-       glade_xml_search_child (node, string_group_tag)) != NULL)
-    {
-
-      for (item_node = glade_xml_node_get_children (items_node);
-          item_node; item_node = glade_xml_node_next (item_node))
-       {
-         gchar *str;
-
-         if (!glade_xml_node_verify (item_node, string_tag))
-           continue;
-
-          if ((str = glade_xml_get_content (item_node)) == NULL)
-           continue;
-
-         string_list = glade_string_list_append (string_list, str, NULL, NULL, FALSE);
-         g_free (str);
-       }
-
-      glade_widget_property_set (widget, property_name, string_list);
-      glade_string_list_free (string_list);
-    }
-}
-
-static void
-glade_gtk_filter_write_strings (GladeWidget     *widget,
-                               GladeXmlContext *context,
-                               GladeXmlNode    *node,
-                               FilterType       type,
-                               const gchar     *property_name)
-{
-  GladeXmlNode *item_node;
-  GList        *string_list = NULL, *l;
-  GladeString  *string;
-  const gchar  *string_tag;
-
-  switch (type)
-    {
-    case FILTER_PATTERN:     string_tag = GLADE_TAG_PATTERN;     break;
-    case FILTER_MIME:        string_tag = GLADE_TAG_MIME_TYPE;   break;
-    case FILTER_APPLICATION: string_tag = GLADE_TAG_APPLICATION; break;
-    default:
-      g_assert_not_reached ();
-      break;
-    }
-
-  if (!glade_widget_property_get (widget, property_name, &string_list) || !string_list)
-    return;
-
-  for (l = string_list; l; l = l->next)
-    {
-      string = l->data;
-
-      item_node = glade_xml_node_new (context, string_tag);
-      glade_xml_node_append_child (node, item_node);
-
-      glade_xml_set_content (item_node, string->string);
-    }
-}
-
-GladeEditorProperty *
-glade_gtk_recent_file_filter_create_eprop (GladeWidgetAdaptor * adaptor,
-                                          GladePropertyClass * klass, 
-                                          gboolean use_command)
-{
-  GladeEditorProperty *eprop;
-  GParamSpec          *pspec;
-
-  pspec = glade_property_class_get_pspec (klass);
-
-  if (pspec->value_type == GLADE_TYPE_STRING_LIST)
-    {
-      eprop = glade_eprop_string_list_new (klass, use_command, FALSE);
-    }
-  else
-    eprop = GWA_GET_CLASS
-        (G_TYPE_OBJECT)->create_eprop (adaptor, klass, use_command);
-
-  return eprop;
-}
-
-gchar *
-glade_gtk_recent_file_filter_string_from_value (GladeWidgetAdaptor * adaptor,
-                                               GladePropertyClass * klass,
-                                               const GValue * value)
-{
-  GParamSpec *pspec;
-
-  pspec = glade_property_class_get_pspec (klass);
-
-  if (pspec->value_type == GLADE_TYPE_STRING_LIST)
-    {
-      GList *list = g_value_get_boxed (value);
-
-      return glade_string_list_to_string (list);
-    }
-  else
-    return GWA_GET_CLASS
-        (G_TYPE_OBJECT)->string_from_value (adaptor, klass, value);
-}
-
-void
-glade_gtk_recent_filter_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 (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
-
-  glade_gtk_filter_read_strings (widget, node, FILTER_MIME, "glade-mime-types");
-  glade_gtk_filter_read_strings (widget, node, FILTER_PATTERN, "glade-patterns");
-  glade_gtk_filter_read_strings (widget, node, FILTER_APPLICATION, "glade-applications");
-}
-
-void
-glade_gtk_recent_filter_write_widget (GladeWidgetAdaptor *adaptor,
-                                     GladeWidget        *widget,
-                                     GladeXmlContext    *context, 
-                                     GladeXmlNode       *node)
-{
-  GladeXmlNode *strings_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 (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
-
-  strings_node = glade_xml_node_new (context, GLADE_TAG_MIME_TYPES);
-  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_MIME, "glade-mime-types");
-
-  if (!glade_xml_node_get_children (strings_node))
-    glade_xml_node_delete (strings_node);
-  else
-    glade_xml_node_append_child (node, strings_node);
-
-
-  strings_node = glade_xml_node_new (context, GLADE_TAG_PATTERNS);
-  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_PATTERN, "glade-patterns");
-
-  if (!glade_xml_node_get_children (strings_node))
-    glade_xml_node_delete (strings_node);
-  else
-    glade_xml_node_append_child (node, strings_node);
-
-  strings_node = glade_xml_node_new (context, GLADE_TAG_APPLICATIONS);
-  glade_gtk_filter_write_strings (widget, context, strings_node, 
-                                 FILTER_APPLICATION, "glade-applications");
-
-  if (!glade_xml_node_get_children (strings_node))
-    glade_xml_node_delete (strings_node);
-  else
-    glade_xml_node_append_child (node, strings_node);
-}
-
-/*--------------------------- GtkFileFilter ---------------------------------*/
-void
-glade_gtk_file_filter_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 (G_TYPE_OBJECT)->read_widget (adaptor, widget, node);
-
-  glade_gtk_filter_read_strings (widget, node, FILTER_MIME, "glade-mime-types");
-  glade_gtk_filter_read_strings (widget, node, FILTER_PATTERN, "glade-patterns");
-}
-
-void
-glade_gtk_file_filter_write_widget (GladeWidgetAdaptor *adaptor,
-                                   GladeWidget        *widget,
-                                   GladeXmlContext    *context, 
-                                   GladeXmlNode       *node)
-{
-  GladeXmlNode *strings_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 (G_TYPE_OBJECT)->write_widget (adaptor, widget, context, node);
-
-  strings_node = glade_xml_node_new (context, GLADE_TAG_MIME_TYPES);
-  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_MIME, "glade-mime-types");
-
-  if (!glade_xml_node_get_children (strings_node))
-    glade_xml_node_delete (strings_node);
-  else
-    glade_xml_node_append_child (node, strings_node);
-
-
-  strings_node = glade_xml_node_new (context, GLADE_TAG_PATTERNS);
-  glade_gtk_filter_write_strings (widget, context, strings_node, FILTER_PATTERN, "glade-patterns");
-
-  if (!glade_xml_node_get_children (strings_node))
-    glade_xml_node_delete (strings_node);
-  else
-    glade_xml_node_append_child (node, strings_node);
-}
diff --git a/po/POTFILES.in b/po/POTFILES.in
index dca741c..35efdf6 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -100,6 +100,7 @@ plugins/gtk+/glade-gtk-paned.c
 plugins/gtk+/glade-gtk-radio-button.c
 plugins/gtk+/glade-gtk-radio-menu-item.c
 plugins/gtk+/glade-gtk-recent-chooser-menu.c
+plugins/gtk+/glade-gtk-recent-file-filter.c
 plugins/gtk+/glade-gtk-size-group.c
 plugins/gtk+/glade-gtk-spin-button.c
 plugins/gtk+/glade-gtk-switch.c


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