[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