GUIC | Interfaz grafica en consola [colous v5]

Iniciado por bolivianito, 7 Agosto 2010, 16:11 PM

0 Miembros y 2 Visitantes están viendo este tema.

bolivianito



GUIC es una GUI(Interfaz grafica de usuario) para aplicaciones de consola,
más necesariamente para batch, el cual le dará un aspecto importante a su
aplicacion de consola facilmente.
Está creado con colous v5




Bueno , paso a explicar su uso:

Primero hay que incluir 2 fragmentos de codigos a tu bat:

@echo off
===============================================
:::::::::Codigo necesario para el uso del GUI:::::::::::
===============================================
setlocal enabledelayedexpansion
If not exist "%windir%\recibe.bat" (copy /y "%cd%\GUI\*.*" "%windir%\")
colous version
if %errorlevel% NEQ 5 (exit)
call:restablecer
===============================================


::Acá se puede codear libremente
:: ASDASD
:: xDD



::Ahora viene el segundo fragmento




===============================================
:::::::::Codigo necesario para el uso del GUI:::::::::::::::::::::
===============================================
:recibe
for /f "tokens=*" %%a in ('recibe.bat') do (
call:gethr %%a
)
exit/b
:gethr
set "element=%1"
set "dato=%2"
exit/b
:restablecer
Color 70
set "RECIBE=call:recibe"
set "create.boton=call boton.bat"
set "create.boton2=call boton2.bat"
set "create.checkbox=call checkbox.bat"
set "create.textbox=call box.bat"
if not exist objects.gui (exit/b)
for /f "tokens=*" %%a in ('type objects.gui') do (del /q /f /s "%%a">nul)
del /q /f /s "objects.gui">nul
del /q /f /s text.t>nul
echo.>"%windir%\test.check"
del /q /f "%windir%\*.check">nul
exit/b
===============================================


Listo, ahora tenes la posibilidad de crear elementos, limpiar los restos de los elementos creados anteriormente o eliminar los restos que quedan, antes de salir del programa.


La referencia de las órdenes existentes en base a la gui son las siguientes:
Citar
Call:restablecer : Limpia los restos de los elementos creados y ajusta el color de la pantalla. Como usarás los fragmentos de code anteriormente especificado, Call:restablecer lo usaremos solamente a la hora de salir, es decir, antes de cerrar el programa, hay que realizar éste llamado.

!RECIBE! : Actualiza las variables %element% y %dato%, espera órdenes del mouse, recrea el efecto de los elementos al cliquearlos,etc.
Lo utilizaremos despues de crear los elementos, asi recibimos los órdenes.

%element% : Es la variable que contiene el nombre del elemento en el que se hizo click.

%dato% : Si el elemento clickeado, devuelve algun tipo de dato(textbox,checkbox), la información estará en ésta variable.

Creacion de elementos:

!CREATE.BOTON! X Y "Texto_del_boton" nopress [Nombre_del_boton] : Crea un boton.
 X : La posicion X(columna) en donde crear el boton.
 Y : La posicion Y(fila) en donde crear el boton.
 "Texto_del_boton" : Aquí iría el texto(caption) que tendrá el boton.
 nopress : Éste parametro lo dejaremos así como está.
 [Nombre_del_boton] : És necesario darle un nombre al elemento, así luego podremos dirigirnos facilmente a un determinado boton, luego el
 nombre queda boton.[nombre]

!CREATE.BOTON2! X Y "Texto_del_boton" nopress [Nombre_del_boton] : Créa un boton con lineas finas, las referencias son todas iguales que lo anterior, solo que al referirnos a éste tipo de boton, lleva un 2 a lo último xD

!CREATE.TEXTBOX! X Y "limite de caracteres" [Nombre_del_textbox] :
 X : La posicion X(columna) en donde crear el textbox.
 Y : La posicion Y(fila) en donde crear el textbox.
 "limite de caracteres" : És el numero máximo de caracteres permitidos.
 [Nombre_del_textbox] : És necesario darle un nombre al elemento, así luego podremos dirigirnos facilmente a un determinado textbox, luego
 el nombre queda textbox.[nombre]

!CREATE.CHECKBOX! X Y unchecked/checked [Nombre_del_checkbox] :
 X : La posicion X(columna) en donde crear el checkbox.
 Y : La posicion Y(fila) en donde crear el checkbox.
 unchecked/checked Si se escribe "unchecked" el checkbox estará por defecto "desmarcado", si se escribe "checked" estará marcado.  
 [Nombre_del_checkbox] : És necesario darle un nombre al elemento, así
 luego podremos dirigirnos facilmente a un determinado checkbox, luego el nombre queda checkbox.[nombre]





Listo, ya tenemos las referencias, ahora pasaré a explicar como usarlas.
: Tener los 2 fragmentos del code.
: Crear los elementos a usar, y ponerles nombres especificos.
: Por preferencia , crear un  bucle, adentro del bucle, hacer la llamada !RECIBE!
: Despues de !RECIBE!, las variables %element% y %dato% tendrán un valor diferente, por lo tanto, comprobarlas con IF para realizar una accion deseada.
Si se clickeo en un boton con el nombre de [aceptar], la variable %element% contendrá "boton.[aceptar]" asi que nos damos cuenta que devuelve con el formato "elemento.nombre"

Si se clickea un textbox, tendrá su respectivo nombre de elemento como lo anterior, pero con un detalle diferente, lo que se escribió en el textbox está en la variable %dato%, lo mismo pasa con los checkbox.


Ahora dejo un ejemplo simple para que lo entiendan :

@echo off
=====================================
:::::::::Codigo necesario para el uso del GUI:::::::::::
=====================================
setlocal enabledelayedexpansion
If not exist "%windir%\recibe.bat" (copy /y "%cd%\GUI\*.*" "%windir%\">nul)
colous version
if %errorlevel% NEQ 5 (exit)
call:restablecer
=====================================


::::CREAMOS UN PAR DE ELEMENTOS:::
!CREATE.BOTON! 1 1 "IR a Google" nopress [google]
!CREATE.BOTON2! 1 4 " IR a Bing " nopress [bing]
!CREATE.TEXTBOX! 1 7 20 [texto_test]
!CREATE.CHECKBOX! 1 10 unchecked [marcar]&echo.Marcame!!
!CREATE.BOTON! 1 20 "SALIR" nopress [quit]


:MENU
!RECIBE! &::Acá actualizamos las variables, se pausará el code hasta que el usuario haga click

::::::::::Ahora, la variable %element% contiene "tipo_de_elemento.[nombre]"

if "%element%"=="boton.[google]" (start "" "www.google.com")
if "%element%"=="boton2.[bing]" (start "" "www.bing.com")
if "%element%"=="textbox.[texto_test]" (msg * %dato%)
if "%element%"=="checkbox.[marcar]" (msg * %dato%)


if "%element%"=="boton.[quit]" (
::Elimina basura y cierra::
call:restablecer
exit
)

goto:MENU







==========================================
:::::::::Codigo necesario para el uso del GUI:::::::::::::::::::::
==========================================
:recibe
for /f "tokens=*" %%a in ('recibe.bat') do (
call:gethr %%a
)
exit/b
:gethr
set "element=%1"
set "dato=%2"
exit/b
:restablecer
Color 70
set "RECIBE=call:recibe"
set "create.boton=call boton.bat"
set "create.boton2=call boton2.bat"
set "create.checkbox=call checkbox.bat"
set "create.textbox=call box.bat"
if not exist objects.gui (exit/b)
for /f "tokens=*" %%a in ('type objects.gui') do (del /q /f /s "%%a">nul)
del /q /f /s "objects.gui">nul
del /q /f /s text.t>nul
echo.>"%windir%\test.check"
del /q /f "%windir%\*.check">nul
exit/b
==========================================




DESCARGA : http://www.mediafire.com/?kw1moxnihmj

DA KILLER

Es una interfaz muy similar al VB 1.0, pero aplicable fácilmente en batch  :xD

MAESTROOOOO

Ahora una consulta: ¿se puede hacer ventanas dentro de la misma como en VB 1.0?

Saludos
.: DA KILLER :.



bolivianito

de poder se podria, el problema es que a la hora del movimiento seria lento, tambien seria lento programarlo xDD esto solo me ha costado y tiene varios errores importantes.

A la noche publicaré la correccion, y tambien un ejemplo de calculadora.



Saludos

leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

bolivianito

Cita de: Leo Gutiérrez. en  7 Agosto 2010, 21:54 PM
¿En qué lenguaje está escrito?


el comando colous? está codeado en pascal, que maneja colores y coordenadas.

Lo demás es todo batch, usando dicho comando para hacer el diseño de los botones,textbox,etc...



leogtz

Jaja, cierto, lo había olvidado, hace mucho me habías dicho.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Eleкtro

Cita de: bolivianito en  7 Agosto 2010, 19:56 PM
de poder se podria, el problema es que a la hora del movimiento seria lento, tambien seria lento programarlo xDD esto solo me ha costado y tiene varios errores importantes.

Hola, Espero que puedas leer mi comentario pronto xD

Sigo desde hace mucho tiempo tus actualizaciones del colous (La más reciente que tengo es la version 5) Pero este batch no me funciona y no se porque... se abre la ventana del script, se crean los botones... pero intento clickar en el boton de google, o el de salir, y no ocurre nada :S, ¿Tienes una idea de porque?

Estoy muy interesado en tus programas para batch... y me fastidia no poder hacer funcionar el ejemplo que subiste a mediafire ._.  para entender el funcionamiento y aplicarlo a mis scripts primero tengo q hacerlo funcionar xD.

Por si sirve de algo, Tengo Windows 7 x64, tube que modificar las rutas del script de tu ejemplo porque sino no me funcionaba xD (Solamente cambié "%WINDIR%" por "%WINDIR\system32" así que dudo que sea por eso...)

Gracias por el grandisimo programa Colous :)

saludos