PDA

View Full Version : [Guia] Scripts con Interfaz de Usuario nativa desde Bash


Taurnil
06-22-2007, 08:45 AM
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 (http://www.modmymoto.com/forums/showthread.php?t=25524)


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* (http://www.4shared.com/file/18419209/f1e846a/show.html) También lo adjunté usando la herramienta del foro.

Taurnil
06-22-2007, 09:51 AM
showColorPicker

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

http://img238.imageshack.us/img238/6664/showcolorpickerhb7.png

showColorPicker devuelve el color elegido por printf. Así que si queremos capturar ese color en una variable, debemos hacer
mi_color=$(./showColorPicker) # o
mi_color=`./showColorPicker` # ojo que son comillas inversas o tildes inversas

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.


showDatePicker

http://img246.imageshack.us/img246/3342/showdatepickerhk6.png http://img401.imageshack.us/img401/957/showdatepicker2nx2.png

Presenta un selector de Fecha, con la posibilidad de abrir el calendario para elegirla, o especificarla elemento a elemento.
mi_fecha=$(showDatePicker AAAA MM DD) # o bien
mi_fecha=`showDatePicker AAAA MM DD`
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).
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

http://img182.imageshack.us/img182/1547/showmultiselectnp8.png

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


showNotify

http://img441.imageshack.us/img441/982/shownotifykk3.png

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:
showNotify "Titulo" "Mensaje: Hola Mundo"
Simple, no? :)


showNumPicker

http://img526.imageshack.us/img526/3065/shownumpickergr6.png

Mediante este ejecutable podremos mostrar un selector numérico, con un rango especificable, de la siguiente forma:
numero_elegido=$(showNumPicker $MIN $MAX $VALOR) # o bien
numero_elegido=`showNumPicker $MIN $MAX $VALOR`
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.
Para generar el ejemplo en pantalla, se hace
showNumPicker 1 10 6
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).
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

http://img522.imageshack.us/img522/671/showprocesscd9.png

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:
showProcess "sleep 5" "$PROCESO" "$TITULO" "$MENSAJE"
Donde $TITULO y $MENSAJE corresponden, respectivamente, al título de la ventana emergente y al texto que aparece sobre la barra.
$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:
showProcess "sleep 5" "Titulo de la Ventana" "por favor espere :)"
Se que es medio tricky pero igual hace que tus scripts se vean más "pro" ;)


showQ

http://img259.imageshack.us/img259/419/showq2jn3.png http://img255.imageshack.us/img255/3930/showqgm2.png

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
showQ "Titulo de la Ventana" "mensaje" 2
ojo con el 2, es vital para que aparezca como mensaje, para que salga solo el botón Aceptar/OK.

Ahora viene el modo de pregunta:
Basándome de una vez en el ejemplo, lo llamas haciendo
showQ "Titulo de la Ventana" "pregunta?" 1
Si el usuario elige Si, la variable $? contendrá la respuesta: 1
Si el usuario elige No o cancela, la variable $? contiene la respuesta: 0
asi que podemos hacer
showQ "titulo" "pregunta" 1
respuesta=$?
if [ $respuesta = "1" ]; then
# CODIGO SI EL USUARIO ELIGE "SI"
else
# CODIGO SI EL USUARIO ELIGE "NO"
fi


o también podemos hacer
showQ "titulo" "pregunta" 1 || {
# CODIGO SI EL USUARIO ELIGE "SI"
**
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 ¬¬'


showRadio

http://img518.imageshack.us/img518/6109/showradioqd7.png

Este nos ofrece una lista de clásicos Radio Buttons (http://en.wikipedia.org/wiki/Radio_buttons), o mejor dicho, una lista de selección única. Para mostrarla usamos
eleccion=showRadio "Titulo" "Mensaje" "opcion1" "opcion2" "opcion3" .... "opcion-n"
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".


showTextEntry

http://img254.imageshack.us/img254/4760/showtextentry1ya5.png http://img338.imageshack.us/img338/1792/showtextentry2mn6.png

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:
texto=showTextEntry $MODO $TITULO $MENSAJE
en donde $MODO vale 0 para el modo de entrada de texto normal, y 1 para el modo de contraseñas.
$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

http://img529.imageshack.us/img529/6257/showtimepickerfz2.png

Por último, este ejecutable nos permite pedirle una hora al usuario. Se usa de esta forma
hora=showTimePicker $HH $MM
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.

pfff... casi no acabo... creo que soy fanático de los post largos xD

steel00
06-22-2007, 01:04 PM
gracias taurnil :D:D 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 :D

Taurnil
06-22-2007, 02:17 PM
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 ;)

_X_
06-22-2007, 08:43 PM
muuy muuuy bueno.. pero haora estoy mas emosionado cn perl :P
d a poco esto se pone bueeeeno!!

adriangatillo
06-23-2007, 10:52 PM
santa maría.....


oie me explicas pk editaste tu thread?

sticky....

no escribiste tanto en vano...

steel00
06-24-2007, 05:06 PM
ok... solo tenia esa duda... weno en fin muy wnea la guia.. ya la toy utilizando :D
saludos

gastongtx
06-24-2007, 06:08 PM
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.

Taurnil
06-24-2007, 07:43 PM
oie me explicas pk editaste tu thread?

sticky....

no escribiste tanto en vano...
__________________
Me preguntas a mi? hmm... ortografía :blush:
gracias por hacerlo sticky ^^

adriangatillo
06-25-2007, 04:27 PM
Last edited by Taurnil : 06-22-2007 at 12:55 PM. Reason: NO TENGO PORQUE EXPLICARTE, JODER! ¬¬'

lo preguntaba por eso :P

ni me digas de la ortografía u_u

perdón... ortojrafyá

abraxas
06-26-2007, 11:12 AM
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.

steel00
06-26-2007, 11:22 AM
si en esa fw estan todas las librerias ^^ osea que los mpkg's seran mas facil de hacer :D

jupamomo
07-09-2007, 12:03 PM
steel00, que tiempo llevas utilizando la 48pUltimate?
No se te ha dañado tu SD?

steel00
07-09-2007, 01:13 PM
ya voy como 2 semanas con la fw y no ha pasado nada... es mas mi Sd anda tan bien que hasta tiene particion swap de 100MB :D

jupamomo
07-09-2007, 02:13 PM
Ok la probaré de nuevo pero la 48pultimate no se puede bloquear aplicaciones, porque?

Xummoner
07-09-2007, 02:23 PM
Lo de bloquear las aplicaciones es una incompatibilidad o un problemilla que hay con un script ahi, esperemos que se pueda arreglar pronto, yo le he dado vueltas y no me da la cabeza que se podra hacer.

En cuando a las tarjetas SD corruptas o que no funcionen correctamente es por conectar el cell en modo Memory Card a Windows sin desmontar las particiones Swap y/o EXT3 previamente.
Esto solo pasa en window$ creo, porque yo conecto mi cell en Ubuntu sin desmontar y no pasa nada, todo funciona perfectamente y el telefono no se pega (o tilda, enclutcha, brickea, despapaya o como le digan en sus respectivos paises, hehehe).

jupamomo
07-09-2007, 02:32 PM
Ok gracias por la info

meny
07-09-2007, 04:07 PM
a mi no e e ha encluchado el cel y eso k no le desmonto la sd y uso guindos pero no pork me de guevadesmontarla sino k se me olvida siempre :p

fcarmona
08-06-2007, 08:39 AM
Hola, buen día.
Se que este es post es medio viejo, pero ando en busqueda de todo el paquete show para motorola a1200 - motoming. Alguien podrá ayudarme e informarme a donde lo puedo conseguir?

salu2

Taurnil
08-06-2007, 08:48 AM
Hola, buen día.
Se que este es post es medio viejo, pero ando en busqueda de todo el paquete show para motorola a1200 - motoming. Alguien podrá ayudarme e informarme a donde lo puedo conseguir?

salu2
No lo hay, que yo sepa. Pero puedes probar los comandos en telnet, p.e., en el E6 funciona el ShowQ :)

PS: este es un thread viejito pero importante... (al menos para mi) ^^

fcarmona
08-06-2007, 09:12 AM
Ayuda!!!

ando en busca de los binarios de Show para mi a1200, alguién sabrá de donde bajarlos o como conseguirlos?

Salu2

Taurnil
08-06-2007, 09:34 AM
...
No lo hay, que yo sepa. Pero puedes probar los comandos en telnet, p.e., en el E6 funciona el ShowQ

argensis
11-26-2007, 02:11 PM
Muchas gracias por la guía Taurnil!!

john_doe
03-06-2008, 05:02 PM
Taurnil, tu tutorial es genial! Solo quisiera consultarte algo. Si no dispones de los binarios para a1200, sabés si hay una forma de conseguir el fuente de esos programas para compilarlos para un target a1200?....

Y? Alguien logró hacerlos andar en el a1200??

Miles de Gracias!!!

Taurnil
03-07-2008, 06:54 AM
no funcionan en el a1200, para este hay algunos binarios pero no solo no se manejarlos, sino que no dispongo de ellos.

jmoncayo
07-01-2008, 09:37 PM
Taurnil, muy bueno tu aporte, realmente bueno ya que no es necesario java y las aplicaciones corren en modo nativo. =] queria saber si hay algun item para escribir como en los mensajes de texto..

Antrax_akb
10-30-2008, 12:06 PM
Taurnil hola que tal, estaba pasando por aki y me di cuet¿nta de ese sticky, y pus como tengo windows no puedo hacerlo ya que se puede compilar y hacer esto, jejeje y pus tampoko se usar mucho linux, xD

pero eso es aparte, estoy haciendolo correr por medio del cel, jejejeje bueno mi pregunta es:

- Mira yo se programacion, como java, c#, visual basic y todas esas cosas que trabajan sobre windows, y pus quiero impresionar a mi profe, mostrandole un programa que trabaje en el celular, por el nativo en bash, estuve leyendo y eh aprendido varias cosas, pero lo que realmente me interesa es poder trabajar sobre ficheros(no se si se pueda aki?), y pus lo mas fundamental , como puedo capturar en una variable una cadena de texto????, lo estuve intentando eh intentando, y nada, jejejejeje

parezco newie, xD y pus como es muy diferente a los lenguajes que te mencione arriba pus ni maiz, jeje, tampoko pude hacer funcionar el textEntry, con decirte que nisiquiera aparecio el textbox, xD

mira por ejemplo

#Creo una variable no?
texto= #Aki es donde quiero ingresar un texto (por ahora sin el textEntry)
#Y mostrarlo
showQ "Titulo" "${texto**(corchete cerrado)" 2 #y que aparezca mas o menos asi

te digo lo eh intentado, pero nunca me aparece nada, o luego solo aparece showQ.

mira yo se que me vas a decir que vea en los tutos que estan en sticky tmb, eso ya lo revise y todo pero es un poko diferente a como este treadh que es con interfaz, y pus quiero ver si mas adelante puedo aportar con algo, pork como que siempre nadamas pregunto, jeje y me siento un poko mal....

mira para no estar haciendo mucho spam, no se si me permitan agregarlos al msn, lo que quieran ayudarme, jejeje porfa


salu2.

luks10100
10-31-2008, 10:52 AM
Lo bueno de los foros, es que siempre alguien lo preguntó antes ^^ , jaja. A ver si es esto lo que queres.. http://modmymoto.com/forums/showthread.php?t=281201&highlight=nuevo (Mira el ultimo post de la primer pagina, y el primer post de la segunda página.. A ver si te ayuda)

Cualquier duda pregunta ;)

Antrax_akb
11-01-2008, 09:37 PM
grax me ha sido de ayuda,

pero ahora tengo otro problemas, jejejejejeje

mira creo un arreglo de objetos donde se van a almacenar varios nombres, ejem:

nom[0]=Antonio
nom[1]=Mario....etc.

bueno ahoria necesito mostrarlos en showradio, el problema es k quiero que aparescan los nombres del arreglo y a cada uno se le pueda hacer una seleccion y mostrar digamos unas estadisticas no?
bueno no se si se pueda hacer eso , mira basicamente el programa debe ir asi:

bueno en la primera interfaz :
radio donde aparece
crear usuario
tabla
cerrar, y eso es todo o sea no es mucho
bueno en la interfaz de usuario es solo un textentry donde te pide el nombre y ya
en la interfaz de tabla hay un showradio donde aparece:
ventas ganadas/perdidas
posiciones (o sea el que mas lleve ventas va a aparecer en el 1er lugar y asi sucesivamente)
regresar
aki eh mi gran problema al entrar en la interfaz de ventas ganadas/perdidas, deben aparecer los nombres de los vendedores en un showradio o parecido. ya luego que seleccionas el vendedor aparece otro showradio(este ya es predefinido)donde te aparece
ganadas
perdidas
que al darle click pus automaticamente a un contador se vaya aumentando o decrementando dependiendo la opcion.

y en la tabla de posiciones otra vez salga el showradio y al seleccionar el vendedor pus salga un showQ, donde aparecen los valores de ventas y ya...

pus eso es lo que quiero hacer, en realidad no es nada complicado, solo que soy muy newie en eso de bash , aunque ya estoy leyendome un manaul, haber si me pueden hechar una mano no???, porfa.

salu2.

luks10100
11-02-2008, 09:09 PM
Lo que queres con respecto a mostrar el contenido de arreglos de variables.. Hay varias formas de hacerlo.
Por ejemplo podrías ir asignando el contenido de las variables a una sola variable concatenada añadiendole " .
Por ejemplo, este script muestra una lista de selección con 3 opciones, que son Pepe, Popo y Pupo:


#!/bin/bash

LIST=""Pepe" "Popo" "Pupo""
showRadio "Aplicacion" "Selecciona algo:" $LIST



Entonces con la ayuda de un bucle (Hasta que encuentre una variable del array vacía) vaya concatenando el contenido de las mismas dentro de una variable añadiendole las comillas (Para que quede de la forma que te lo mostre).. Y luego para saber cual se selecciono simplemente le asignas el valor de showradio a una variable, que contendrá el numero de la opcion seleccionada (Que seguramente coincidirá con el numero de la variable del array ;) )

Antrax_akb
11-02-2008, 11:28 PM
se puede asi???, jeje pus le voi a intentar, ya si no me sale, o si tengo algun error, voy a consultar contigo, jejejejeje


salu2

luks10100
11-03-2008, 11:21 AM
Claro que se puede ;) .. Eso si, la estructura de la cadena ya armada para pasarle como parametro al showradio tiene que ser EXACTAMENTE como te mostre.

Fully Evolved
08-29-2009, 09:49 AM
Hola Muchachos necesitaría su ayuda, ¿alguien me puede explicar las nuevas funciones de los binarios del proyecto Revival y actualizar la guía? Busque por todos lados y ni siquiera un Tuto en ingles encontré, hasta intente por medio de Telnet fijarme si los binarios tienen FAQ o archivos de ayuda y nada (No existen o no los puede hacer funcionar, creo).
Seria de mucha ayuda para todos, y se los agradecería un montón. Espero que alguno de los master me ayude.

SALUDOS:)

Mohamed David
09-07-2009, 02:36 PM
Los textos de ayuda de los binarios solo funcionan en ubuntu, no en telnet, dejame un tiempo y hago una nueva guia de como usarlos.

Fully Evolved
09-07-2009, 07:31 PM
Dale Moha, estaria genial