[POS-commit] r265 - libglade
Johan Dahlin
jdahlin at async.com.br
Thu Mar 31 17:28:45 BRT 2005
Author: jdahlin
Date: 2005-03-31 17:28:45 -0300 (Thu, 31 Mar 2005)
New Revision: 265
Modified:
libglade/glade-gtk.c
Log:
Add support for layout properties and put back GtkUIManager parsing of files here. Make a copy of the private data from GladeXML, need to find a better way to handle that.
Modified: libglade/glade-gtk.c
===================================================================
--- libglade/glade-gtk.c 2005-03-31 20:27:56 UTC (rev 264)
+++ libglade/glade-gtk.c 2005-03-31 20:28:45 UTC (rev 265)
@@ -35,6 +35,24 @@
#define BOOL(s) (g_ascii_tolower (*(s)) == 't' || g_ascii_tolower (*(s)) == 'y' || INT (s))
#define FLOAT(s) (g_strtod ((s), NULL))
+/* XXX: UUUUUGLY */
+struct _GladeXMLPrivate {
+ GladeInterface *tree;
+ GtkTooltips *tooltips;
+ GHashTable *name_hash;
+ GHashTable *ui_hash;
+ GHashTable *signals;
+ GtkWindow *toplevel;
+ GtkAccelGroup *accel_group;
+ GtkWidget *focus_widget;
+ GtkWidget *default_widget;
+ GList *deferred_props;
+};
+typedef struct {
+ gint merge_id;
+ GObject *ui_manager;
+} merge_data;
+
void _glade_init_gtk_widgets(void);
static void
@@ -423,6 +441,8 @@
GladeObjectInfo *info)
{
gint i;
+ gint merge_id;
+ gchar *filename;
g_object_ref(obj);
for (i = 0; i < info->n_children; i++) {
@@ -434,6 +454,37 @@
GTK_ACTION_GROUP (child), i);
}
+ for (i = 0; i < info->n_uis; i++) {
+ GladeUIInfo ui = info->uis[i];
+ merge_data *data;
+
+ if (ui.filename) {
+ GError *error = NULL;
+
+ filename = glade_xml_relative_file(self, ui.filename);
+
+ merge_id = gtk_ui_manager_add_ui_from_file(GTK_UI_MANAGER(obj),
+ filename,
+ &error);
+ g_free(filename);
+ if (error) {
+ g_warning("Error: %s", error->message);
+ g_error_free(error);
+ }
+
+ data = g_new0(merge_data, 1);
+ data->merge_id = merge_id;
+ data->ui_manager = obj;
+
+ g_hash_table_insert(self->priv->ui_hash,
+ ui.id,
+ data);
+ }
+ }
+
+ /* When we're done, tell the GtkUIManager to update */
+ gtk_ui_manager_ensure_update(GTK_UI_MANAGER(obj));
+
g_object_unref(obj);
}
@@ -786,7 +837,7 @@
static void
tree_view_column_build_children (GladeXML *xml, GObject *obj, GladeObjectInfo *info)
{
- int i;
+ int i, j;
if (info->n_children == 0)
return;
@@ -801,6 +852,20 @@
gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(obj),
GTK_CELL_RENDERER(child),
TRUE);
+
+
+ for (j = 0; j < childinfo->n_layout_props; j++)
+ {
+ int value;
+
+ value = atoi(childinfo->layout_props[j].value);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(obj),
+ GTK_CELL_RENDERER(child),
+ childinfo->layout_props[j].name,
+ value,
+ NULL);
+ }
+
}
g_object_unref(obj);
More information about the POS-commit
mailing list