guia8 - Manejo de Xdialog.

UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACIÓN
CICLO: 01/2015
GUIA DE LABORATORIO #8
Nombre de la Practica: Manejo de Xdialog.
Lugar de Ejecución: Laboratorio de Redes, Edificio 3 del CITT
Tiempo Estimado: 2:30
MATERIA: Aplicaciones Para Redes
DOCENTES: Denis Altuve, Marvin Martínez
I. OBJETIVOS
Que el estudiante:


Comprenda el manejo de las librerías.
Pueda implementarlas según sus necesidad.
II. INTRODUCCION TEORICA
X-Dialog permiten el uso de ventanas y “cajas” para hacer la experiencia de interactuar con un
programa mas amena y mas fácil de entender por el usuario.
Xdialog es un buen substituto de dialog , y pose numerosas opciones típicas en cualquier lenguaje,
crear entradas de texto, lista de botones, botones de confirmación, diálogos yes-no, opción de abrir
archivo, texto editable, etc...
Ten en cuenta que Xdialog es compatible con dialog pero no al revés, es decir, todos los scripts hechos
con dialog funcionarán con Xdialog, puesto que este último acepta todas las opciones de dialog además
de ofrecer más funcionalidades. Un ejemplo es la ventana de menú, en dialog se llama "­­menu" y en Xdialog "­­menubox", aunque
Xdialog también acepta la sintaxis de dialog e interpreta "­­menu" como "­­menubox". Es buena práctica
por tanto, usar "­­menu" y así tus scripts podrán correr tanto en las X como en un terminal. III. MATERIALES Y EQUIPO
Para la
No.
1
2
realización de la guía de práctica se requerirá lo siguiente:
Requerimiento
PC de escritorio con Linux
Guía de laboratorio
Cantidad
1
1
IV. PROCEDIMIENTO
Parta poder utilizar las cajas de texto y las opciones comunes, siempre tiene que anteponerse la
palabra dialog.
Digiter cada uno de los pasos que a continuación se presentan, interpretarlo y cualquier duda
preguntar al docente:
Aplicaciones Para Redes
1
Guía # 8: Manejo de Xdialog.
1.Msgbox:
Utilizado para mandar un mensaje en la cual se terminara hasta que el usuario de aceptar.
SYNOPSIS
--msgbox text height width
Ejemplo 1
Ejemplo 2
Xdialog --msgbox "Hola" 0 0
Xdialog --msgbox "Hola" 0 0;\
case $? in
0)echo 0;;
255)echo 255;;
esac
#devuelve 0 si se da click en o.
#devuelve 255 si se da click en la x.
Ejemplo 3
Resultado
#!/bin/bash
DIALOG=Xd|ialog
$DIALOG --title "MESSAGE BOX" \
--icon warning.xpm \
--msgbox "Este es un mensaje con icono" 0 0
case $? in
0)
echo "OK";;
255)
echo "Box closed.";;
esac
2. Yesno:
Utilizado para esperar una respuesta del usuario en la cual se espera que sea si ò en caso contrario
no
SYNOPSIS
--yesno <text> <height> <width>
Ejemplo 1
Ejemplo 2
Xdialog --title "Titulo" --yesno "¿Quieres salir de #!/bin/bash
la aplicacion?" 0 0
Xdialog --title "Titulo" --yesno "¿Quieres salir de
la aplicacion?" 0 0
case $? in
0)echo 0;;
1)echo 1;;
255)echo 255;;
esac
Aplicaciones Para Redes
2
Guía # 8: Manejo de Xdialog.
Ejemplo 3
Ejemplo 4
Xdialog --title "Titulo" --help "Aqui va la Ayuda" #!/bin/bash
--yesno "Quieres salir de la aplicacion" 0 0
Xdialog --title "Titulo" --help "Aqui va la Ayuda"
--yesno "Quieres salir de la aplicacion" 0 0
case $? in
0)echo 0;;
1)echo 1;;
255)echo 255;;
esac
3. Infobox :
Utilizado para mandar mensajes al usuario, que depende de un tiempo o hasta que se presiona OK.
<timeout>=tiempo para cerrar el infobox, tiempo en milisegundos.
SYNOPSIS
--infobox
<text> <height> <width> [<timeout>]
Ejemplo1:
Xdialog --infobox "Mensaje" 0 0 5000
4.inputbox:
Utilizado para crear una caja de texto.
<init>=valor por defecto que aparecerá en la caja.
SYNOPSIS
--inputbox <text> <height> <width> [<init>]
Ejemplo 1
Ejemplo 2
Xdialog --backtitle "Titulo de fondo" --title if Xdialog --backtitle "Titulo de fondo" --title
"Titulo" --inputbox "Ingrese su nombre" 0 0 "Titulo" --inputbox "Ingrese su nombre" 0 0
"Rafael"
"Rafael" 2>algo
then
echo "Valor que se encuentra en el archvivo
algo"
cat algo
else
echo "Apretastes algo diferente de OK"
fi
Ejemplo 3
Resultado
#!/bin/bash
var=$(Xdialog --stdout --backtitle "Titulo de
fondo" --title "Titulo" --inputbox "Ingrese su
nombre" 0 0 "Rafael")
case $? in
0) echo "Valor ingresado: $var";;
1) echo "Presiono Cancelar";;
255) echo "Presiono en la \"x\" para cerrar
la caja";;
esac
Aplicaciones Para Redes
3
Guía # 8: Manejo de Xdialog.
Ejemplo4:
Solamente que utilizamos una de las opciones para que los caracteres se vean en forma de
asteriscos.
Xdialog --password --backtitle "Titulo de fondo" --title "Titulo" --inputbox "Ingrese su
nombre" 0 0 "Rafael"
5. 2inputsbox:
Utilizada para tener dos cajas de texto si se le agrega la opción de password, el password queda
por defecto a la ultima caja.
SYNOPSIS
--2inputsbox <text> <height> <width> <label1> <init1> <label2> <init2>
Ejemplo 1
Ejemplo2
Xdialog --password --2inputsbox "Validacion de usuario" 0 0 if Xdialog --password --2inputsbox "Validacion
"Ingrese su nombre" "" "Ingrese su password" ""
de usuario"
0 0 "Ingrese su nombre" ""
"Ingrese su password" "" 2>algo
then
echo "Valor que se encuentra en el
archvivo algo"
usuario=` cat algo | awk -F/ '{ print
$1 }'`
password=` cat algo | awk -F/ '{ print
$2 }'`
echo "Usuario:" $usuario
echo "Password:" $password
else
echo "Apretastes algo diferente de OK"
fi
Resultado en consola:
Valor que se encuentra en el archvivo algo
Usuario: Rafael
Password: Torres
Aplicaciones Para Redes
4
Guía # 8: Manejo de Xdialog.
Ejemplo 3
Resultado
#!/bin/bash
var=$(Xdialog --stdout --password --2inputsbox
"Validacion de usuario" 0 0 "Ingrese su nombre"
"" "Ingrese su password" "")
case $? in
0)usuario=$(echo $var | awk -F/ '{ print $1 }')
password=$(echo $var | awk -F/ '{ print $2 }')
if [ -z $usuario ]
then
Xdialog --infobox "Debe de ingresar un usuario"
0 0 5000
./prueba.sh
fi
if [ -z $password ]
then
Xdialog --infobox "Debe de ingresar
contraseña" 0 0 5000
./prueba.sh
fi
echo "Usuario:" $usuario
echo "Password:" $password;;
1) echo "Cancelar";;
255) echo "X";;
esac
una
6. 3inputsbox:
Utilizada para tener tres cajas de texto si se le agrega la opción de password, el password queda
por defecto a la ultima caja.
SYNOPSIS
--3inputsbox <text> <height> <width> <label1> <init1> <label2> <init2> <label3>
<init3>
Xdialog --password --3inputsbox "Validacion de if Xdialog --password --3inputsbox "Validacion de
usuario" 0 0 "Ingrese su nombre" "" "Ingrese su usuario" 0 0 "Ingrese su nombre" "" "Ingrese su
apellido" "" "Ingrese su password" "" 2>algo
apellido" "" "Ingrese su password" ""
then
echo "Valor que se encuentra en el archvivo
algo"
usuario=` cat algo | awk -F/ '{ print $1 }'`
apellido=` cat algo | awk -F/ '{ print $2 }'`
password=` cat algo | awk -F/ '{ print $3 }'`
echo "Usuario:" $usuario
echo "Apellido:" $apellido
echo "Password: " $password
else
echo "Apretastes algo diferente de OK"
fi
Aplicaciones Para Redes
5
Guía # 8: Manejo de Xdialog.
7. Gauge :
Sirve para crear una barra de progreso.
SYNOPSIS
--gauge <text> <height> <width> [<percent>]
Ejemplo 1
Ejemplo 2
(echo "25" ; sleep 3
x=0
echo "50" ; sleep 3
(
echo "75" ; sleep 3
while [ $x -le 100 ]
echo "100" ; sleep 3
do
)| Xdialog --title "GAUGE" --gauge "...:::Instalando:::..."
000
if [ "$?" = 255 ] ; then
echo "Box closed !"
fi
#comando de aplicacion
echo $x
x=$( expr $x + 25 )
sleep 3
done
)
|
Xdialog
---title
"...:::Instalando:::..." 0 0 0
Ejemplo 3
"GAUGE"
Resultado para los 3 ejemplo
( for I in 25 50 75 100
do
echo $I
sleep 3
done
) | Xdialog --gauge "...:::Instalando:::..." 0 0 0
8.Textbox :
Utilizado para leer un archivo.
SYNOPSIS
--textbox
<file> <height> <width>
Resultado
Ejemplo
Xdialog --title "EDIT BOX" --textbox menu.sh 24 75
case $? in
0) echo "OK";;
1)echo "Cancel pressed.";;
255)echo "Box closed.";;
esac
Aplicaciones Para Redes
6
--gauge
Guía # 8: Manejo de Xdialog.
9.Editbox:
Utilizado para leer una archivo y así poder editarlo y luego redireccionarlo cuando damos ok.
SYNOPSIS
--editbox
<file> <height> <width>
Ejemplo
Resultado
Xdialog --title "EDIT BOX" --editbox menu.sh 24 75
2>algo
case $? in
0)cat algo
echo "OK";;
1) echo "Cancel pressed.";;
255)echo "Box closed.";;
esac
10.Menubox:
Se utiliza para crear menús, se redirecciona a alguna archivo el cual contendrá el valor de la opción
seleccionada.
SYNOPSIS
--menubox
<text> <height> <width> <menu height> <tag1> <item1> {<help1>}.
Ejemplo1:
Xdialog --menu "MENU" 10 30 3 1 red 2 greem 3 blue
Aplicaciones Para Redes
7
Guía # 8: Manejo de Xdialog.
Ejemplo 2
Ejemplo 3
#!/bin/bash
Xdialog --menu "MENU" 10 30 3 1 red 2 green 3
blue 2>algo.txt;\
case $? in
0) echo "Escogistes la opcion de aceptar"
var=$(cat algo.txt)
rm -f algo.txt
case $var in
1)
Xdialog --msgbox "Escogistes la opcion
1: RED" 5 35;;
2)
Xdialog --msgbox "Escogistes la opcion
2: GREEN" 5 35;;
3)
Xdialog --msgbox "Escogistes la opcion
3: BLUE" 5 35;;
esac
;;
1) Xdialog --infobox "Escogistes la opcion de
cancelar" 8 45 5000;;
esac
#!/bin/bash
var=$(Xdialog --stdout --menu "MENU" 10 30 3 1
red 2 green 3 blue)
case $? in
0) echo "Escogistes la opcion de aceptar"
case $var in
1)
Xdialog --msgbox "Escogistes la opcion
1: RED" 5 35;;
2)
Xdialog --msgbox "Escogistes la opcion
2: GREEN" 5 35;;
3)
Xdialog --msgbox "Escogistes la opcion
3: BLUE" 5 35;;
esac
;;
1) Xdialog --infobox "Escogistes la opcion de
cancelar" 8 45 5000;;
esac
11.Buildlist:
Utilizado para agregar aquellos item que se desean seleccionar.
SYNOPSIS
--buildlist <text> <height> <width> <list height> <tag1> <item1> <status1>
Aplicaciones Para Redes
8
Guía # 8: Manejo de Xdialog.
Resultado:
En consola se podra observar este resultado: The user-built list is 1|3|4|6
12.Checklist:
Utilizado para que el usuario escoja varias opciones.
Paramentros:
<text>:texto <height>:alto <width>:ancho <list height>:altura de la lista
SYNOPSIS
--checklist <text> <height> <width> <list height> <tag1> <item1> <status1>
Aplicaciones Para Redes
9
Guía # 8: Manejo de Xdialog.
Ejemplo 1
Ejemplo 2
Xdialog --backtitle "Checklist" --separator "|" \
cheklist=`Xdialog
--backtitle
"Checklist"
--title "CHECKLIST BOX" \
--separator "|" --stdout --title "CHECKLIST BOX" \
--checklist "Escoja su equipo favorito" 0 0
--checklist "Escoja su equipo favorito" 0 0
5\
5\
"1" "Barcelona" on \
"1" "Barcelona" on \
"2" "Sevilla" on \
"2" "Sevilla" on \
"3" "Real Madrid" off \
"3" "Real Madrid" off \
"4" "Valencia" on \
"4" "Valencia" on \
"5" "Villareal" off \
"5" "Villareal" off \
"6" "Real Betis" off 2> algo.txt
"6" "Real Betis" off `
case $? in
case $? in
0)
0)
valores=`cat algo.txt`
echo $cheklist;;
echo $valores;;
1)
1)
echo "Presinastes cancelar";;
echo "Presinastes cancelar";;
255)
255)
echo "Cierre de Checklist";;
echo "Cierre de Checklist";;
esac
esac
Resultado:
en consola de lo que tiene el archivo algo.txt
1|2|4
->A partir del resultado deberá mostrar en una ventana de Xdialog los nombres de cada valor
seleccionado.
13. Radiolist:
Utilizado para que el usuario escoja varias opciones.
Paramentros:
<text>:texto <height>:alto <width>:ancho <list height>:altura de la lista
SYNOPSIS
--radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>
Aplicaciones Para Redes
10
Guía # 8: Manejo de Xdialog.
Ejemplo1
Ejemplo 2
radiolist=`Xdialog --backtitle "Radiolist"
Xdialog --backtitle "Radiolist" \
--stdout \
--title "RADIOLIST BOX" \
--title "RADIOLIST BOX" \
--radiolist "Escoja su equipo favorito" 0 0 5 \
--radiolist "Escoja su equipo favorito" 0 0 5 \
"Barcelona" "Barcelona" on \
"1" "Barcelona" on \
"Sevilla" "Sevilla" on \
"2" "Sevilla" on \
"Madrid" "Real Madrid" off \
"3" "Real Madrid" off \
"Valencia" "Valencia" on \
"4" "Valencia" on \
"Villarreal" "Villarreal" off \
"5" "Villarreal" off \
"Betis" "Real Betis" off 2>algo.txt
"6" "Real Betis" off `
case $? in
0)
case $? in
radiolistt=`cat algo.txt`
0)
rm algo.txt
echo $radiolist;;
echo $radiolistt;;
1)
1)
echo "Presinastes cancelar";;
echo "Presinastes cancelar";;
255)
255)
echo "Cierre de Radiolist";;
echo "Cierre de Radiolist";;
esac
esac
Resultado de ejemplo2
->A partir del equipo seleccionado mostrar en una ventana que se mantenga activa durante 5
segundos un mensaje que diga “Para mi este es el mejor equipo del mundo
nombre_equipo_seleccionado”.
Aplicaciones Para Redes
11
Guía # 8: Manejo de Xdialog.
14. Treeview:
Utilizado para crear un menú tipo árbol.
SYNOPSIS
--treeview <text> <height> <width> <list height> <tag1> <item1> <status1>
<item_depth1>
Ejemplo
Resultado
arbol=`Xdialog --stdout --title "TREE VIEW BOX" \
--treeview "treeview box demo" 18
32 4 \
tag1 uno off 0 \
tag2 uno_1 on 1 \
tag3 uno_1_1 off 2 \
tag4 dos off 0 \
tag5 dos_1 off 1 \
tag6 dos_1_1 off 2 \
tag7 dos_2 off 1 \
tag6 dos_2_1 off 2 \
tag6 dos_2_1_1 off 3 \
tag6 dos_2_1_2 off 3`
case $? in
0)
echo "$arbol";;
1)
echo "Presionaste cancelar";;
255)
echo "Cierre de la caja";;
esac
->Crear una ventana que se que se vea como la siguiente y al seleccionar un sistema operativo
mostrar el resultado en otra ventana.
Aplicaciones Para Redes
12
Guía # 8: Manejo de Xdialog.
15.Combobox
SYNOPSIS
--combobox
<text> <height> <width> <item1> ... <itemN>
Ejemplo
Resultado
combobox=`Xdialog --backtitle "Combobox"
--stdout \
--title "COMBOBOX" \
--combobox "Escoja su equipo favorito" 0 0 \
Barcelona \
Sevilla\
"Real Madrid"\
Valencia\
Villarreal\
"Real Betis"`
case $? in
0)
echo $combobox;;
1)
echo "Presinastes cancelar";;
255)
echo "Cierre de Radiolist";;
esac
->Crear un combobox el cual contenga cuatro materias técnicas de la carrera, las que mas le
gusten al seleccionar una mostrar en otra ventana el resultado.
16. Rangebox
SYNOPSIS
--rangebox <text> <height> <width> <min value> <max value> [<default value>]
Ejemplo
Resultado
VOLUME=`Xdialog --stdout --title "RANGE BOX" –
rangebox \ "fijar el volumen" 0 0 0 12 6`
case $? in
0)
echo "El volumen es de: $VOLUME.";;
1)
echo "Presionastes cancelar";;
255)
echo "Cierre de la caja";;
esac
17. 2Rangesbox
SYNOPSIS
--2rangesbox <text> <height> <width> <label1> <min1> <max1> <def1> <label2> <min2>
<max2> <def2>
Aplicaciones Para Redes
13
Guía # 8: Manejo de Xdialog.
Ejemplo
Resultado
VOLUME=`Xdialog --stdout --separator " " --title
"RANGE BOX" --2rangesbox "Escoja los
volumenes" 0 0 "Volumen1" 0 12 6 "Volumen2"
1 6 3`
case $? in
0)
echo "El volumen es de: $VOLUME.";;
1)
echo "Presionastes cancelar";;
255)
echo "Cierre de la caja";;
esac
18. Fselect
Utilizado para seleccionar archivos.
SYNOPSIS
--fselect <file> <height> <width>
Ejemplo
Xdialog --fselect /root/Desktop/ 0 0
19. Dselect
Utilizado para seleccionar directorios
SYNOPSIS
--dselect <directory> <height> <width>
Ejemplo:
Xdialog --dselect / 0 0
Aplicaciones Para Redes
14
Guía # 8: Manejo de Xdialog.
20. Colorsel
SYNOPSIS
--colorsel <text> <height> <width> [<red> <green> <blue>]
Ejemplo:
Xdialog --colorsel "Colores" 0 0
Salida en consola: 255 255 255
21. Calendar
SYNOPSIS
--calendar <text> <height> <width> [<day> <month> <year>]
Ejemplo
Xdialog --calendar "Calendario" 0 0 19 2 1986
Salida de en Consola:19/02/1986
22. Timebox
SYNOPSIS
--timebox
<text> <height> <width> [<hours> <minutes> <seconds>]
Ejemplo
Xdialog --timebox Tiempo 0 0 12 4 5
Salida en consola: 01:02:06
23.Spinbox
SYNOPSIS
--spinbox <text> <height> <width> <min value> <max value> <default value> <label>
Ejemplo
Xdialog --title "Titulo de la ventana" --spinbox "¿Qué nota le das a esta charla" 0 0 1 10 01 "Nota"
Aplicaciones Para Redes
15
Guía # 8: Manejo de Xdialog.
De forma similar a la opción inputbox, existen también –2rangesbox, –3rangesbox, –2spinsbox y –
3spinsbox.
Formato de Botones
Xdialog --buttons-style icon --yesno "Desea salir de la aplicacion" 0 0
Xdialog --buttons-style text --yesno "Desea salir de la aplicacion" 0 0
Xdialog --ok-label Aceptar --cancel-label Cancelar --yesno "Desea salir de la aplicacion"
00
Xdialog --no-buttons --infobox "Desea salir de la aplicacion" 0 0 5000
Xdialog --no-close --menu "Menu" 0 0 3 1 "Tabla de Multiplicar" 2 "Factorial" 3 Salir
(Desactivamos la x de salida, aunque se de click no responderá)
Aplicaciones Para Redes
16
Guía # 8: Manejo de Xdialog.
V. DISCUSION DE RESULTADOS
->Crear un programa que simule a una agenda, la cual permitirá
-Agregar contacto
-Eliminar contacto
-Buscar contacto
-Eliminar contacto
La opción de Agregar contacto deberá solicitar un nombre corto, el nombre completo y su correo
electrónico.
La opción de Eliminar contacto permitirá eliminar un contacto ingresando el nombre corto del
contacto.
La opción Buscar contacto permitirá buscar el contacto por medio de su nombre corto.
La opción eliminar contacto eliminara el contacto por medio de su nombre corto.
Debe existir un opción que permitirá ver todos los contactos.
Debe existir una opción de salir.
Nota: el programa deberá terminar únicamente con la opción salir, si da click en la “X” esta no
deberá hacer nada, esto debe ser en todas las ventanas.
->Crear un script el cual solicitara el nombre de un archivo, luego pedirá los permisos (rwx) del
dueño, permisos (rwx) del grupo y los permisos (rwx) de los demás usuarios y por ultimo deberá
mostrar los permisos del archivo, el script deberá estar validado en todo aspecto por ejemplo si se
le pasa un directorio y no un archivo regular mostrar un mensaje de error.
->Crear un script que me permita llamar a cada uno de los ejemplos por medio de una ventana de
menú de Xdialog, el programa deberá mantenerse activo y deberá terminar solo cuando el usuario
le de click al botón de salir del menú principal, caso contrario se mantendrá activo.
Aplicaciones Para Redes
17