- 06-22-2007, 08:45 AM #1
[Guia] Scripts con Interfaz de Usuario nativa desde Bash
Hola.
---- Aclaración -----
Este thread va en la sección de avanzados porque, de hecho, no es para todo mundo.
Doy por hecho que ya:
- Haces telnet
- Te mueves por entre los archivos del celular en telnet y Samba
- Conoces Bash -al menos lo básico-
- Haces -o al menos modificas- scripts, siendo consciente de lo que haces
- Has leído la guía de Creación de Scripts en Bash y MPKG
Bien, habiendo hecho esta advertencia, espero que el thread no se llene con spam tipo "para qué es esto?" o "de qué me sirve", porque esto que estoy colocando acá es información valiosa sólo para quien sabe apreciarla
----------
Como sabemos, por ahi va rodando una versión libre del SDK para desarrollar aplicaciones C/C++ en linux para el E2. Gracias a este SDK ha sido posible la creación de un juego de aplicaciones/ejecutables que nos permiten generar desde scripts/BASH todo un conjunto de controles y de elementos de interfaz gráfica de usuario usando los recursos nativos del celular.
Cuando salió el SDK envié un correo a Lasly (quien lo liberó/rotó/compartió/crackeo/plagió, como quieran llamarlo) pidiéndole información, y de ser posible, un paquete de ejecutables para generar UI desde bash. Afortunadamente me respondió y de forma muy amable me envió los archivos que le pedía y unas instrucciones para usarlas (-algo incompletas e incluso erradas ya que al parecer su inglés es igual de malo al mío o tal vez peor xD) a partir de las cuales he podido hacer las aplicaciones que han visto, y las aplicaciones en las que estoy trabajando. Desde ya les digo que ese paquete está adjunto al final de este post
.
Las funciones son las siguientes:
showColorPicker: Selector de Color
showDatePicker: Selector de Fecha
showMultiSelect: Listas con selección Múltiple
showNotify: Mensaje emergente de Notificación
showNumPicker: Selector de Número
showProcess: Barra de Progreso
showQ: Mensaje Emergente con botón "OK/Aceptar" o Pregunta "Si o No"
showRadio: Lista de selección Única o de Botones tipo Radio (Activas sólo uno de ellos)
showTextEntry: Mensaje emergente de ingreso de texto
showTimePicker: Selector de Hora
A continuación procederé a hablarles lo que he logrado aprender y descubrir sobre el manejo de estas instrucciones y su correspondiente resultado.
Pero como ODIO los google ADS sobre todo cuando se paran en una columna propia desperdiciando espacio, postearé los contenidos en el siguiente post disponible
Link al paquete Show* También lo adjunté usando la herramienta del foro.Last edited by Taurnil; 06-22-2007 at 09:50 AM. Reason: agregando información
Motorola Atrix 4G :P
-
15 Users Say Thank You to Taurnil For This Useful Post
==hisshiiis== (01-12-2011), argensis (11-26-2007), arternauta (12-03-2007), Av3LaR (10-24-2008), chekfokiu (11-11-2008), darkalien (07-16-2007), darkquicksilver (10-15-2008), Deadly Nightmare (12-30-2010), fabri (12-05-2007), GIUDECCA (06-18-2011), MartinV (07-06-2007), metroyz (04-21-2010), negrostmthws (10-14-2008), Snaycko (12-26-2007), tatitto_007 (07-28-2010)
- 06-22-2007, 09:51 AM #2showColorPicker
Según las instrucciones de Lasly podía partir de cualquier color hacia blanco, pero no he logrado hacerlo por más que lo he intentado. Lasly me dió su número de ICQ pero no he podido contactarle, como uds saben beijing está a GMT+7 y yo a GMT-5 así que la diferencia horaria es brava xD... en fin

showColorPicker devuelve el color elegido por printf. Así que si queremos capturar ese color en una variable, debemos hacer
de esta forma el color se almacenará en formato HEXADECIMAL en la variable "mi_color", tal y como sale en el selector -pero sin el caracter "#" -. En el caso del ejemplo que pueden ver, el valor a retornar sería "777777". Si el usuario CANCELA la elección de fecha, el valor a retornar será vacio. En el ejemplo, la variable mi_color contendría "" osea nada.mi_color=$(./showColorPicker) # o
mi_color=`./showColorPicker` # ojo que son comillas inversas o tildes inversas
showDatePicker

Presenta un selector de Fecha, con la posibilidad de abrir el calendario para elegirla, o especificarla elemento a elemento.
Hacen que aparezca el selector con la fecha que queramos. En el caso del ejemplo, lo llamé usando "showdatepicker 1986 03 11" (mi fecha de nacimiento xD).mi_fecha=$(showDatePicker AAAA MM DD) # o bien
mi_fecha=`showDatePicker AAAA MM DD`
Si lo llamamos sin argumentos adicionales (sin una fecha), aparecerá con la fecha actual por defecto.
El valor a retornar, es la fecha elegida por el usuario, en el formato AAAAMMDD, que en el caso del ejemplo sería 19860311. Si el usuario CANCELA la elección de fecha, el valor a retornar será vacio. En el ejemplo, la variable mi_fecha contendría "" osea nada.
showMultiSelect

Esta es una herramienta poderosa para crear listas de selección múltiple. El formato para llamarla es
el parámetro MARCADO es un número, 0 o 1, de forma que salga marcada la opción que le precede por defecto apenas carga la ventana.mis_selecciones=showMultiSelect "Titulo de la Ventana" "Texto informativo" "opcion" MARCADO "opcion" MARCADO "opcion" MARCADO
Para generar el ejemplo que podemos ver, tuve que hacer:
La forma en la que esta aplicación retorna los valores elegidos es a partir de la posición de las opciones elegidas.showMultiSelect "Titulo de la Ventana" "Texto informativo" "opcion1" 0 "opcion2" 1 "opcion3" 0
En el ejemplo, si el usuario eligiese todas las opciones, la variable mis elecciones contendría
Que corresponde a los índices de las opciones seleccionadas por el usuario. Estas pueden procesarse o interpretarse usando ciclos for, o como el scripter guste001
002
003
Por el contrario, si no elige ninguna opción o simplemente cancela, la variable mis elecciones no tendrá contenido alguno, estará vacía.
showNotify

Este es facil de usar. El mensaje de notificación dura aproximadamente un segundo, o bien se cierra antes si el usuario hace "click" con el joystick estando ella visible. Dada su naturaleza, no retorna valor alguno.
El ejemplo en pantalla se genera haciendo:
Simple, no?showNotify "Titulo" "Mensaje: Hola Mundo"
showNumPicker

Mediante este ejecutable podremos mostrar un selector numérico, con un rango especificable, de la siguiente forma:
donde $MIN, $MAX y $VALOR, corresponden, respectivamente a los valores MINIMO, MÁXIMO y al VALOR mostrado al iniciar la ventana. Gracias a MIN y MAX podemos especificar un rango válido de entrada. Por ejemplo, en el nuevo snapshots -que pronto postearé- limito el rango de fotos entre 3 y 20 mediante estos parámetros.numero_elegido=$(showNumPicker $MIN $MAX $VALOR) # o bien
numero_elegido=`showNumPicker $MIN $MAX $VALOR`
Para generar el ejemplo en pantalla, se hace
Esto limita el rango a los números entre 1 y 10 (incluyéndolos, o sea, valores mayores o iguales a 1 y menores o iguales a 10).showNumPicker 1 10 6
El valor a retornar y almacenar en la variable es el número elegido por el usuario. Si este cancela, la variable contendrá la palabra "Cancel!".
showProcess

Mediante este ejecutable podremos mostrar una barra de progreso o más bien de espera (porque simplemente corre, no muestra el progreso 'real' del proceso especificado). Su uso es el siguiente:
Donde $TITULO y $MENSAJE corresponden, respectivamente, al título de la ventana emergente y al texto que aparece sobre la barra.showProcess "sleep 5" "$PROCESO" "$TITULO" "$MENSAJE"
$PROCESO es el comando (o ruta del script) que quieres ejecutar al mismo tiempo que muestras la barra. La ventana emergente se cierra cuando este comando/script/proceso se complete.
En el caso del ejemplo, se hizo usando:
Se que es medio tricky pero igual hace que tus scripts se vean más "pro"showProcess "sleep 5" "Titulo de la Ventana" "por favor espere
" 
showQ

Este ya es todo un clásico... tiene dos modos de funcionamiento: mensaje y pregunta.
Comenzaré explicando el modo de mensaje:
Basándome de una vez en el ejemplo, lo llamas haciendo
ojo con el 2, es vital para que aparezca como mensaje, para que salga solo el botón Aceptar/OK.showQ "Titulo de la Ventana" "mensaje" 2
Ahora viene el modo de pregunta:
Basándome de una vez en el ejemplo, lo llamas haciendo
Si el usuario elige Si, la variable $? contendrá la respuesta: 1showQ "Titulo de la Ventana" "pregunta?" 1
Si el usuario elige No o cancela, la variable $? contiene la respuesta: 0
asi que podemos hacer
o también podemos hacershowQ "titulo" "pregunta" 1
respuesta=$?
if [ $respuesta = "1" ]; then
# CODIGO SI EL USUARIO ELIGE "SI"
else
# CODIGO SI EL USUARIO ELIGE "NO"
fi
en este último caso si el usuario elige "NO", simplemente se omiten los pasos encerrados por las llaves. Recuerden que la llave para cerrar (la compañera de " { ") es convertida por ** por la plataforma del foro ¬¬'showQ "titulo" "pregunta" 1 || {
# CODIGO SI EL USUARIO ELIGE "SI"
**
showRadio

Este nos ofrece una lista de clásicos Radio Buttons, o mejor dicho, una lista de selección única. Para mostrarla usamos
y nos devuelve, en la variable "eleccion" el índice del ítem que el usuario eligió. En el caso del ejemplo, nos devolverá 1, 2, o 3 según la opción, y 0 si el usuario canceló. Este valor quedará almacenado en la variable "eleccion".eleccion=showRadio "Titulo" "Mensaje" "opcion1" "opcion2" "opcion3" .... "opcion-n"
showTextEntry

Ahora podemos pedirle alguna entrada de texto al usuario. También podemos pedirle una entrada de texto en modo contraseña.
El modo de uso es:
en donde $MODO vale 0 para el modo de entrada de texto normal, y 1 para el modo de contraseñas.texto=showTextEntry $MODO $TITULO $MENSAJE
$TITULO y $MENSAJE obviamente corresponden al título de la ventana y al mensaje a mostrar sobre la textbox.
El texto que el usuario ingrese sea almacenará en la variable que se elija, en este caso, en "texto". Si el usuario cancela o no ingresa texto alguno y acepta, la variable quedará vacía.
Este ejecutable ya viene incorporado en la nueva versión de hidefolders, con password protection
showTimePicker

Por último, este ejecutable nos permite pedirle una hora al usuario. Se usa de esta forma
Donde $HH y $MM corresponden a la hora y minutos que queremos mostrar inicialmente, en formato militar (24 Horas). Si no colocamos estos parámetros, showTimePicker asumirá y mostrará la hora actual. Este programa devuelve la hora en formato HHMM y en el caso del ejemplo lo almacena en la variable "hora". Si se almacenara la hora del ejemplo, la variable almacenaría el valor 1205.hora=showTimePicker $HH $MM
pfff... casi no acabo... creo que soy fanático de los post largos xDLast edited by Mr.Parkin; 11-21-2011 at 04:04 PM. Reason: NO TENGO PORQUE EXPLICARTE, JODER! ¬¬'
Motorola Atrix 4G :P
-
16 Users Say Thank You to Taurnil For This Useful Post
==hisshiiis== (01-12-2011), adriangatillo (06-23-2007), Av3LaR (11-25-2008), Deadly Nightmare (12-30-2010), fabri (12-05-2007), GIUDECCA (06-18-2011), JoRgrOckErO (05-03-2011), metroyz (10-30-2009), morpheus_mtx (02-15-2010), Mr.Parkin (11-21-2011), newbier (06-22-2007), OCM (08-06-2009), spongebob1981 (10-02-2007), tatitto_007 (07-28-2010), tramnet (11-06-2008), _X_ (06-23-2007)
- 06-22-2007, 01:04 PM #3
gracias taurnil

por toda la info.... solo una pregunta que el celular no trae los codigos binarios que pusiste para bajar en el primer post... por lo tanto que se hace se empaquetan esos archivos en un mpkg no?
saludos
y felicitaciones otra vez por el posta muy interesante
- 06-22-2007, 02:17 PM #4
Si, como no los trae debes meterlos en la misma carpeta del mpkg.
por tanto al ejecutarlos debes asegurarte de ponerlos en dar la ruta adecuada. Pero eso ya es scripting. Y está por fuera de los alcances de este thread
Motorola Atrix 4G :P
- 06-22-2007, 08:43 PM #5
So I Hear You Can Mod
- Join Date
- May 2007
- Posts
- 120
- Thanks
- 7
- Thanked 5 Times in 5 Posts
- Downloads
- 28
- Uploads
- 0
muuy muuuy bueno.. pero haora estoy mas emosionado cn perl :P
d a poco esto se pone bueeeeno!!
- 06-23-2007, 10:52 PM #6
santa maría.....
oie me explicas pk editaste tu thread?
sticky....
no escribiste tanto en vano...Last edited by adriangatillo; 06-23-2007 at 10:52 PM. Reason: Automerged Doublepost
ROKR E2... Stolen modded to hell
MAXX V6 USB Kissed of Death branded
[B]ZN5!!! Take a Picture

Katze HAPPY MODDING
- 06-24-2007, 05:06 PM #7
- 06-24-2007, 06:08 PM #8
Itty Bitty Modder
- Join Date
- Feb 2007
- Location
- Tabasco City
- Posts
- 7
- Thanks
- 0
- Thanked 1 Time in 1 Post
- Downloads
- 111
- Uploads
- 0
Oye que buena onda, mira yo lo baje el MP Conge en chino, ahi trae todas esas opciones y otras mas,pero que bueno que lo tienes en ingles o español.
- 06-24-2007, 07:43 PM #9Me preguntas a mi? hmm... ortografíaoie me explicas pk editaste tu thread?
sticky....
no escribiste tanto en vano...
__________________
gracias por hacerlo sticky ^^Motorola Atrix 4G :P
-
The Following User Says Thank You to Taurnil For This Useful Post:
tramnet (08-28-2008)
- 06-25-2007, 04:27 PM #10lo preguntaba por eso :PLast edited by Taurnil : 06-22-2007 at 12:55 PM. Reason: NO TENGO PORQUE EXPLICARTE, JODER! ¬¬'
ni me digas de la ortografía u_u
perdón... ortojrafyáLast edited by adriangatillo; 06-25-2007 at 04:27 PM. Reason: Automerged Doublepost
ROKR E2... Stolen modded to hell
MAXX V6 USB Kissed of Death branded
[B]ZN5!!! Take a Picture

Katze HAPPY MODDING
- 06-26-2007, 11:12 AM #11
buen enpuje para crear aplic, en el 48 ultimate creo que trae todas la librerias y una basica explicacion del funcionamiento de cada una, pero sin duda esta es la mejor.
¤+Åb®åxå§+¤ - Abraxas es el sol y, a la vez, el abismo eternamente arrollador del Vacío, del Diablo.
- 06-26-2007, 11:22 AM #12
- 07-09-2007, 12:03 PM #13
steel00, que tiempo llevas utilizando la 48pUltimate?
No se te ha dañado tu SD?
- 07-09-2007, 01:13 PM #14
- 07-09-2007, 02:13 PM #15
Ok la probaré de nuevo pero la 48pultimate no se puede bloquear aplicaciones, porque?


LinkBack URL
About LinkBacks
Reply With Quote





