In case it help you a little, instead of global variables I normally create
a structure with the main components of my application and pass a pointer to
that structure to those rutines that need it.

Regars

Jorge Monsalvo

-----Mensaje original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] En nombre de César Leonardo
Blum Silveira
Enviado el: Sunday, 23 October, 2005 12:32
Para: Gus Koppel; gtk-app-devel-list
Asunto: Re: Programming style


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


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.361 / Virus Database: 267.12.5/147 - Release Date: 24-Oct-05







___________________________________________________________
1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
http://correo.yahoo.com.ar

_______________________________________________
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