Hi Frederico, (Copied from my own post from Mar 23, 2006 12:31:00 pm)
Here are four additional possibilities: 1. Use global variables for your widgets. 2. Create a struct containing pointers to all your widgets and use the userdata field to pass this struct around in all callbacks. 3. Use the g_object_set_data() method to attach miscellaneous pointers to your widgets. I.e. in the widget construction do: GtkWidget *w_tree_view, *w_button; w_tree_view = gtk_tree_view_new(...); : w_button = gtk_button_new(); g_object_set_data(G_OBJECT(w_button), "tree_view", w_tree_view); g_signal_connect(G_OBJECT(w_button), "clicked", G_CALLBACK(cb_button_clicked), NULL); and in the callback cb_button_clicked() do: GtkWidget *w_tree_view = GTK_WIDGET(g_object_get_data(G_OBJECT(widget), "tree_view")); This method is similar to what glade is doing. 4. Create your own container widget, e.g. by gob2 or vala and put all your widgets in it. This is a fancy way of doing the struct callback I mentioned above. Hope this helps. Regards, Dov 2009/3/11 Tadej Borovšak <tadeb...@gmail.com> > 2009/3/11 frederico schardong <frede....@gmail.com>: > >>void my_callback_function (GtkButton *widget, gpointer user_ptr); > >> > >>... > >> > >>g_signal_connect( G_OBJECT( widget), "clicked", > >> G_CALLBACK( my_callback_function), user_ptr ); > >> > >> > >>void my_callback_function (GtkButton *widget, gpointer user_ptr) { > >> > >> ... > >>} > >> > >> > >>http://library.gnome.org/devel/gtk/unstable/GtkButton.html > > > > but how I can pass to my_callback_function the gtk_drawing_area? I > > know about the g_signal_connect.. but I not know how pass another > > widget, without the widget being passed the first parameter of > > function.. > > _______________________________________________ > > gtk-app-devel-list mailing list > > gtk-app-devel-list@gnome.org > > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > > > > Hello. > > Just pass your drawing area as a last parameter to g_signal_connect > function. > > Simple code would look like: > > ---------- CODE ----------- > int > main( int argc, char **argv ) > { > GtkWidget *button = gtk_button_new(); > GtkWidget *draw = gtk_drawing_area_new(); > > g_signal_connect( G_OBJECT( button ), "clicked", > G_CALLBACK( cb_clicked ), draw ); > > /* More code here */ > } > > > /* Callback function */ > static void > cb_clicked( GtkButton *button, > GtkWidget *draw ) > { > /* Code here to save your work */ > } > > ------- /CODE ---------- > > -- > Tadej Borovšak > tadeb...@gmail.com > tadej.borov...@gmail.com > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list