#!/bin/bash
#----------------variabili globali---------------------------------
utente_attivo=$(whoami)
pass=""
file=""
confronto=""
#----------------accettazione licenza---------------------------
msg="Script diff_file.sh scritto da Ciro Nuzzo il 28/03/2009
   reperibile sul sito http://proglinux.altervista.org
Script rilasciato sotto Licenza Creative Commons:
leggi http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it
---------------------------------------------------------
Lo script utilizza il pacchetto xxdiff per visualizzare due file, oppure due directory, da confrontare in contemporanea nelle sue due finestre di scrolling e usando i colori per evidenziare le differenze fra di loro e può essere utilizzato per produrre una loro fusione.
Accetti i termini di licenza?"
if ! zenity --question --text "$msg";then
	exit 0
fi
#-----------------funzioni-------------------------
function domanda () {
#chiamare con testo domanda
#restituisce finestra con testo domanda con bottoni Ok per rispondere si o annulla per rifiutare
zenity --question --text "$1"
}
function avviso () {
#chiamare con testo messaggio tipo messaggio
zenity --info --text="$1"
}
function errore () {
#chiamare con testo messaggio tipo messaggio
zenity --error --text="$1"
}
function attenzione () {
#chiamare con testo messaggio tipo messaggio
zenity --warning --text="$1"
}
function gest_err (){
if [ $? != 0 ]
then 
gdialog --title "Visualizza Errori" --textbox /tmp/prv.$$ 22 72
elif [ $# = 1 ];then
avviso "$1 OK"
fi
rm -rf /tmp/prv.$$ 2> /dev/null
}

function get_password () {
pass=`zenity --entry --hide-text --text="immetti la password di $utente_attivo:"`
if [ $? != 0 ]
then 
exit
fi
#azzera il timestamp di sudo (quello che vi consente di non digitare la password se ripetete sudo entro tot tempo)
sudo -k
#cancella completamente il timestamp
sudo -K
#verifica validita' password
echo "$pass" | sudo -S ls > /dev/null
if [ $? != 0 ];then
errore "Password errata. Termino lo script"
exit 1
fi
}
menu () { 
gdialog --menu "Scegli tra chi operare il confronto" 0 0 0 1 "file" 2 "directory" 2> /tmp/menu.$$
opt=`cat /tmp/menu.$$`
rm -rf /tmp/menu.$$
}
confronta=`which xxdiff`
if [ "$confronta" = "" ];then
	if domanda "xxdiff non presente. Vuoi Installarlo ?";then
		echo "$pass" | sudo -S apt-get install xxdiff >|/tmp/prv.$$ 2>&1
		gest_err "Installazione xxdiff"
	else
		avviso "Confronto file ANNULLATO!"
		exit 1
	fi
fi 
get_password
#Se gdm e' Gnome, inserimento script nel Menu' di Gnome
if [ -e "/etc/gdm/gdm.conf" ];then
if [ ! -e "/usr/share/applications/diff_file.desktop" ];then
nome_script=`basename "$0"`
echo "$pass" | sudo -S mv $0 /usr/local/bin/$nome_script
txt_file="[Desktop Entry]
Name=Differenze Files
Comment=Confronta file o directory
Exec=/usr/local/bin/$nome_script
Icon=file-manager
Terminal=false
Type=Application
Categories=Application;System;"
echo -e "$txt_file" > diff_file.desktop
echo "$pass" | sudo -S mv ./diff_file.desktop /usr/share/applications/
avviso "Questo Script e' stato inserito nel Menu' Applicazioni--Strumenti di Sistema--Differenze Files da cui e' possibile lanciarlo."
fi
fi
while true; do
menu
case $opt in
1)
file=`zenity --file-selection --title "seleziona il primo file da confrontare"`;
confronto=`zenity --file-selection --title "seleziona il secondo file da confrontare"`;
echo "$pass" | sudo -S xxdiff "$file" "$confronto";;
2)
file=`zenity --file-selection --title "seleziona la prima directory da confrontare" --directory`;
confronto=`zenity --file-selection --title "seleziona la seconda directory da confrontare" --directory`;
echo "$pass" | sudo -S xxdiff "$file" "$confronto";;
*)exit 0;;
esac
done


