[glade/internal-children] Added support to define internal children in the catalog. Added initial support for GtkInfoBar
- From: Juan Pablo Ugarte <jpu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade/internal-children] Added support to define internal children in the catalog. Added initial support for GtkInfoBar
- Date: Fri, 4 Mar 2011 23:58:18 +0000 (UTC)
commit 29e4c623dc59a695ab733326650ea0bb6cb6b32f
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date: Fri Mar 4 20:53:52 2011 -0300
Added support to define internal children in the catalog.
Added initial support for GtkInfoBar
gladeui/glade-project.c | 2 +-
gladeui/glade-widget-adaptor.c | 229 ++++++++++++++++++----
gladeui/glade-widget-adaptor.h | 2 +
gladeui/glade-widget.c | 52 ++++-
gladeui/glade-widget.h | 2 +
gladeui/glade-xml-utils.h | 2 +
plugins/glade-catalog.dtd | 6 +
plugins/gtk+/Makefile.am | 2 +
plugins/gtk+/glade-gtk-action-widgets.c | 154 +++++++++------
plugins/gtk+/glade-gtk.c | 337 ++----------------------------
plugins/gtk+/gtk+.xml.in | 60 +++++-
11 files changed, 418 insertions(+), 430 deletions(-)
---
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c
index e75855e..692096d 100644
--- a/gladeui/glade-project.c
+++ b/gladeui/glade-project.c
@@ -2726,7 +2726,7 @@ glade_project_add_object (GladeProject * project, GObject * object)
g_free (name);
}
-
+g_message ("%s %p %s", __func__, object, glade_widget_get_name (gwidget));
glade_project_reserve_widget_name (project, gwidget, glade_widget_get_name (gwidget));
glade_widget_set_project (gwidget, (gpointer) project);
diff --git a/gladeui/glade-widget-adaptor.c b/gladeui/glade-widget-adaptor.c
index f9a8aee..2d22789 100644
--- a/gladeui/glade-widget-adaptor.c
+++ b/gladeui/glade-widget-adaptor.c
@@ -64,43 +64,43 @@ struct _GladeWidgetAdaptorPrivate
gchar *name; /* Name of the widget, for example GtkButton */
gchar *generic_name; /* Used to generate names of new widgets, for
- * example "button" so that we generate button1,
- * button2, buttonX ..
- */
+ * example "button" so that we generate button1,
+ * button2, buttonX ..
+ */
gchar *icon_name; /* icon name to use for widget class */
gchar *missing_icon; /* the name of the missing icon if it was not found */
gchar *title; /* Translated class name used in the UI */
GList *properties; /* List of GladePropertyClass objects.
- * [see glade-property.h] this list contains
- * properties about the widget that we are going
- * to modify. Like "title", "label", "rows" .
- * Each property creates an input in the propety
- * editor.
- */
+ * [see glade-property.h] this list contains
+ * properties about the widget that we are going
+ * to modify. Like "title", "label", "rows" .
+ * Each property creates an input in the propety
+ * editor.
+ */
GList *packing_props; /* List of GladePropertyClass objects that describe
- * properties for child objects packing definition -
- * note there may be more than one type of child supported
- * by a widget and thus they may have different sets
- * of properties for each type - this association is
- * managed on the GladePropertyClass proper.
- */
- GList *signals; /* List of GladeSignalClass objects */
- GList *child_packings; /* Default packing property values */
- GList *actions; /* A list of GWActionClass */
- GList *packing_actions; /* A list of GWActionClass for child objects */
- gchar *catalog; /* The name of the widget catalog this class
- * was declared by.
- */
- gchar *book; /* DevHelp search namespace for this widget class
- */
-
- GdkCursor *cursor; /* a cursor for inserting widgets */
-
- gchar *special_child_type; /* Special case code for children that
- * are special children (like notebook tab
- * widgets for example).
- */
+ * properties for child objects packing definition -
+ * note there may be more than one type of child supported
+ * by a widget and thus they may have different sets
+ * of properties for each type - this association is
+ * managed on the GladePropertyClass proper.
+ */
+ GList *signals; /* List of GladeSignalClass objects */
+ GList *child_packings; /* Default packing property values */
+ GList *actions; /* A list of GWActionClass */
+ GList *packing_actions; /* A list of GWActionClass for child objects */
+ GList *internal_children; /* A list of GladeInternalChild */
+ gchar *catalog; /* The name of the widget catalog this class
+ * was declared by.
+ */
+ gchar *book; /* DevHelp search namespace for this widget class */
+
+ GdkCursor *cursor; /* a cursor for inserting widgets */
+
+ gchar *special_child_type; /* Special case code for children that
+ * are special children (like notebook tab
+ * widgets for example).
+ */
};
struct _GladeChildPacking
@@ -116,6 +116,12 @@ struct _GladePackingDefault
gchar *value;
};
+struct _GladeInternalChild
+{
+ gchar *name;
+ gboolean anarchist;
+ GList *children;
+};
enum
{
@@ -133,6 +139,7 @@ enum
typedef struct _GladeChildPacking GladeChildPacking;
typedef struct _GladePackingDefault GladePackingDefault;
+typedef struct _GladeInternalChild GladeInternalChild;
static GObjectClass *parent_class = NULL;
static GHashTable *adaptor_hash = NULL;
@@ -277,6 +284,12 @@ glade_widget_adaptor_get_parent_adaptor (GladeWidgetAdaptor * adaptor)
return glade_widget_adaptor_get_parent_adaptor_by_type (adaptor->priv->type);
}
+gboolean
+glade_widget_adaptor_has_internal_children (GladeWidgetAdaptor *adaptor)
+{
+ return adaptor->priv->internal_children != NULL;
+}
+
static gint
gwa_signal_comp (gpointer a, gpointer b)
{
@@ -525,6 +538,28 @@ gwa_inherit_signals (GladeWidgetAdaptor * adaptor)
}
}
+static GList *
+gwa_internal_children_clone (GList *children)
+{
+ GList *l, *retval = NULL;
+
+ for (l = children; l; l = g_list_next (l))
+ {
+ GladeInternalChild *data = g_new0 (GladeInternalChild, 1);
+ GladeInternalChild *child = l->data;
+
+ data->name = g_strdup (child->name);
+ data->anarchist = child->anarchist;
+
+ retval = g_list_prepend (retval, data);
+
+ if (child->children)
+ data->children = gwa_internal_children_clone (child->children);
+ }
+
+ return retval;
+}
+
static GObject *
glade_widget_adaptor_constructor (GType type,
guint n_construct_properties,
@@ -610,6 +645,12 @@ glade_widget_adaptor_constructor (GType type,
}
}
+ /* Copy parent internal children */
+ if (parent_adaptor && parent_adaptor->priv->internal_children)
+ {
+ adaptor->priv->internal_children = gwa_internal_children_clone (parent_adaptor->priv->internal_children);
+ }
+
return ret_obj;
}
@@ -631,6 +672,20 @@ gwa_child_packing_free (GladeChildPacking * packing)
}
static void
+gwa_glade_internal_child_free (GladeInternalChild *child)
+{
+ g_free (child->name);
+
+ if (child->children)
+ {
+ g_list_foreach (child->children, (GFunc) gwa_glade_internal_child_free, NULL);
+ g_list_free (child->children);
+ }
+
+ g_free (child);
+}
+
+static void
glade_widget_adaptor_finalize (GObject * object)
{
GladeWidgetAdaptor *adaptor = GLADE_WIDGET_ADAPTOR (object);
@@ -689,6 +744,13 @@ glade_widget_adaptor_finalize (GObject * object)
g_list_free (adaptor->priv->packing_actions);
}
+ if (adaptor->priv->internal_children)
+ {
+ g_list_foreach (adaptor->priv->internal_children,
+ (GFunc) gwa_glade_internal_child_free, NULL);
+ g_list_free (adaptor->priv->internal_children);
+ }
+
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -812,6 +874,24 @@ glade_widget_adaptor_object_construct_object (GladeWidgetAdaptor * adaptor,
return g_object_newv (adaptor->priv->type, n_parameters, parameters);
}
+
+static GObject *
+glade_widget_adaptor_get_internal_child_impl (GladeWidgetAdaptor *adaptor,
+ GObject *object,
+ const gchar *name)
+{
+ static GtkBuilder *builder = NULL;
+
+ g_message ("%s %d %p, %s", __func__, GTK_IS_BUILDABLE (object), object, name);
+
+ g_return_val_if_fail (GTK_IS_BUILDABLE (object), NULL);
+
+ /* Dummy object just in case the interface use it for something */
+ if (builder == NULL) builder = gtk_builder_new ();
+
+ return gtk_buildable_get_internal_child (GTK_BUILDABLE (object), builder, name);
+}
+
static gboolean
glade_widget_adaptor_object_add_verify (GladeWidgetAdaptor *adaptor,
GObject *parent,
@@ -1219,7 +1299,7 @@ glade_widget_adaptor_class_init (GladeWidgetAdaptorClass * adaptor_class)
glade_widget_adaptor_object_construct_object;
adaptor_class->deep_post_create = NULL;
adaptor_class->post_create = NULL;
- adaptor_class->get_internal_child = NULL;
+ adaptor_class->get_internal_child = glade_widget_adaptor_get_internal_child_impl;
adaptor_class->verify_property = NULL;
adaptor_class->set_property = glade_widget_adaptor_object_set_property;
adaptor_class->get_property = glade_widget_adaptor_object_get_property;
@@ -2184,6 +2264,38 @@ gwa_set_signals_from_node (GladeWidgetAdaptor *adaptor,
}
}
+static GList *
+gwa_internal_children_update_from_node (GList *internal_children, GladeXmlNode *node)
+{
+ GList *retval = internal_children;
+ GladeXmlNode *child, *children;
+
+ for (child = glade_xml_node_get_children (node);
+ child; child = glade_xml_node_next (child))
+ {
+ GladeInternalChild *data;
+ gchar *name;
+
+ if (!glade_xml_node_verify (child, GLADE_XML_TAG_WIDGET))
+ continue;
+
+ if (!(name = glade_xml_get_property_string_required (child, GLADE_TAG_NAME, NULL)))
+ continue;
+
+ data = g_new0 (GladeInternalChild, 1);
+
+ data->name = name;
+ data->anarchist = glade_xml_get_boolean (child, GLADE_TAG_ANARCHIST, FALSE);
+
+ if ((children = glade_xml_search_child (child, GLADE_TAG_INTERNAL_CHILDREN)))
+ data->children = gwa_internal_children_update_from_node (data->children,children);
+
+ retval = g_list_prepend (retval, data);
+ }
+
+ return retval;
+}
+
static gboolean
gwa_extend_with_node (GladeWidgetAdaptor * adaptor,
GladeXmlNode * node,
@@ -2221,6 +2333,9 @@ gwa_extend_with_node (GladeWidgetAdaptor * adaptor,
glade_xml_search_child (node, GLADE_TAG_PACKING_ACTIONS)) != NULL)
gwa_action_update_from_node (adaptor, TRUE, child, domain, NULL);
+ if ((child = glade_xml_search_child (node, GLADE_TAG_INTERNAL_CHILDREN)))
+ adaptor->priv->internal_children = gwa_internal_children_update_from_node (adaptor->priv->internal_children, child);
+
return TRUE;
}
@@ -2934,6 +3049,43 @@ glade_widget_adaptor_construct_object (GladeWidgetAdaptor * adaptor,
parameters);
}
+static void
+gwa_internal_children_create (GladeWidgetAdaptor *adaptor,
+ GObject *parent_object,
+ GObject *object,
+ GList *children,
+ GladeCreateReason reason)
+{
+ gchar *parent_name = adaptor->priv->generic_name;
+ GladeWidget *gobject = glade_widget_get_from_gobject (object);
+ GList *l;
+
+ g_message ("%s", __func__);
+
+ for (l = children; l; l = g_list_next (l))
+ {
+ GladeInternalChild *internal = l->data;
+ GObject *child;
+
+ child = glade_widget_adaptor_get_internal_child (adaptor,
+ parent_object,
+ internal->name);
+ g_message ("%s child %s=%p", __func__, internal->name, child);
+ if (child)
+ {
+ glade_widget_adaptor_create_internal (gobject,
+ child,
+ internal->name,
+ parent_name,
+ internal->anarchist,
+ reason);
+
+ if (internal->children)
+ gwa_internal_children_create (adaptor, parent_object, child, internal->children, reason);
+ }
+ }
+}
+
/**
* glade_widget_adaptor_post_create:
* @adaptor: A #GladeWidgetAdaptor
@@ -2943,13 +3095,17 @@ glade_widget_adaptor_construct_object (GladeWidgetAdaptor * adaptor,
* An adaptor function to be called after the object is created
*/
void
-glade_widget_adaptor_post_create (GladeWidgetAdaptor * adaptor,
- GObject * object, GladeCreateReason reason)
+glade_widget_adaptor_post_create (GladeWidgetAdaptor *adaptor,
+ GObject *object, GladeCreateReason reason)
{
g_return_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor));
g_return_if_fail (G_IS_OBJECT (object));
g_return_if_fail (g_type_is_a (G_OBJECT_TYPE (object), adaptor->priv->type));
-
+g_message ("%s start", __func__);
+ /* Create internal widgets */
+ if (adaptor->priv->internal_children)
+ gwa_internal_children_create (adaptor, object, object, adaptor->priv->internal_children, reason);
+
/* Run post_create in 2 stages, one that chains up and all class adaptors
* in the hierarchy get a peek, another that is used to setup placeholders
* and things that differ from the child/parent implementations
@@ -2957,11 +3113,12 @@ glade_widget_adaptor_post_create (GladeWidgetAdaptor * adaptor,
if (GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->deep_post_create)
GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->deep_post_create (adaptor, object,
reason);
-
+
if (GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->post_create)
GLADE_WIDGET_ADAPTOR_GET_CLASS (adaptor)->post_create (adaptor, object,
reason);
/* XXX Dont complain here if no implementation is found */
+g_message ("%s end", __func__);
}
/**
diff --git a/gladeui/glade-widget-adaptor.h b/gladeui/glade-widget-adaptor.h
index 1997258..3e65d52 100644
--- a/gladeui/glade-widget-adaptor.h
+++ b/gladeui/glade-widget-adaptor.h
@@ -843,6 +843,8 @@ GladeSignalClass *glade_widget_adaptor_get_signal_class (GladeWidgetAdapto
const gchar *name);
GladeWidgetAdaptor *glade_widget_adaptor_get_parent_adaptor (GladeWidgetAdaptor *adaptor);
+gboolean glade_widget_adaptor_has_internal_children (GladeWidgetAdaptor *adaptor);
+
G_END_DECLS
#endif /* _GLADE_WIDGET_ADAPTOR_H_ */
diff --git a/gladeui/glade-widget.c b/gladeui/glade-widget.c
index 30bfe1b..6bcb254 100644
--- a/gladeui/glade-widget.c
+++ b/gladeui/glade-widget.c
@@ -1140,6 +1140,9 @@ glade_widget_get_real_property (GObject * object,
case PROP_VISIBLE:
g_value_set_boolean (value, widget->priv->visible);
break;
+ case PROP_REASON:
+ g_value_set_int (value, widget->priv->construct_reason);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1284,7 +1287,7 @@ glade_widget_class_init (GladeWidgetClass * klass)
GLADE_CREATE_USER,
GLADE_CREATE_REASONS - 1,
GLADE_CREATE_USER,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE));
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
g_object_class_install_property
(object_class, PROP_TOPLEVEL_WIDTH,
@@ -1484,10 +1487,7 @@ glade_widget_get_internal_child (GladeWidget * parent, const gchar * internal)
{
while (parent)
{
- GladeWidgetAdaptorClass *adaptor_class =
- GLADE_WIDGET_ADAPTOR_GET_CLASS (parent->priv->adaptor);
-
- if (adaptor_class->get_internal_child)
+ if (glade_widget_adaptor_has_internal_children (parent->priv->adaptor))
return glade_widget_adaptor_get_internal_child
(parent->priv->adaptor, parent->priv->object, internal);
@@ -3474,6 +3474,45 @@ glade_widget_set_parent (GladeWidget * widget, GladeWidget * parent)
}
/**
+ * glade_widget_find_child:
+ * @widget: A #GladeWidget
+ * @name: child name
+ *
+ * Finds a child widget named @name.
+ *
+ * Returns: The child of widget or NULL if ti was not found
+ */
+GladeWidget *
+glade_widget_find_child (GladeWidget *widget, gchar *name)
+{
+ GList *adapter_children;
+ GladeWidget *real_child = NULL;
+ GList *node;
+
+ g_return_val_if_fail (GLADE_IS_WIDGET (widget), NULL);
+
+ adapter_children =
+ glade_widget_adaptor_get_children (glade_widget_get_adaptor (widget),
+ widget->priv->object);
+
+ for (node = adapter_children; node && !real_child; node = g_list_next (node))
+ {
+ GladeWidget *child = glade_widget_get_from_gobject (node->data);
+
+ if (child)
+ {
+ if (strcmp (child->priv->name, name) == 0)
+ real_child = child;
+ else
+ real_child = glade_widget_find_child (child, name);
+ }
+ }
+ g_list_free (adapter_children);
+
+ return real_child;
+}
+
+/**
* glade_widget_get_children:
* @widget: A #GladeWidget
*
@@ -3511,7 +3550,6 @@ glade_widget_get_children (GladeWidget * widget)
return g_list_reverse (real_children);
}
-
/**
* glade_widget_get_toplevel:
* @widget: A #GladeWidget
@@ -3767,7 +3805,7 @@ glade_widget_read (GladeProject * project,
if (internal)
{
GObject *child_object =
- glade_widget_get_internal_child (parent, internal);
+ glade_widget_get_internal_child (parent, internal);
if (!child_object)
{
diff --git a/gladeui/glade-widget.h b/gladeui/glade-widget.h
index 091a31d..d3ce6fc 100644
--- a/gladeui/glade-widget.h
+++ b/gladeui/glade-widget.h
@@ -384,6 +384,8 @@ void glade_widget_support_changed (GladeWidget *w
GtkTreeModel *glade_widget_get_signal_model (GladeWidget *widget);
+GladeWidget *glade_widget_find_child (GladeWidget *widget,
+ gchar *name);
G_END_DECLS
diff --git a/gladeui/glade-xml-utils.h b/gladeui/glade-xml-utils.h
index e08bd1b..c07da74 100644
--- a/gladeui/glade-xml-utils.h
+++ b/gladeui/glade-xml-utils.h
@@ -80,6 +80,8 @@ typedef struct _GladeProject GladeProject;
#define GLADE_TAG_BOOK "book"
#define GLADE_TAG_SIGNALS "signals"
#define GLADE_TAG_SIGNAL "signal"
+#define GLADE_TAG_INTERNAL_CHILDREN "internal-children"
+#define GLADE_TAG_ANARCHIST "anarchist"
#define GLADE_TAG_DEFAULT "default"
#define GLADE_TAG_PARENTLESS_WIDGET "parentless-widget"
#define GLADE_TAG_DISABLED "disabled"
diff --git a/plugins/glade-catalog.dtd b/plugins/glade-catalog.dtd
index 5a77c3f..e072e5f 100644
--- a/plugins/glade-catalog.dtd
+++ b/plugins/glade-catalog.dtd
@@ -10,6 +10,7 @@
<!ELEMENT glade-widget-class (post-create-function?,
get-internal-child-function?,
child-property-applies-function?,
+ internal-children?,
properties?,
children?,
packing-defaults?)>
@@ -40,6 +41,11 @@
optional-default CDATA #IMPLIED
translatable CDATA #IMPLIED>
+<!ELEMENT internal-children (object+)>
+<!ELEMENT object (internal-children?)>
+<!ATTLIST object name CDATA #REQUIRED
+ anarchist CDATA #IMPLIED>
+
<!ELEMENT set-function (#PCDATA)>
<!ELEMENT get-function (#PCDATA)>
<!ELEMENT spec (#PCDATA)>
diff --git a/plugins/gtk+/Makefile.am b/plugins/gtk+/Makefile.am
index 957163a..5810eea 100644
--- a/plugins/gtk+/Makefile.am
+++ b/plugins/gtk+/Makefile.am
@@ -44,6 +44,8 @@ libgladegtk_la_SOURCES = \
glade-string-list.c \
glade-gtk-table.c \
glade-gtk-grid.c \
+ glade-gtk-action-widgets.c \
+ glade-gtk-info-bar.c \
glade-gtk-marshallers.c
libgladegtk_la_LDFLAGS = -module -avoid-version $(AM_LDFLAGS)
diff --git a/plugins/gtk+/glade-gtk-action-widgets.c b/plugins/gtk+/glade-gtk-action-widgets.c
index c527b3b..2a9b3c6 100644
--- a/plugins/gtk+/glade-gtk-action-widgets.c
+++ b/plugins/gtk+/glade-gtk-action-widgets.c
@@ -1,15 +1,58 @@
-#define GLADE_TAG_ACTION_WIDGETS "action-widgets"
-#define GLADE_TAG_ACTION_WIDGET "action-widget"
-#define GLADE_TAG_RESPONSE "response"
-
+/*
+ * glade-gtk-action-widgets.c
+ *
+ * Copyright (C) 2008 - 2010 Tristan Van Berkom
+ * 2011 Juan Pablo Ugarte
+ *
+ * Authors:
+ * Tristan Van Berkom <tvb gnome org>
+ * Juan Pablo Ugarte <juanpablougarte 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 "glade-gtk-action-widgets.h"
+
+static GladeWidget *
+glade_gtk_action_widgets_get_area (GladeWidget *widget, gchar *action_area)
+{
+ GladeWidgetAdaptor *adaptor = glade_widget_get_adaptor (widget);
+ GObject *object;
+
+ object = glade_widget_adaptor_get_internal_child (adaptor,
+ glade_widget_get_object (widget),
+ action_area);
+
+ return (object) ? glade_widget_get_from_gobject (object) : NULL;
+}
static void
-glade_gtk_dialog_read_responses (GladeWidget * widget,
- GladeXmlNode * widgets_node)
+glade_gtk_action_widgets_read_responses (GladeWidget *widget,
+ GladeXmlNode *widgets_node,
+ gchar *action_container)
{
+ GladeWidget *action_widget, *action_area;
GladeXmlNode *node;
- GladeWidget *action_widget;
+ if ((action_area = glade_gtk_action_widgets_get_area (widget, action_container)) == NULL)
+ {
+ g_warning ("%s: Could not find action widgets container [%s]", __func__, action_container);
+ return;
+ }
+
for (node = glade_xml_node_get_children (widgets_node);
node; node = glade_xml_node_next (node))
{
@@ -18,51 +61,38 @@ glade_gtk_dialog_read_responses (GladeWidget * widget,
if (!glade_xml_node_verify (node, GLADE_TAG_ACTION_WIDGET))
continue;
- response =
- glade_xml_get_property_string_required (node, GLADE_TAG_RESPONSE,
- NULL);
widget_name = glade_xml_get_content (node);
-
- if ((action_widget =
- glade_project_get_widget_by_name (glade_widget_get_project (widget),
- widget_name)) != NULL)
- {
+ response = glade_xml_get_property_string_required (node,
+ GLADE_TAG_RESPONSE,
+ NULL);
+
+ if ((action_widget = glade_widget_find_child (action_area, widget_name)))
glade_widget_property_set (action_widget, "response-id",
g_ascii_strtoll (response, NULL, 10));
- }
g_free (response);
g_free (widget_name);
}
}
-void
-glade_gtk_dialog_read_child (GladeWidgetAdaptor * adaptor,
- GladeWidget * widget, GladeXmlNode * node)
-{
- GladeXmlNode *widgets_node;
-
- GWA_GET_CLASS (GTK_TYPE_CONTAINER)->read_child (adaptor, widget, node);
-
- node = glade_xml_node_get_parent (node);
-
- if ((widgets_node =
- glade_xml_search_child (node, GLADE_TAG_ACTION_WIDGETS)) != NULL)
- glade_gtk_dialog_read_responses (widget, widgets_node);
-}
-
-
static void
-glade_gtk_dialog_write_responses (GladeWidget * widget,
- GladeXmlContext * context,
- GladeXmlNode * node)
+glade_gtk_action_widgets_write_responses (GladeWidget *widget,
+ GladeXmlContext *context,
+ GladeXmlNode *node,
+ gchar *action_container)
{
GladeXmlNode *widget_node;
- GtkDialog *dialog = GTK_DIALOG (glade_widget_get_object (widget));
- GList *l, *action_widgets =
- gtk_container_get_children (GTK_CONTAINER
- (gtk_dialog_get_action_area (dialog)));
-
+ GList *l, *action_widgets;
+ GladeWidget *action_area;
+
+ if ((action_area = glade_gtk_action_widgets_get_area (widget, action_container)) == NULL)
+ {
+ g_warning ("%s: Could not find action widgets container [%s]", __func__, action_container);
+ return;
+ }
+
+ action_widgets = glade_widget_get_children (action_area);
+
for (l = action_widgets; l; l = l->next)
{
GladeWidget *action_widget;
@@ -71,11 +101,11 @@ glade_gtk_dialog_write_responses (GladeWidget * widget,
if ((action_widget = glade_widget_get_from_gobject (l->data)) == NULL)
continue;
-
+
if ((property =
glade_widget_get_property (action_widget, "response-id")) == NULL)
continue;
-
+ g_message ("%s:%d", __func__, __LINE__);
widget_node = glade_xml_node_new (context, GLADE_TAG_ACTION_WIDGET);
glade_xml_node_append_child (node, widget_node);
@@ -93,29 +123,33 @@ glade_gtk_dialog_write_responses (GladeWidget * widget,
}
void
-glade_gtk_dialog_write_child (GladeWidgetAdaptor * adaptor,
- GladeWidget * widget,
- GladeXmlContext * context, GladeXmlNode * node)
+glade_gtk_action_widgets_read_child (GladeWidget *widget,
+ GladeXmlNode *node,
+ gchar *action_container)
{
GladeXmlNode *widgets_node;
- GladeWidget *parent;
- GladeProject *project;
- GWA_GET_CLASS (GTK_TYPE_CONTAINER)->write_child (adaptor, widget, context,
- node);
+ if ((widgets_node =
+ glade_xml_search_child (node, GLADE_TAG_ACTION_WIDGETS)) != NULL)
+ glade_gtk_action_widgets_read_responses (widget, widgets_node, action_container);
+}
+
+void
+glade_gtk_action_widgets_write_child (GladeWidget *widget,
+ GladeXmlContext *context,
+ GladeXmlNode *node,
+ gchar *action_container)
+{
+ GladeXmlNode *widgets_node;
- parent = glade_widget_get_parent (widget);
- project = glade_widget_get_project (widget);
+ g_message ("%s:%d", __func__, __LINE__);
- if (parent && GTK_IS_DIALOG (glade_widget_get_object (parent)))
- {
- widgets_node = glade_xml_node_new (context, GLADE_TAG_ACTION_WIDGETS);
+ widgets_node = glade_xml_node_new (context, GLADE_TAG_ACTION_WIDGETS);
- glade_gtk_dialog_write_responses (parent, context, widgets_node);
+ glade_gtk_action_widgets_write_responses (widget, context, widgets_node, action_container);
- if (!glade_xml_node_get_children (widgets_node))
- glade_xml_node_delete (widgets_node);
- else
- glade_xml_node_append_child (node, widgets_node);
- }
+ 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/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index 5bd5011..8e6993c 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -43,6 +43,7 @@
#include "glade-tool-item-group-editor.h"
#include "glade-string-list.h"
#include "glade-fixed.h"
+#include "glade-gtk-action-widgets.h"
#include <gladeui/glade-editor-property.h>
#include <gladeui/glade-base-editor.h>
@@ -1050,8 +1051,6 @@ glade_gtk_widget_action_submenu (GladeWidgetAdaptor * adaptor,
return NULL;
}
-
-
/* ----------------------------- GtkContainer ------------------------------ */
void
glade_gtk_container_post_create (GladeWidgetAdaptor * adaptor,
@@ -1930,36 +1929,6 @@ glade_gtk_box_replace_child (GladeWidgetAdaptor * adaptor,
g_object_unref (G_OBJECT (current));
}
-
-GObject *
-glade_gtk_box_get_internal_child (GladeWidgetAdaptor * adaptor,
- GObject * object, const gchar * name)
-{
- GList *children, *l;
- GObject *child = NULL;
-
- g_return_val_if_fail (GTK_IS_BOX (object), NULL);
-
- children = l = gtk_container_get_children (GTK_CONTAINER (object));
-
- while (l)
- {
- GladeWidget *gw = glade_widget_get_from_gobject (l->data);
-
- if (gw && glade_widget_get_internal (gw) &&
- strcmp (glade_widget_get_internal (gw), name) == 0)
- {
- child = G_OBJECT (l->data);
- break;
- }
-
- l = l->next;
- }
- g_list_free (children);
-
- return child;
-}
-
static void
glade_gtk_box_notebook_child_insert_remove_action (GladeWidgetAdaptor * adaptor,
GObject * container,
@@ -3898,21 +3867,20 @@ glade_gtk_file_chooser_forall (GtkWidget * widget, gpointer data)
}
void
-glade_gtk_dialog_post_create (GladeWidgetAdaptor * adaptor,
- GObject * object, GladeCreateReason reason)
+glade_gtk_dialog_post_create (GladeWidgetAdaptor *adaptor,
+ GObject *object, GladeCreateReason reason)
{
- GtkDialog *dialog = GTK_DIALOG (object);
GladeWidget *widget;
- GladeWidget *vbox_widget, *actionarea_widget, *colorsel, *fontsel;
- GladeWidget *ok_button = NULL, *cancel_button = NULL,
- *help_button = NULL, *apply_button = NULL;
+ GtkDialog *dialog;
- g_return_if_fail (GTK_IS_DIALOG (dialog));
+ g_return_if_fail (GTK_IS_DIALOG (object));
- widget = glade_widget_get_from_gobject (GTK_WIDGET (dialog));
+ widget = glade_widget_get_from_gobject (GTK_WIDGET (object));
if (!widget)
return;
-
+
+ dialog = GTK_DIALOG (object);
+
if (reason == GLADE_CREATE_USER)
{
/* HIG complient border-width defaults on dialogs */
@@ -3921,28 +3889,8 @@ glade_gtk_dialog_post_create (GladeWidgetAdaptor * adaptor,
if (GTK_IS_COLOR_SELECTION_DIALOG (object))
{
- GtkWidget *child;
-
- child = gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_OK);
- ok_button = glade_widget_adaptor_create_internal
- (widget, G_OBJECT (child), "ok_button", "colorsel", FALSE, reason);
-
- child = gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_CANCEL);
- cancel_button = glade_widget_adaptor_create_internal
- (widget, G_OBJECT (child),
- "cancel_button", "colorsel", FALSE, reason);
-
- child = gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_HELP);
- help_button = glade_widget_adaptor_create_internal
- (widget, G_OBJECT (child), "help_button", "colorsel", FALSE, reason);
-
- child =
- gtk_color_selection_dialog_get_color_selection
- (GTK_COLOR_SELECTION_DIALOG (dialog));
- colorsel =
- glade_widget_adaptor_create_internal (widget, G_OBJECT (child),
- "color_selection", "colorsel",
- FALSE, reason);
+ GtkWidget *child = gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (dialog));
+ GladeWidget *colorsel = glade_widget_get_from_gobject (child);
/* Set this to 1 at load time, if there are any children then
* size will adjust appropriately (otherwise the default "3" gets
@@ -3954,37 +3902,8 @@ glade_gtk_dialog_post_create (GladeWidgetAdaptor * adaptor,
}
else if (GTK_IS_FONT_SELECTION_DIALOG (object))
{
- GtkWidget *child;
-
- child =
- gtk_font_selection_dialog_get_ok_button (GTK_FONT_SELECTION_DIALOG
- (dialog));
- ok_button =
- glade_widget_adaptor_create_internal (widget, G_OBJECT (child),
- "ok_button", "fontsel", FALSE,
- reason);
-
- child = gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_APPLY);
- apply_button = glade_widget_adaptor_create_internal
- (widget, G_OBJECT (child), "apply_button", "fontsel", FALSE, reason);
-
- child =
- gtk_font_selection_dialog_get_cancel_button (GTK_FONT_SELECTION_DIALOG
- (dialog));
- cancel_button =
- glade_widget_adaptor_create_internal (widget, G_OBJECT (child),
- "cancel_button", "fontsel",
- FALSE, reason);
-
-#if GTK_CHECK_VERSION (2, 24, 0)
- child = gtk_font_selection_dialog_get_font_selection
- (GTK_FONT_SELECTION_DIALOG (dialog));
-#else
- child = GTK_FONT_SELECTION_DIALOG (dialog)->fontsel;
-#endif
- fontsel = glade_widget_adaptor_create_internal
- (widget, G_OBJECT (child),
- "font_selection", "fontsel", FALSE, reason);
+ GtkWidget *child = gtk_font_selection_dialog_get_cancel_button (GTK_FONT_SELECTION_DIALOG (dialog));
+ GladeWidget *fontsel = glade_widget_get_from_gobject (child);
/* Set this to 1 at load time, if there are any children then
* size will adjust appropriately (otherwise the default "3" gets
@@ -3995,6 +3914,12 @@ glade_gtk_dialog_post_create (GladeWidgetAdaptor * adaptor,
}
else
{
+ GladeWidget *vbox_widget, *actionarea_widget;
+
+ vbox_widget = glade_widget_get_from_gobject (gtk_dialog_get_content_area (dialog));
+ actionarea_widget = glade_widget_get_from_gobject (gtk_dialog_get_action_area (dialog));
+
+ g_message ("%s %p %p", __func__, actionarea_widget, gtk_dialog_get_action_area (dialog));
/* We need to stop default emissions of "hierarchy-changed" and
* "screen-changed" of GtkFileChooserDefault to avoid an abort()
* when doing a reparent.
@@ -4006,14 +3931,6 @@ glade_gtk_dialog_post_create (GladeWidgetAdaptor * adaptor,
(gtk_dialog_get_content_area (dialog)),
glade_gtk_file_chooser_forall, NULL);
- vbox_widget = glade_widget_adaptor_create_internal
- (widget, G_OBJECT (gtk_dialog_get_content_area (dialog)),
- "vbox", "dialog", FALSE, reason);
-
- actionarea_widget = glade_widget_adaptor_create_internal
- (vbox_widget, G_OBJECT (gtk_dialog_get_action_area (dialog)),
- "action_area", "dialog", FALSE, reason);
-
/* These properties are controlled by the GtkDialog style properties:
* "content-area-border", "button-spacing" and "action-area-border",
* so we must disable thier use.
@@ -4045,62 +3962,6 @@ glade_gtk_dialog_post_create (GladeWidgetAdaptor * adaptor,
}
}
-GtkWidget *
-glade_gtk_dialog_get_internal_child (GladeWidgetAdaptor * adaptor,
- GtkDialog * dialog, const gchar * name)
-{
- GtkWidget *child = NULL;
-
- g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL);
-
- if (GTK_IS_COLOR_SELECTION_DIALOG (dialog))
- {
- if (strcmp ("ok_button", name) == 0)
- child = gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_OK);
- else if (strcmp ("cancel_button", name) == 0)
- child =
- gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_CANCEL);
- else if (strcmp ("help_button", name) == 0)
- child = gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_HELP);
- else if (strcmp ("color_selection", name) == 0)
- child = gtk_color_selection_dialog_get_color_selection
- (GTK_COLOR_SELECTION_DIALOG (dialog));
- }
- else if (GTK_IS_FONT_SELECTION_DIALOG (dialog))
- {
-
- if (strcmp ("ok_button", name) == 0)
- child =
- gtk_font_selection_dialog_get_ok_button (GTK_FONT_SELECTION_DIALOG
- (dialog));
- else if (strcmp ("apply_button", name) == 0)
- child = gtk_dialog_get_widget_for_response (dialog, GTK_RESPONSE_APPLY);
- else if (strcmp ("cancel_button", name) == 0)
- child = gtk_font_selection_dialog_get_cancel_button
- (GTK_FONT_SELECTION_DIALOG (dialog));
- else if (strcmp ("font_selection", name) == 0)
- {
-#if GTK_CHECK_VERSION (2, 24, 0)
- child = gtk_font_selection_dialog_get_font_selection
- (GTK_FONT_SELECTION_DIALOG (dialog));
-#else
- child = GTK_FONT_SELECTION_DIALOG (dialog)->fontsel;
-#endif
- }
- }
- else
- {
- /* Default generic dialog handling
- */
- if (strcmp ("vbox", name) == 0)
- child = gtk_dialog_get_content_area (dialog);
- else if (strcmp ("action_area", name) == 0)
- child = gtk_dialog_get_action_area (dialog);
- }
-
- return child;
-}
-
GList *
glade_gtk_dialog_get_children (GladeWidgetAdaptor * adaptor, GtkDialog * dialog)
{
@@ -4166,99 +4027,15 @@ glade_gtk_dialog_get_children (GladeWidgetAdaptor * adaptor, GtkDialog * dialog)
return list;
}
-
-#define GLADE_TAG_ACTION_WIDGETS "action-widgets"
-#define GLADE_TAG_ACTION_WIDGET "action-widget"
-#define GLADE_TAG_RESPONSE "response"
-
-
-static void
-glade_gtk_dialog_read_responses (GladeWidget * widget,
- GladeXmlNode * widgets_node)
-{
- GladeXmlNode *node;
- GladeWidget *action_widget;
-
- for (node = glade_xml_node_get_children (widgets_node);
- node; node = glade_xml_node_next (node))
- {
- gchar *widget_name, *response;
-
- if (!glade_xml_node_verify (node, GLADE_TAG_ACTION_WIDGET))
- continue;
-
- response =
- glade_xml_get_property_string_required (node, GLADE_TAG_RESPONSE,
- NULL);
- widget_name = glade_xml_get_content (node);
-
- if ((action_widget =
- glade_project_get_widget_by_name (glade_widget_get_project (widget),
- widget_name)) != NULL)
- {
- glade_widget_property_set (action_widget, "response-id",
- g_ascii_strtoll (response, NULL, 10));
- }
-
- g_free (response);
- g_free (widget_name);
- }
-}
-
void
glade_gtk_dialog_read_child (GladeWidgetAdaptor * adaptor,
GladeWidget * widget, GladeXmlNode * node)
{
- GladeXmlNode *widgets_node;
-
GWA_GET_CLASS (GTK_TYPE_CONTAINER)->read_child (adaptor, widget, node);
node = glade_xml_node_get_parent (node);
- if ((widgets_node =
- glade_xml_search_child (node, GLADE_TAG_ACTION_WIDGETS)) != NULL)
- glade_gtk_dialog_read_responses (widget, widgets_node);
-}
-
-
-static void
-glade_gtk_dialog_write_responses (GladeWidget * widget,
- GladeXmlContext * context,
- GladeXmlNode * node)
-{
- GladeXmlNode *widget_node;
- GtkDialog *dialog = GTK_DIALOG (glade_widget_get_object (widget));
- GList *l, *action_widgets =
- gtk_container_get_children (GTK_CONTAINER
- (gtk_dialog_get_action_area (dialog)));
-
- for (l = action_widgets; l; l = l->next)
- {
- GladeWidget *action_widget;
- GladeProperty *property;
- gchar *str;
-
- if ((action_widget = glade_widget_get_from_gobject (l->data)) == NULL)
- continue;
-
- if ((property =
- glade_widget_get_property (action_widget, "response-id")) == NULL)
- continue;
-
- widget_node = glade_xml_node_new (context, GLADE_TAG_ACTION_WIDGET);
- glade_xml_node_append_child (node, widget_node);
-
- str =
- glade_property_class_make_string_from_gvalue (glade_property_get_class (property),
- glade_property_inline_value (property));
-
- glade_xml_node_set_property_string (widget_node, GLADE_TAG_RESPONSE, str);
- glade_xml_set_content (widget_node, glade_widget_get_name (action_widget));
-
- g_free (str);
- }
-
- g_list_free (action_widgets);
+ glade_gtk_action_widgets_read_child (widget, node, "action_area");
}
void
@@ -4266,27 +4043,12 @@ glade_gtk_dialog_write_child (GladeWidgetAdaptor * adaptor,
GladeWidget * widget,
GladeXmlContext * context, GladeXmlNode * node)
{
- GladeXmlNode *widgets_node;
- GladeWidget *parent;
- GladeProject *project;
+ GladeWidget *parent = glade_widget_get_parent (widget);
- GWA_GET_CLASS (GTK_TYPE_CONTAINER)->write_child (adaptor, widget, context,
- node);
-
- parent = glade_widget_get_parent (widget);
- project = glade_widget_get_project (widget);
+ GWA_GET_CLASS (GTK_TYPE_CONTAINER)->write_child (adaptor, widget, context, node);
if (parent && GTK_IS_DIALOG (glade_widget_get_object (parent)))
- {
- widgets_node = glade_xml_node_new (context, GLADE_TAG_ACTION_WIDGETS);
-
- glade_gtk_dialog_write_responses (parent, context, widgets_node);
-
- if (!glade_xml_node_get_children (widgets_node))
- glade_xml_node_delete (widgets_node);
- else
- glade_xml_node_append_child (node, widgets_node);
- }
+ glade_gtk_action_widgets_write_child (parent, context, node, "action_area");
}
/*--------------------------- GtkMessageDialog ---------------------------------*/
@@ -7917,23 +7679,6 @@ glade_gtk_text_view_set_property (GladeWidgetAdaptor * adaptor,
/* ----------------------------- GtkComboBox ------------------------------ */
void
-glade_gtk_combo_box_post_create (GladeWidgetAdaptor * adaptor,
- GObject * object, GladeCreateReason reason)
-{
- GladeWidget *widget = glade_widget_get_from_gobject (object);
-
- if (gtk_combo_box_get_has_entry (GTK_COMBO_BOX (object)))
- glade_widget_adaptor_create_internal
- (widget, G_OBJECT (gtk_bin_get_child (GTK_BIN (object))),
- "entry", "comboboxentry", FALSE, reason);
-
- /* For some reason combos need a kick in the but in order to show
- * up properly after loading. */
- gtk_widget_hide (GTK_WIDGET (object));
- gtk_widget_show (GTK_WIDGET (object));
-}
-
-void
glade_gtk_combo_box_set_property (GladeWidgetAdaptor * adaptor,
GObject * object,
const gchar * id, const GValue * value)
@@ -7978,20 +7723,6 @@ glade_gtk_combo_box_get_children (GladeWidgetAdaptor * adaptor,
return list;
}
-GObject *
-glade_gtk_combo_box_get_internal_child (GladeWidgetAdaptor * adaptor,
- GObject * object, const gchar * name)
-{
- GObject *child = NULL;
- g_return_val_if_fail (GTK_IS_COMBO_BOX (object), NULL);
-
- if (gtk_combo_box_get_has_entry (GTK_COMBO_BOX (object)) &&
- strcmp ("entry", name) == 0)
- child = G_OBJECT (gtk_bin_get_child (GTK_BIN (object)));
-
- return child;
-}
-
/* ----------------------------- GtkComboBoxText ------------------------------ */
#define GLADE_TAG_ITEMS "items"
#define GLADE_TAG_ITEM "item"
@@ -10652,18 +10383,6 @@ glade_gtk_cell_layout_action_activate_as_widget (GladeWidgetAdaptor * adaptor,
/*--------------------------- GtkTreeView ---------------------------------*/
-void
-glade_gtk_treeview_post_create (GladeWidgetAdaptor *adaptor,
- GObject *object,
- GladeCreateReason reason)
-{
- GladeWidget *widget = glade_widget_get_from_gobject (object);
-
- glade_widget_adaptor_create_internal
- (widget, G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (object))),
- "selection", "treeview", FALSE, reason);
-}
-
static void
glade_gtk_treeview_launch_editor (GObject * treeview)
{
@@ -10789,16 +10508,6 @@ glade_gtk_treeview_get_children (GladeWidgetAdaptor * adaptor,
return children;
}
-GObject *
-glade_gtk_treeview_get_internal_child (GladeWidgetAdaptor * adaptor,
- GtkTreeView *view, const gchar * name)
-{
- if (strcmp (name, "selection") == 0)
- return (GObject *)gtk_tree_view_get_selection (view);
-
- return NULL;
-}
-
/* XXX FIXME: We should hide the actual "fixed-height-mode" setting from
* treeview editors and provide a custom control that sets all its columns
* to fixed size and then control the column's sensitivity accordingly.
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index 93453ae..36e2ac7 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -288,7 +288,7 @@ embedded in another object</_tooltip>
<child-set-property-function>glade_gtk_container_set_child_property</child-set-property-function>
<child-get-property-function>glade_gtk_container_get_child_property</child-get-property-function>
<get-children-function>glade_gtk_container_get_children</get-children-function>
-
+
<properties>
<property id="border-width" common="True" weight="2.5"/>
<property id="resize-mode" ignore="True" common="True" weight="4.7">
@@ -305,7 +305,6 @@ embedded in another object</_tooltip>
<glade-widget-class name="GtkBox" generic-name="box" _title="Box">
<create-widget-function>glade_gtk_create_fixed_widget</create-widget-function>
<post-create-function>glade_gtk_box_post_create</post-create-function>
- <get-internal-child-function>glade_gtk_box_get_internal_child</get-internal-child-function>
<get-children-function>glade_gtk_box_get_children</get-children-function>
<set-property-function>glade_gtk_box_set_property</set-property-function>
<get-property-function>glade_gtk_box_get_property</get-property-function>
@@ -1212,13 +1211,11 @@ embedded in another object</_tooltip>
</glade-widget-class>
<glade-widget-class name="GtkComboBox" generic-name="combobox" _title="Combo Box">
- <post-create-function>glade_gtk_combo_box_post_create</post-create-function>
<set-property-function>glade_gtk_combo_box_set_property</set-property-function>
<add-child-verify-function>glade_gtk_cell_layout_add_verify</add-child-verify-function>
<add-child-function>glade_gtk_cell_layout_add_child</add-child-function>
<remove-child-function>glade_gtk_cell_layout_remove_child</remove-child-function>
<get-children-function>glade_gtk_combo_box_get_children</get-children-function>
- <get-internal-child-function>glade_gtk_combo_box_get_internal_child</get-internal-child-function>
<read-child-function>glade_gtk_cell_layout_read_child</read-child-function>
<write-child-function>glade_gtk_cell_layout_write_child</write-child-function>
<action-activate-function>glade_gtk_cell_layout_action_activate_as_widget</action-activate-function>
@@ -1228,7 +1225,11 @@ embedded in another object</_tooltip>
<actions>
<action id="launch_editor" _name="Edit…" stock="gtk-edit" important="True"/>
</actions>
-
+
+ <internal-children>
+ <object name="entry"/>
+ </internal-children>
+
<signals>
<signal id="move-action" since="2.12"/>
<signal id="popdown" since="2.12"/>
@@ -1363,16 +1364,23 @@ embedded in another object</_tooltip>
<glade-widget-class name="GtkDialog" generic-name="dialog" _title="Dialog Box"
default-width="320" default-height="260">
<post-create-function>glade_gtk_dialog_post_create</post-create-function>
- <get-internal-child-function>glade_gtk_dialog_get_internal_child</get-internal-child-function>
<get-children-function>glade_gtk_dialog_get_children</get-children-function>
<read-child-function>glade_gtk_dialog_read_child</read-child-function>
<write-child-function>glade_gtk_dialog_write_child</write-child-function>
+ <internal-children>
+ <object name="vbox">
+ <internal-children>
+ <object name="action_area"/>
+ </internal-children>
+ </object>
+ </internal-children>
+
<properties>
- <property id="default-width" default="320" optional="True" optional-default="False"/>
- <property id="default-height" default="260" optional="True" optional-default="False"/>
- <property id="has-separator" default="False"/>
- <property id="type-hint" default="GDK_WINDOW_TYPE_HINT_DIALOG" save-always="True"/>
+ <property id="default-width" default="320" optional="True" optional-default="False"/>
+ <property id="default-height" default="260" optional="True" optional-default="False"/>
+ <property id="has-separator" default="False"/>
+ <property id="type-hint" default="GDK_WINDOW_TYPE_HINT_DIALOG" save-always="True"/>
</properties>
</glade-widget-class>
@@ -1759,6 +1767,18 @@ embedded in another object</_tooltip>
</glade-widget-class>
<glade-widget-class name="GtkDrawingArea" generic-name="drawingarea" _title="Drawing Area"/>
+
+ <glade-widget-class name="GtkInfoBar" generic-name="infobar" _title="Info Bar">
+ <read-widget-function>glade_gtk_info_bar_read_child</read-widget-function>
+ <write-widget-function>glade_gtk_info_bar_write_child</write-widget-function>
+ <internal-children>
+ <object name="action_area"/>
+ <object name="content_area"/>
+ </internal-children>
+ <properties>
+ <property id="size" query="True" ignore="True" disabled="True"/>
+ </properties>
+ </glade-widget-class>
<glade-widget-class name="GtkEventBox" generic-name="eventbox" _title="Event Box"/>
@@ -1850,6 +1870,12 @@ embedded in another object</_tooltip>
</glade-widget-class>
<glade-widget-class name="GtkColorSelectionDialog" generic-name="colorselectiondialog" _title="Color Selection Dialog">
+ <internal-children>
+ <object name="ok_button"/>
+ <object name="cancel_button"/>
+ <object name="help_button"/>
+ <object name="color_selection"/>
+ </internal-children>
<properties>
<property id="has-separator" disabled="True"/>
</properties>
@@ -1869,6 +1895,12 @@ embedded in another object</_tooltip>
</glade-widget-class>
<glade-widget-class name="GtkFontSelectionDialog" generic-name="fontselectiondialog" _title="Font Selection Dialog">
+ <internal-children>
+ <object name="ok_button"/>
+ <object name="apply_button"/>
+ <object name="cancel_button"/>
+ <object name="font_selection"/>
+ </internal-children>
<properties>
<property id="has-separator" disabled="True"/>
</properties>
@@ -2189,11 +2221,9 @@ embedded in another object</_tooltip>
<glade-widget-class name="GtkTreeView" generic-name="treeview" _title="Tree View">
- <post-create-function>glade_gtk_treeview_post_create</post-create-function>
<child-set-property-function>glade_gtk_treeview_set_child_property</child-set-property-function>
<child-get-property-function>glade_gtk_treeview_get_child_property</child-get-property-function>
<get-children-function>glade_gtk_treeview_get_children</get-children-function>
- <get-internal-child-function>glade_gtk_treeview_get_internal_child</get-internal-child-function>
<add-child-function>glade_gtk_treeview_add_child</add-child-function>
<replace-child-function>glade_gtk_treeview_replace_child</replace-child-function>
<remove-child-function>glade_gtk_treeview_remove_child</remove-child-function>
@@ -2203,6 +2233,10 @@ embedded in another object</_tooltip>
<actions>
<action id="launch_editor" _name="Edit…" stock="gtk-edit" important="True"/>
</actions>
+
+ <internal-children>
+ <object name="selection"/>
+ </internal-children>
<properties>
<property id="level-indentation" since="2.12"/>
@@ -3681,6 +3715,8 @@ embedded in another object</_tooltip>
<glade-widget-class-ref name="GtkSeparator"/>
<glade-widget-class-ref name="GtkArrow"/>
<glade-widget-class-ref name="GtkDrawingArea"/>
+
+ <glade-widget-class-ref name="GtkInfoBar"/>
</glade-widget-group>
<glade-widget-group name="gtk-composite" _title="Composite Widgets">
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]