[glade] Added adaptor to the gladeui plugin for editing GladeEditorSkeletons.
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] Added adaptor to the gladeui plugin for editing GladeEditorSkeletons.
- Date: Sat, 13 Apr 2013 17:50:58 +0000 (UTC)
commit d1f777a5ef6a1cf13f71e525f755198f204e81d7
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Sat Apr 13 20:31:23 2013 +0900
Added adaptor to the gladeui plugin for editing GladeEditorSkeletons.
plugins/gladeui/Makefile.am | 21 +++++
plugins/gladeui/glade-glade-editor-skeleton.c | 115 ++++++++++++++++++++++++++
plugins/gladeui/gladeui.xml | 21 ++++-
3 files changed, 154 insertions(+), 3 deletions(-)
---
diff --git a/plugins/gladeui/Makefile.am b/plugins/gladeui/Makefile.am
index a645e3a..4705e2f 100644
--- a/plugins/gladeui/Makefile.am
+++ b/plugins/gladeui/Makefile.am
@@ -1,3 +1,24 @@
+
+libgladeui = $(top_builddir)/gladeui/libgladeui-2.la
+
+# libgladegtk
+
+gladeglade_LTLIBRARIES = libgladeglade.la
+gladegladedir = $(pkglibdir)/modules
+
+libgladeglade_la_CPPFLAGS = \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ -DG_LOG_DOMAIN=\"GladeUI-Glade\" \
+ $(GTK_CFLAGS) \
+ $(PLUGINS_WARN_CFLAGS) \
+ $(AM_CPPFLAGS)
+
+libgladeglade_la_CFLAGS = $(AM_CFLAGS)
+libgladeglade_la_LDFLAGS = -module -avoid-version $(AM_LDFLAGS)
+libgladeglade_la_LIBADD = $(libgladeui) $(GTK_LIBS)
+libgladeglade_la_SOURCES = glade-glade-editor-skeleton.c
+
catalogsdir = $(pkgdatadir)/catalogs
catalogs_DATA = gladeui.xml
diff --git a/plugins/gladeui/glade-glade-editor-skeleton.c b/plugins/gladeui/glade-glade-editor-skeleton.c
new file mode 100644
index 0000000..77a047a
--- /dev/null
+++ b/plugins/gladeui/glade-glade-editor-skeleton.c
@@ -0,0 +1,115 @@
+/*
+ * glade-glade-editor-skeleton.c
+ *
+ * Copyright (C) 2013 Tristan Van Berkom.
+ *
+ * Author:
+ * Tristan Van Berkom <tvb gnome org>
+ *
+ * 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 <gladeui/glade.h>
+
+#define GLADE_TAG_SKELETON_EDITORS "child-editors"
+#define GLADE_TAG_SKELETON_EDITOR "editor"
+
+void
+glade_glade_editor_skeleton_read_widget (GladeWidgetAdaptor *adaptor,
+ GladeWidget *widget,
+ GladeXmlNode *node)
+{
+ GladeXmlNode *editors_node;
+ GladeProperty *property;
+ gchar *string = NULL;
+
+ GWA_GET_CLASS (GTK_TYPE_BOX)->read_widget (adaptor, widget, node);
+
+ if ((editors_node =
+ glade_xml_search_child (node, GLADE_TAG_SKELETON_EDITORS)) != NULL)
+ {
+ GladeXmlNode *node;
+
+ for (node = glade_xml_node_get_children (editors_node);
+ node; node = glade_xml_node_next (node))
+ {
+ gchar *widget_name, *tmp;
+
+ if (!glade_xml_node_verify (node, GLADE_TAG_SKELETON_EDITOR))
+ continue;
+
+ widget_name = glade_xml_get_property_string_required (node, GLADE_XML_TAG_ID, NULL);
+
+ if (string == NULL)
+ string = widget_name;
+ else if (widget_name != NULL)
+ {
+ tmp =
+ g_strdup_printf ("%s%s%s", string, GPC_OBJECT_DELIMITER,
+ widget_name);
+ string = (g_free (string), tmp);
+ g_free (widget_name);
+ }
+ }
+ }
+
+ if (string)
+ {
+ property = glade_widget_get_property (widget, "editors");
+ 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_glade_editor_skeleton_write_widget_after (GladeWidgetAdaptor *adaptor,
+ GladeWidget *widget,
+ GladeXmlContext *context,
+ GladeXmlNode *node)
+{
+ GladeXmlNode *widgets_node, *widget_node;
+ GList *editors = NULL, *list;
+ GladeWidget *awidget;
+
+ GWA_GET_CLASS (GTK_TYPE_BOX)->write_widget_after (adaptor, widget, context, node);
+
+ widgets_node = glade_xml_node_new (context, GLADE_TAG_SKELETON_EDITORS);
+
+ if (glade_widget_property_get (widget, "editors", &editors))
+ {
+ for (list = editors; list; list = list->next)
+ {
+ awidget = glade_widget_get_from_gobject (list->data);
+ widget_node = glade_xml_node_new (context, GLADE_TAG_SKELETON_EDITOR);
+ glade_xml_node_append_child (widgets_node, widget_node);
+ glade_xml_node_set_property_string (widget_node, GLADE_XML_TAG_ID,
+ glade_widget_get_name (awidget));
+ }
+ }
+
+ if (!glade_xml_node_get_children (widgets_node))
+ glade_xml_node_delete (widgets_node);
+ else
+ glade_xml_node_append_child (node, widgets_node);
+
+}
diff --git a/plugins/gladeui/gladeui.xml b/plugins/gladeui/gladeui.xml
index 1f752a2..04fe8db 100644
--- a/plugins/gladeui/gladeui.xml
+++ b/plugins/gladeui/gladeui.xml
@@ -1,6 +1,6 @@
<glade-catalog name="gladeui"
depends="gtk+"
- library="gladeui-2">
+ library="gladeglade">
<glade-widget-classes>
<!-- Main Glade User Interface Components -->
<glade-widget-class name="GladeEditor" generic-name="propertyeditor" title="Property Editor"
icon-name="widget-gtk-notebook"/>
@@ -8,9 +8,24 @@
<glade-widget-class name="GladeInspector" generic-name="inspector" title="Inspector"
icon-name="widget-gtk-treeview"/>
<!-- Glade Editor Components -->
+ <glade-widget-class name="GladeEditorSkeleton" generic-name="skeleton"
+ title="Editor Skeleton" icon-name="widget-gtk-frame">
+ <read-widget-function>glade_glade_editor_skeleton_read_widget</read-widget-function>
+
<write-widget-after-function>glade_glade_editor_skeleton_write_widget_after</write-widget-after-function>
+ <properties>
+ <property id="editors" name="Editors" ignore="True" save="False">
+ <parameter-spec>
+ <type>GladeParamObjects</type>
+ <value-type>GladeEditable</value-type>
+ </parameter-spec>
+ <tooltip>List of editors which are children to this skeleton</tooltip>
+ </property>
+ </properties>
+ </glade-widget-class>
+
<glade-widget-class name="GladePropertyLabel" generic-name="propertylabel" title="Property Label"
icon-name="widget-gtk-label"/>
<glade-widget-class name="GladePropertyShell" generic-name="propertyshell"
- title="Property Shell" icon-name="widget-gtk-frame" use-placeholders="False">
+ title="Property Shell" icon-name="widget-gtk-entry" use-placeholders="False">
<properties>
<property id="orientation" disabled="True"/>
<property id="size" disabled="True"/>
@@ -18,7 +33,6 @@
<property id="homogenous" disabled="True"/>
</properties>
</glade-widget-class>
-
</glade-widget-classes>
<glade-widget-group name="gladeui-main" title="Glade Embed Widgets">
@@ -31,6 +45,7 @@
<default-palette-state expanded="False"/>
+ <glade-widget-class-ref name="GladeEditorSkeleton"/>
<glade-widget-class-ref name="GladePropertyLabel"/>
<glade-widget-class-ref name="GladePropertyShell"/>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]