[Jde-dev] Ejemplo "hola mundo" de esquemas+GTK

JoseMaria jmplaza en gsyc.es
Mar Ene 27 19:53:50 CET 2009


Hola mozos,

acabo de crear el ticket 217 describi�ndolo: "desacoplar de la
inicializaci�n del esquema la inicializaci�n de su interfaz gr�fica".
Aqu� va una explicaci�n para entender el problema:

Varios esquemas (p.e opengldemo, image_viewer, wiimote_viewer...) tienen
soldada a fuego la inicializaci�n del interfaz gr�fico en la
inicializaci�n del esquema (startup). Esto es un problema porque as� los
esquemas no arrancan si no est�n cargados los servicios gr�ficos (el que
toque). 

Esto dificulta funcionar sin ninguna interfaz gr�fica, pero con toda la
funcionalidad de determinados esquemas. Por ejemplo cuando queremos
ejecutar una aplicaci�n de grabaci�n sensores en la placa picoITX, sin
pantalla alguna (lanzada remotamente), o cuando queremos ejecutar una
aplicaci�n de navegaci�n en el robot Pioneer, sin pantalla alguna.

Uno de los principios de dise�o de JDE es desacoplar por completo la
funcionalidad de los esquemas de su interfaz gr�fica, de modo que las
aplicaciones con esquemas puedan funcionar perfectamente sin GUI. De
hecho, el GUI se concibe b�sicamente como una herramienta de depuraci�n,
que se activa bajo demanda (guiresume) y se apaga (guisuspend) cuando no
se necesita. Por otro lado la funcionalidad del esquema tambi�n puede
detenerse (suspend) o reanudarse (resume). T�picamente las cosas de
visualizaci�n se inicializan en la primera ejecuci�n del guiresume. Y
las cosas de ejecuci�n se inicializan en el startup del esquema.

Ocurre que varios esquemas tienen una funcionalidad muy pegada a su
interfaz gr�fica. Por ejemplo mastergui, hsvtuner, image_viewer, etc.
Para esos casos no tiene mucho sentido tener activado el esquema y no su
GUI. Por compatibilidad con el caso general, mantengamos que la
inicializaci�n del GUI se ejecuta en la primera invocaci�n a guiresume.
Adicionalmente, en esos casos, podemos hacer que el resume del esquema
invoque a guiresume tambi�n, y que la detenci�n del esquema (suspend)
invoque a guisuspend tambi�n.

�nimo,

JoseMaria
PD: Queda nombrado el d�a de hoy como "d�a pico del mes" :-) Bien, bien,
se nota actividad...
On Tue, 2009-01-27 at 18:41 +0100, Roberto Calvo wrote:
> El mar, 27-01-2009 a las 18:31 +0100, Eduardo Perdices escribi�:
> > Ok, ah� va el parche, solo el cortar y pegar de una funci�n a otra,
> 
> Gracias, si te parece le voy a poner lo del initgui para que quede
> claro.
> 
> 
> >  de todas formas he mirado algunos schemas (opengldemo, image_viewer,
> > wiimote_viewer) y est� en todos con el init en el startup.
> 
> Si si, ya te digo que creo que es una herencia del copy&paste, pero que
> es necesario que lo cambiemos, porque sino los esquemas no arrancan si
> no esta cargado los servicios gr�ficos.
> 
> Me di cuenta al intentar arrancar ciertos esquemas en la picoITX sin
> interfaz gr�fica.
> 
> un saludo!
> 
> > 
> > Un saludo
> > 
> > El 27 de enero de 2009 17:59, Roberto Calvo <rocapal en gsyc.es>
> > escribi�:
> >         
> >         Genial Eduardo!
> >         
> >         S�lo una cosa, que es necesario cambiar en �ste y en todos los
> >         esquemas
> >         que suele pasar.
> >         
> >         En la funci�n startup por conveniencia no puede haber nada
> >         relacionado
> >         con interfaz gr�fica, ya que es posible correr el esquema sin
> >         tener
> >         interfaz gr�fica (incluso sin tener X en el sistema)
> >         
> >         Por ello, en el ejemplo concreto de opencv, la funci�n
> >         "opencvdemo_init()" no se puede llamar desde el startup. Es
> >         necesario
> >         llamarla desde "image_recording_guiresume". Creo que lo hemos
> >         ido
> >         heredando del copy&paste y es necesario revisarlo y cambiarlo.
> >         
> >         De hecho si la funci�n se llamara opencvdemo_initgui() ser�a
> >         m�s
> >         explicativo incluso.
> >         
> >         Eduardo si te parece y generas el parche para tu esquema,
> >         genial :-) Que
> >         lo vimos hace unas semanas Jose Mar�a y yo pero el tiempo ...
> >         ya sabes.
> >         
> >         un saludete!!
> >         
> >         El mar, 27-01-2009 a las 17:21 +0100, Eduardo Perdices
> >         escribi�:
> >         
> >         
> >         > Hola juan, yo fui quien cre� esa entrada del manual, no
> >         tengo el
> >         > c�digo porque solo lo cree para poner la entrada de ejemplo
> >         y hacer la
> >         > captura, despu�s lo borr�.
> >         >
> >         > Aun as�, entra en mi repositorio, por ejemplo aqu�:
> >         >
> >         >
> >         http://svn.jde.gsyc.es/users/eperdes/headtracking/trunk/opencvdemo/
> >         >
> >         > Te explico un poco, los glade se crean con un programa con
> >         el que vas
> >         > creando la interfaz sin necesidad de picar c�digo, el
> >         paquete de linux
> >         > se llama "glade-gnome", con eso generas la interfaz
> >         gr�ficamente y te
> >         > genera el .glade, en mi schema puedes ver el que se ha
> >         creado con el
> >         > nombre opencvdemo.glade.
> >         >
> >         > Despu�s todos los .h son iguales en todos los chemas, si
> >         abres el
> >         > opencvdemo.h simplemente tienes que cambiar lo de
> >         "opencvdemo" por el
> >         > nombre de tu schema, todo lo dem�s es igual.
> >         >
> >         > Despu�s en el opencvdemo.c, deja como cabeceras solo esto:
> >         >
> >         > #include "jde.h"
> >         > #include "opencvdemo.h"
> >         > #include <graphics_gtk.h>
> >         > #include <glade/glade.h>
> >         > #include <gtk/gtk.h>
> >         > #include <gdk/gdk.h>
> >         >
> >         > Despu�s, a partir de la linea 102, ver�s que hay muchas
> >         funciones que
> >         > se llaman "on_active_x_toggled", esas son las funciones que
> >         llama el
> >         > gtk, y que est�n asignadas en la linea 1025. Todas esas
> >         funciones si
> >         > quieres las puedes borrar y tambi�n todas las funciones
> >         propias del
> >         > schema, hasta la linea 536.
> >         >
> >         > Despu�s el resto de funciones tienes que tenerlas, aunque
> >         est�n en
> >         > blanco, ya que aparecen en el opencvdemo.h y jde las
> >         utiliza:
> >         >
> >         > La primera es opencvdemo_iteration, esa la puedes dejar en
> >         blanco
> >         > Luego viene opencvdemo_imports, ah� hay que hacer el import
> >         de las
> >         > variables de los drivers que utilices, de momento tambi�n la
> >         puedes
> >         > dejar en blanco.
> >         > En opencv_exports, tienes que hacer los 4 exports que vienen
> >         > obligatoriamente, as� que es solo cambiar el opencvdemo por
> >         el nombre
> >         > de tu schema.
> >         > opencvdemo_init es siempre parecida, ponla como viene en el
> >         manual.
> >         > opencvdemo_end y stop se pueden quedar en blanco, tal como
> >         est�n.
> >         > opencvdemo_suspend tambi�n es siempre igual, cambiando el
> >         nombre del
> >         > schema.
> >         > opencvdemo_resume, dejalo tal cual est� pero quitando las
> >         dos llamadas
> >         > que aparecen de la forma "RGB2HSV_..." que son de la
> >         librer�a
> >         > colorspaces y que tu no tienes que utlizar.
> >         > opencvdemo_thread, tambi�n es siempre igual, solo cambiar
> >         nombres.
> >         > La de opencvdemo_parseconf, la puedes borrar, se usa para
> >         cuando
> >         > tienes tu propio archivo de configuraci�n, pero de momento
> >         no creo que
> >         > tengas, as� que borra la funci�n.
> >         > opencvdemo_startup, dejalo como est�, pero quitando el
> >         primer if, que
> >         > llama a la funci�n que acabas de borrar.
> >         > Las 3 funciones que faltan, que son guidisplay, guiresume y
> >         guisuspend
> >         > son las 3 propias de la interfaz gr�fica, vienen en el
> >         manual, as� que
> >         > ponlas como est�n ah�.
> >         >
> >         > Y nada m�s, si tienes alguna duda pregunta lo que sea.
> >         >
> >         > Un saludo.
> >         >
> >         > El 27 de enero de 2009 16:43, juan <juan en iearobotics.com>
> >         escribi�:
> >         >         Hola,
> >         >
> >         >          He estado mirando esta documentaci�n sobre c�mo
> >         hacer
> >         >         esquemas que
> >         >         usen GTK:
> >         >
> >         >
> >         http://jde.gsyc.es/index.php/Manual#Using_GTK_Library
> >         >
> >         >          Me gustar�a empezar por ese ejemplo. �Alguien tiene
> >         el c�digo
> >         >         completo? Me refiero no s�lo al fichero .c, sino
> >         tambi�n
> >         >         el .h,
> >         >         el .glade y el Makefile.
> >         >
> >         >         Gracias
> >         >
> >         >         Saludos, Juan
> >         >
> >         >         --
> >         >         Juan Gonzalez Gomez
> >         >         blog: http://www.iearobotics.com/blog/
> >         >         web: http://www.iearobotics.com/juan
> >         >
> >         >         _______________________________________________
> >         >         Jde-developers mailing list
> >         >         Jde-developers en gsyc.es
> >         >
> >         http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> >         >
> >         > _______________________________________________
> >         > Jde-developers mailing list
> >         > Jde-developers en gsyc.es
> >         >
> >         http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> >         
> >         --
> >         Roberto Calvo Palomino          | Libre Software Engineering
> >         Lab (GSyC)
> >         Tel: (+34) 91 488 85 23         | Universidad Rey Juan Carlos
> >         Tel: (+34) 91 488 81 05         | Edif. Departamental II -
> >         Despacho 116
> >         rocapal en gsyc.es                 | c/Tulip�n s/n 28933 M�stoles
> >         (Madrid)
> >         http://libresoft.es/
> >         
> >         GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
> > 
> > documento de texto sencillo adjunto (parche.txt)
> > 945d944
> > <   	opencvdemo_init();
> > 1000a1000
> > >    opencvdemo_init();
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
-- 
http://gsyc.es/jmplaza 
Universidad Rey Juan Carlos




More information about the Jde-developers mailing list