Splinter's GUI

Started by SplinterGU, October 24, 2008, 03:01:34 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

New GUI lib.

Features:

-----------------------------------------------------------------------------------------------------------------
Flags:
-----------------------------------------------------------------------------------------------------------------

#define GUI_RCLICK_ACTIVATE     0001h
#define GUI_LCLICK_ACTIVATE     0002h
#define GUI_CLICK_ACTIVATE      (GUI_RCLICK_ACTIVATE | GUI_LCLICK_ACTIVATE)
#define GUI_FOCUS_ACTIVATE      0004h
#define GUI_RELATIVE_COORDX     0010h
#define GUI_RELATIVE_COORDY     0020h
#define GUI_RELATIVE_COORDS     (GUI_RELATIVE_COORDX | GUI_RELATIVE_COORDY)
#define GUI_DESTROY_THIS        0040h

-----------------------------------------------------------------------------------------------------------------
Types:
-----------------------------------------------------------------------------------------------------------------

type _object;
    int id;             /* Internal use only, contain _GUI_Button process id */
    int x;              /* Coord x, if this is -1, then this _GUI_Button is set on "last coord x" + "last width" + GUI_Interline_Size */
    int y;              /* Coord y, if this is -1, then this _GUI_Button is set on "last coord y" + "last height" + GUI_Interline_Size */
    int w;              /* Width */
    int h;              /* Height */
    int flags;
    int bordercolor;    /* Border color */
    int bgcolor;        /* Background color */
    string font;        /* Font used in _GUI_Button */
    string caption;     /* Text of _GUI_Button */
    string icon;        /* Icon of _GUI_Button (optional) */
    int action;         /* Unique action id, this action id is triggered when _GUI_Button is clicked */
    _object * child; /* Pointer to child object list */
end

-----------------------------------------------------------------------------------------------------------------
Globals:
-----------------------------------------------------------------------------------------------------------------

    GUI_Border_Size = 2;        /* Objects border */
    GUI_Interline_Size = 4;     /* Interline space size */

-----------------------------------------------------------------------------------------------------------------
Functions:
-----------------------------------------------------------------------------------------------------------------

function GUI_Do_Menu (_object * obj)

Input:
    obj  - is a pointer to _object table that contain the objects list to draw

-----------------------------------------------------------------------------------------------------------------

function GUI_Destroy_All_Menus() - Kill active buttons

-----------------------------------------------------------------------------------------------------------------

function GUI_Disable_All_Menus() - Freeze currents buttons

-----------------------------------------------------------------------------------------------------------------

function GUI_Enable_All_Menus() - Wake up currents buttons

-----------------------------------------------------------------------------------------------------------------

GUI_Refresh_Menus - Perform a frame

-----------------------------------------------------------------------------------------------------------------

function GUI_Destroy_Menu(_object * obj)

Input:
    obj - is a pointer to _object table that contain the objects list to destroy

-----------------------------------------------------------------------------------------------------------------

function GUI_Disable_Menu(_object * obj)

Input:
    obj - is a pointer to _object table that contain the objects list to disable

-----------------------------------------------------------------------------------------------------------------

function GUI_Enable_Menu(_object * obj)

Input:
    obj - is a pointer to _object table that contain the objects list to enable

-----------------------------------------------------------------------------------------------------------------
function int GUI_AlertBox( string fnt, int bordercolor, int bgcolor, string * str, int nstr, _object * objs )

Input:
     fnt - font name of text
     bordercolor - border color
     bgcolor - background color
     str - pointer to string array with text
     nstr - count of string array with text
     objs - pointer to _object table that contain the objects list to draw

Return:
     Action id of selected button
-----------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------
function GUI_Move_Menu(_object * obj )

Input:
      obj - is a pointer to _object table that contain the objects list to destroy

Return:
     None

Autors:
     Prg
     Splinter
-----------------------------------------------------------------------------------------------------------------

http://betatester.bennugd.org/betas/samples/gui.rar

Samples:

Drop-Down Menu


Drop-Down Menu


Button Menu


Alert Box


Alert Box


Las GUI_RELATIVE_* todavia no se usan, quizas no tengan uso a futuro y sean eliminadas.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

blostec

Mmmm... interesante, ahora la bajo y la pruebo, gracias!  :)

Prg

ya lo había adaptado a mi proyecto, sin embargo no había visto esas funciones para dormir todos los botones y destruirlos, bueno, creo que compararé para ver si es la versión que adapté, si no es así, entonces vuelvo a adaptarla. :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

blostec

Por cierto Prg, te has planteado integrar tu proyecto al ide de phreak?

SplinterGU

#4
La verdad que no lo pense... el producto de phreak es cerrado por ahora...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

 :) pues considero mi proyecto como de todos, así que si ustedes lo desiden así, pues entonces vamos...  Ahora mismo estoy descargando su paquete, para ver cómo es. ustedes digan  :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

Quote from: Prg on October 24, 2008, 05:35:05 PM
:) pues considero mi proyecto como de todos, así que si ustedes lo desiden así, pues entonces vamos...  Ahora mismo estoy descargando su paquete, para ver cómo es. ustedes digan  :)

Esta perfecto que sea para todos, asi deberia ser... ojo con la ventana de creditos, no la vas a sacar??? jejeje, era un chiste, es solo un ejemplo de uso... ahi podrias poner un about y todos los creditos que creas conveniente...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

blostec

Yo lo dicia porque el ide de Phreak pinta muy bien, tendría editor de texto y si se incorpora tu proyecto, ya tendríamos un ide con editor de codigo y fpgs. Y todo escrito en bennu, asegurando la portabilidad. No se, es mi opinión. Claro que si quieres sacar tu proyecto por separado no hay problema. Saludos!

animanegra

IDE != GUI
Lo que splinter hace aqui es una libreria para facilitar la creacion de interfaces de usuario. Al menos asi lo he entendido yo.
"PoCoYo es dios!!"

Prg

QuoteYo lo dicia porque el ide de Phreak pinta muy bien, tendría editor de texto y si se incorpora tu proyecto, ya tendríamos un ide con editor de codigo y fpgs. Y todo escrito en bennu, asegurando la portabilidad. No se, es mi opinión. Claro que si quieres sacar tu proyecto por separado no hay problema. Saludos!

blostec, no te preocupes amigo, :)  como ustedes desidan, a mí también se me hace una buena idea, pero también hay que consultarlo con phreak, y con los demás. También puede dejarse una versión incluyendo los dos proyectos y otra por separado con cada uno. saludos también.

Quoteojo con la ventana de creditos, no la vas a sacar???

Je, je, je...  
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

Esto mas que un proyecto es una libreria de libre uso... solo quiero aportar algo para facilitar la construccion de aplicaciones/interfaces de usuario (como dijo animanegra)... no pretende ser mas que eso... luego si vamos haciendola crecer entre todos mejor... o sino, a medida que vaya creando cosas y si veo que se pueden agregar al gui lo hare... pero creo que con esto alcanza para hacer muchas cosas...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

blostec

Quote from: animanegra on October 24, 2008, 06:37:24 PM
IDE != GUI
Lo que splinter hace aqui es una libreria para facilitar la creacion de interfaces de usuario. Al menos asi lo he entendido yo.

jeje si ya lo se, yo me refería al proyecto de Prg.

animanegra

Probada en ubuntu no da ningun problema. Con la wip 14 (Creo :S). A ver si pruebo a hacer algo a ver como es de simple su uso ;-)

A blobstec perdon, entendi que el proyecto de prg era un gui para programacion de bennu. :\ me he debido liar :D muy propio de mi.
"PoCoYo es dios!!"

Drumpi

Mmmm, muy interesante, mucho, creo que me podría servir para algo que iba a hacer a corto plazo (si termino con la lista de "procesos runing")
Muchas gracias, splinter, una más de karma ;)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

;) me alegro que te haya gustado...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2