11-27-2023, 08:59 AM
Hi!
https://codeberg.org/_-Caleb-_/BeInput
Updated, if anyone want to try to the last version (1.0d) :-)
https://codeberg.org/_-Caleb-_/BeInput
Updated, if anyone want to try to the last version (1.0d) :-)
Code:
#!yab
# BeInput
# Crea un diálogo gráfico y lo muestra (Como READ) pero usando el API de Haiku
# Licencia: Artistic 2.0 (https://opensource.org/license/artistic-2-0/)
# Versión de la aplicación:
appver$ = "1.0d"
# Tanausú Gómez (_-Caleb-_)
# Contacto:
# - Web: tanausugg.blogspot.com
# - Correo: tgomez@duck.com
# - Telegram: @calebin
# Otra información de interés:
# BeInput (2009 - 2023)
# Perdido con la caida de MegaUpload, BeBits y Haikuware :-(
# Recuperado, modificado y finalizado en 2023 :-)
# Recuperado gracias a: https://yab.orgfree.com/forum/showthread.php?tid=30
# Log de cambios:
# 1.0c > 1.0d
# Añadida la posibilidad de cambiar el string del botón.
# Añadida la posibilidad de cambiar el tipo de ventana.
# Añadido focus en el cuadro de texto para que no haya que clicarlo antes de escribir.
# Añadida posición relativa al iniciar la ventana (Centro de la pantalla) en vez de posición absoluta. (Tomado de tinput)
# Añadida comprobación de Strings. Lanza error si se superan los siguiente límites:
# Texto de la etiqueta: 40 caracteres.
# Texto del botón: 15 caracteres.
# Cambiado el mensaje de ayuda
# Comprobación de Argumentos (Si lanzas más de 4, el 5º se convierte en el 1º y así sucesivamente"
# 1.0b > 1.0c
# Añadida la plantilla nueva al script para tener los programas bien documentados y comentados.
# Optimizado el código de la pulsación del botón.
# 1.0a > 1.0b
# Textos en inglés, mejores comentarios, añadido el flag de ventana no redimensionable,
# eliminadas algunas cosas no-utilizadas y mejora, en el aspecto general del código,
# renombrado usando el nombre correcto BeInput en vez de beinput.yab
# 1.0 > 1.0a
# Añadida la opción de usar una "CADENA DE TEXTO" en vez de CADENA + DE + TEXTO para la etiqueta
# Añañida la opción de cambiar el título de la pestaña
# Añadida la opción de que muestre información en la terminal si no hay parámetros.
# Subido a Codeberg para no volver a perder el script.
# <------- INICIO DEL PROGRAMA -------->
// Comprobación nº de argumentos
if peek("argument") > 4 then
print "[ERROR: #1] Too Many arguments."
print "Execute BeInput without arguments to see the usage examples. ;-)"
end
else
endif
// Comando Peek para usar argumentos
while (peek("argument"))
texto$=peek$("argument")
titulo$=peek$("argument")
txtboton$=peek$("argument")
ventana$=peek$("argument")
wend
// Comprobaciones del modo de ventana
// Convertimos a minúsculas por si acaso
ventana$ = lower$(ventana$)
// Comprobamos
switch ventana$
case "a"
ventanamodo$="titled"
break
case "b"
ventanamodo$="floating"
break
case "c"
ventanamodo$="modal"
break
case "d"
ventanamodo$="bordered"
break
case "e"
ventanamodo$="no-border"
break
default
// Por si se añade algo incomprensible o un modo no válido
ventanamodo$="titled"
break
end switch
// Si no se especifica un título para la pestaña se usa el título por defecto
if titulo$=("") then
titulo$ = "BeInput v. " + appver$
else
// Continúa leyendo el script para añadir el título personalizado
endif
// Si no se especifica un título para el botón se usa el string por defecto
if txtboton$=("") then
txtboton$="Done"
else
// Continua leyendo el script
endif
// Si se inicia el script sin argumentos muestra la siguiente información
if texto$=("") then
print ""
print "BeInput version " + appver$ + " - http://tanausugg.blogspot.com"
print ""
print "[INFO:] Displays a customizable visual dialog for data entry."
print "[USAGE:] BeInput \"Message text\" \"Tab title\" \"Button text\" \"Window mode\""
print "[USAGE:] Windows Mode [A-E]:"
print " A - \"Titled\" (Default)"
print " B - \"Floating\""
print " C - \"Modal\""
print " D - \"Bordered\""
print " E - \"No-border\""
print ""
print "[EXAMPLES:]"
print " - BeInput \"Label Text\" \"\" \"OK\""
print ">> Define the Label and the Button but not the Title."
print " - BeInput \"Label Text\" \"Text\" \"\" C"
print ">> Define the Label, the title and the window-mode but not the button string."
end
else
// Continúa leyendo el script para crear la ventana
endif
// Calculamos la posición de la ventana (Centro de la pantalla)
height=peek("desktopheight")
width=peek("desktopwidth")
width=width/2
x=width-140
x1=width+140
height=height/2
y=height-85
y1=height
// Creamos la ventana del programa"
window open x,y to x1,y1, "View", titulo$
// Se añaden los atributos de ventana no redimensionable y no zoomeable
window set "View", "flags", "not-resizable not-zoomable"
window set "View", "look", ventanamodo$
// Se crea el contenido dentro de la ventana
view 0,10 to 550,450, "View1", "View"
// Comprobación de tamaño de Strings:
if (len(txtboton$) > 15) then
print "[ERROR: #2] Button string is too large, max 15 characters."
window close "View"
end
else
button 80,40 to 200,70, "oki", txtboton$, "View1"
endif
if (len(texto$) > 40) then
print "[ERROR: #3] Label string is too large, max 40 characters."
window close "View"
end
else
draw text 12,10, texto$, "View1"
endif
textcontrol 10,15 to 270,180, "Datos", "", "","View1"
textcontrol set "Datos", "focus", "true"
// El loop principal
inloop = true
while(inloop)
msg$=message$
switch msg$
// Al pulsar el botón de cerrar la ventana
case "View:_QuitRequested|"
window close "View"
// Termina el programa
end
break
//Al pulsar el botón
case "oki|"
Datos$=textcontrol get$ "Datos"
// Muestra el contenido de la caja de texto con un print
print Datos$
// Acaba el programa, hay que cerrar el view para que no nos aparezca el mensaje de "PROGRAMA FINALIZADO, PULSE ENTER"
window close "View"
// Termina el programa
end
break
end switch
// Termina el programa
wend
// EOF