domingo, 26 de septiembre de 2010

Agenda en Bash

#!/bin/bash

#############################################################
#Agenda Personal v 0.1
#Autor: DnitraM
#Creado: mar 27 mar 2007 01.53.33 ART
#Copyleft
#############################################################
# Modificaciones de la version 1.0
# añadir nueva funcion para modificar la lista de contactos
# sacar los permisos de lectura-escritura si se esta usando
# el fichero donde alojamos los datos para mayor seguridad =)
#############################################################


#### Asignaciones ####

declare -a agen
contactos=${HOME}/.contactos.txt
titulo="Agenda Estudiantes de Ingenieria "


###########@@@@@@@@@@@@@@######### Declaracion de Funciones ###########@@@@@@@@@@@@@@#########

informacion () {

cat > /tmp/infaGenda.txt <<>
GNOME Documentation Project (ja! ya quiere)
GNU Fundation (Doble jaja)"

Traducido por: Todavia nadie, pero quien quiera hacerlo
que lo haga, sera un gusto ver esto en
otro idioma =)

Dedicada: Para <>
Y los muchachos del GULCAr

##### Licencia #####

Este programa es software libre; puede redistribuirlo
y/o modificarlo bajo los términos de la Licencia Pública
General de GNU tal como se publica por la Free Software
Foundation; ya sea la versión 2 de la Licencia,
o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que
le sea útil, pero SIN NINGUNA GARANTÍA; sin incluso la
garantía implícita de MERCANTILIDAD o IDONEIDAD
PARA UN PROPÓSITO PARTICULAR. Vea la Licencia
Pública General GNU para más detalles.

AYUDA
zenity --text-info --title "Creditos - $titulo" --filename=/tmp/infaGenda.txt && rm -f /tmp/infaGenda.txt

}


salir () {

chmod -rw $1 # FUNCION SALIR SACANDO LOS PERMISOS A EL FICHERO DE LOS CONTACTOS.
reset ; exit 0
}

llena () {

printf "Ingreso: " >> $contactos
date >> $contactos
printf "\n" >> $contactos

echo Nombre: ${agen[0]} >> $contactos
echo Apellido: ${agen[1]} >> $contactos # FUNCION QUE SE ENCARGA DE LLENAR AL FICHERO CO
echo Telefono: ${agen[2]} >> $contactos # CON LOS DATOS INGRESADOS EN LA FUNCION INCONTACTOS.
echo Celular: ${agen[3]} >> $contactos

printf "\n#-----------------------#\n\n" >> $contactos

zenity --question --title "$titulo" --text "Desea ingresar otro contacto? "

if [ $? -eq 0 ]; then

incontacto
else
menu
fi

}


incontacto() { # FUNCION INGRESE DE CONTACTOS #

agen[0]=`zenity --entry --title "$titulo" --text "Nombre" `
if [ $? -eq 0 ]; then
agen[1]=`zenity --entry --title "$titulo" --text "Apellido" `
if [ $? -eq 0 ]; then
agen[2]=`zenity --entry --title "$titulo" --text "Telefono" `
if [ $? -eq 0 ]; then
agen[3]=`zenity --entry --title "$titulo" --text "Celular" `
if [ $? -eq 0 ]; then

llena # LLEVAMOS EL CONTENIDO INGRESADO A LLENA
else # PARA SER GRABADOS EN EL ARCHIVO.

zenity --error --text="Interrumpio la operacion \
de ingreso de celular"
fi
else
zenity --error --text="Interrumpio la operacion \
de ingreso de Telefono"
fi
else
zenity --error --text="Interrumpio la operacion \
de ingreso de Apellido"
fi
else
zenity --error --text="Interrumpio la operacion \
de ingreso de Nombre"
fi

}



buscontacto () { # FUNCION BUSQUEDA DE CONTACTOS

local tmpbusqueda=/tmp/busqueda

bnombre=`zenity --entry --title "$titulo" --text "Ingrese el nombre a buscar: " `

if [ $? -eq 0 ]; then

grep -R -A 5 $bnombre $contactos > $tmpbusqueda # -A sirve para que le digamos cuantas lineas va a # mostrar en este # caso (5).
# -R Recursivo, Lee todos los archivos bajo el # directorio parado

if [ -s $tmpbusqueda ]; then

zenity --text-info --title "$titulo" --filename=$tmpbusqueda && rm -f $tmpbusqueda
else
zenity --error --title "$titulo" --text "Contacto no encontrado...\n"
fi

zenity --question --title "$titulo" --text "Desea buscar otro contacto? "

if [ $? -eq 0 ]; then

buscontacto
else
menu
fi

else

zenity --error --title "$titulo" --text "Porfavor ingrese el nombre del contacto que esta buscando...\n\n"
buscontacto
fi

}


menu () {

while true
do
ELECCION=`zenity --title="$titulo" --list --text="Seleccione una operacion a realizar de la lista."\
--radiolist --width="355" --height="290" --column="" --column="#" --column="Operacion"\
--column="Descripcion"\
false 1 "Altas" "Ingresar un contacto" \
false 2 "consulta" "Buscar un contacto" \
false 3 "Creditos" "Informacion de aGenda" \
false 4 "Salir" "Cerrar el programa"`

if [ $? -ne 0 ]; then

salir $contactos
else
case $ELECCION in

1) incontacto ;;
2) buscontacto ;;
3) informacion ;;
4) salir $contactos ;;

esac
fi
done
}

if [ -e $contactos ]; then
chmod +rw $contactos
menu
else
touch $contactos
menu
fi