|
Packit |
1e8aac |
/*
|
|
Packit |
1e8aac |
* glade-glade-editor-skeleton.c
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* Copyright (C) 2013 Tristan Van Berkom.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* Author:
|
|
Packit |
1e8aac |
* Tristan Van Berkom <tvb@gnome.org>
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This library is free software; you can redistribute it and/or modify it
|
|
Packit |
1e8aac |
* under the terms of the GNU Lesser General Public License as
|
|
Packit |
1e8aac |
* published by the Free Software Foundation; either version 2.1 of
|
|
Packit |
1e8aac |
* the License, or (at your option) any later version.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This library is distributed in the hope that it will be useful, but
|
|
Packit |
1e8aac |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
1e8aac |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
1e8aac |
* Lesser General Public License for more details.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
1e8aac |
* License along with this program; if not, write to the Free Software
|
|
Packit |
1e8aac |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#include <config.h>
|
|
Packit |
1e8aac |
#include <gladeui/glade.h>
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define GLADE_TAG_SKELETON_EDITORS "child-editors"
|
|
Packit |
1e8aac |
#define GLADE_TAG_SKELETON_EDITOR "editor"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
glade_glade_editor_skeleton_read_widget (GladeWidgetAdaptor *adaptor,
|
|
Packit |
1e8aac |
GladeWidget *widget,
|
|
Packit |
1e8aac |
GladeXmlNode *node)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeXmlNode *editors_node;
|
|
Packit |
1e8aac |
GladeProperty *property;
|
|
Packit |
1e8aac |
gchar *string = NULL;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GWA_GET_CLASS (GTK_TYPE_BOX)->read_widget (adaptor, widget, node);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if ((editors_node =
|
|
Packit |
1e8aac |
glade_xml_search_child (node, GLADE_TAG_SKELETON_EDITORS)) != NULL)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeXmlNode *node;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
for (node = glade_xml_node_get_children (editors_node);
|
|
Packit |
1e8aac |
node; node = glade_xml_node_next (node))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gchar *widget_name, *tmp;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!glade_xml_node_verify (node, GLADE_TAG_SKELETON_EDITOR))
|
|
Packit |
1e8aac |
continue;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
widget_name = glade_xml_get_property_string_required (node, GLADE_XML_TAG_ID, NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (string == NULL)
|
|
Packit |
1e8aac |
string = widget_name;
|
|
Packit |
1e8aac |
else if (widget_name != NULL)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
tmp =
|
|
Packit |
1e8aac |
g_strdup_printf ("%s%s%s", string, GPC_OBJECT_DELIMITER,
|
|
Packit |
1e8aac |
widget_name);
|
|
Packit |
1e8aac |
string = (g_free (string), tmp);
|
|
Packit |
1e8aac |
g_free (widget_name);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (string)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
property = glade_widget_get_property (widget, "editors");
|
|
Packit |
1e8aac |
g_assert (property);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* we must synchronize this directly after loading this project
|
|
Packit |
1e8aac |
* (i.e. lookup the actual objects after they've been parsed and
|
|
Packit |
1e8aac |
* are present).
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
g_object_set_data_full (G_OBJECT (property),
|
|
Packit |
1e8aac |
"glade-loaded-object", string, g_free);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
glade_glade_editor_skeleton_write_widget_after (GladeWidgetAdaptor *adaptor,
|
|
Packit |
1e8aac |
GladeWidget *widget,
|
|
Packit |
1e8aac |
GladeXmlContext *context,
|
|
Packit |
1e8aac |
GladeXmlNode *node)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeXmlNode *widgets_node, *widget_node;
|
|
Packit |
1e8aac |
GList *editors = NULL, *list;
|
|
Packit |
1e8aac |
GladeWidget *awidget;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GWA_GET_CLASS (GTK_TYPE_BOX)->write_widget_after (adaptor, widget, context, node);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
widgets_node = glade_xml_node_new (context, GLADE_TAG_SKELETON_EDITORS);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (glade_widget_property_get (widget, "editors", &editors))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
for (list = editors; list; list = list->next)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
awidget = glade_widget_get_from_gobject (list->data);
|
|
Packit |
1e8aac |
widget_node = glade_xml_node_new (context, GLADE_TAG_SKELETON_EDITOR);
|
|
Packit |
1e8aac |
glade_xml_node_append_child (widgets_node, widget_node);
|
|
Packit |
1e8aac |
glade_xml_node_set_property_string (widget_node, GLADE_XML_TAG_ID,
|
|
Packit |
1e8aac |
glade_widget_get_name (awidget));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!glade_xml_node_get_children (widgets_node))
|
|
Packit |
1e8aac |
glade_xml_node_delete (widgets_node);
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
glade_xml_node_append_child (node, widgets_node);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
}
|