#!/bin/bash
#**********************  Inizio Valori Predefiniti da non toccare
#*************************************** 
#*************************************************************
#************************************************************************************
#Azzera le variabili per prevenire errori
# Impostare nome e directory di lavoro
ANGOLOROTAZIONE=90
SCEGLINOMEFILEPOSTERAUTOMATICO="Si"
ESTENSIONEFILEDESTINAZIONE="pdf"
FILEDIINPUT="$(dirname ~/pspdfposter/inputfile.$ESTENSIONEFILEDESTINAZIONE)"/"$(basename ~/pspdfposter/inputfile.$ESTENSIONEFILEDESTINAZIONE)"
DIRTEMP="$(dirname ~/pspdfposter/inputfile.$ESTENSIONEFILEDESTINAZIONE)"/

#************************************************************************************
#*************************************************************
#***************************************
#********************** Fine Valori Predefiniti  da non toccare

#echo FILEDIINPUT $FILEDIINPUT
#echo DIRTEMP $DIRTEMP

	#Se la directory non esiste la creo
	if [ ! -d $DIRTEMP ];then
	
		DIRTEMP_ESISTEVA="No"
		mkdir ~/pspdfposter
	fi

#mkdir ~/pspdfposter

#exit 0



	
###### Definisco la funzione per scegliere il file di origine, per impostare l'estensione e per scegliere il nome del file di destinazione del poster
sceglifileorigine ()
	{
	###### Seleziona il file pdf che deve diventare il poster
	FILE_ORIGINE_PRECEDENTE="$FILE_ORIGINE"
	FILE_ORIGINE=$(zenity --file-selection  --title="Puoi selezionare file di tipo PDF o PS PostScript")
	# Se nel file selection premo annulla e non è impostato nessun file esco dallo script   # Con 1 è stato premuto annulla
	if [ $(echo $?) = 1 ]; then
		# Se avevo già impostato il file di origine ritorno alle opzioni generali del poster altrimenti esco
		if [ "$FILE_ORIGINE_PRECEDENTE" != "" ]; then 
			scegliopzionigeneraliposter
		else
		#echo paolo
			exit 0
		fi
	else
	
	######  

	###### CONTROLLO SE IL FILE È DI FORMATO PDF, PS oppure altro file non supportato
	 
		if [ "$(file -b  "$FILE_ORIGINE" | grep -i "PDF document")" !=  "" ]; then

		       #echo "Il file ("$FILE_ORIGINE")  è un file di tipo PDF document"
		       #zenity --info --text="Il file che è stato scelto è \n \n ("$FILE_ORIGINE") \n \n E' un file di tipo PDF come richiesto. \n \n Adesso puoi scegliere le altre impostazioni" --title="File Scelto" --width=600 --height=300
			ESTENSIONEFILEDESTINAZIONE="pdf"
			FILEDIINPUT="$(dirname ~/pspdfposter/inputfile.$ESTENSIONEFILEDESTINAZIONE)"/"$(basename ~/pspdfposter/inputfile.$ESTENSIONEFILEDESTINAZIONE)"
			#exit 0

		elif [ "$(file -b  "$FILE_ORIGINE" | grep -i "PostScript document")" !=  "" ]; then

		       #echo "Il file ("$FILE_ORIGINE") è un file di tipo PostScript document"
		       #zenity --info --text="Il file che è stato scelto è \n \n ("$FILE_ORIGINE") \n \n E' un file di tipo PS (PostScript) come richiesto. \n \n Adesso puoi scegliere le altre impostazioni" --title="File Scelto" --width=600 --height=300
			ESTENSIONEFILEDESTINAZIONE="ps"
			FILEDIINPUT="$(dirname ~/pspdfposter/inputfile.$ESTENSIONEFILEDESTINAZIONE)"/"$(basename ~/pspdfposter/inputfile.$ESTENSIONEFILEDESTINAZIONE)"
			#exit 0

		else
		
			#Faccio la domanda e catturo il risultato della domanda, se annulla uguale 1 se ok uguale 0
			zenity --question --text="Il file ("$FILE_ORIGINE") \n \n Non è un file di tipo PDF oppure PS (PostScript) \n \n Premi Annulla per uscire, OK per scegliere un altro file" --title="File Scelto" --width=600 --height=300

			#Catturo il risultato della question, se annulla uguale 1 se ok uguale 0
			ANNULLATO=$(echo $?)
			#echo ANNULLATO $ANNULLATO

				if [ $ANNULLATO = 1 ]; then
					exit 0
				elif [ $ANNULLATO = 0 ]; then
					sceglifileorigine
				else 
					zenity --info --text="E' accaduto qualcosa di strano"
					exit 0
				fi

		fi
	fi
	DIRFILEORIGINE="$(dirname "$FILE_ORIGINE")/"
	NOMEFILEORIGINE="$(basename "$FILE_ORIGINE")"
	NOMEFILEORIGINESENZAEST=${NOMEFILEORIGINE%.*}
	#ESTFILEORIGINE=${NOMEFILEORIGINE##*.}
	#echo ESTFILEORIGINE $ESTFILEORIGINE
	#Se quello che viene dopo l'ultimo punto non corrisonde ad una estensione valida prendo tutto il nome del file
	if [ "${NOMEFILEORIGINE##*.}" != "pdf" ] && [ "${NOMEFILEORIGINE##*.}" != "PDF" ] && [ "${NOMEFILEORIGINE##*.}" != "ps" ] && [ "${NOMEFILEORIGINE##*.}" != "PS" ]; then
		NOMEFILEORIGINESENZAEST=$NOMEFILEORIGINE
	fi

	}
###### FINE - Definisco la funzione per scegliere il file di origine



###### Definisco la funzione per scegliere il file di destinazione
scegliopzionifiledestinazione ()
	{

OPZIONI_IMPOSTA_FILE_DESTINAZIONE=$(zenity --list --radiolist --text="REGOLA COME SCEGLIERE IL NOME E DOVE SALVARE IL FILE FINALE DEL POSTER\n
E' possibile impostare il nome del file in modo automatico: il file sarà posizionato nello stesso\n
posto del file originale con il nome: (Nomefileorigine_Poster_Largh.xAlt._PgxPg.Estensione) \n
Tutte le volte che faremo una modifica alle impostazioni il nome verrà ridefinito. Impostando \n
manualmente percorso e nome del file questo non sarà più modificato automaticamente\n"  \
--column="Scegli"	--column="Impostazioni"				--column="Impostazione"	--column="Impost. predef." 	--column="Spiegazione"	\
true 			"Imposta il nome del file in modo automatico"  	"$SCEGLINOMEFILEPOSTERAUTOMATICO"	"Si"	"Imposta il nome del file e il percorso del file in modo automatico"	\
false 			"Imposta il nome del file manualmente"  	"No"			"No"	"Permette di scegliere il nome del file e il percorso del file"	\
--title="Scegli le opzioni per la realizzazione del poster" --width=640 --height=400)

	# prende il valore di ritorno del comando precedente
	ritorno=$?

	# controlla se si è premuto OK o Annulla
	if [ "$ritorno" -ne 0 ]; then
	 	# è stato premuto annulla o chiusa la finestra
		 scegliopzionigeneraliposter
	else
	  	# è stato premuto OK
		case "$OPZIONI_IMPOSTA_FILE_DESTINAZIONE" in
		     "Imposta il nome del file in modo automatico")

			SCEGLINOMEFILEPOSTERAUTOMATICO="Si"

			   ;;

		     "Imposta il nome del file manualmente")
			if [ "$SCEGLINOMEFILEPOSTERAUTOMATICO" = "Si" ]; then
			IMPOSTA_FILE_DESTINAZIONE=""$DIRFILEORIGINE""$NOMEFILEORIGINESENZAEST"_Poster_"$LARGHEZZAPOSTER"x"$ALTEZZAPOSTER"_"$PAGINEX"x"$PAGINEY"_"$FORMATOPAGINASTAMPA"."$ESTENSIONEFILEDESTINAZIONE"";
			elif [ "$SCEGLINOMEFILEPOSTERAUTOMATICO" = "No" ]; then
			IMPOSTA_FILE_DESTINAZIONE="$FILE_DESTINAZIONE"
			fi
			IMPOSTA_FILE_DESTINAZIONE=$(zenity --file-selection --text="Imposta il file" --save --confirm-overwrite --filename="$IMPOSTA_FILE_DESTINAZIONE"  --title="Puoi selezionare file di tipo PDF o PS PostScript")

			# prende il valore di ritorno del comando precedente
				ritorno=$?

				# controlla se si è premuto OK o Annulla
				if [ "$ritorno" -ne 0 ]; then
				 	# è stato premuto annulla o chiusa la finestra
					 scegliopzionigeneraliposter
				else
				  	# è stato premuto OK
					FILE_DESTINAZIONE=$IMPOSTA_FILE_DESTINAZIONE
					#echo FILE_DESTINAZIONE $FILE_DESTINAZIONE
					NOMEFILEDESTINAZIONE="$(basename $FILE_DESTINAZIONE)"
					SCEGLINOMEFILEPOSTERAUTOMATICO="No"
				fi

			   ;;
		esac


	fi

	}

impostanomefiledestinazioneautomatico ()
	{

		#IMPOSTA_FILE_DESTINAZIONE=""$DIRFILEORIGINE""$NOMEFILEORIGINESENZAEST"_Poster_"$LARGHEZZAPOSTER"x"$ALTEZZAPOSTER"_"$PAGINEX"x"$PAGINEY"."$ESTENSIONEFILEDESTINAZIONE"";
		#FILE_DESTINAZIONE=$(zenity --file-selection --text="Imposta il file" --save --confirm-overwrite --filename="$IMPOSTA_FILE_DESTINAZIONE"  --title="Puoi selezionare file di tipo PDF o PS PostScript")
		#FILE_DESTINAZIONE=""$DIRFILEORIGINE""$NOMEFILEORIGINESENZAEST"_Poster_"$LARGHEZZAPOSTER"x"$ALTEZZAPOSTER"_"$PAGINEX"x"$PAGINEY"."$ESTENSIONEFILEDESTINAZIONE"";
		FILE_DESTINAZIONE=""$DIRFILEORIGINE""$NOMEFILEORIGINESENZAEST"_Ruotato_"$ANGOLOROTAZIONE"."$ESTENSIONEFILEDESTINAZIONE"";
		#echo FILE_DESTINAZIONE $FILE_DESTINAZIONE
		NOMEFILEDESTINAZIONE="$(basename $FILE_DESTINAZIONE)"
	}



scegliopzionirotazionepagina ()
	{
OPZIONI_ROTAZIONE_PAGINA=""
OPZIONI_ROTAZIONE_PAGINA=$(zenity --list --radiolist --text="SCEGLI LE OPZIONI PER LA ROTAZIONE DELLA PAGINA\n
File partenza:	"$FILE_ORIGINE" \n
File finale:	"$FILE_DESTINAZIONE" \n
Scegli quali impostazioni desideri per la rotazione.\n"		\
--column="Scegli"	--column="Impostazioni"				--column="Impostazione"	--column="Impost. predef." 	--column="Spiegazione"	\
true 			"Ruota di 90 gradi in senso orario"  	" 90"	"Si"	"Ruota la pagina di 90 gradi in senso orario"	\
false 			"Ruota di 180 gradi in senso orario"  		" 180"	"No"	"Ruota la pagina di 90 gradi in senso orario"			\
false 			"Ruota di 270 gradi in senso orario"  	" 270"		"No"	"Ruota la pagina di 90 gradi in senso orario"			\
false 			"Ruota di 90 gradi in senso antiorario"  	" -90"	"No"	"Ruota la pagina di 90 gradi in senso antiorario"	\
false 			"Ruota di 180 gradi in senso antiorario"  		" -180"	"No"	"Ruota la pagina di 90 gradi in senso antiorario"			\
false 			"Ruota di 270 gradi in senso antiorario"  	" -270"		"No"	"Ruota la pagina di 90 gradi in senso antiorario"			\
false 			"Scegli il grado di rotazione in senso orario"  		"un numero da 0 a 360"			"No"	"Permette di regolare il grado di rotazione della pagina in senso orario"			\
false 			"Scegli il grado di rotazione in senso antiorario"  "un numero da -0 a -360"	"No"	"Permette di regolare il grado di rotazione della pagina in senso antiorario"		\
--title="Scegli le opzioni di rotazione della pagina" --width=640 --height=600)	

# prende il valore di ritorno del comando precedente
ritorno=$?
	if [ "$ritorno" -ne 0 ]; then
		# è stato premuto annulla o chiusa la finestra
		exit 0
	fi
	
# controlla se si è premuto OK o Annulla
if [ "$ritorno" -ne 1 ]; then
# è stato premuto Ok
	case "$OPZIONI_ROTAZIONE_PAGINA" in
	     "Ruota di 90 gradi in senso orario")
			#echo "1111111111111111111111111111"
			ANGOLOROTAZIONE=90
		   ;;
	     "Ruota di 180 gradi in senso orario")
		   	#echo "22222222222222222222222222222"
			ANGOLOROTAZIONE=180
		   ;;
	     "Ruota di 270 gradi in senso orario")
		  	 #echo "33333333333333333333333333333"
			ANGOLOROTAZIONE=270
		   ;;
	     "Ruota di 90 gradi in senso antiorario")
			#echo "1111111111111111111111111111"
			ANGOLOROTAZIONE="-90"
		   ;;
	     "Ruota di 180 gradi in senso antiorario")
		   	#echo "22222222222222222222222222222"
			ANGOLOROTAZIONE="-180"
		   ;;
	     "Ruota di 270 gradi in senso antiorario")
		  	 #echo "33333333333333333333333333333"
			ANGOLOROTAZIONE="-270"
		   ;;
	     "Scegli il grado di rotazione in senso orario")
		  	 #echo "444444444444444444444444444444"
			 IMPOSTAANGOLOROTAZIONE=$(zenity --entry --title="Inserisci il grado di rotazione" --text="Inserisci un solo numero, da 0 360"   --entry-text="$ANGOLOROTAZIONE")
				# prende il valore di ritorno del comando precedente
				ritorno=$?

				# controlla se si è premuto OK o Annulla
				if [ "$ritorno" -ne 1 ]; then
				  # è stato premuto OK
				ANGOLOROTAZIONE=$IMPOSTAANGOLOROTAZIONE
				fi
		   ;;
	     "Scegli il grado di rotazione in senso antiorario")
		  	 #echo "444444444444444444444444444444"
				IMPOSTAANGOLOROTAZIONE=$(zenity --entry --title="Inserisci il grado di rotazione" --text="Inserisci un solo numero, da -0 -360"   --entry-text="$ANGOLOROTAZIONE")
				# prende il valore di ritorno del comando precedente
				ritorno=$?

				# controlla se si è premuto OK o Annulla
				if [ "$ritorno" -ne 1 ]; then
				  # è stato premuto OK
				ANGOLOROTAZIONE=$IMPOSTAANGOLOROTAZIONE
				fi
		   ;;
	esac
	#echo "effettuarotazione"
	impostanomefiledestinazioneautomatico
	effettuarotazione
fi

	}




effettuarotazione ()
	{
pspdftool 'rotate('$ANGOLOROTAZIONE')'  $FILE_ORIGINE     $FILE_DESTINAZIONE
#pspdftool 'rotate(90)'  $FILE_ORIGINE     $FILE_DESTINAZIONE
	}



###### Chiamo la funzione per scegliere il file di origine da linea di comando o la guida
if [ -f $1 ]; then
FILE_ORIGINE="$1"
DIRFILEORIGINE="$(dirname "$FILE_ORIGINE")/"
NOMEFILEORIGINE="$(basename "$FILE_ORIGINE")"
NOMEFILEORIGINESENZAEST=${NOMEFILEORIGINE%.*}
impostanomefiledestinazioneautomatico
elif [  $1 = "--help" ]; then
echo -e $GUIDAINCOLLAGGIO  #In seguito il manuale generale
exit 0
else
echo $1 'non è un file; le opzioni accettate sono "il file da processare" oppure "--help" per richiamare la guida'
exit 0
fi


###### Chiamo la funzione per scegliere il file di origine
	if [ "$FILE_ORIGINE" = "" ]; then
		sceglifileorigine
	fi
###### Chiamo la funzione per scegliere le opzioni generali del poster o le opzioni di dimensione (Devo ancora gestire gli errori) Es.   ./pspdfposter.sh   0FileDiProva-A4.pdf    L 1000 H 150
impostanomefiledestinazioneautomatico
scegliopzionirotazionepagina


