Il giorno Wed, 9 Jun 2010 14:54:07 +0200 Tadej Borovšak <tadeb...@gmail.com> ha scritto:
> Hello. > > > Thank you, I'm sorry for that I didn't explain the problem clearer. What I > > meant is that there is no similar function of > > 'glade_get_widget_tree(widget)'. At the context where should call > > gtk_builder_get_object(), there is no 'GtkBuilder* builder' available. In > > the previous code, we can call 'glade_get_widget_tree(widget)' to get the > > GladeXml object of the given 'widget'. However, I don't know how to do it in > > GtkBuilder? > > > > If I can get the GtkBuilder object from 'assistant', then I can call > > gtk_builder_get_object() to get the widget by its id. If I cannot get it, > > then how to get the widget by id from the top level widget? Thanks. > > I'm afraid that there is no equivalent for that in GtkBuilder (objects > that are constructed by builder don't carry any information about who > constructed them). You'll need to pass your builder object around > manually (g_object_set_data() would be one option, global variable > second, struct that is passed to all of the functions would be third, > ...). I'd like to suggest another alternative, that is programmatically traverse the widget tree. The following untested snippet just to give the idea: GtkWidget * gtk_widget_lookup(GtkWidget *top_level, const gchar *name) { GtkWidget *widget = NULL; if (strcmp(name, gtk_widget_get_name(top_level) == 0) { widget = top_level; } else if (GTK_IS_CONTAINER(top_level)) { GList *children = gtk_container_get_children(top_level); while (children) { if (widget == NULL) widget = lookup_widget(children->data, name); children = g_list_delete_link(children, children); } } return widget; } -- Nicola _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list