SoloCodigo

Programación Web y Scripting => Perl => Mensaje iniciado por: Eddycito en Viernes 27 de Abril de 2007, 00:30

Título: Ayuda Con Perl Gnome_canvas
Publicado por: Eddycito en Viernes 27 de Abril de 2007, 00:30
Hola Amigos necesito Ayuda.

Estoy programando en GnomeCanvas para perl, estoy poniendo unas imagenes dentro del canvas con Gnome2::Canvas::Pixbuf y todas las imagenes quiero enlazarlas con lineas, y que las linesas se redimensionen cada vez que muevo una imagen con el mouse, puedo crear las lineas pero no se como hacer que sean uno solo con las imagenes. porfa como puedo haceer esto. unsure.gif

atte eddy.
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Viernes 27 de Abril de 2007, 00:42
Cita de: "Eddycito"
...puedo crear las lineas pero no se como hacer que sean uno solo con las imagenes. porfa como puedo haceer esto.

Esta parte no la entendi, aun asi sugiero que veas los demos (http://search.cpan.org/src/TSCH/Gnome2-Canvas-1.002/canvas_demo/) o la documentacion. (http://gtk2-perl.sourceforge.net/doc/pod/)
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Viernes 27 de Abril de 2007, 00:51
Releyendo de nievo tus post...

Te pido un poco de codigo (lo que llevas) ademas hay una forma de hacerlo en Gtk2 sin usar Gnome2:

Usas formato xpm para cada imagen, incluyendo las lineas (de 1x1 pixel puede ser).

La idea es muy simple, trata de ir creando la imagen e ir haciendo el display segun sea requerido, solo tienes que ver el formato de la imagen para comprender.

Si los links que te puse no te dan una idea y tampoco lo que te he dicho puedes ver librerias mas centradas en el tema de videojuegos como SDL...
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: Eddycito en Viernes 27 de Abril de 2007, 06:19
Gracias -Su- por responderme y perdon por repetir el tema. :hola:

Bueno aqui te envio el codigo en el archivo adjunto que subi.

Aqui puedes ver lo que te digo tambien temuestro dos capturas de pantalla del programa corriendo.

Se puede añadir items y estos items quiero unirlos con lineas y que las lineas se redimensionen su tamaño al mover los items.
Y otro problema que tengo, es que el ToogleButton no se puede desactivar haz correr el programa y veras.
gracias y espero tu respuesta.
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Viernes 27 de Abril de 2007, 22:45
Ahora lo veo y te saco algo  ;)
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Viernes 27 de Abril de 2007, 23:14
Te podria dar el codigo completo, pero no lo hare para que puedas aprender (metodo raro pero funciona  :devil: )

Primero que todo, en la primera linea ("#/usr/bin/perl -w") sobra el -w y seria mejor si pones #!/usr/bin/env perl

Segundo: haces muchos subs inecesarios, _init(), crear_ventana, crear_botones y crear frame sobran.

Tercero: cada vez que creas una variable y usas strict (el pragma) o tus codigos son grandes debes de usar el declarador lexico "my" (http://perldoc.perl.org/functions/my.html)

Cuato: "Dibujar" deberia ser un boto comun y corriente.

Cada item debe de tener un signal_connect miralos en la pagina que te puse.

Usa el pragma strict que te ayudara mucho y el resto, depronto te subo un codigo
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: Eddycito en Sábado 28 de Abril de 2007, 05:02
:)  Gracias -su- por tus consejos estoy viendo el enlace que me dejaste...
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Sábado 28 de Abril de 2007, 17:00
Bueno, este es el codigo medio arreglado solo falta arreglar lo de dibujo:

El desactivar el boton de dibujo, el sigue dibujando y no se porque (es que no uso cosas de Gnome :alien: ) pero a nivel general el codigo ya es trabajable  :)
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: Eddycito en Lunes 30 de Abril de 2007, 18:53
Gracias -su- por tu ayuda
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: Eddycito en Lunes 30 de Abril de 2007, 21:30
Hola -su- pudiste probar unir las imagenes con las lineas? :hola:
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Lunes 30 de Abril de 2007, 21:56
Cita de: "Eddycito"
Hola -su- pudiste probar unir las imagenes con las lineas? :hola:
Usando canvas si, el problema es dejar de diburjlo y borrar lo dibujado.

Lo de las imagenes (dibujar cada una) es mas complicado y menos recomendable.

Ahora bien recuerdo que hay un proyecto llamado Gournal (http://www.adebenham.com/gournal/) donde podes ver como se usa las funciones de dibujado y hacerlo todo (100%) en Gtk2-perl.

Nunca lo he hecho ni lo he intentado (lo anterior) pero otra forma de hacerlo es usando Gtk2::Gdk y me surge la idea por este ejemplo (http://search.cpan.org/src/TSCH/Gtk2-1.144/gtk-demo/pixbufs.pl) pero la verdad es que soy mas amigo de la terminal a la hora de programar.
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: Eddycito en Martes 1 de Mayo de 2007, 05:21
Hola -su- Sabes donde puedo encontrar codigo de programas hechos en gnome donde utilizan canvas? :hola:
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Martes 1 de Mayo de 2007, 21:32
Nop, el unico link que usa Gnome2::Canvas es el que te puse de CPAN (los demos) y no hay mas.
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: Eddycito en Miércoles 9 de Mayo de 2007, 23:33
Hola -su- Sabes algo de Gnome2::Canvas::Pathdef, donde hay ejemplos? :rolleyes:
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Miércoles 9 de Mayo de 2007, 23:47
Nuevamente, con Perl no se suele usar Gnome2... todoas las aplicaciones (usualmente rapidas) se suele hacer con Gtk2, Gnome2 es relativamente nuevo y sus funciones poco usadas.
Es mas si vez su documentacion (Canvas) es muy resumida y para un uso optimo se necesitara a un guru para leer el .XS y los .PM

Recuerda: hay mas de una manera de hacer las cosas, con Gtk2 es muy facible hacerlo... mira los ejemplos.

Si quieres hacer algo mas complejo que unir esas imagenes con lineas podes usar, dependiendo del caso, SDL.
Título: Re: Ayuda Con Perl Gnome_canvas
Publicado por: su - en Jueves 10 de Mayo de 2007, 00:13
EN este momento lo he arrglado  :P  

Código: Text
  1. sub event_mouse {
  2.   my ($can,$event) = @_;
  3.   if ($event->type eq 'button-press') {
  4.     if ($event->button == 1 and $drag == 1) {
  5.       if($band == 0) {
  6.         $lx1 = $event->x;
  7.         $ly1 = $event->y;
  8.         $band = 1;
  9.       }
  10.       else{
  11.   $lx2 = $event->x;
  12.   $ly2 = $event->y;
  13.   $band = 0;
  14.         my $item = Gnome2::Canvas::Item->new
  15.   (
  16.     $root, 'Gnome2::Canvas::Line',
  17.     points => [$lx1, $ly1, $lx2, $ly2],
  18.     fill_color => 'red',
  19.     first_arrowhead => TRUE,
  20.     last_arrowhead => TRUE
  21.   );
  22.   $drag = 0;
  23.       }
  24.     }
  25.   }
  26. }
  27.  

Asi debe ser esa funcion...

Teniendo en cuenta esto:

Citar
sub toogle_activation{
   my $doit = shift;
   if (defined $doit) {
  $drag = TRUE;
  $canvas->signal_connect(event => \&event_mouse);
   }
   else {
  $drag = FALSE;
   }
}