[POS-commit] r239 - libglade
Johan Dahlin
jdahlin at async.com.br
Wed Mar 30 16:07:43 BRT 2005
Author: jdahlin
Date: 2005-03-30 16:07:43 -0300 (Wed, 30 Mar 2005)
New Revision: 239
Modified:
libglade/glade-build.h
libglade/glade-gtk.c
libglade/glade-parser.c
libglade/glade-parser.h
libglade/glade-xml.c
libglade/glade-xml.h
libglade/test.c
Log:
Port most of the internals and the public API to use GObjects instead of GtkWidgets.
Modified: libglade/glade-build.h
===================================================================
--- libglade/glade-build.h 2005-03-30 14:01:15 UTC (rev 238)
+++ libglade/glade-build.h 2005-03-30 19:07:43 UTC (rev 239)
@@ -35,78 +35,76 @@
G_BEGIN_DECLS
-/* create a new widget of some type. Don't parse `standard' widget options */
-typedef GtkWidget *(* GladeNewFunc) (GladeXML *xml,
- GType widget_type,
- GladeWidgetInfo *info);
/* call glade_xml_build_widget on each child node, and pack in self */
typedef void (* GladeBuildChildrenFunc) (GladeXML *xml,
- GtkWidget *parent,
- GladeWidgetInfo *info);
-typedef GtkWidget *(* GladeFindInternalChildFunc) (GladeXML *xml,
- GtkWidget *parent,
+ GObject *parent,
+ GladeObjectInfo *info);
+typedef GObject *(* GladeFindInternalChildFunc) (GladeXML *xml,
+ GObject *parent,
const gchar *childname);
typedef void (* GladeApplyCustomPropFunc) (GladeXML *xml,
- GtkWidget *widget,
+ GObject *object,
const gchar *propname,
const gchar *value);
-/* register handlers for a widget */
-void glade_register_widget(GType type,
- GladeNewFunc new_func,
+/* register handlers for a object */
+void glade_register_object(GType type,
GladeBuildChildrenFunc build_children,
GladeFindInternalChildFunc find_internal_child);
/* register a custom handler for a property (that may not have an
* associated gobject property. Works in conjunction with
- * glade_standard_build_widget. */
+ * glade_standard_build_object. */
void glade_register_custom_prop(GType type,
const gchar *prop_name,
GladeApplyCustomPropFunc apply_prop);
-/* set the current toplevel widget while building (use NULL to unset) */
+/* set the current toplevel object while building (use NULL to unset) */
void glade_xml_set_toplevel(GladeXML *xml, GtkWindow *window);
/* make sure that xml->priv->accel_group is a valid AccelGroup */
GtkAccelGroup *glade_xml_ensure_accel(GladeXML *xml);
-void glade_xml_handle_widget_prop(GladeXML *self, GtkWidget *widget,
+void glade_xml_handle_object_prop(GladeXML *self,
+ GObject *object,
const gchar *prop_name,
const gchar *value_name);
void glade_xml_set_packing_property (GladeXML *self,
- GtkWidget *parent, GtkWidget *child,
+ GtkWidget *parent,
+ GtkWidget *child,
const char *name, const char *value);
/* this function is called to build the interface by GladeXML */
-GtkWidget *glade_xml_build_widget(GladeXML *self, GladeWidgetInfo *info);
+GObject *glade_xml_build_object(GladeXML *self, GladeObjectInfo *info);
/* this function is used to get a pointer to the internal child of a
- * container widget. It would generally be called by the
+ * container object. It would generally be called by the
* build_children callback for any children with the internal_child
* name set. */
-void glade_xml_handle_internal_child(GladeXML *self, GtkWidget *parent,
+void glade_xml_handle_internal_child(GladeXML *self,
+ GObject *parent,
GladeChildInfo *child_info);
-/* This function performs half of what glade_xml_build_widget does. It is
- * useful when the widget has already been created. Usually it would not
+/* This function performs half of what glade_xml_build_object does. It is
+ * useful when the object has already been created. Usually it would not
* have any use at all. */
void glade_xml_set_common_params(GladeXML *self,
- GtkWidget *widget,
- GladeWidgetInfo *info);
+ GObject *object,
+ GladeObjectInfo *info);
gboolean glade_xml_set_value_from_string (GladeXML *xml,
GParamSpec *pspec,
const gchar *string,
GValue *value);
-GtkWidget *glade_standard_build_widget(GladeXML *xml, GType widget_type,
- GladeWidgetInfo *info);
+GObject *glade_standard_build_object(GladeXML *xml, GType object_type,
+ GladeObjectInfo *info);
-/* A standard child building routine that can be used in widget builders */
-void glade_standard_build_children(GladeXML *self, GtkWidget *parent,
- GladeWidgetInfo *info);
+/* A standard child building routine that can be used in object builders */
+void glade_standard_build_children(GladeXML *self, GObject *parent,
+ GladeObjectInfo *info);
/* this is a wrapper for gtk_type_enum_find_value, that just returns the
* integer value for the enum */
@@ -129,7 +127,7 @@
}
/* prototype for plugin init function (should be implemented by plugin) */
-G_MODULE_EXPORT void glade_module_register_widgets(void);
+G_MODULE_EXPORT void glade_module_register_objects(void);
G_END_DECLS
Modified: libglade/glade-gtk.c
===================================================================
--- libglade/glade-gtk.c 2005-03-30 14:01:15 UTC (rev 238)
+++ libglade/glade-gtk.c 2005-03-30 19:07:43 UTC (rev 239)
@@ -39,14 +39,14 @@
void _glade_init_gtk_widgets(void);
static void
-custom_noop (GladeXML *xml, GtkWidget *widget,
+custom_noop (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
;
}
static void
-set_visible(GladeXML *xml, GtkWidget *widget,
+set_visible(GladeXML *xml, GObject *obj,
const gchar *prop_name, const gchar *prop_value)
{
static GQuark visible_id = 0;
@@ -55,11 +55,11 @@
visible_id = g_quark_from_static_string("Libglade::visible");
if (BOOL(prop_value))
- g_object_set_qdata(G_OBJECT(widget), visible_id, GINT_TO_POINTER(TRUE));
+ g_object_set_qdata(obj, visible_id, GINT_TO_POINTER(TRUE));
}
static void
-set_tooltip(GladeXML *xml, GtkWidget *widget,
+set_tooltip(GladeXML *xml, GObject *obj,
const gchar *prop_name, const gchar *prop_value)
{
g_print("XXX: handle tooltips without accessing private parts of GladeXML\n");
@@ -73,21 +73,21 @@
}
static void
-set_has_default(GladeXML *xml, GtkWidget *widget,
+set_has_default(GladeXML *xml, GObject *obj,
const gchar *prop_name, const gchar *prop_value)
{
- if (!GTK_WIDGET_CAN_DEFAULT(widget))
+ if (!GTK_WIDGET_CAN_DEFAULT(obj))
return;
g_print("XXX: handle has-default without accessing private parts of GladeXML\n");
#if 0
if (BOOL(prop_value))
- xml->priv->default_widget = widget;
+ xml->priv->default_widget = obj;
#endif
}
static void
-set_has_focus(GladeXML *xml, GtkWidget *widget,
+set_has_focus(GladeXML *xml, GObject *obj,
const gchar *prop_name, const gchar *prop_value)
{
g_print("XXX: handle focus without accessing private parts of GladeXML\n");
@@ -98,110 +98,111 @@
}
static void
-list_item_set_label (GladeXML *xml, GtkWidget *w,
+list_item_set_label (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
GtkWidget *child;
- child = gtk_bin_get_child (GTK_BIN (w));
+ child = gtk_bin_get_child (GTK_BIN (obj));
if (child)
- gtk_container_remove (GTK_CONTAINER (w), child);
+ gtk_container_remove (GTK_CONTAINER (obj), child);
/* copied from gtk_list_item_new_with_label() */
child = gtk_label_new (value);
gtk_misc_set_alignment (GTK_MISC (child), 0.0, 0.5);
gtk_misc_set_padding (GTK_MISC (child), 0, 1);
- gtk_container_add (GTK_CONTAINER (w), child);
+ gtk_container_add (GTK_CONTAINER (obj), child);
gtk_widget_show (child);
}
static void
-text_view_set_text (GladeXML *xml, GtkWidget *w,
+text_view_set_text (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
GtkTextBuffer *buffy;
buffy = gtk_text_buffer_new (NULL);
gtk_text_buffer_set_text (buffy, value, strlen (value));
- gtk_text_view_set_buffer (GTK_TEXT_VIEW (w), buffy);
+ gtk_text_view_set_buffer (GTK_TEXT_VIEW (obj), buffy);
g_object_unref (G_OBJECT (buffy));
}
static void
-calendar_set_display_options (GladeXML *xml, GtkWidget *w,
+calendar_set_display_options (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
gtk_calendar_display_options (
- GTK_CALENDAR (w),
+ GTK_CALENDAR (obj),
glade_flags_from_string (GTK_TYPE_CALENDAR_DISPLAY_OPTIONS,
value));
}
static void
-check_menu_item_set_always_show_toggle (GladeXML *xml, GtkWidget *w,
+check_menu_item_set_always_show_toggle (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
- gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (w), BOOL (value));
+ gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (obj), BOOL (value));
}
static void
-radio_menu_item_set_group (GladeXML *xml, GtkWidget *w,
+radio_menu_item_set_group (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
- GtkWidget *group;
+ GObject *group;
- group = glade_xml_get_widget (xml, value);
+ group = glade_xml_get_object (xml, value);
if (!group) {
g_warning ("Radio button group %s could not be found", value);
return;
}
- if (group == w) {
+ if (group == obj) {
g_message ("Group is self, skipping.");
return;
}
gtk_radio_menu_item_set_group (
- GTK_RADIO_MENU_ITEM (w),
+ GTK_RADIO_MENU_ITEM (obj),
gtk_radio_menu_item_get_group (
GTK_RADIO_MENU_ITEM (group)));
}
static void
-toolbar_set_tooltips (GladeXML *xml, GtkWidget *w,
+toolbar_set_tooltips (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
- gtk_toolbar_set_tooltips (GTK_TOOLBAR (w), BOOL (value));
+ gtk_toolbar_set_tooltips (GTK_TOOLBAR (obj), BOOL (value));
}
static void
-statusbar_set_has_resize_grip (GladeXML *xml, GtkWidget *w,
+statusbar_set_has_resize_grip (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
- gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (w), BOOL (value));
+ gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (obj), BOOL (value));
}
static void
-ruler_set_metric (GladeXML *xml, GtkWidget *w,
+ruler_set_metric (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
gtk_ruler_set_metric (
- GTK_RULER (w),
+ GTK_RULER (obj),
glade_enum_from_string (GTK_TYPE_METRIC_TYPE, value));
}
static void
-menu_item_set_label (GladeXML *xml, GtkWidget *w,
+menu_item_set_label (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
- GtkWidget *child = GTK_BIN (w)->child;
+ GtkWidget *child = GTK_BIN (obj)->child;
if (!child) {
child = gtk_accel_label_new("");
gtk_misc_set_alignment(GTK_MISC(child), 0.0, 0.5);
- gtk_container_add(GTK_CONTAINER(w), child);
- gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(child), w);
+ gtk_container_add(GTK_CONTAINER(obj), child);
+ gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(child),
+ GTK_WIDGET(obj));
gtk_widget_show(child);
}
@@ -210,16 +211,17 @@
}
static void
-menu_item_set_use_underline (GladeXML *xml, GtkWidget *w,
+menu_item_set_use_underline (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
- GtkWidget *child = GTK_BIN (w)->child;
+ GtkWidget *child = GTK_BIN (obj)->child;
if (!child) {
child = gtk_accel_label_new("");
gtk_misc_set_alignment(GTK_MISC(child), 0.0, 0.5);
- gtk_container_add(GTK_CONTAINER(w), child);
- gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(child), w);
+ gtk_container_add(GTK_CONTAINER(obj), child);
+ gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(child),
+ GTK_WIDGET(obj));
gtk_widget_show(child);
}
@@ -228,16 +230,17 @@
}
static void
-menu_item_set_use_stock (GladeXML *xml, GtkWidget *w,
+menu_item_set_use_stock (GladeXML *xml, GObject *obj,
const gchar *name, const gchar *value)
{
- GtkWidget *child = GTK_BIN (w)->child;
+ GtkWidget *child = GTK_BIN (obj)->child;
if (!child) {
child = gtk_accel_label_new("");
gtk_misc_set_alignment(GTK_MISC(child), 0.0, 0.5);
- gtk_container_add(GTK_CONTAINER(w), child);
- gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(child), w);
+ gtk_container_add(GTK_CONTAINER(obj), child);
+ gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(child),
+ GTK_WIDGET(obj));
gtk_widget_show(child);
}
@@ -249,11 +252,11 @@
/* put in the stock image next to the text. Done before
* messing with the label child, so that stock_id doesn't
* become invalid. */
- if (GTK_IS_IMAGE_MENU_ITEM(w)) {
+ if (GTK_IS_IMAGE_MENU_ITEM(obj)) {
GtkWidget *image =
gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(w), image);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(obj), image);
gtk_widget_show(image);
}
@@ -261,7 +264,7 @@
gtk_label_set_use_underline(GTK_LABEL(child), TRUE);
if (stock_item.keyval)
- gtk_widget_add_accelerator (w,
+ gtk_widget_add_accelerator (GTK_WIDGET(obj),
"activate",
glade_xml_ensure_accel(xml),
stock_item.keyval,
@@ -274,10 +277,10 @@
}
static void
-window_set_wmclass_name (GladeXML *xml, GtkWidget *w,
+window_set_wmclass_name (GladeXML *xml, GObject *obj,
const gchar *name, const gchar *value)
{
- GtkWindow *window = GTK_WINDOW(w);
+ GtkWindow *window = GTK_WINDOW(obj);
gchar *wmclass = g_strdup(window->wmclass_class);
gtk_window_set_wmclass(window, value, wmclass);
@@ -285,10 +288,10 @@
}
static void
-window_set_wmclass_class (GladeXML *xml, GtkWidget *w,
+window_set_wmclass_class (GladeXML *xml, GObject *obj,
const gchar *name, const gchar *value)
{
- GtkWindow *window = GTK_WINDOW(w);
+ GtkWindow *window = GTK_WINDOW(obj);
gchar *wmname = g_strdup(window->wmclass_name);
gtk_window_set_wmclass(window, wmname, value);
@@ -296,22 +299,22 @@
}
static void
-entry_set_invisible_char (GladeXML *xml, GtkWidget *w,
+entry_set_invisible_char (GladeXML *xml, GObject *obj,
const gchar *name, const gchar *value)
{
- gtk_entry_set_invisible_char (GTK_ENTRY (w), value [0]);
+ gtk_entry_set_invisible_char (GTK_ENTRY (obj), value [0]);
}
static void
-button_set_response_id (GladeXML *xml, GtkWidget *w,
+button_set_response_id (GladeXML *xml, GObject *obj,
const gchar *name, const gchar *value)
{
- g_object_set_data (G_OBJECT (w), "response_id",
+ g_object_set_data (G_OBJECT (obj), "response_id",
GINT_TO_POINTER (INT (value)));
}
static void
-tool_button_set_icon (GladeXML *xml, GtkWidget *w,
+tool_button_set_icon (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
GdkPixbuf *pb;
@@ -331,11 +334,11 @@
g_object_unref (pb);
gtk_widget_show (image);
- gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (w), image);
+ gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (obj), image);
}
static void
-combo_box_set_items (GladeXML *xml, GtkWidget *w,
+combo_box_set_items (GladeXML *xml, GObject *obj,
const char *name, const char *value)
{
GtkListStore *store;
@@ -346,16 +349,16 @@
/* If the "items" property is set, we create a simple model with just
one column of text. */
store = gtk_list_store_new (1, G_TYPE_STRING);
- gtk_combo_box_set_model (GTK_COMBO_BOX (w), GTK_TREE_MODEL (store));
+ gtk_combo_box_set_model (GTK_COMBO_BOX (obj), GTK_TREE_MODEL (store));
/* GtkComboBoxEntry creates the cell renderer itself, but we have to set
the column containing the text. */
- if (GTK_IS_COMBO_BOX_ENTRY (w)) {
- gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (w), 0);
+ if (GTK_IS_COMBO_BOX_ENTRY (obj)) {
+ gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (obj), 0);
} else {
cell = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (w), cell, TRUE);
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (w), cell,
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (obj), cell, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (obj), cell,
"text", 0,
NULL);
}
@@ -379,40 +382,40 @@
}
static void
-menuitem_build_children(GladeXML *self, GtkWidget *w,
- GladeWidgetInfo *info)
+menuitem_build_children(GladeXML *self, GObject *obj,
+ GladeObjectInfo *info)
{
gint i;
- g_object_ref(G_OBJECT(w));
+ g_object_ref(G_OBJECT(obj));
for (i = 0; i < info->n_children; i++) {
GtkWidget *child;
- GladeWidgetInfo *childinfo = info->children[i].child;
+ GladeObjectInfo *childinfo = info->children[i].child;
if (info->children[i].internal_child) {
- glade_xml_handle_internal_child(self, w, &info->children[i]);
+ glade_xml_handle_internal_child(self, obj, &info->children[i]);
continue;
}
- child = glade_xml_build_widget(self, childinfo);
+ child = GTK_WIDGET(glade_xml_build_object(self, childinfo));
if (GTK_IS_MENU(child))
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(w), child);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(obj), child);
else
- gtk_container_add(GTK_CONTAINER(w), child);
+ gtk_container_add(GTK_CONTAINER(obj), child);
}
- g_object_unref(G_OBJECT(w));
+ g_object_unref(G_OBJECT(obj));
}
static void
-gtk_dialog_build_children(GladeXML *self, GtkWidget *w,
- GladeWidgetInfo *info)
+gtk_dialog_build_children(GladeXML *self, GObject *obj,
+ GladeObjectInfo *info)
{
- GtkDialog *dialog = GTK_DIALOG (w);
+ GtkDialog *dialog = GTK_DIALOG (obj);
GList *children, *list;
- glade_standard_build_children (self, w, info);
+ glade_standard_build_children (self, obj, info);
if (dialog->action_area == NULL)
return;
@@ -440,8 +443,8 @@
static void
-frame_build_children(GladeXML *self, GtkWidget *parent,
- GladeWidgetInfo *info)
+frame_build_children(GladeXML *self, GObject *parent,
+ GladeObjectInfo *info)
{
gint i, j;
enum {
@@ -449,10 +452,10 @@
LABEL_ITEM
} type;
- g_object_ref(G_OBJECT(parent));
+ g_object_ref(parent);
for (i = 0; i < info->n_children; i++) {
- GladeWidgetInfo *childinfo = info->children[i].child;
- GtkWidget *child = glade_xml_build_widget(self, childinfo);
+ GladeObjectInfo *childinfo = info->children[i].child;
+ GtkWidget *child = GTK_WIDGET(glade_xml_build_object(self, childinfo));
type = FRAME_ITEM;
/* there should really only be 2 children */
@@ -472,24 +475,24 @@
gtk_container_add (GTK_CONTAINER (parent), child);
}
}
- g_object_unref(G_OBJECT(parent));
+ g_object_unref(parent);
}
static void
expander_build_children (GladeXML *self,
- GtkWidget *parent,
- GladeWidgetInfo *info)
+ GObject *parent,
+ GladeObjectInfo *info)
{
int i;
g_object_ref (parent);
for (i = 0; i < info->n_children; i++) {
- GladeWidgetInfo *childinfo = info->children [i].child;
+ GladeObjectInfo *childinfo = info->children [i].child;
GtkWidget *child;
gboolean label_item = FALSE;
int j;
- child = glade_xml_build_widget (self, childinfo);
+ child = GTK_WIDGET(glade_xml_build_object(self, childinfo));
/* there should really only be 2 children */
for (j = 0; j < info->children [i].n_properties; j++) {
@@ -511,8 +514,8 @@
}
static void
-notebook_build_children(GladeXML *self, GtkWidget *parent,
- GladeWidgetInfo *info)
+notebook_build_children(GladeXML *self, GObject *parent,
+ GladeObjectInfo *info)
{
gint i, j, tab = 0;
enum {
@@ -521,10 +524,10 @@
MENU_ITEM
} type;
- g_object_ref(G_OBJECT(parent));
+ g_object_ref(parent);
for (i = 0; i < info->n_children; i++) {
- GladeWidgetInfo *childinfo = info->children[i].child;
- GtkWidget *child = glade_xml_build_widget(self, childinfo);
+ GladeObjectInfo *childinfo = info->children[i].child;
+ GtkWidget *child = GTK_WIDGET(glade_xml_build_object(self, childinfo));
type = PANE_ITEM;
for (j = 0; j < info->children[i].n_properties; j++) {
@@ -547,13 +550,13 @@
tab++;
}
}
- g_object_unref(G_OBJECT(parent));
+ g_object_unref(parent);
}
#if 0
static void
toolbar_build_children (GladeXML *xml, GtkWidget *parent,
- GladeWidgetInfo *info)
+ GladeObjectInfo *info)
{
int i;
@@ -672,7 +675,7 @@
glade_xml_set_common_params (xml, child, childinfo->child);
} else {
- child = glade_xml_build_widget (xml, childinfo->child);
+ child = glade_xml_build_object (xml, childinfo->child);
if (GTK_IS_TOOL_ITEM (child))
gtk_toolbar_insert (GTK_TOOLBAR (parent), GTK_TOOL_ITEM (child), -1);
@@ -684,7 +687,7 @@
#endif
static void
-paned_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info)
+paned_build_children (GladeXML *xml, GObject *obj, GladeObjectInfo *info)
{
int i;
GtkWidget *child;
@@ -695,7 +698,7 @@
return;
cinfo = &info->children[0];
- child = glade_xml_build_widget (xml, cinfo->child);
+ child = GTK_WIDGET(glade_xml_build_object(xml, cinfo->child));
resize = FALSE; shrink = TRUE;
for (i = 0; i < cinfo->n_properties; i++) {
@@ -710,13 +713,13 @@
g_warning ("Unknown GtkPaned child property: %s", name);
}
- gtk_paned_pack1 (GTK_PANED(w), child, resize, shrink);
+ gtk_paned_pack1 (GTK_PANED(obj), child, resize, shrink);
if (info->n_children == 1)
return;
cinfo = &info->children[1];
- child = glade_xml_build_widget (xml, cinfo->child);
+ child = GTK_WIDGET (glade_xml_build_object (xml, cinfo->child));
resize = TRUE; shrink = TRUE;
for (i = 0; i < cinfo->n_properties; i++) {
@@ -731,25 +734,25 @@
g_warning ("Unknown GtkPaned child property: %s", name);
}
- gtk_paned_pack2 (GTK_PANED(w), child, resize, shrink);
+ gtk_paned_pack2 (GTK_PANED(obj), child, resize, shrink);
}
static void
-layout_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info)
+layout_build_children (GladeXML *xml, GObject *obj, GladeObjectInfo *info)
{
gint i;
for (i = 0; i < info->n_children; i++) {
- GladeWidgetInfo *childinfo = info->children[i].child;
+ GladeObjectInfo *childinfo = info->children[i].child;
GtkWidget *child = NULL;
gint j, x = 0, y = 0;
if (info->children[i].internal_child) {
- glade_xml_handle_internal_child(xml, w, &info->children[i]);
+ glade_xml_handle_internal_child(xml, obj, &info->children[i]);
continue;
}
- child = glade_xml_build_widget(xml, childinfo);
+ child = GTK_WIDGET(glade_xml_build_object(xml, childinfo));
for (j = 0; j < info->children[i].n_properties; j++) {
const gchar *name = info->children[i].properties[j].name;
const gchar *value = info->children[i].properties[j].value;
@@ -763,24 +766,24 @@
name);
}
- gtk_layout_put(GTK_LAYOUT(w), child, x, y);
+ gtk_layout_put(GTK_LAYOUT(obj), child, x, y);
}
}
-static GtkWidget *
-dialog_find_internal_child(GladeXML *xml, GtkWidget *parent,
+static GObject *
+dialog_find_internal_child(GladeXML *xml, GObject *parent,
const gchar *childname)
{
if (!strcmp(childname, "vbox"))
- return GTK_DIALOG(parent)->vbox;
+ return G_OBJECT(GTK_DIALOG(parent)->vbox);
if (!strcmp(childname, "action_area"))
- return GTK_DIALOG(parent)->action_area;
+ return G_OBJECT(GTK_DIALOG(parent)->action_area);
return NULL;
}
-static GtkWidget *
-image_menu_find_internal_child(GladeXML *xml, GtkWidget *parent,
+static GObject *
+image_menu_find_internal_child(GladeXML *xml, GObject *parent,
const gchar *childname)
{
if (!strcmp(childname, "image")) {
@@ -794,83 +797,83 @@
GTK_IMAGE_MENU_ITEM (parent), pl);
}
- return pl;
+ return G_OBJECT(pl);
}
return NULL;
}
-static GtkWidget *
-scrolled_window_find_internal_child(GladeXML *xml, GtkWidget *parent,
+static GObject *
+scrolled_window_find_internal_child(GladeXML *xml, GObject *parent,
const gchar *childname)
{
if (!strcmp(childname, "vscrollbar"))
- return GTK_SCROLLED_WINDOW (parent)->vscrollbar;
+ return G_OBJECT(GTK_SCROLLED_WINDOW (parent)->vscrollbar);
if (!strcmp(childname, "hscrollbar"))
- return GTK_SCROLLED_WINDOW (parent)->hscrollbar;
+ return G_OBJECT(GTK_SCROLLED_WINDOW (parent)->hscrollbar);
return NULL;
}
-static GtkWidget *
-filesel_find_internal_child(GladeXML *xml, GtkWidget *parent,
+static GObject *
+filesel_find_internal_child(GladeXML *xml, GObject *parent,
const gchar *childname)
{
if (!strcmp(childname, "vbox"))
- return GTK_DIALOG(parent)->vbox;
+ return G_OBJECT(GTK_DIALOG(parent)->vbox);
if (!strcmp(childname, "action_area"))
- return GTK_DIALOG(parent)->action_area;
+ return G_OBJECT(GTK_DIALOG(parent)->action_area);
if (!strcmp(childname, "ok_button"))
- return GTK_FILE_SELECTION(parent)->ok_button;
+ return G_OBJECT(GTK_FILE_SELECTION(parent)->ok_button);
if (!strcmp(childname, "cancel_button"))
- return GTK_FILE_SELECTION(parent)->cancel_button;
+ return G_OBJECT(GTK_FILE_SELECTION(parent)->cancel_button);
if (!strcmp(childname, "help_button"))
- return GTK_FILE_SELECTION(parent)->help_button;
+ return G_OBJECT(GTK_FILE_SELECTION(parent)->help_button);
return NULL;
}
-static GtkWidget *
-colorseldlg_find_internal_child(GladeXML *xml, GtkWidget *parent,
+static GObject *
+colorseldlg_find_internal_child(GladeXML *xml, GObject *parent,
const gchar *childname)
{
if (!strcmp(childname, "vbox"))
- return GTK_DIALOG(parent)->vbox;
+ return G_OBJECT(GTK_DIALOG(parent)->vbox);
if (!strcmp(childname, "action_area"))
- return GTK_DIALOG(parent)->action_area;
+ return G_OBJECT(GTK_DIALOG(parent)->action_area);
if (!strcmp(childname, "ok_button"))
- return GTK_COLOR_SELECTION_DIALOG(parent)->ok_button;
+ return G_OBJECT(GTK_COLOR_SELECTION_DIALOG(parent)->ok_button);
if (!strcmp(childname, "cancel_button"))
- return GTK_COLOR_SELECTION_DIALOG(parent)->cancel_button;
+ return G_OBJECT(GTK_COLOR_SELECTION_DIALOG(parent)->cancel_button);
if (!strcmp(childname, "help_button"))
- return GTK_COLOR_SELECTION_DIALOG(parent)->help_button;
+ return G_OBJECT(GTK_COLOR_SELECTION_DIALOG(parent)->help_button);
if (!strcmp(childname, "color_selection"))
- return GTK_COLOR_SELECTION_DIALOG(parent)->colorsel;
+ return G_OBJECT(GTK_COLOR_SELECTION_DIALOG(parent)->colorsel);
return NULL;
}
-static GtkWidget *
-fontseldlg_find_internal_child(GladeXML *xml, GtkWidget *parent,
+static GObject *
+fontseldlg_find_internal_child(GladeXML *xml, GObject *parent,
const gchar *childname)
{
if (!strcmp(childname, "vbox"))
- return GTK_DIALOG(parent)->vbox;
+ return G_OBJECT(GTK_DIALOG(parent)->vbox);
if (!strcmp(childname, "action_area"))
- return GTK_DIALOG(parent)->action_area;
+ return G_OBJECT(GTK_DIALOG(parent)->action_area);
if (!strcmp(childname, "ok_button"))
- return GTK_FONT_SELECTION_DIALOG(parent)->ok_button;
+ return G_OBJECT(GTK_FONT_SELECTION_DIALOG(parent)->ok_button);
if (!strcmp(childname, "cancel_button"))
- return GTK_FONT_SELECTION_DIALOG(parent)->cancel_button;
+ return G_OBJECT(GTK_FONT_SELECTION_DIALOG(parent)->cancel_button);
if (!strcmp(childname, "apply_button"))
- return GTK_FONT_SELECTION_DIALOG(parent)->apply_button;
+ return G_OBJECT(GTK_FONT_SELECTION_DIALOG(parent)->apply_button);
if (!strcmp(childname, "font_selection"))
- return GTK_FONT_SELECTION_DIALOG(parent)->fontsel;
+ return G_OBJECT(GTK_FONT_SELECTION_DIALOG(parent)->fontsel);
return NULL;
}
-static GtkWidget *
-combo_box_entry_find_internal_child(GladeXML *xml, GtkWidget *parent,
+static GObject *
+combo_box_entry_find_internal_child(GladeXML *xml, GObject *parent,
const gchar *childname)
{
if (!strcmp(childname, "entry"))
- return gtk_bin_get_child(GTK_BIN(parent));
+ return G_OBJECT(gtk_bin_get_child(GTK_BIN(parent)));
return NULL;
}
@@ -902,170 +905,177 @@
glade_register_custom_prop (GTK_TYPE_TOOL_BUTTON, "icon", tool_button_set_icon);
glade_register_custom_prop (GTK_TYPE_COMBO_BOX, "items", combo_box_set_items);
- glade_register_widget (GTK_TYPE_ABOUT_DIALOG, NULL,
+ glade_register_object (GTK_TYPE_ABOUT_DIALOG,
NULL, NULL);
- glade_register_widget (GTK_TYPE_ACCEL_LABEL, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_ACCEL_LABEL,
NULL, NULL);
- glade_register_widget (GTK_TYPE_ALIGNMENT, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_ALIGNMENT,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_ARROW, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_ARROW,
NULL, NULL);
- glade_register_widget (GTK_TYPE_ASPECT_FRAME, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_ASPECT_FRAME,
frame_build_children, NULL);
- glade_register_widget (GTK_TYPE_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_BUTTON,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_CALENDAR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_CALENDAR,
NULL, NULL);
- glade_register_widget (GTK_TYPE_CHECK_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_CHECK_BUTTON,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_CHECK_MENU_ITEM, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_CHECK_MENU_ITEM,
menuitem_build_children, NULL);
- glade_register_widget (GTK_TYPE_COLOR_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_COLOR_BUTTON,
NULL, NULL);
- glade_register_widget (GTK_TYPE_COLOR_SELECTION, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_COLOR_SELECTION,
NULL, NULL);
- glade_register_widget (GTK_TYPE_COLOR_SELECTION_DIALOG, NULL,
- glade_standard_build_children, colorseldlg_find_internal_child);
- glade_register_widget (GTK_TYPE_COMBO_BOX, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_COLOR_SELECTION_DIALOG,
+ glade_standard_build_children,
+ colorseldlg_find_internal_child);
+ glade_register_object (GTK_TYPE_COMBO_BOX,
NULL, NULL);
- glade_register_widget (GTK_TYPE_COMBO_BOX_ENTRY, glade_standard_build_widget,
- glade_standard_build_children, combo_box_entry_find_internal_child);
- glade_register_widget (GTK_TYPE_CURVE, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_COMBO_BOX_ENTRY,
+ glade_standard_build_children,
+ combo_box_entry_find_internal_child);
+ glade_register_object (GTK_TYPE_CURVE,
NULL, NULL);
- glade_register_widget (GTK_TYPE_DIALOG, NULL,
- gtk_dialog_build_children, dialog_find_internal_child);
- glade_register_widget (GTK_TYPE_DRAWING_AREA, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_DIALOG,
+ gtk_dialog_build_children,
+ dialog_find_internal_child);
+ glade_register_object (GTK_TYPE_DRAWING_AREA,
NULL, NULL);
- glade_register_widget (GTK_TYPE_ENTRY, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_ENTRY,
NULL, NULL);
- glade_register_widget (GTK_TYPE_EVENT_BOX, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_EVENT_BOX,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_EXPANDER, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_EXPANDER,
expander_build_children, NULL);
- glade_register_widget (GTK_TYPE_FILE_CHOOSER, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_FILE_CHOOSER,
NULL, NULL);
- glade_register_widget (GTK_TYPE_FILE_CHOOSER_DIALOG, glade_standard_build_widget,
- gtk_dialog_build_children, dialog_find_internal_child);
- glade_register_widget (GTK_TYPE_FILE_CHOOSER_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_FILE_CHOOSER_DIALOG,
+ gtk_dialog_build_children,
+ dialog_find_internal_child);
+ glade_register_object (GTK_TYPE_FILE_CHOOSER_BUTTON,
NULL, NULL);
- glade_register_widget (GTK_TYPE_FILE_SELECTION, NULL,
- glade_standard_build_children, filesel_find_internal_child);
- glade_register_widget (GTK_TYPE_FIXED, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_FILE_SELECTION,
+ glade_standard_build_children,
+ filesel_find_internal_child);
+ glade_register_object (GTK_TYPE_FIXED,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_FONT_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_FONT_BUTTON,
NULL, NULL);
- glade_register_widget (GTK_TYPE_FONT_SELECTION, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_FONT_SELECTION,
NULL, NULL);
- glade_register_widget (GTK_TYPE_FONT_SELECTION_DIALOG, NULL,
- glade_standard_build_children, fontseldlg_find_internal_child);
- glade_register_widget (GTK_TYPE_FRAME, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_FONT_SELECTION_DIALOG,
+ glade_standard_build_children,
+ fontseldlg_find_internal_child);
+ glade_register_object (GTK_TYPE_FRAME,
frame_build_children, NULL);
- glade_register_widget (GTK_TYPE_GAMMA_CURVE, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_GAMMA_CURVE,
NULL, NULL);
- glade_register_widget (GTK_TYPE_HANDLE_BOX, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HANDLE_BOX,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_HBUTTON_BOX, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HBUTTON_BOX,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_HBOX, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HBOX,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_HPANED, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HPANED,
paned_build_children, NULL);
- glade_register_widget (GTK_TYPE_HRULER, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HRULER,
NULL, NULL);
- glade_register_widget (GTK_TYPE_HSCALE, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HSCALE,
NULL, NULL);
- glade_register_widget (GTK_TYPE_HSCROLLBAR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HSCROLLBAR,
NULL, NULL);
- glade_register_widget (GTK_TYPE_HSEPARATOR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_HSEPARATOR,
NULL, NULL);
- glade_register_widget (GTK_TYPE_ICON_VIEW, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_ICON_VIEW,
NULL, NULL);
- glade_register_widget (GTK_TYPE_IMAGE, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_IMAGE,
NULL, NULL);
- glade_register_widget (GTK_TYPE_IMAGE_MENU_ITEM, glade_standard_build_widget,
- menuitem_build_children, image_menu_find_internal_child);
- glade_register_widget (GTK_TYPE_INPUT_DIALOG, NULL,
+ glade_register_object (GTK_TYPE_IMAGE_MENU_ITEM,
+ menuitem_build_children,
+ image_menu_find_internal_child);
+ glade_register_object (GTK_TYPE_INPUT_DIALOG,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_LABEL, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_LABEL,
NULL, NULL);
- glade_register_widget (GTK_TYPE_LAYOUT, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_LAYOUT,
layout_build_children, NULL);
- glade_register_widget (GTK_TYPE_MENU, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_MENU,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_MENU_BAR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_MENU_BAR,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_MENU_ITEM, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_MENU_ITEM,
menuitem_build_children, NULL);
- glade_register_widget (GTK_TYPE_MENU_TOOL_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_MENU_TOOL_BUTTON,
NULL, NULL);
- glade_register_widget (GTK_TYPE_MESSAGE_DIALOG, NULL,
+ glade_register_object (GTK_TYPE_MESSAGE_DIALOG,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_NOTEBOOK, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_NOTEBOOK,
notebook_build_children, NULL);
#ifdef HAVE_GTK_PLUG
- glade_register_widget (GTK_TYPE_PLUG, NULL,
+ glade_register_object (GTK_TYPE_PLUG, NULL,
NULL, NULL);
#endif
- glade_register_widget (GTK_TYPE_PROGRESS_BAR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_PROGRESS_BAR,
NULL, NULL);
- glade_register_widget (GTK_TYPE_RADIO_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_RADIO_BUTTON,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_RADIO_MENU_ITEM, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_RADIO_MENU_ITEM,
menuitem_build_children, NULL);
- glade_register_widget (GTK_TYPE_RADIO_TOOL_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_RADIO_TOOL_BUTTON,
NULL, NULL);
- glade_register_widget (GTK_TYPE_SCROLLED_WINDOW, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_SCROLLED_WINDOW,
glade_standard_build_children,
scrolled_window_find_internal_child);
- glade_register_widget (GTK_TYPE_SEPARATOR_MENU_ITEM, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_SEPARATOR_MENU_ITEM,
NULL, NULL);
- glade_register_widget (GTK_TYPE_SEPARATOR_TOOL_ITEM, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_SEPARATOR_TOOL_ITEM,
NULL, NULL);
#ifdef HAVE_GTK_PLUG
- glade_register_widget (GTK_TYPE_SOCKET, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_SOCKET,
NULL, NULL);
#endif
- glade_register_widget (GTK_TYPE_SPIN_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_SPIN_BUTTON,
NULL, NULL);
- glade_register_widget (GTK_TYPE_STATUSBAR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_STATUSBAR,
NULL, NULL);
- glade_register_widget (GTK_TYPE_TABLE, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TABLE,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TEAROFF_MENU_ITEM, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TEAROFF_MENU_ITEM,
NULL, NULL);
- glade_register_widget (GTK_TYPE_TEXT_VIEW, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TEXT_VIEW,
NULL, NULL);
- glade_register_widget (GTK_TYPE_TOGGLE_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TOGGLE_BUTTON,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TOGGLE_TOOL_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TOGGLE_TOOL_BUTTON,
NULL, NULL);
#if 0
- glade_register_widget (GTK_TYPE_TOOLBAR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TOOLBAR,
toolbar_build_children, NULL);
#endif
- glade_register_widget (GTK_TYPE_TOOL_ITEM, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TOOL_ITEM,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_TOOL_BUTTON, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TOOL_BUTTON,
NULL, NULL);
- glade_register_widget (GTK_TYPE_TREE_VIEW, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_TREE_VIEW,
NULL, NULL);
- glade_register_widget (GTK_TYPE_VBUTTON_BOX, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VBUTTON_BOX,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_VBOX, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VBOX,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_VPANED, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VPANED,
paned_build_children, NULL);
- glade_register_widget (GTK_TYPE_VRULER, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VRULER,
NULL, NULL);
- glade_register_widget (GTK_TYPE_VSCALE, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VSCALE,
NULL, NULL);
- glade_register_widget (GTK_TYPE_VSCROLLBAR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VSCROLLBAR,
NULL, NULL);
- glade_register_widget (GTK_TYPE_VSEPARATOR, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VSEPARATOR,
NULL, NULL);
- glade_register_widget (GTK_TYPE_VIEWPORT, glade_standard_build_widget,
+ glade_register_object (GTK_TYPE_VIEWPORT,
glade_standard_build_children, NULL);
- glade_register_widget (GTK_TYPE_WINDOW, NULL,
+ glade_register_object (GTK_TYPE_WINDOW,
glade_standard_build_children, NULL);
/* glade_provide("gtk"); */
Modified: libglade/glade-parser.c
===================================================================
--- libglade/glade-parser.c 2005-03-30 14:01:15 UTC (rev 238)
+++ libglade/glade-parser.c 2005-03-30 19:07:43 UTC (rev 239)
@@ -42,24 +42,24 @@
PARSER_START,
PARSER_GLADE_INTERFACE,
PARSER_REQUIRES,
- PARSER_WIDGET,
- PARSER_WIDGET_PROPERTY,
- PARSER_WIDGET_ATK,
- PARSER_WIDGET_ATK_PROPERTY,
- PARSER_WIDGET_ATK_ACTION,
- PARSER_WIDGET_ATK_RELATION,
- PARSER_WIDGET_AFTER_ATK,
- PARSER_WIDGET_SIGNAL,
- PARSER_WIDGET_AFTER_SIGNAL,
- PARSER_WIDGET_ACCEL,
- PARSER_WIDGET_AFTER_ACCEL,
- PARSER_WIDGET_CHILD,
- PARSER_WIDGET_CHILD_AFTER_WIDGET,
- PARSER_WIDGET_CHILD_PACKING,
- PARSER_WIDGET_CHILD_PACKING_PROPERTY,
- PARSER_WIDGET_CHILD_AFTER_PACKING,
- PARSER_WIDGET_CHILD_PLACEHOLDER,
- PARSER_WIDGET_CHILD_AFTER_PLACEHOLDER,
+ PARSER_OBJECT,
+ PARSER_OBJECT_PROPERTY,
+ PARSER_OBJECT_ATK,
+ PARSER_OBJECT_ATK_PROPERTY,
+ PARSER_OBJECT_ATK_ACTION,
+ PARSER_OBJECT_ATK_RELATION,
+ PARSER_OBJECT_AFTER_ATK,
+ PARSER_OBJECT_SIGNAL,
+ PARSER_OBJECT_AFTER_SIGNAL,
+ PARSER_OBJECT_ACCEL,
+ PARSER_OBJECT_AFTER_ACCEL,
+ PARSER_OBJECT_CHILD,
+ PARSER_OBJECT_CHILD_AFTER_OBJECT,
+ PARSER_OBJECT_CHILD_PACKING,
+ PARSER_OBJECT_CHILD_PACKING_PROPERTY,
+ PARSER_OBJECT_CHILD_AFTER_PACKING,
+ PARSER_OBJECT_CHILD_PLACEHOLDER,
+ PARSER_OBJECT_CHILD_AFTER_PLACEHOLDER,
PARSER_FINISH,
PARSER_UNKNOWN
} ParserState;
@@ -69,24 +69,24 @@
"START",
"GLADE_INTERFACE",
"REQUIRES",
- "WIDGET",
- "WIDGET_PROPERTY",
- "WIDGET_ATK",
- "WIDGET_ATK_PROPERTY",
- "WIDGET_ATK_ACTION",
- "WIDGET_ATK_RELATION",
- "WIDGET_AFTER_ATK",
- "WIDGET_SIGNAL",
- "WIDGET_AFTER_SIGNAL",
- "WIDGET_ACCEL",
- "WIDGET_AFTER_ACCEL",
- "WIDGET_CHILD",
- "WIDGET_CHILD_AFTER_WIDGET",
- "WIDGET_CHILD_PACKING",
- "WIDGET_CHILD_PACKING_PROPERTY",
- "WIDGET_CHILD_AFTER_PACKING",
- "WIDGET_CHILD_PLACEHOLDER",
- "WIDGET_CHILD_AFTER_PLACEHOLDER",
+ "OBJECT",
+ "OBJECT_PROPERTY",
+ "OBJECT_ATK",
+ "OBJECT_ATK_PROPERTY",
+ "OBJECT_ATK_ACTION",
+ "OBJECT_ATK_RELATION",
+ "OBJECT_AFTER_ATK",
+ "OBJECT_SIGNAL",
+ "OBJECT_AFTER_SIGNAL",
+ "OBJECT_ACCEL",
+ "OBJECT_AFTER_ACCEL",
+ "OBJECT_CHILD",
+ "OBJECT_CHILD_AFTER_OBJECT",
+ "OBJECT_CHILD_PACKING",
+ "OBJECT_CHILD_PACKING_PROPERTY",
+ "OBJECT_CHILD_AFTER_PACKING",
+ "OBJECT_CHILD_PLACEHOLDER",
+ "OBJECT_CHILD_AFTER_PLACEHOLDER",
"FINISH",
"UNKNOWN",
};
@@ -101,13 +101,13 @@
guint unknown_depth; /* handle recursive unrecognised tags */
ParserState prev_state; /* the last `known' state we were in */
- guint widget_depth;
+ guint object_depth;
GString *content;
GladeInterface *interface;
- GladeWidgetInfo *widget;
+ GladeObjectInfo *object;
- enum {PROP_NONE, PROP_WIDGET, PROP_ATK, PROP_CHILD } prop_type;
+ enum {PROP_NONE, PROP_OBJECT, PROP_ATK, PROP_CHILD } prop_type;
gchar *prop_name;
gboolean translate_prop;
gboolean context_prop;
@@ -151,12 +151,12 @@
return alloc_string(interface, norm_str->str);
}
-static GladeWidgetInfo *
-create_widget_info(GladeInterface *interface,
+static GladeObjectInfo *
+create_object_info(GladeInterface *interface,
const gchar **names,
const gchar **values)
{
- GladeWidgetInfo *info = g_new0(GladeWidgetInfo, 1);
+ GladeObjectInfo *info = g_new0(GladeObjectInfo, 1);
int i;
for (i = 0; names && names[i] != NULL; i++) {
@@ -165,10 +165,10 @@
else if (!strcmp(names[i], "id"))
info->name = alloc_string(interface, values[i]);
else
- g_warning("unknown attribute `%s' for <widget>.", names[i]);
+ g_warning("unknown attribute `%s' for <object>.", names[i]);
}
if (info->classname == NULL || info->name == NULL)
- g_warning("<widget> element missing required attributes!");
+ g_warning("<object> element missing required attributes!");
g_hash_table_insert(interface->names, info->name, info);
return info;
}
@@ -181,27 +181,27 @@
switch (state->prop_type) {
case PROP_NONE:
break;
- case PROP_WIDGET:
- if (state->widget->properties)
+ case PROP_OBJECT:
+ if (state->object->properties)
g_warning("we already read all the props for this key. Leaking");
- state->widget->properties = (GladeProperty *)state->props->data;
- state->widget->n_properties = state->props->len;
+ state->object->properties = (GladeProperty *)state->props->data;
+ state->object->n_properties = state->props->len;
g_array_free(state->props, FALSE);
break;
case PROP_ATK:
- if (state->widget->atk_props)
+ if (state->object->atk_props)
g_warning("we already read all the ATK props for this key. Leaking");
- state->widget->atk_props = (GladeProperty *)state->props->data;
- state->widget->n_atk_props = state->props->len;
+ state->object->atk_props = (GladeProperty *)state->props->data;
+ state->object->n_atk_props = state->props->len;
g_array_free(state->props, FALSE);
break;
case PROP_CHILD:
- if (state->widget->n_children == 0) {
+ if (state->object->n_children == 0) {
g_warning("no children, but have child properties!");
g_array_free(state->props, TRUE);
} else {
- GladeChildInfo *info = &state->widget->children[
- state->widget->n_children-1];
+ GladeChildInfo *info = &state->object->children[
+ state->object->n_children-1];
if (info->properties)
g_warning("we already read all the child props for this key. Leaking");
info->properties = (GladeProperty *)state->props->data;
@@ -219,8 +219,8 @@
flush_signals(GladeParseState *state)
{
if (state->signals) {
- state->widget->signals = (GladeSignalInfo *)state->signals->data;
- state->widget->n_signals = state->signals->len;
+ state->object->signals = (GladeSignalInfo *)state->signals->data;
+ state->object->n_signals = state->signals->len;
g_array_free(state->signals, FALSE);
}
state->signals = NULL;
@@ -230,8 +230,8 @@
flush_actions(GladeParseState *state)
{
if (state->atk_actions) {
- state->widget->atk_actions = (GladeAtkActionInfo *)state->atk_actions->data;
- state->widget->n_atk_actions = state->atk_actions->len;
+ state->object->atk_actions = (GladeAtkActionInfo *)state->atk_actions->data;
+ state->object->n_atk_actions = state->atk_actions->len;
g_array_free(state->atk_actions, FALSE);
}
state->atk_actions = NULL;
@@ -241,8 +241,8 @@
flush_relations(GladeParseState *state)
{
if (state->relations) {
- state->widget->relations = (GladeAtkRelationInfo *)state->relations->data;
- state->widget->n_relations = state->relations->len;
+ state->object->relations = (GladeAtkRelationInfo *)state->relations->data;
+ state->object->n_relations = state->relations->len;
g_array_free(state->relations, FALSE);
}
state->relations = NULL;
@@ -252,8 +252,8 @@
flush_accels(GladeParseState *state)
{
if (state->accels) {
- state->widget->accels = (GladeAccelInfo *)state->accels->data;
- state->widget->n_accels = state->accels->len;
+ state->object->accels = (GladeAccelInfo *)state->accels->data;
+ state->object->n_accels = state->accels->len;
g_array_free(state->accels, FALSE);
}
state->accels = NULL;
@@ -450,10 +450,10 @@
flush_relations(state);
flush_accels(state);
- state->widget->n_children++;
- state->widget->children = g_renew(GladeChildInfo, state->widget->children,
- state->widget->n_children);
- info = &state->widget->children[state->widget->n_children-1];
+ state->object->n_children++;
+ state->object->children = g_renew(GladeChildInfo, state->object->children,
+ state->object->n_children);
+ info = &state->object->children[state->object->n_children-1];
info->internal_child = NULL;
info->properties = NULL;
info->n_properties = 0;
@@ -475,7 +475,7 @@
state->unknown_depth = 0;
state->prev_state = PARSER_UNKNOWN;
- state->widget_depth = 0;
+ state->object_depth = 0;
state->content = g_string_sized_new(128);
state->interface = g_new0(GladeInterface, 1);
@@ -484,7 +484,7 @@
g_str_equal,
(GDestroyNotify)g_free,
NULL);
- state->widget = NULL;
+ state->object = NULL;
state->prop_type = PROP_NONE;
state->prop_name = NULL;
@@ -502,8 +502,8 @@
if (state->unknown_depth != 0)
g_warning("unknown_depth != 0 (%d)", state->unknown_depth);
- if (state->widget_depth != 0)
- g_warning("widget_depth != 0 (%d)", state->widget_depth);
+ if (state->object_depth != 0)
+ g_warning("object_depth != 0 (%d)", state->object_depth);
}
static void
@@ -560,23 +560,23 @@
names[i]);
}
state->state = PARSER_REQUIRES;
- } else if (!strcmp(name, "widget")) {
+ } else if (!strcmp(name, "object")) {
GladeInterface *iface = state->interface;
iface->n_toplevels++;
- iface->toplevels = g_renew(GladeWidgetInfo *, iface->toplevels,
+ iface->toplevels = g_renew(GladeObjectInfo *, iface->toplevels,
iface->n_toplevels);
- state->widget = create_widget_info(iface, names, values);
- iface->toplevels[iface->n_toplevels-1] = state->widget;
+ state->object = create_object_info(iface, names, values);
+ iface->toplevels[iface->n_toplevels-1] = state->object;
- state->widget_depth++;
+ state->object_depth++;
state->prop_type = PROP_NONE;
state->prop_name = NULL;
state->props = NULL;
state->signals = NULL;
state->accels = NULL;
- state->state = PARSER_WIDGET;
+ state->state = PARSER_OBJECT;
} else {
g_warning("Unexpected element <%s> inside <glade-interface>.",
name);
@@ -591,13 +591,13 @@
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET:
+ case PARSER_OBJECT:
if (!strcmp(name, "property")) {
gboolean bad_agent = FALSE;
if (state->prop_type != PROP_NONE &&
- state->prop_type != PROP_WIDGET)
- g_warning("non widget properties defined here (oh no!)");
+ state->prop_type != PROP_OBJECT)
+ g_warning("non object properties defined here (oh no!)");
state->translate_prop = FALSE;
for (i = 0; names && names[i] != NULL; i++) {
if (!strcmp(names[i], "name"))
@@ -619,38 +619,38 @@
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
} else {
- state->prop_type = PROP_WIDGET;
- state->state = PARSER_WIDGET_PROPERTY;
+ state->prop_type = PROP_OBJECT;
+ state->state = PARSER_OBJECT_PROPERTY;
}
} else if (!strcmp(name, "accessibility")) {
flush_properties(state);
if (names != NULL && names[0] != NULL)
g_warning("<accessibility> element should have no attributes");
- state->state = PARSER_WIDGET_ATK;
+ state->state = PARSER_OBJECT_ATK;
} else if (!strcmp(name, "signal")) {
handle_signal(state, names, values);
- state->state = PARSER_WIDGET_SIGNAL;
+ state->state = PARSER_OBJECT_SIGNAL;
} else if (!strcmp(name, "accelerator")) {
handle_accel(state, names, values);
- state->state = PARSER_WIDGET_ACCEL;
+ state->state = PARSER_OBJECT_ACCEL;
} else if (!strcmp(name, "child")) {
handle_child(state, names, values);
- state->state = PARSER_WIDGET_CHILD;
+ state->state = PARSER_OBJECT_CHILD;
} else {
- g_warning("Unexpected element <%s> inside <widget>.", name);
+ g_warning("Unexpected element <%s> inside <object>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_PROPERTY:
+ case PARSER_OBJECT_PROPERTY:
g_warning("<property> element should be empty. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_ATK:
+ case PARSER_OBJECT_ATK:
if (!strcmp(name, "atkproperty")) {
if (state->prop_type != PROP_NONE &&
state->prop_type != PROP_ATK)
@@ -671,13 +671,13 @@
g_warning("unknown attribute `%s' for <atkproperty>.",
names[i]);
}
- state->state = PARSER_WIDGET_ATK_PROPERTY;
+ state->state = PARSER_OBJECT_ATK_PROPERTY;
} else if (!strcmp(name, "atkaction")) {
handle_atk_action(state, names, values);
- state->state = PARSER_WIDGET_ATK_ACTION;
+ state->state = PARSER_OBJECT_ATK_ACTION;
} else if (!strcmp(name, "atkrelation")) {
handle_atk_relation(state, names, values);
- state->state = PARSER_WIDGET_ATK_RELATION;
+ state->state = PARSER_OBJECT_ATK_RELATION;
} else {
g_warning("Unexpected element <%s> inside <accessibility>.", name);
state->prev_state = state->state;
@@ -685,9 +685,9 @@
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_ATK_PROPERTY:
+ case PARSER_OBJECT_ATK_PROPERTY:
if (!strcmp(name, "accessibility")) {
- state->state = PARSER_WIDGET_ATK;
+ state->state = PARSER_OBJECT_ATK;
} else {
g_warning("Unexpected element <%s> inside <atkproperty>.", name);
state->prev_state = state->state;
@@ -695,96 +695,96 @@
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_ATK_ACTION:
+ case PARSER_OBJECT_ATK_ACTION:
g_warning("<atkaction> element should be empty. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_ATK_RELATION:
+ case PARSER_OBJECT_ATK_RELATION:
g_warning("<atkrelation> element should be empty. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_AFTER_ATK:
+ case PARSER_OBJECT_AFTER_ATK:
if (!strcmp(name, "signal")) {
handle_signal(state, names, values);
- state->state = PARSER_WIDGET_SIGNAL;
+ state->state = PARSER_OBJECT_SIGNAL;
} else if (!strcmp(name, "accelerator")) {
handle_accel(state, names, values);
- state->state = PARSER_WIDGET_ACCEL;
+ state->state = PARSER_OBJECT_ACCEL;
} else if (!strcmp(name, "child")) {
handle_child(state, names, values);
- state->state = PARSER_WIDGET_CHILD;
+ state->state = PARSER_OBJECT_CHILD;
} else {
- g_warning("Unexpected element <%s> inside <widget>.", name);
+ g_warning("Unexpected element <%s> inside <object>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_SIGNAL:
+ case PARSER_OBJECT_SIGNAL:
g_warning("<signal> element should be empty. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_AFTER_SIGNAL:
+ case PARSER_OBJECT_AFTER_SIGNAL:
if (!strcmp(name, "accelerator")) {
handle_accel(state, names, values);
- state->state = PARSER_WIDGET_ACCEL;
+ state->state = PARSER_OBJECT_ACCEL;
} else if (!strcmp(name, "child")) {
handle_child(state, names, values);
- state->state = PARSER_WIDGET_CHILD;
+ state->state = PARSER_OBJECT_CHILD;
} else {
- g_warning("Unexpected element <%s> inside <widget>.", name);
+ g_warning("Unexpected element <%s> inside <object>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_ACCEL:
+ case PARSER_OBJECT_ACCEL:
g_warning("<accelerator> element should be empty. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_AFTER_ACCEL:
+ case PARSER_OBJECT_AFTER_ACCEL:
if (!strcmp(name, "child")) {
handle_child(state, names, values);
- state->state = PARSER_WIDGET_CHILD;
+ state->state = PARSER_OBJECT_CHILD;
} else {
- g_warning("Unexpected element <%s> inside <widget>.", name);
+ g_warning("Unexpected element <%s> inside <object>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_CHILD:
- if (!strcmp(name, "widget")) {
- GladeWidgetInfo *parent = state->widget;
+ case PARSER_OBJECT_CHILD:
+ if (!strcmp(name, "object")) {
+ GladeObjectInfo *parent = state->object;
GladeChildInfo *info = &parent->children[parent->n_children-1];
if (info->child)
- g_warning("widget pointer already set!! not good");
+ g_warning("object pointer already set!! not good");
- state->widget = create_widget_info(state->interface, names, values);
- info->child = state->widget;
+ state->object = create_object_info(state->interface, names, values);
+ info->child = state->object;
info->child->parent = parent;
- state->widget_depth++;
+ state->object_depth++;
state->prop_type = PROP_NONE;
state->prop_name = NULL;
state->props = NULL;
state->signals = NULL;
state->accels = NULL;
- state->state = PARSER_WIDGET;
+ state->state = PARSER_OBJECT;
} else if (!strcmp(name, "placeholder")) {
/* this isn't a real child, so knock off the last ChildInfo */
- state->widget->n_children--;
- state->state = PARSER_WIDGET_CHILD_PLACEHOLDER;
+ state->object->n_children--;
+ state->state = PARSER_OBJECT_CHILD_PLACEHOLDER;
} else {
g_warning("Unexpected element <%s> inside <child>.", name);
state->prev_state = state->state;
@@ -792,9 +792,9 @@
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_CHILD_AFTER_WIDGET:
+ case PARSER_OBJECT_CHILD_AFTER_OBJECT:
if (!strcmp(name, "packing")) {
- state->state = PARSER_WIDGET_CHILD_PACKING;
+ state->state = PARSER_OBJECT_CHILD_PACKING;
} else {
g_warning("Unexpected element <%s> inside <child>.", name);
state->prev_state = state->state;
@@ -802,7 +802,7 @@
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_CHILD_PACKING:
+ case PARSER_OBJECT_CHILD_PACKING:
if (!strcmp(name, "property")) {
gboolean bad_agent = FALSE;
@@ -833,7 +833,7 @@
state->unknown_depth++;
} else {
state->prop_type = PROP_CHILD;
- state->state = PARSER_WIDGET_CHILD_PACKING_PROPERTY;
+ state->state = PARSER_OBJECT_CHILD_PACKING_PROPERTY;
}
} else {
g_warning("Unexpected element <%s> inside <child>.", name);
@@ -842,25 +842,25 @@
state->unknown_depth++;
}
break;
- case PARSER_WIDGET_CHILD_PACKING_PROPERTY:
+ case PARSER_OBJECT_CHILD_PACKING_PROPERTY:
g_warning("<property> element should be empty. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_CHILD_AFTER_PACKING:
+ case PARSER_OBJECT_CHILD_AFTER_PACKING:
g_warning("<child> should have no elements after <packing>. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_CHILD_PLACEHOLDER:
+ case PARSER_OBJECT_CHILD_PLACEHOLDER:
g_warning("<placeholder> should be empty. Found <%s>.", name);
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
state->unknown_depth++;
break;
- case PARSER_WIDGET_CHILD_AFTER_PLACEHOLDER:
+ case PARSER_OBJECT_CHILD_AFTER_PLACEHOLDER:
/* this is a placeholder <child> element -- ignore extra elements */
state->prev_state = state->state;
state->state = PARSER_UNKNOWN;
@@ -908,26 +908,26 @@
g_warning("should find </requires> here. Found </%s>", name);
state->state = PARSER_GLADE_INTERFACE;
break;
- case PARSER_WIDGET:
- case PARSER_WIDGET_AFTER_ATK:
- case PARSER_WIDGET_AFTER_SIGNAL:
- case PARSER_WIDGET_AFTER_ACCEL:
- if (strcmp(name, "widget") != 0)
- g_warning("should find </widget> here. Found </%s>", name);
+ case PARSER_OBJECT:
+ case PARSER_OBJECT_AFTER_ATK:
+ case PARSER_OBJECT_AFTER_SIGNAL:
+ case PARSER_OBJECT_AFTER_ACCEL:
+ if (strcmp(name, "object") != 0)
+ g_warning("should find </object> here. Found </%s>", name);
flush_properties(state);
flush_signals(state);
flush_actions(state);
flush_relations(state);
flush_accels(state);
- state->widget = state->widget->parent;
- state->widget_depth--;
+ state->object = state->object->parent;
+ state->object_depth--;
- if (state->widget_depth == 0)
+ if (state->object_depth == 0)
state->state = PARSER_GLADE_INTERFACE;
else
- state->state = PARSER_WIDGET_CHILD_AFTER_WIDGET;
+ state->state = PARSER_OBJECT_CHILD_AFTER_OBJECT;
break;
- case PARSER_WIDGET_PROPERTY:
+ case PARSER_OBJECT_PROPERTY:
if (strcmp(name, "property") != 0)
g_warning("should find </property> here. Found </%s>", name);
if (!state->props)
@@ -946,15 +946,15 @@
}
g_array_append_val(state->props, prop);
state->prop_name = NULL;
- state->state = PARSER_WIDGET;
+ state->state = PARSER_OBJECT;
break;
- case PARSER_WIDGET_ATK:
+ case PARSER_OBJECT_ATK:
if (strcmp(name, "accessibility") != 0)
g_warning("should find </accessibility> here. Found </%s>", name);
flush_properties(state); /* flush the ATK properties */
- state->state = PARSER_WIDGET_AFTER_ATK;
+ state->state = PARSER_OBJECT_AFTER_ATK;
break;
- case PARSER_WIDGET_ATK_PROPERTY:
+ case PARSER_OBJECT_ATK_PROPERTY:
if (strcmp(name, "atkproperty") != 0)
g_warning("should find </atkproperty> here. Found </%s>", name);
if (!state->props)
@@ -973,55 +973,55 @@
}
g_array_append_val(state->props, prop);
state->prop_name = NULL;
- state->state = PARSER_WIDGET_ATK;
+ state->state = PARSER_OBJECT_ATK;
break;
- case PARSER_WIDGET_ATK_ACTION:
+ case PARSER_OBJECT_ATK_ACTION:
if (strcmp(name, "atkaction") != 0)
g_warning("should find </atkaction> here. Found </%s>", name);
state->prop_name = NULL;
- state->state = PARSER_WIDGET_ATK;
+ state->state = PARSER_OBJECT_ATK;
break;
- case PARSER_WIDGET_ATK_RELATION:
+ case PARSER_OBJECT_ATK_RELATION:
if (strcmp(name, "atkrelation") != 0)
g_warning("should find </atkrelation> here. Found </%s>", name);
state->prop_name = NULL;
- state->state = PARSER_WIDGET_ATK;
+ state->state = PARSER_OBJECT_ATK;
break;
- case PARSER_WIDGET_SIGNAL:
+ case PARSER_OBJECT_SIGNAL:
if (strcmp(name, "signal") != 0)
g_warning("should find </signal> here. Found </%s>", name);
- state->state = PARSER_WIDGET_AFTER_ATK;
+ state->state = PARSER_OBJECT_AFTER_ATK;
break;
- case PARSER_WIDGET_ACCEL:
+ case PARSER_OBJECT_ACCEL:
if (strcmp(name, "accelerator") != 0)
g_warning("should find </accelerator> here. Found </%s>", name);
- state->state = PARSER_WIDGET_AFTER_SIGNAL;
+ state->state = PARSER_OBJECT_AFTER_SIGNAL;
break;
- case PARSER_WIDGET_CHILD:
+ case PARSER_OBJECT_CHILD:
if (strcmp(name, "child") != 0)
g_warning("should find </child> here. Found </%s>", name);
/* if we are ending the element in this state, then there
- * hasn't been a <widget> element inside this <child>
+ * hasn't been a <object> element inside this <child>
* element. (If there was, then we would be in
- * PARSER_WIDGET_CHILD_AFTER_WIDGET state. */
- g_warning("no <widget> element found inside <child>. Discarding");
- g_free(state->widget->children[
- state->widget->n_children-1].properties);
- state->widget->n_children--;
- state->state = PARSER_WIDGET_AFTER_ACCEL;
+ * PARSER_OBJECT_CHILD_AFTER_OBJECT state. */
+ g_warning("no <object> element found inside <child>. Discarding");
+ g_free(state->object->children[
+ state->object->n_children-1].properties);
+ state->object->n_children--;
+ state->state = PARSER_OBJECT_AFTER_ACCEL;
break;
- case PARSER_WIDGET_CHILD_AFTER_WIDGET:
+ case PARSER_OBJECT_CHILD_AFTER_OBJECT:
if (strcmp(name, "child") != 0)
g_warning("should find </child> here. Found </%s>", name);
- state->state = PARSER_WIDGET_AFTER_ACCEL;
+ state->state = PARSER_OBJECT_AFTER_ACCEL;
break;
- case PARSER_WIDGET_CHILD_PACKING:
+ case PARSER_OBJECT_CHILD_PACKING:
if (strcmp(name, "packing") != 0)
g_warning("should find </packing> here. Found </%s>", name);
- state->state = PARSER_WIDGET_CHILD_AFTER_PACKING;
+ state->state = PARSER_OBJECT_CHILD_AFTER_PACKING;
flush_properties(state); /* flush the properties. */
break;
- case PARSER_WIDGET_CHILD_PACKING_PROPERTY:
+ case PARSER_OBJECT_CHILD_PACKING_PROPERTY:
if (strcmp(name, "property") != 0)
g_warning("should find </property> here. Found </%s>", name);
if (!state->props)
@@ -1040,22 +1040,22 @@
}
g_array_append_val(state->props, prop);
state->prop_name = NULL;
- state->state = PARSER_WIDGET_CHILD_PACKING;
+ state->state = PARSER_OBJECT_CHILD_PACKING;
break;
- case PARSER_WIDGET_CHILD_AFTER_PACKING:
+ case PARSER_OBJECT_CHILD_AFTER_PACKING:
if (strcmp(name, "child") != 0)
g_warning("should find </child> here. Found </%s>", name);
- state->state = PARSER_WIDGET_AFTER_ACCEL;
+ state->state = PARSER_OBJECT_AFTER_ACCEL;
break;
- case PARSER_WIDGET_CHILD_PLACEHOLDER:
+ case PARSER_OBJECT_CHILD_PLACEHOLDER:
if (strcmp(name, "placeholder") != 0)
g_warning("should find </placeholder> here. Found </%s>", name);
- state->state = PARSER_WIDGET_CHILD_AFTER_PLACEHOLDER;
+ state->state = PARSER_OBJECT_CHILD_AFTER_PLACEHOLDER;
break;
- case PARSER_WIDGET_CHILD_AFTER_PLACEHOLDER:
+ case PARSER_OBJECT_CHILD_AFTER_PLACEHOLDER:
if (strcmp(name, "child") != 0)
g_warning("should find </child> here. Found </%s>", name);
- state->state = PARSER_WIDGET_AFTER_ACCEL;
+ state->state = PARSER_OBJECT_AFTER_ACCEL;
break;
case PARSER_FINISH:
g_warning("should not be closing any elements in this state");
@@ -1076,9 +1076,9 @@
GError **error)
{
switch (state->state) {
- case PARSER_WIDGET_PROPERTY:
- case PARSER_WIDGET_ATK_PROPERTY:
- case PARSER_WIDGET_CHILD_PACKING_PROPERTY:
+ case PARSER_OBJECT_PROPERTY:
+ case PARSER_OBJECT_ATK_PROPERTY:
+ case PARSER_OBJECT_CHILD_PACKING_PROPERTY:
g_string_append_len(state->content, chars, len);
break;
default:
@@ -1104,7 +1104,7 @@
};
static void
-widget_info_free(GladeWidgetInfo *info)
+object_info_free(GladeObjectInfo *info)
{
gint i;
@@ -1119,7 +1119,7 @@
for (i = 0; i < info->n_children; i++) {
g_free(info->children[i].properties);
- widget_info_free(info->children[i].child);
+ object_info_free(info->children[i].child);
}
g_free(info->children);
g_free(info);
@@ -1142,7 +1142,7 @@
g_free(interface->requires);
for (i = 0; i < interface->n_toplevels; i++)
- widget_info_free(interface->toplevels[i]);
+ object_info_free(interface->toplevels[i]);
g_free(interface->toplevels);
g_hash_table_destroy(interface->names);
@@ -1251,127 +1251,7 @@
return state.interface;
}
-#if 0
-static void
-dump_widget(xmlNode *parent, GladeWidgetInfo *info, gint indent)
-{
- xmlNode *widget = xmlNewNode(NULL, "widget");
- gint i, j;
- xmlSetProp(widget, "class", info->classname);
- xmlSetProp(widget, "id", info->name);
- xmlAddChild(parent, widget);
- xmlNodeAddContent(widget, "\n");
-
- for (i = 0; i < info->n_properties; i++) {
- xmlNode *node;
-
- for (j = 0; j < indent + 1; j++)
- xmlNodeAddContent(widget, " ");
- node = xmlNewNode(NULL, "property");
- xmlSetProp(node, "name", info->properties[i].name);
- xmlNodeSetContent(node, info->properties[i].value);
- xmlAddChild(widget, node);
- xmlNodeAddContent(widget, "\n");
- }
-
- if (info->n_atk_props != 0) {
- xmlNode *atk;
-
- for (j = 0; j < indent + 1; j++)
- xmlNodeAddContent(widget, " ");
- atk = xmlNewNode(NULL, "accessibility");
- xmlAddChild(widget, atk);
- xmlNodeAddContent(widget, "\n");
- xmlNodeAddContent(atk, "\n");
-
- for (i = 0; i < info->n_atk_props; i++) {
- xmlNode *node;
-
- for (j = 0; j < indent + 2; j++)
- xmlNodeAddContent(atk, " ");
- node = xmlNewNode(NULL, "property");
- xmlSetProp(node, "name", info->atk_props[i].name);
- xmlNodeSetContent(node, info->atk_props[i].value);
- xmlAddChild(atk, node);
- xmlNodeAddContent(atk, "\n");
- }
- for (j = 0; j < indent + 1; j++)
- xmlNodeAddContent(atk, " ");
- }
-
- for (i = 0; i < info->n_signals; i++) {
- xmlNode *node;
-
- for (j = 0; j < indent + 1; j++)
- xmlNodeAddContent(widget, " ");
-
- node = xmlNewNode(NULL, "signal");
- xmlSetProp(node, "name", info->signals[i].name);
- xmlSetProp(node, "handler", info->signals[i].handler);
- if (info->signals[i].after)
- xmlSetProp(node, "after", "yes");
- if (info->signals[i].object)
- xmlSetProp(node, "object", info->signals[i].object);
- xmlAddChild(widget, node);
- xmlNodeAddContent(widget, "\n");
- }
-
- for (i = 0; i < info->n_accels; i++) {
- xmlNode *node;
-
- for (j = 0; j < indent + 1; j++)
- xmlNodeAddContent(widget, " ");
-
- node = xmlNewNode(NULL, "accelerator");
- xmlSetProp(node, "key", gdk_keyval_name(info->accels[i].key));
- xmlSetProp(node, "modifier", "something"/*info->accels[i].modifiers*/);
- xmlSetProp(node, "signal", info->accels[i].signal);
- xmlAddChild(widget, node);
- xmlNodeAddContent(widget, "\n");
- }
-
- for (i = 0; i < info->n_children; i++) {
- xmlNode *child;
- GladeChildInfo *childinfo = &info->children[i];
- gint k;
-
- for (j = 0; j < indent + 1; j++)
- xmlNodeAddContent(widget, " ");
-
- child = xmlNewNode(NULL, "child");
- if (childinfo->internal_child)
- xmlSetProp(child, "internal-child", childinfo->internal_child);
- xmlAddChild(widget, child);
- xmlNodeAddContent(widget, "\n");
- xmlNodeAddContent(child, "\n");
-
- for (k = 0; k < childinfo->n_properties; k++) {
- xmlNode *node;
-
- for (j = 0; j < indent + 2; j++)
- xmlNodeAddContent(child, " ");
- node = xmlNewNode(NULL, "property");
- xmlSetProp(node, "name", childinfo->properties[i].name);
- xmlNodeSetContent(node, childinfo->properties[i].value);
- xmlAddChild(child, node);
- xmlNodeAddContent(child, "\n");
- }
-
- for (j = 0; j < indent + 2; j++)
- xmlNodeAddContent(child, " ");
- dump_widget(child, childinfo->child, indent + 2);
- xmlNodeAddContent(child, "\n");
-
- for (j = 0; j < indent + 1; j++)
- xmlNodeAddContent(child, " ");
- }
-
- for (j = 0; j < indent; j++)
- xmlNodeAddContent(widget, " ");
-}
-#endif
-
/**
* glade_interface_dump
* @interface: the GladeInterface
@@ -1383,56 +1263,4 @@
void
glade_interface_dump(GladeInterface *interface, const gchar *filename)
{
-#if 0
- xmlDoc *doc;
- xmlNode *root;
- gint i;
-
- doc = xmlNewDoc("1.0");
- doc->standalone = FALSE;
- xmlCreateIntSubset(doc, "glade-interface",
- NULL, "glade-2.0.dtd");
- root = xmlNewNode(NULL, "glade-interface");
- xmlDocSetRootElement(doc, root);
-
- xmlNodeAddContent(root, "\n");
-
- for (i = 0; i < interface->n_requires; i++) {
- xmlNode *node = xmlNewNode(NULL, "requires");
-
- xmlSetProp(node, "lib", interface->requires[i]);
-
- xmlNodeAddContent(root, " ");
- xmlAddChild(root, node);
- xmlNodeAddContent(root, "\n");
- }
-
- for (i = 0; i < interface->n_toplevels; i++) {
- xmlNodeAddContent(root, " ");
- dump_widget(root, interface->toplevels[i], 1);
- xmlNodeAddContent(root, "\n");
- }
-
- /* output */
-
- xmlSaveFileEnc(filename, doc, "UTF-8");
- xmlFreeDoc(doc);
-#endif
}
-
-#if 0
-int
-main(int argc, char **argv) {
- gtk_init(&argc, &argv);
- if (argc > 1) {
- GladeInterface *interface = glade_parser_parse_file(argv[1], NULL);
- g_message("output: %p", interface);
- if (interface) {
- glade_interface_dump(interface, "/dev/stdout");
- glade_interface_destroy(interface);
- }
- } else
- g_message("need filename");
- return 0;
-}
-#endif
Modified: libglade/glade-parser.h
===================================================================
--- libglade/glade-parser.h 2005-03-30 14:01:15 UTC (rev 238)
+++ libglade/glade-parser.h 2005-03-30 19:07:43 UTC (rev 239)
@@ -61,11 +61,11 @@
gchar *signal;
};
-typedef struct _GladeWidgetInfo GladeWidgetInfo;
+typedef struct _GladeObjectInfo GladeObjectInfo;
typedef struct _GladeChildInfo GladeChildInfo;
-struct _GladeWidgetInfo {
- GladeWidgetInfo *parent;
+struct _GladeObjectInfo {
+ GladeObjectInfo *parent;
gchar *classname;
gchar *name;
@@ -96,7 +96,7 @@
GladeProperty *properties;
guint n_properties;
- GladeWidgetInfo *child;
+ GladeObjectInfo *child;
gchar *internal_child;
};
@@ -105,7 +105,7 @@
gchar **requires;
guint n_requires;
- GladeWidgetInfo **toplevels;
+ GladeObjectInfo **toplevels;
guint n_toplevels;
GHashTable *names;
Modified: libglade/glade-xml.c
===================================================================
--- libglade/glade-xml.c 2005-03-30 14:01:15 UTC (rev 238)
+++ libglade/glade-xml.c 2005-03-30 19:07:43 UTC (rev 239)
@@ -59,13 +59,15 @@
* properties + parent properties) */
static const gchar *glade_custom_props_cache_key = "libglade::custom-props-cache";
static GQuark glade_custom_props_cache_id = 0;
+static const gchar *glade_build_parent_key = "libglade::parent";
+static GQuark glade_build_parent_id = 0;
struct _GladeXMLPrivate {
GladeInterface *tree; /* the tree for this GladeXML */
GtkTooltips *tooltips; /* if not NULL, holds all tooltip info */
- /* hash tables of widgets. The keys are stored as widget data,
+ /* hash tables of objects. The keys are stored as object data,
* and get freed with those widgets. */
GHashTable *name_hash;
@@ -86,8 +88,8 @@
GtkWidget *focus_widget;
GtkWidget *default_widget;
- /* list of GtkWidget properties waiting to be set. (they couldn't
- * be set earlier because the value widget hadn't been created
+ /* list of GObject properties waiting to be set. (they couldn't
+ * be set earlier because the value object hadn't been created
* yet). */
GList *deferred_props;
};
@@ -109,13 +111,8 @@
gpointer user_data;
} connect_data_data;
-typedef struct {
- const gchar *name;
- GList *list;
-} widget_prefix_data;
-
-typedef struct _GladeWidgetBuildData GladeWidgetBuildData;
-struct _GladeWidgetBuildData {
+typedef struct _GladeObjectBuildData GladeObjectBuildData;
+struct _GladeObjectBuildData {
GladeBuildChildrenFunc build_children;
GladeFindInternalChildFunc find_internal_child;
};
@@ -212,12 +209,12 @@
/**
* glade_xml_new:
* @fname: the XML file name.
- * @root: the widget node in @fname to start building from (or %NULL)
+ * @root: the object node in @fname to start building from (or %NULL)
* @domain: the translation domain for the XML file (or %NULL for default)
*
- * Creates a new GladeXML object (and the corresponding widgets) from the
+ * Creates a new GladeXML object (and the corresponding objects) from the
* XML file @fname. Optionally it will only build the interface from the
- * widget node @root (if it is not %NULL). This feature is useful if you
+ * object node @root (if it is not %NULL). This feature is useful if you
* only want to build say a toolbar or menu from the XML file, but not the
* window it is embedded in. Note also that the XML parse tree is cached
* to speed up creating another GladeXML object for the same file
@@ -254,12 +251,12 @@
* glade_xml_new_from_buffer:
* @buffer: the memory buffer containing the XML document.
* @size: the size of the buffer.
- * @root: the widget node in @buffer to start building from (or %NULL)
+ * @root: the object node in @buffer to start building from (or %NULL)
* @domain: the translation domain to use for this interface (or %NULL)
*
- * Creates a new GladeXML object (and the corresponding widgets) from the
+ * Creates a new GladeXML object (and the corresponding objects) from the
* buffer @buffer. Optionally it will only build the interface from the
- * widget node @root (if it is not %NULL). This feature is useful if you
+ * object node @root (if it is not %NULL). This feature is useful if you
* only want to build say a toolbar or menu from the XML document, but not the
* window it is embedded in.
*
@@ -290,7 +287,7 @@
* @func: the signal handler function
*
* In the glade interface descriptions, signal handlers are specified for
- * widgets by name. This function allows you to connect a C function to
+ * objects by name. This function allows you to connect a C function to
* all signals in the GladeXML file with the given signal handler name.
*/
void
@@ -339,8 +336,8 @@
for (; signals != NULL; signals = signals->next) {
GladeSignalData *data = signals->data;
if (data->connect_object) {
- GladeXML *self = glade_get_widget_tree(
- GTK_WIDGET(data->signal_object));
+ GladeXML *self = glade_get_object_tree(
+ G_OBJECT(data->signal_object));
GObject *other = g_hash_table_lookup(self->priv->name_hash,
data->connect_object);
@@ -400,7 +397,7 @@
if (data->connect_object) {
if (!self)
- self = glade_get_widget_tree(GTK_WIDGET(data->signal_object));
+ self = glade_get_object_tree(G_OBJECT(data->signal_object));
connect_object = g_hash_table_lookup(self->priv->name_hash,
data->connect_object);
}
@@ -496,7 +493,7 @@
* @user_data: the signal handler data
*
* In the glade interface descriptions, signal handlers are specified for
- * widgets by name. This function allows you to connect a C function to
+ * objects by name. This function allows you to connect a C function to
* all signals in the GladeXML file with the given signal handler name.
*
* It differs from glade_xml_signal_connect since it allows you to
@@ -538,18 +535,18 @@
}
/**
- * glade_xml_get_widget:
+ * glade_xml_get_object:
* @self: the GladeXML object.
- * @name: the name of the widget.
+ * @name: the name of the object.
*
- * This function is used to get a pointer to the GtkWidget corresponding to
+ * This function is used to get a pointer to the GObject corresponding to
* @name in the interface description. You would use this if you have to do
- * anything to the widget after loading.
+ * anything to the object after loading.
*
- * Returns: the widget matching @name, or %NULL if none exists.
+ * Returns: the object matching @name, or %NULL if none exists.
*/
-GtkWidget *
-glade_xml_get_widget(GladeXML *self, const char *name)
+GObject *
+glade_xml_get_object(GladeXML *self, const char *name)
{
g_return_val_if_fail(self != NULL, NULL);
g_return_val_if_fail(name != NULL, NULL);
@@ -559,38 +556,35 @@
/**
- * glade_xml_get_widget_prefix:
+ * glade_xml_get_object:
* @self: the GladeXML object.
- * @name: the name of the widget.
+ * @name: the name of the object.
*
- * This function is used to get a list of pointers to the GtkWidget(s)
+ * This function is used to get a list of pointers to the GObject(s)
* with names that start with the string @name in the interface description.
- * You would use this if you have to do something to all of these widgets
+ * You would use this if you have to do something to all of these objects
* after loading.
*
* Returns: A list of the widget that match @name as the start of their
* name, or %NULL if none exists.
*/
static void
-widget_prefix_add_to_list(gchar *name, gpointer value,
- widget_prefix_data *data)
+object_prefix_add_to_list(gchar *name, gpointer value,
+ GList *list)
{
- if (!strncmp (data->name, name, strlen (data->name)))
- data->list = g_list_prepend (data->list, value);
+ list = g_list_prepend (list, value);
}
GList *
-glade_xml_get_widget_prefix(GladeXML *self, const gchar *prefix)
+glade_xml_get_objects(GladeXML *self)
{
- widget_prefix_data data;
+ GList *list = NULL;
- data.name = prefix;
- data.list = NULL;
-
g_hash_table_foreach(self->priv->name_hash,
- (GHFunc) widget_prefix_add_to_list, &data);
-
- return data.list;
+ (GHFunc) object_prefix_add_to_list, list);
+ list = g_list_reverse (list);
+
+ return list;
}
/**
@@ -622,37 +616,37 @@
}
/**
- * glade_get_widget_name:
- * @widget: the widget
+ * glade_get_object_name:
+ * @object: the object
*
- * Used to get the name of a widget that was generated by a GladeXML object.
+ * Used to get the name of a object that was generated by a GladeXML object.
*
- * Returns: the name of the widget.
+ * Returns: the name of the object.
*/
const char *
-glade_get_widget_name(GtkWidget *widget)
+glade_get_object_name(GObject *object)
{
- g_return_val_if_fail(widget != NULL, NULL);
+ g_return_val_if_fail(object != NULL, NULL);
- return (const char *)g_object_get_qdata(G_OBJECT(widget),
+ return (const char *)g_object_get_qdata(G_OBJECT(object),
glade_xml_name_id);
}
/**
- * glade_get_widget_tree:
- * @widget: the widget
+ * glade_get_object_tree:
+ * @object: the object
*
* Description:
- * This function is used to get the GladeXML object that built this widget.
+ * This function is used to get the GladeXML object that built this object.
*
- * Returns: the GladeXML object that built this widget.
+ * Returns: the GladeXML object that built this object.
*/
GladeXML *
-glade_get_widget_tree(GtkWidget *widget)
+glade_get_object_tree(GObject *object)
{
- g_return_val_if_fail(widget != NULL, NULL);
+ g_return_val_if_fail(object != NULL, NULL);
- return g_object_get_qdata(G_OBJECT(widget), glade_xml_tree_id);
+ return g_object_get_qdata(G_OBJECT(object), glade_xml_tree_id);
}
/* ------------------------------------------- */
@@ -692,13 +686,13 @@
}
/**
- * glade_xml_handle_widget_prop
+ * glade_xml_handle_object_prop
* @self: the GladeXML object
- * @widget: the property the widget to set the property on.
+ * @object: the property the object widgetto set the property on.
* @prop_name: the name of the property.
- * @value_name: the name of the widget used as the value for the property.
+ * @value_name: the name of the object used as the value for the property.
*
- * Some widgets have properties of type GtkWidget. These are
+ * Some objects have properties of type GtkWidget. These are
* represented as the widget name in the glade file. When
* constructing the interface, the widget specified as the value for a
* property may not exist yet.
@@ -709,7 +703,7 @@
* the widget is constructed.
*/
void
-glade_xml_handle_widget_prop(GladeXML *self, GtkWidget *widget,
+glade_xml_handle_object_prop(GladeXML *self, GObject *object,
const gchar *prop_name, const gchar *value_name)
{
GtkWidget *value_widget;
@@ -718,14 +712,13 @@
value_widget = g_hash_table_lookup(self->priv->name_hash, value_name);
if (value_widget) {
- g_object_set(G_OBJECT(widget), prop_name, value_widget, NULL);
+ g_object_set(G_OBJECT(object), prop_name, value_widget, NULL);
} else {
GladeDeferredProperty *dprop = g_new(GladeDeferredProperty, 1);
- g_print("adding.. %s\n", prop_name);
dprop->target_name = value_name;
dprop->type = DEFERRED_PROP;
- dprop->d.prop.object = G_OBJECT(widget);
+ dprop->d.prop.object = G_OBJECT(object);
dprop->d.prop.prop_name = prop_name;
self->priv->deferred_props = g_list_prepend(self->priv->deferred_props,
@@ -756,7 +749,7 @@
/* this is a private function */
static void
-glade_xml_add_signals(GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info)
+glade_xml_add_signals(GladeXML *xml, GObject *object, GladeObjectInfo *info)
{
gint i;
@@ -765,7 +758,7 @@
GladeSignalData *data = g_new0(GladeSignalData, 1);
GList *list;
- data->signal_object = G_OBJECT(w);
+ data->signal_object = G_OBJECT(object);
data->signal_name = sig->name;
data->connect_object = sig->object;
data->signal_after = sig->after;
@@ -778,7 +771,7 @@
/* this is a private function */
static void
-glade_xml_add_atk_actions(GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info)
+glade_xml_add_atk_actions(GladeXML *xml, GtkWidget *w, GladeObjectInfo *info)
{
gint i, n_actions;
AtkObject *accessible;
@@ -819,7 +812,7 @@
/* this is a private function */
static void
-glade_xml_add_atk_relations(GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info)
+glade_xml_add_atk_relations(GladeXML *xml, GtkWidget *w, GladeObjectInfo *info)
{
gint i;
AtkObject *accessible;
@@ -833,14 +826,14 @@
for (i = 0; i < info->n_relations; i++) {
GladeAtkRelationInfo *rinfo = &info->relations[i];
- GtkWidget *target_widget = glade_xml_get_widget (xml, rinfo->target);
+ GObject *target_widget = glade_xml_get_object (xml, rinfo->target);
AtkRelationType relation_type;
relation_type = atk_relation_type_for_name (rinfo->type);
if (target_widget) {
AtkObject *target_accessible;
- target_accessible = gtk_widget_get_accessible (target_widget);
+ target_accessible = gtk_widget_get_accessible (GTK_WIDGET (target_widget));
atk_relation_set_add_relation_by_type (relations, relation_type,
target_accessible);
@@ -860,7 +853,7 @@
}
static void
-glade_xml_add_accels(GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info)
+glade_xml_add_accels(GladeXML *xml, GtkWidget *w, GladeObjectInfo *info)
{
gint i;
for (i = 0; i < info->n_accels; i++) {
@@ -877,7 +870,7 @@
}
static void
-glade_xml_add_accessibility_info(GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info)
+glade_xml_add_accessibility_info(GladeXML *xml, GtkWidget *w, GladeObjectInfo *info)
{
gint i;
AtkObject *accessible = gtk_widget_get_accessible (w);
@@ -987,14 +980,14 @@
* This prototype is for a function that creates custom widgets.
* Returns: the GtkWidget.
*/
-static GtkWidget *
+static GObject *
default_custom_handler(GladeXML *xml, gchar *func_name, gchar *name,
gchar *string1, gchar *string2, gint int1, gint int2,
gpointer user_data)
{
- typedef GtkWidget *(* create_func)(gchar *name,
- gchar *string1, gchar *string2,
- gint int1, gint int2);
+ typedef GObject *(* create_func)(gchar *name,
+ gchar *string1, gchar *string2,
+ gint int1, gint int2);
GModule *allsymbols;
create_func func;
@@ -1009,7 +1002,7 @@
return NULL;
}
-static GladeXMLCustomWidgetHandler custom_handler = default_custom_handler;
+static GladeXMLCustomObjectHandler custom_handler = default_custom_handler;
static gpointer custom_user_data = NULL;
/**
@@ -1023,14 +1016,14 @@
* functions can be called to create custom widgets.
*/
void
-glade_set_custom_handler(GladeXMLCustomWidgetHandler handler,
+glade_set_custom_handler(GladeXMLCustomObjectHandler handler,
gpointer user_data)
{
custom_handler = handler;
custom_user_data = user_data;
}
-static GtkWidget *
+static GObject *
glade_create_custom(GladeXML *xml, gchar *func_name, gchar *name,
gchar *string1, gchar *string2, gint int1, gint int2)
{
@@ -1038,10 +1031,10 @@
int1, int2, custom_user_data);
}
-static GtkWidget *
-custom_new(GladeXML *xml, GladeWidgetInfo *info)
+static GObject *
+custom_new(GladeXML *xml, GladeObjectInfo *info)
{
- GtkWidget *wid = NULL;
+ GObject *obj = NULL;
gchar *func_name = NULL, *string1 = NULL, *string2 = NULL;
gint int1 = 0, int2 = 0;
int i;
@@ -1061,12 +1054,12 @@
else if (!strcmp(name, "int2"))
int2 = strtol(value, NULL, 0);
}
- wid = glade_create_custom(xml, func_name, info->name, string1,
+ obj = glade_create_custom(xml, func_name, info->name, string1,
string2, int1, int2);
/* fallback to prevent segfault */
- if (wid == NULL)
- wid = gtk_label_new("[custom widget creation failed]");
- return wid;
+ if (obj == NULL)
+ obj = G_OBJECT (gtk_label_new("[custom widget creation failed]"));
+ return obj;
}
/**
@@ -1200,8 +1193,8 @@
const char *root)
{
gint i;
- GladeWidgetInfo *wid;
- GtkWidget *w;
+ GladeObjectInfo *obj;
+ GObject *o;
/* make sure required modules are loaded */
for (i = 0; i < iface->n_requires; i++) {
@@ -1209,13 +1202,13 @@
}
if (root) {
- wid = g_hash_table_lookup(iface->names, root);
- g_return_if_fail(wid != NULL);
- w = glade_xml_build_widget(self, wid);
+ obj = g_hash_table_lookup(iface->names, root);
+ g_return_if_fail(obj != NULL);
+ o = glade_xml_build_object(self, obj);
} else {
/* build all toplevel nodes */
for (i = 0; i < iface->n_toplevels; i++) {
- w = glade_xml_build_widget(self, iface->toplevels[i]);
+ o = glade_xml_build_object(self, iface->toplevels[i]);
}
}
}
@@ -1223,7 +1216,7 @@
/* below are functions from glade-build.h */
/**
- * glade_register_widget:
+ * glade_register_object:
* @type: the GType of the widget.
* @new_func: the function used to construct instances of the widget.
* @build_children: function used to construct children (or NULL).
@@ -1231,27 +1224,26 @@
*
* This function is used to register new construction functions for a
* widget type. The child building routine would call
- * glade_xml_build_widget() on each child node to create the child
+ * glade_xml_build_object() on each child node to create the child
* before packing it.
*
* This function is mainly useful for addon widget modules for libglade
* (it would get called from the glade_init_module() function).
*/
void
-glade_register_widget(GType type,
- GladeNewFunc new_func,
+glade_register_object(GType type,
GladeBuildChildrenFunc build_children,
GladeFindInternalChildFunc find_internal_child)
{
- GladeWidgetBuildData *data;
+ GladeObjectBuildData *data;
gpointer old_data;
- g_return_if_fail(g_type_is_a(type, GTK_TYPE_WIDGET));
+ g_return_if_fail(g_type_is_a(type, G_TYPE_OBJECT));
if (glade_build_data_id == 0)
glade_build_data_id = g_quark_from_static_string(glade_build_data_key);
- data = g_new(GladeWidgetBuildData, 1);
+ data = g_new(GladeObjectBuildData, 1);
data->build_children = build_children;
data->find_internal_child = find_internal_child;
@@ -1263,18 +1255,18 @@
}
/* helper function for getting the build data for a type */
-static const GladeWidgetBuildData *
+static const GladeObjectBuildData *
get_build_data(GType type)
{
- static const GladeWidgetBuildData widget_build_data = {
+ static const GladeObjectBuildData widget_build_data = {
NULL,
NULL
};
- static const GladeWidgetBuildData container_build_data = {
+ static const GladeObjectBuildData container_build_data = {
glade_standard_build_children,
NULL
};
- const GladeWidgetBuildData *build_data;
+ const GladeObjectBuildData *build_data;
if (glade_build_data_id == 0)
glade_build_data_id = g_quark_from_static_string(glade_build_data_key);
@@ -1577,10 +1569,10 @@
}
/**
- * glade_standard_build_widget
+ * glade_standard_build_object
* @xml: the GladeXML object.
* @widget_type: the GType of the widget.
- * @info: the GladeWidgetInfo structure.
+ * @info: the GladeObjectInfo structure.
*
* This is the standard widget building function. It processes all
* the widget properties using the standard object properties
@@ -1589,15 +1581,15 @@
*
* Returns: the constructed widget.
*/
-GtkWidget *
-glade_standard_build_widget(GladeXML *xml, GType widget_type,
- GladeWidgetInfo *info)
+GObject *
+glade_standard_build_object(GladeXML *xml, GType widget_type,
+ GladeObjectInfo *info)
{
static GArray *props_array = NULL;
static GArray *custom_props_array = NULL;
GObjectClass *oclass;
CustomPropInfo *custom_props;
- GtkWidget *widget;
+ GObject *object;
GList *deferred_props = NULL, *tmp;
guint i;
@@ -1642,27 +1634,21 @@
continue;
}
- if (pspec->flags & G_PARAM_CONSTRUCT_ONLY ||
- pspec->flags & G_PARAM_CONSTRUCT) {
+ g_print("Handling property: %s\n", info->properties[i].name);
if (glade_xml_set_value_from_string(xml, pspec,
- info->properties[i].value,
- ¶m.value)) {
- g_print("setting property %s\n", info->properties[i].name);
- param.name = info->properties[i].name;
- g_array_append_val(props_array, param);
- }
- } else {
- g_print("deferring property %s\n", info->properties[i].name);
-
- //if (g_type_is_a(GTK_TYPE_WIDGET, G_PARAM_SPEC_VALUE_TYPE(pspec)) ||
- // g_type_is_a(G_PARAM_SPEC_VALUE_TYPE(pspec), GTK_TYPE_WIDGET)) {
+ info->properties[i].value,
+ ¶m.value)) {
+ param.name = info->properties[i].name;
+ g_array_append_val(props_array, param);
+ } else if (g_type_is_a(GTK_TYPE_WIDGET, G_PARAM_SPEC_VALUE_TYPE(pspec)) ||
+ g_type_is_a(G_PARAM_SPEC_VALUE_TYPE(pspec), GTK_TYPE_WIDGET)) {
/* if the pspec could hold a widget, then try to handle it
* later */
deferred_props = g_list_prepend(deferred_props,
&info->properties[i]);
}
}
- widget = g_object_newv(widget_type, props_array->len,
+ object = g_object_newv(widget_type, props_array->len,
(GParameter *)props_array->data);
/* clean up props_array */
@@ -1677,16 +1663,15 @@
data = &g_array_index(custom_props_array, CustomPropData, i);
if (data->apply_prop)
- (* data->apply_prop) (xml, widget, data->prop->name,
+ (* data->apply_prop) (xml, object, data->prop->name,
data->prop->value);
}
/* handle deferred properties */
- g_print("%d deferred properties\n", g_list_length(deferred_props));
for (tmp = deferred_props; tmp; tmp = tmp->next) {
GladeProperty *prop = tmp->data;
- glade_xml_handle_widget_prop(xml, widget, prop->name, prop->value);
+ glade_xml_handle_object_prop(xml, object, prop->name, prop->value);
}
g_list_free(deferred_props);
@@ -1694,7 +1679,7 @@
g_array_set_size(custom_props_array, 0);
g_type_class_unref(oclass);
- return widget;
+ return object;
}
/**
@@ -1732,7 +1717,7 @@
* glade_standard_build_children
* @self: the GladeXML object.
* @parent: the container widget.
- * @info: the GladeWidgetInfo structure.
+ * @info: the GladeObjectInfo structure.
*
* This is the standard child building function. It simply calls
* gtk_container_add on each child to add them to the parent, and
@@ -1744,15 +1729,16 @@
* properties interfaces.
*/
void
-glade_standard_build_children(GladeXML *self, GtkWidget *parent,
- GladeWidgetInfo *info)
+glade_standard_build_children(GladeXML *self,
+ GObject *parent,
+ GladeObjectInfo *info)
{
gint i, j;
g_object_ref(G_OBJECT(parent));
for (i = 0; i < info->n_children; i++) {
- GladeWidgetInfo *childinfo = info->children[i].child;
- GtkWidget *child;
+ GladeObjectInfo *childinfo = info->children[i].child;
+ GObject *child;
/* handle any internal children */
if (info->children[i].internal_child) {
@@ -1760,20 +1746,22 @@
continue;
}
- child = glade_xml_build_widget(self, childinfo);
+ child = glade_xml_build_object(self, childinfo);
g_object_ref(G_OBJECT(child));
- gtk_widget_freeze_child_notify(child);
+ if (GTK_IS_WIDGET (parent) && GTK_IS_WIDGET (child)) {
+ gtk_widget_freeze_child_notify(GTK_WIDGET (child));
+ gtk_container_add(GTK_CONTAINER(parent), GTK_WIDGET(child));
- gtk_container_add(GTK_CONTAINER(parent), child);
-
- for (j = 0; j < info->children[i].n_properties; j++)
- glade_xml_set_packing_property (
- self, parent, child,
- info->children[i].properties[j].name,
- info->children[i].properties[j].value);
+ for (j = 0; j < info->children[i].n_properties; j++)
+ glade_xml_set_packing_property(self,
+ GTK_WIDGET(parent),
+ GTK_WIDGET(child),
+ info->children[i].properties[j].name,
+ info->children[i].properties[j].value);
- gtk_widget_thaw_child_notify(child);
+ gtk_widget_thaw_child_notify(GTK_WIDGET(child));
+ }
g_object_unref(G_OBJECT(child));
}
g_object_unref(G_OBJECT(parent));
@@ -1783,12 +1771,12 @@
* GladeNewFunc
* @xml: The GladeXML object.
* @widget_type: the GType code of the widget.
- * @info: the GladeWidgetInfo structure for this widget.
+ * @info: the GladeObjectInfo structure for this widget.
*
* This function signature should be used by functions that build particular
* widget types. The function should create the new widget and set any non
* standard widget parameters (ie. don't set visibility, size, etc), as
- * this is handled by glade_xml_build_widget, which calls these functions.
+ * this is handled by glade_xml_build_object, which calls these functions.
*
* Returns: the new widget.
*/
@@ -1796,11 +1784,11 @@
* GladeBuildChildrenFunc
* @xml: the GladeXML object.
* @parent: the parent.
- * @info: the GladeWidgetInfo structure for the parent.
+ * @info: the GladeObjectInfo structure for the parent.
*
* This function signature should be used by functions that are responsible
* for adding children to a container widget. To create each child widget,
- * glade_xml_build_widget should be called.
+ * glade_xml_build_object should be called.
*/
/**
* GladeFindInternalChildFunc
@@ -1824,9 +1812,9 @@
* Returns: the named internal child.
*/
/**
- * glade_xml_build_widget:
+ * glade_xml_build_object:
* @self: the GladeXML object.
- * @info: the GladeWidgetInfo structure for the widget.
+ * @info: the GladeObjectInfo structure for the widget.
*
* This function is not intended for people who just use libglade. Instead
* it is for people extending it (it is designed to be called in the child
@@ -1842,16 +1830,16 @@
*
* Returns: the newly created widget.
*/
-GtkWidget *
-glade_xml_build_widget(GladeXML *self, GladeWidgetInfo *info)
+GObject *
+glade_xml_build_object(GladeXML *self, GladeObjectInfo *info)
{
GType type = G_TYPE_INVALID;
- GtkWidget *ret;
+ GObject *ret;
g_message("Widget class: %s\tname: %s", info->classname, info->name);
if (!strcmp(info->classname, "Custom")) {
- ret = custom_new (self, info);
+ ret = custom_new(self, info);
} else {
/* Call GladeXml's lookup_type() virtual function to get the gtype: */
type = (* GLADE_XML_GET_CLASS(self)->lookup_type)(self, info->classname);
@@ -1860,17 +1848,15 @@
char buf[50];
g_warning("unknown widget class '%s'", info->classname);
g_snprintf(buf, 49, "[a %s]", info->classname);
- ret = gtk_label_new(buf);
+ ret = G_OBJECT (gtk_label_new(buf));
} else {
- g_print("glade_standard_build_widget(..., %s, ...)\n", g_type_name(type));
- ret = glade_standard_build_widget(self, type, info);
+ ret = glade_standard_build_object(self, type, info);
}
}
if (GTK_IS_WINDOW (ret))
glade_xml_set_toplevel(self, GTK_WINDOW (ret));
- g_print("set_common_parms...(%s->%s)\n", g_type_name(G_OBJECT_TYPE(ret)), gtk_widget_get_name(ret));
glade_xml_set_common_params(self, ret, info);
if (GTK_IS_WINDOW (ret))
@@ -1892,26 +1878,29 @@
* next child.
*/
void
-glade_xml_handle_internal_child(GladeXML *self, GtkWidget *parent,
+glade_xml_handle_internal_child(GladeXML *self,
+ GObject *parent,
GladeChildInfo *child_info)
{
- const GladeWidgetBuildData *parent_build_data = NULL;
- GtkWidget *child;
- GladeWidgetInfo *info;
+ const GladeObjectBuildData *parent_build_data = NULL;
+ GObject *child;
+ GladeObjectInfo *info;
GObjectClass *oclass;
CustomPropInfo *custom_props;
guint i;
/* walk up the widget heirachy until we find a parent with a
* find_internal_child handler */
- while (parent_build_data == NULL && parent != NULL) {
- parent_build_data = get_build_data(G_OBJECT_TYPE(parent));
+ if (GTK_IS_WIDGET (parent)) {
+ while (parent_build_data == NULL && parent != NULL) {
+ parent_build_data = get_build_data(G_OBJECT_TYPE(parent));
- if (parent_build_data->find_internal_child != NULL)
- break;
+ if (parent_build_data->find_internal_child != NULL)
+ break;
- parent_build_data = NULL; /* set to NULL if no find_internal_child */
- parent = parent->parent;
+ parent_build_data = NULL; /* set to NULL if no find_internal_child */
+ parent = G_OBJECT(GTK_WIDGET(parent)->parent);
+ }
}
if (!parent_build_data || !parent_build_data->find_internal_child) {
@@ -1968,7 +1957,7 @@
* problem. */
if (g_type_is_a(GTK_TYPE_WIDGET, G_PARAM_SPEC_VALUE_TYPE(pspec)) ||
g_type_is_a(G_PARAM_SPEC_VALUE_TYPE(pspec), GTK_TYPE_WIDGET)) {
- glade_xml_handle_widget_prop(self, child,
+ glade_xml_handle_object_prop(self, child,
pspec->name,
info->properties[i].value);
continue;
@@ -1987,7 +1976,7 @@
static void
-glade_xml_widget_destroy(GtkObject *object, GladeXML *xml)
+glade_xml_object_destroy(GtkObject *object, GladeXML *xml)
{
gchar *name;
@@ -1996,7 +1985,8 @@
name = g_object_get_qdata(G_OBJECT(object), glade_xml_name_id);
- if (!name) return;
+ if (!name)
+ return;
g_hash_table_remove(xml->priv->name_hash, name);
g_object_set_qdata(G_OBJECT(object), glade_xml_tree_id, NULL);
g_object_set_qdata(G_OBJECT(object), glade_xml_name_id, NULL);
@@ -2006,50 +1996,48 @@
* glade_xml_set_common_params
* @self: the GladeXML widget.
* @widget: the widget to set parameters on.
- * @info: the GladeWidgetInfo structure for the widget.
+ * @info: the GladeObjectInfo structure for the widget.
*
* This function sets the common parameters on a widget, and is responsible
* for inserting it into the GladeXML object's internal structures. It will
* also add the children to this widget. Usually this function is only called
- * by glade_xml_build_widget, but is exposed for difficult cases, such as
+ * by glade_xml_build_object, but is exposed for difficult cases, such as
* setting up toolbar buttons and the like.
*/
void
-glade_xml_set_common_params(GladeXML *self, GtkWidget *widget,
- GladeWidgetInfo *info)
+glade_xml_set_common_params(GladeXML *self, GObject *object,
+ GladeObjectInfo *info)
{
GList *tmp;
- const GladeWidgetBuildData *data;
+ const GladeObjectBuildData *data;
static GQuark visible_id = 0;
/* get the build data */
- data = get_build_data(G_OBJECT_TYPE(widget));
- glade_xml_add_signals(self, widget, info);
- glade_xml_add_accels(self, widget, info);
+ data = get_build_data(G_OBJECT_TYPE(object));
+ glade_xml_add_signals(self, object, info);
+ if (GTK_IS_WIDGET (object)) {
+ gtk_widget_set_name(GTK_WIDGET(object), info->name);
+ glade_xml_add_accels(self, GTK_WIDGET(object), info);
+ glade_xml_add_accessibility_info(self, GTK_WIDGET(object), info);
+ }
- gtk_widget_set_name(widget, info->name);
- glade_xml_add_accessibility_info(self, widget, info);
+ /* store this information as data of the object. */
+ g_object_set_qdata(object, glade_xml_tree_id, self);
+ g_object_set_qdata(object, glade_xml_name_id, info->name);
+ /* store objects in hash table, for easy lookup */
+ g_hash_table_insert(self->priv->name_hash, info->name, object);
- /* store this information as data of the widget. */
- g_object_set_qdata(G_OBJECT(widget), glade_xml_tree_id, self);
- g_object_set_qdata(G_OBJECT(widget), glade_xml_name_id, info->name);
- /* store widgets in hash table, for easy lookup */
- g_hash_table_insert(self->priv->name_hash, info->name, widget);
-
- /* set up function to remove widget from GladeXML object's
+ /* set up function to remove object from GladeXML object's
* name_hash on destruction. Use connect_object so the handler is
* automatically removed on finalization of the GladeXML
* object. */
- g_signal_connect_object(G_OBJECT(widget), "destroy",
- G_CALLBACK(glade_xml_widget_destroy),
- G_OBJECT(self), 0);
+ if (GTK_IS_OBJECT (object))
+ g_signal_connect_object(object, "destroy",
+ G_CALLBACK(glade_xml_object_destroy),
+ G_OBJECT(self), 0);
- /* handle any deferred properties using this widget */
+ /* handle any deferred properties using this object */
tmp = self->priv->deferred_props;
- g_print("%s %s has %d deferred properties\n",
- g_type_name(G_OBJECT_TYPE(widget)),
- gtk_widget_get_name(widget),
- g_list_length(self->priv->deferred_props));
while (tmp) {
GladeDeferredProperty *dprop = tmp->data;
@@ -2060,14 +2048,13 @@
switch (dprop->type) {
case DEFERRED_PROP:
- g_print("defered property %s.%s", dprop->target_name, dprop->d.prop.prop_name);
g_object_set(G_OBJECT(dprop->d.prop.object),
- dprop->d.prop.prop_name, G_OBJECT(widget),
+ dprop->d.prop.prop_name, G_OBJECT(object),
NULL);
break;
case DEFERRED_REL:
{
- AtkObject *target = gtk_widget_get_accessible(widget);
+ AtkObject *target = gtk_widget_get_accessible(GTK_WIDGET(object));
atk_relation_set_add_relation_by_type
(dprop->d.rel.relation_set,
@@ -2085,18 +2072,14 @@
}
if (data && data->build_children && info->children) {
- if (GTK_IS_CONTAINER (widget))
- data->build_children(self, widget, info);
- else
- g_warning ("widget %s (%s) has children, but is not a GtkContainer.",
- info->name, g_type_name (G_TYPE_FROM_INSTANCE (widget)));
+ data->build_children(self, object, info);
}
if (visible_id == 0)
visible_id = g_quark_from_static_string("Libglade::visible");
- if (g_object_get_qdata(G_OBJECT(widget), visible_id))
- gtk_widget_show(widget);
+ if (g_object_get_qdata(object, visible_id))
+ gtk_widget_show(GTK_WIDGET(object));
}
/**
Modified: libglade/glade-xml.h
===================================================================
--- libglade/glade-xml.h 2005-03-30 14:01:15 UTC (rev 238)
+++ libglade/glade-xml.h 2005-03-30 19:07:43 UTC (rev 239)
@@ -102,30 +102,29 @@
gpointer user_data);
-GtkWidget *glade_xml_get_widget (GladeXML *self,
+GObject *glade_xml_get_object (GladeXML *self,
const char *name);
-GList *glade_xml_get_widget_prefix (GladeXML *self,
- const char *name);
+GList *glade_xml_get_objects (GladeXML *self);
gchar *glade_xml_relative_file (GladeXML *self,
const gchar *filename);
/* don't free the results of these two ... */
-const char *glade_get_widget_name (GtkWidget *widget);
-GladeXML *glade_get_widget_tree (GtkWidget *widget);
+const char *glade_get_object_name (GObject *object);
+GladeXML *glade_get_object_tree (GObject *object);
/* interface for changing the custom widget handling */
-typedef GtkWidget *(* GladeXMLCustomWidgetHandler) (GladeXML *xml,
- gchar *func_name,
- gchar *name,
- gchar *string1,
- gchar *string2,
- gint int1,
- gint int2,
- gpointer user_data);
+typedef GObject *(* GladeXMLCustomObjectHandler) (GladeXML *xml,
+ gchar *func_name,
+ gchar *name,
+ gchar *string1,
+ gchar *string2,
+ gint int1,
+ gint int2,
+ gpointer user_data);
-void glade_set_custom_handler(GladeXMLCustomWidgetHandler handler,
+void glade_set_custom_handler(GladeXMLCustomObjectHandler handler,
gpointer user_data);
typedef struct _GladeSignalData GladeSignalData;
Modified: libglade/test.c
===================================================================
--- libglade/test.c 2005-03-30 14:01:15 UTC (rev 238)
+++ libglade/test.c 2005-03-30 19:07:43 UTC (rev 239)
@@ -59,9 +59,9 @@
const char *filename = NULL;
const char *rootnode = NULL;
gboolean no_connect = FALSE;
-
int i;
GladeXML *xml;
+ GList *l;
/* initialise libraries */
gtk_init(&argc, &argv);
@@ -95,7 +95,7 @@
* construct widgets below that point. This shows how you might
* want to integrate the constructed interface in your program. */
if (rootnode) {
- GtkWidget *wid = glade_xml_get_widget(xml, rootnode);
+ GObject *wid = glade_xml_get_object(xml, rootnode);
if (!GTK_IS_WINDOW(wid)) {
GtkWidget *win, *frame;
@@ -107,11 +107,20 @@
gtk_container_set_border_width(GTK_CONTAINER(frame), 5);
gtk_container_add(GTK_CONTAINER(win), frame);
gtk_widget_show(frame);
- gtk_container_add(GTK_CONTAINER(frame), wid);
+ gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(wid));
gtk_widget_show(win);
}
}
+ /* make sure delete-event quits the program, connect it on all toplevels */
+ for (l = glade_xml_get_objects(xml); l;
+ l = l->next) {
+ GtkWidget *widget = l->data;
+ if (GTK_IS_WINDOW(widget))
+ g_signal_connect(widget, "delete-event",
+ G_CALLBACK(gtk_main_quit), NULL);
+ }
+
/* look up handler names in the symbol table and automatically
* connect the signals. This requires that your program export
* dynamic symbols. If you link using libtool, passing the
More information about the POS-commit
mailing list