* Introduccion
Generador automatico de menus (v0.04 Alpha)
--------------------------------------------
Esta libreria esta diseñada para que mediante unas pocas lineas, puedas
tener un menu funcionando a pleno rendimiento sin tener que preocuparte
del funcionamiento interno del menu.
Caracteristicas
---------------
v0.04 Alpha
·Reestructuraciones internas
·Nuevo modelo de importacion de imagenes personalizado
del programa. Se debe usar png2h para que las imagenes
sean compatibles.
v0.03 Alpha
·Estilo de retorno especiales para los menus de advertencia.
·Configurable para menus verticales y horizontales.
v0.01 Alpha
·Posibilidad de poner imagenes de presentacion en cada menu/submenu
·Anidamiento de submenus de nivel ilimitado.
·Opciones rotatorias (al llegar a la última opcion, se pasa a la primera)
·Opciones de salir/volver automaticas.
·Ejecucion de funciones a través de las opciones.
·Reentrada automatica al menu desde de la ejecucion de una opcion.
Modo de empleo
--------------
·Explicacion general
Todas las funciones exceptuando runMenu, tienen varias formas de usarse,
todas ellas tienen un parametro "char *frm", este parametro simplemente se
trata de una cadena codificada en la cual dependiendo del valor que le pases
se sabran los siguientes parametros.
Si por ejemplo las letras para el formato fuesen 'f' y 'p', f significando
puntero a funcion y 'p' significando puntero a un parametros. La funcion deberà a
escribirse como funcionMenu("fp", &funcion, ¶metro) o como
funcionMenu("pf", ¶metro, &funcion) indistintamente (atencion con la cadena
codificada).
Esto quedara¡ mas claro en la explicacion
especifica.
·Explicacion especifica
·ctrlMenu * menuInit(char *frm,...);
Esta funcion no requiere ningun parametro obligatorio, con lo cual crearia
un menu vacio donde añadir nuevas opciones.
Los parametros opcionales en la cadena de formato serian
's' -> Imagen a mostrar
't' -> Tiempo (segundos) que tarda en desaparer la imagen de presentacion.
Ejemplo simple:
menu=menuInit(NULL); //Crearia un menu horizontal y sin imagen de presentacion
Ejemplo completo:
menu=menuInit("psti", UPDOWN, &splash_size, splash, 3);
//Crearia un menu vertical mostrando la imagen "splash" durante 3 segundos.
·void addOption(ctrlMenu *menu,unsigned int *size, unsigned char *data,char *frm,...);
Esta funcion tiene como parametros obligatorios, el control de menu al cual perteneceran
las opciones (CtrlMenu *menu) y la informacion de la imagen a mostrar la para opcion.
"unsigned int *size" es el tamaño de la imagen en bytes, mientras que
"unsigned char *data" es la informacion de la imagen.
Los parametros opcionales en la cadena de formato serian
'f' -> Aqui se especifica un puntero a la opcion a ejecutar cuando se presione X sobre
la opcion. Esta funcion debe ser obligatoriamente del tipo "void funcion(void *param)"
'p' -> Parametro que se le pasara a la funcion, como se ve en el encabezado de la funcion,
este parametro tendra que ser del tipo (void *).
En el caso de las opciones, si los parametros opcionales no estan definidos y no contiene
un submenu, significaria que la opcion es del tipo volver/salida, con lo cual al ejecutarse
dicha opcion, se volveria al menu anterior en caso de ser un submenu o sdevolveria el control
del programa al main si estuvieramos en el menu principal.
·ctrlMenu * addMOption(ctrlMenu *menu,char *frm,...);
Esta funcion tiene como parametro obligatorio el puntero al ctrlMenu al cual va a pertenecer
como su submenu. Todos los submenus de primer nivel tendran como padre al menu pasado a
la funcion "menuInit".
Esta funcion devuelve otro control de menu, el cual es el que se debe usar para añdir opciones
a este submenu o añadir nuevos submenus al actual submenu (anidacion de submenus).
Los parametros opcionales en la cadena de formato serian
'p' -> Modo de funcionamiento del pad. Como predeterminado esta izquierda/derecha
("LEFTRIGHT"), pero se puede ambiar a arriba/abajo ("UPDOWN").
's' -> Imagen a mostrar
't' -> Tiempo (segundos) que tarda en desaparer la imagen de presentacion.
·void runMenu(ctrlMenu *menu);
A esta funcion solo se le debe pasar la variable ctrlMenu que contiene el menu principal
y es la encargada de gestionar todo el menu con los parametros definidos.
Sample
La libreria uncluye un sample con el funcionamiento basico del menu. Lo unico que tendreis que programar es el main.cpp, el resto de archivos (con relación al menu) no hace falta tocarlos para nada, con lo que el menu se genera de forma bastante rapida.
Compatibilidad
Kernels 3.XX (Probado en 3.71 y 3.90)
Posteado tambien en: www.elotrolado.net, beta.pesepe.com,
www.marce82projects.es,
www.teknopsp.com
Comprobar si vuestra duda a sido resuelta en alguna de ellas antes de preguntar.
Descargar pspMenu v.0.04 Alpha
Salu2