domingo, 26 de octubre de 2008

La presentación es importante

Hasta ahora, en mis scripts de Linux había utilizado zenity para la interfaz gráfica, pero se me quedaba en ocasiones un poco corto, así que hoy os voy a hablar de Glade3 (lo cual se me queda MUY grande XD).

En primer lugar, aclarar que no tengo ni idea sobre esto de lo que os voy a hablar ahora :p, lo que significa que hay métodos mucho más elegantes y con mejores resultados, y que cualquiera que no sea novato en esto, no se debería molestar en leer esta entrada :p.

Esta entrada va dirigida a gente que, como yo, intenta mejorar el aspecto gráfico de sus primeros scripts sin perder tampoco demasiado tiempo en aprender programación orientada a objetos.

Veamos el siguiente vídeo:


En él hemos generado una interfaz como esta:

(Click para ampliar)

Al darle a "Aceptar", el programa devuelve un texto como el siguiente:

Aceptar=""
Salir=""
aburrimiento="90,50"
chorrada="Hola"
fixed1=""
image1=""
solo="false"
textview1="Este programa no vale para nada, sólo es una solemne chorrada para ilustrar lo chulo que es usar Glade... aunque, evidentemente, se pueden hacer cosas mucho más interesantes que la gilipollez que os muestro en estos momentos hecha en 5 segundos."
textview2="Escriba aquí una chorrada:"
textview3="Por favor, indique el grado de aburrimiento que tiene como para leer este ejemplo"
todo="true"
visitaaw="true"
window1=""
EXIT="Aceptar"


Cuando estaba creando la interfaz con Glade3, he definido la señal de hacer click en el botón "Aceptar" para que devuelva "EXIT:Aceptar", por eso sé que hemos dado al botón aceptar, y gracias a eso podremos utilizar esa información en nuestro script. Por ejemplo:

if [ $EXIT = Aceptar ]; then (se ejecuta el programa) ; done

El problema es que de momento no tenemos la variable "EXIT" (ni ninguna otra) definida, así que para ello vamos a aprovechar que el programa nos devuelve un texto para extraer de él información.

Lo primero (conceptualmente hablando, a la hora de programar no se tiene que hacer necesariamente en primer lugar) es guardar el texto, para ello hacemos:

igualdades=`gtkdialog -g Glade/Tubeglad.glade -p window1 | grep "\="`

La orden "gtkdialog -g PROYECTO.glade -p VENTANA" abre la ventana "VENTANA" que hayamos creado dentro del proyecto "PROYECTO.glade". Del texto que hemos visto que devuelve el programa, seleccionamos las igualdades gracias al último "grep" (que lo que hace es localizarlas).

Una vez teniendo el texto con la información, hay que analizarlo y extraer las variables de él. Para ello, definimos la siguiente función:

function def {
echo $igualdades | grep -o "$1\=\"[[:print:]]*\"" | sed 's/'$1'\=//g' | sed 's/\"//g' | sed 's/ /\t/g' | awk '{print $1}'
}


La función def selecciona el valor asociado a la variable que introduzcamos como argumento. Esta función tiene sus pegas, por ejemplo, no admite cadenas de caracteres con espacios. Sin embargo, puede sernos útil, puesto que ahora podemos escribir:

EXIT= `def EXIT`

Y tendremos la variable "EXIT" definida (y de igual manera, si cambiamos la palabra "EXIT" por cualquier otra variable).

Quizá te interese...

1 comentario:

  1. m gustan más los tutoriales en los k lo explikas a voz en vivo en el youtube,k palabrejas más raras t inventas para describir la cosas ajajaa...interfaz??....eso k se pone en los ojos????
    ajajaja
    yo kreo k deberiamos kedar para k m explikes cómo se hace lo del reproductor,ya k estás escondido por la red...kreo k estás ya en la escapadita,..ajajaja...
    al final aún no h podido ver su foto pq no se m abría el link,voy a ver si explikas por akí lo del reproductor y sino volveré a buscar tu vídeo y luego buscaré la espada ajajja..lo k t arriesgas comprando por internet...

    ResponderEliminar

Querido astarothista!,

Si te ha gustado la entrada y quieres dejar constancia de ello, tienes alguna sugerencia para completarla o corregirla, quieres mostrar tu opinión respecto a algo de lo que se haya hablado en esta entrada (con respeto) o simplemente quieres dejarme un mensaje a mi o a la comunidad, no dudes en comentar ;)!

Recuerda que también estamos en Facebook y en Google+.