pspMenu v.0.04 Alpha (Generador de Menus Automatizado)

* 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
gracias! le echaré un vistazo después del exámen del jueves, que para uno que tengo este cuatrimestre no es plan de suspenderlo xD
Deduzco que esto no vale para LUA ¿verdad? XDXDXD. Bueno, nos tendremos que seguir conformando con hacerlos a mano XD.

Saludos.
No, es para C. Espero q a alguien le sirva ;-)
v1rUs_X está baneado por "Faltas de respeto continuadas"
+ 100
gracias tio por el pspmenu ;)
Tendrias que incluir el pspmenu.c o hacerlo una lib,porque si haces un make -B o clean,se borran los .o's.
Chodi escribió:No, es para C. Espero q a alguien le sirva ;-)


Ya jejej. Me tendré que pasar a C, que comentan que es más completo. A ver si le echo un rato XDXD.

Saludos.
Como te dice coolj, haz una libreria estatica, pon en el makefile.

libpspmenu.a : libpspmenu.a(pspmenu.o)

Al compilar se te generará la libreria estatica, asi solo tendrás de poner en el rar el pspmenu.a y el .h y no habrá ningún tipo de problema ;)
ok, thx. Cuando pueda lo hago xD

EDITADO:
Ya he conseguido la lpspmenu.a con todo integrado. Muchas gracias por el sugerimiento, ahora es muhco mas comodo.

Cuando saque la siguiente version con el recorte de imagenes automatico para que que los eboots ocupen menos memoria en MS y RAM, ya sacare la lib.

Saludos.
xDDDD thx.

Para la siguiente version vendra con novedades y todo en el .a ;-)

PD: Nunca habia publicado una libreria y por eso no habia usado el .a pese a saber que existia. Creo que apartir de ahora lo usare mas.


Saludos
11 respuestas