[glade] Move GladeWidgetAdaptor code for Gtk[Recent/File]Filter into it's own C file
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] Move GladeWidgetAdaptor code for Gtk[Recent/File]Filter into it's own C file
- Date: Sat, 4 May 2013 07:26:48 +0000 (UTC)
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]