[caracas-pm] Case statement en perl

hans holzem at cantv.net
Wed Apr 18 17:19:11 PDT 2007


Hola Ernesto,

como se dice: un dibujo dice mas que 1000 palabras.
Aqui hay el principio de lo que estoy haciendo.

Los switches (o desvios de tren) no estan en un grid sino
distribuido atravez de un canvas para representar mas o menos su
posicion en la maqueta.

Les mando un pequeno ejemplo.


Btw: quando se van a reunir otra vez los mongers?


Saludos

Hans



On Wed, 2007-04-18 at 15:54 -0400, Ernesto Hernández-Novich wrote:
> On Wed, 2007-04-18 at 06:41 -0400, hans wrote:
> > me explico:
> >  En un canvas tengo 25 icons  que representan 25 switches
> >  y $ x $y son los coordinados.
> > Al hacer click con el raton cambia el switch (on/off).
> > Al mismo momento dibujo otro icono en el lugar, para representar el
> > nuevo estado del switch.
> 
> Digamos que estás programando en Gtk. En lugar de usar iconos "sueltos"
> sobre el canvas, construye _25_ botones. Cada botón tendrá asociado un
> "callback" que será invocado cuando le hagas click; el callback es una
> rutina arbitraria que en principio puede modificar variables globales de
> estado, llamar métodos sobre objetos y en particular podría cambiar el
> texto/color/imagen del botón. Así, asumiendo que existe una ventana
> donde colocarás los botones ($window):
> 
> for my $n (1..25) {
>   my $b = Gtk2::Button->new('boton' . $n);
>   $b->signal_connect( clicked => \&button_click, $n );
>   $window->add($b);
> }
> 
> sub button_click {
>   my $number = shift;
>   # Hacer lo que quieras hacer con el botón
>   print "Oprimieron el boton $number!\n";
> }
> 
> Nota que el '$n' que se puso en el signal_connect será pasado como
> parámetro a la función button_click en el momento en que se invoque. Si
> necesitas pasar más cosas, entonces tienes que pasar una referencia a un
> arreglo/hash y manipularla dentro del callback. De paso, no tienes que
> preocuparte por las coordenadas pues de eso se encarga Gtk.
> 
> En particular es notablemente más elegante y eficiente generar clausuras
> y así no hay que pasar parámetros con cada invocación, pero no es
> obligatorio.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TrainControl.png
Type: image/png
Size: 6611 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/caracas-pm/attachments/20070418/c6040236/attachment-0001.png 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: weiche-diag-rechts-0a.ppm
Type: image/x-portable-pixmap
Size: 5893 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/caracas-pm/attachments/20070418/c6040236/attachment-0002.ppm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: weiche-diag-rechts-1a.ppm
Type: image/x-portable-pixmap
Size: 5893 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/caracas-pm/attachments/20070418/c6040236/attachment-0003.ppm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Train_ejemplo.pl
Type: application/x-perl
Size: 952 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/caracas-pm/attachments/20070418/c6040236/attachment-0001.bin 


More information about the caracas-pm mailing list