yab | yet another Basic for HAIKU
BeInput - Printable Version

+- yab | yet another Basic for HAIKU (https://yab.orgfree.com/forum)
+-- Forum: Programming in yab (https://yab.orgfree.com/forum/forumdisplay.php?fid=1)
+--- Forum: Snippets (https://yab.orgfree.com/forum/forumdisplay.php?fid=3)
+--- Thread: BeInput (/showthread.php?tid=30)



BeInput - clasqm - 08-05-2015

Found this among a bunch of old downloads

# BeInput 1.0
# Tanausu Gomez Garcia (_-Caleb-_)
# tanausugomez@gmail.com

BeInput is like a terminal's read command but in graphic mode.
Util for Script Writers.

Yab for haiku is still unstable.
Sometimes the program crash on startup.

Usage: BeInput User Label (Max 33 char. (yet))

Code:
# BeInput 1.0 (C)
# Tanausu Gomez Garcia (_-Caleb-_)
# tanausugomez@gmail.com

# Comando Peek para usar argumentos
while (peek("argument"))

perso$=peek$("argument")
perso1$=peek$("argument")
perso2$=peek$("argument")
perso3$=peek$("argument")
perso4$=peek$("argument")
perso5$=peek$("argument")
perso6$=peek$("argument")
perso7$=peek$("argument")
perso8$=peek$("argument")
perso9$=peek$("argument")
perso10$=peek$("argument")

wend

# La ventana del programa"
window open 300,300 to 580,380, "View", "BeInput"
view 0,10 to 550,450, "View1", "View"
draw text 20,10, perso$ +" " + perso1$ +" " + perso2$ +" " + perso3$ +" " + perso4$ +" " + perso5$ +" " + perso6$ +" " + perso7$ +" " + perso8$ +" " + perso9$ +" " + perso10$, "View1"
button 80,40 to 200,60, "oki", "Ok", "View1"
textcontrol 10,15 to 270,180, "Datos", "", "","View1"

inloop = true
while(inloop)
msg$=message$
switch msg$

case "View:_QuitRequested|"
        window close "View"
        end
     break

     case "oki|"
    Datos$=textcontrol get$ "Datos"
    output$=system$("echo "+Datos$+"")
        print output$
            window close "View"
            end
     break
        
end switch
wend
end



RE: BeInput - _-Caleb-_ - 11-27-2023

Hi!

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



Free Web Hosting