Thanks for your answer!

So, as my app is a Glade app, I can use that lookup_widget() function
you mentioned? Otherwise I would use your function :-)

Thanks again

On 10/23/05, Gus Koppel <[EMAIL PROTECTED]> wrote:
> César Leonardo Blum Silveira wrote:
>
> > I have a few doubts about the way I code my GTK applications. One of
> > them is: Is it ok to use many global variables for the widgets? For
> > example, in a glade app where callbacks are of the form
> >
> > void callback(GtkWidget *widget)
> >
> > I can only have access to the widget that received the signal, but
> > what if I want to make it change a property of another widget? Should
> > I use a global variable or should I try getting the toplevel widget
> > and then decending to the "neighbour" widget I want to make changes
> > on?
>
> Opinions about it certainly differ. Some people may prefer global
> variables for all important widgets for two reasons: 1. it's the very
> fastest way to get pointers to widgets, 2. it's okay for them to deal
> with large amounts of global vars (despite known problems that could
> result with them on larger scale applications).
>
> However, I think the majority of programmers prefers to avoid global
> variables whenever possible. Both for stylistic as well as for
> complexity reasons. Having to keep track of global variables for somee
> (or many) widgets is more difficult and error-prone than not needing to
> do so. With the exception of toplevel (or popup) windows I don't use any
> global vars to store pointers to widgets in them.
>
> Instead, during program execution I refer to widgets by name. The name
> property of widgets, if being used properly, is a wonderful and well
> readable way to refer to widgets. It's a glimpse of high-level (or
> scripting) language programming in C(++).  This way you don't need to
> juggle with numerous global variables and their (possibly frequent)
> proper initialization (and deinitialization) at all.
>
> It's certainly a bit slower than directly accessing a global variable of
> which the memory address is directly known at execution time and doesn't
> need to be determined. However, the speed impact should be neglegible
> unless you plan to search for far more than some 1000s different widgets
> per second (or signal handler). Performance limitations of GTK+
> applications are not caused by this sort of custom functions, anyway.
>
> Since this way of easy programming appears not to be supported
> officially by GTK+ I use my own simple function for this purpose:
> widget_find_by_name (), retrievable at
> http://www.spamkiller.bytechase.cx/democode/widget_find_by_name.c
>
> For instance, if you have a window named "W_Main" and a text field named
> "I_Value" in it then you can simply refer to the latter from within
> any callback by something like this:
>
> {
>     GtkWidget *i_value = WFBN ("I_Value");
>     gtk_widget_do_this (i_value, ...);
>     gtk_widget_do_that (i_value, ...);
> }
>
> For other windows you may (or may not) simply define similar macros like
> WFBN_WIN2 (...) for instance.
>
> BTW, the difference between my function and lookup_widget(), provided by
> Glade, is that my function is absolutely independent from Glade and
> doesn't need any further precautions like lookup_widget() does. It just
> suggests you to set the "name" property of widgets appropriately.
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>


--

César Leonardo Blum Silveira
Graduando em Ciência da Computação - Unisinos
Centro de Simulação de Humanos Virtuais
http://cesarbs.blogspot.com/
MSN: cesarbs490 _at_ msn _dot_ com
ICQ: 170861826
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to