#!/bin/bash

function salir-mal {
	rm -f /tmp/rutas
	rm -f /tmp/extensiones
	exit 1
}

function correcto {
yad --title "Manejador de Archivos PDFs" --center \
	--text "   <b>Ok!!</b> \
<b>El programa pdftk ha conseguido realizar la operación solicitada ...</b>\n\n   \
El resultado PDF lo encontrarás en tu directorio Documentos:\n\n <b>$HOME/Documentos/resultado.pdf</b>" \
	--window-icon "./pdf_icon.png" --image "./pdf.png" \
	--width=600 --height=200 \
	--button=Terminar:0
exit 0
}

function error1 {
yad --title "Manejador de Archivos PDFs" --center \
	--text "   Se ha detectado un <b>Error!!</b> \n\n   \
Posibles causas de Error:\n   \
- <b>Deberías haber elegido más de 1 archivo si has seleccionado Unir o Combinar PDFs</b>\n   \
- <b>Deberías haber elegido un único archivo en el segundo caso</b>\n   \
- <b>Las extensiones de todos los archivos debe ser PDF</b>" \
	--window-icon "./pdf_icon.png" --image "./pdf.png" \
	--width=500 --height=200 \
	--button=Salir:1
}

function error2 {
yad --title "Manejador de Archivos PDFs" --center \
	--text "   Se ha detectado un <b>Error!!</b> \n\n   \
Posibles causas de Error:\n   \
- <b>El programa pdftk no ha podido realizar la operación ...</b>"\
	--window-icon "./pdf_icon.png" --image "./pdf.png" \
	--width=500 --height=200 \
	--button=Salir:1
}

NUMPARAM=$#
# Creamos una lista con los parámetros recibidos $@.  El primer parametro es el ${PARAM[0]} ...  ${PARAM[*]} sería todos
# La mitad de los parametros recibidos son las rutas absolutas de los archivos, y la otra mitad son sus extensiones
declare -a PARAM
PARAM=($@)

: '--column=STRING[:TYPE]
              Set the column header. Types are TEXT, NUM, FLT, CHK, RD, IMG, HD or TIP.  TEXT type is
              default. Use NUM for integers and FLT for double values. TIP is used for define tooltip
              column.  CHK (checkboxes) and RD (radio toggle) are a boolean columns.  HD type means a
              hidden  column. Such columns are not displayes in the list, only in output.  IMG may be
              path to image or icon name from currnet GTK+ icon theme.  Size of icons may be  set  in
              config file. Image field prints as empty value.
'
RESULTADO=$(yad --title "Manejador de Archivos PDFs" --center \
	--text "Elije que operación quieres realizar" \
	--window-icon "./pdf_icon.png" --image "./pdf.png" \
	--width=500 --height=200 \
	--list --radiolist  \
	--column Opcion:RD \
	--column Descripcion:TEXT \
	--column Numero:HD \
	TRUE "Unir PDFs" "1" \
	FALSE "Extraer paginas de un PDF" 2 \
	FALSE "Combinar PDFs" 3)

OPCION=$(echo $RESULTADO | cut -d"|" -f3)
ERROR=0
case $OPCION in
	"1" )	if ! test $NUMPARAM -ge 2 ; then # Comprobamos que al menos hay una ruta y una extensión
			ERROR=1
		else
			PRIMERAEXT=$(expr $NUMPARAM / 2)
			NUM=0
			# Separamos en archivos diferentes las rutas de los archivos y las extensiones
			echo "" > /tmp/rutas
			echo "" > /tmp/extensiones
			while test $NUM -lt $NUMPARAM ; do
				if test $NUM -lt $PRIMERAEXT ; then
					echo ${PARAM[$NUM]} >> /tmp/rutas
				else
					echo ${PARAM[$NP]} >> /tmp/extensiones
				fi
				NUM=$(expr $NUM + 1)
			done
			# Comprobamos si todas las extensiones son de tipo "pdf"
			NUM=0
			while test $(expr $PRIMERAEXT + $NUM) -lt $NUMPARAM ; do
				NP=$(expr $PRIMERAEXT + $NUM)
				#echo "El parametro $(expr $PRIMERAEXT + $NUM) es ${PARAM[$NP]}"
				if test "${PARAM[$NP]}" != "pdf" ; then
					ERROR=1
				fi
				NUM=$(expr $NUM + 1)
			done
		fi
		if test $ERROR -ne 0 ; then
			error1
			salir-mal
		else
			if /usr/bin/pdftk $(cat /tmp/rutas | tr "\n" " ") output $HOME/Documentos/resultado.pdf | yad --progress --progress-text="Uniendo PDFS ..." --pulsate --auto-close
			then
				correcto
			else
				error2
			fi
		fi
		;;
	"2" )  	if test $NUMPARAM -gt 2 ; then # Comprobamos no haya más de un archivo
			ERROR=1
		else
			if test "${PARAM[1]}" == "pdf"
			then
				INTERVALOS=$(yad --title "Manejador de Archivos PDFs" --center \
				--width=600 --height=250 \
				--window-icon "./pdf_icon.png" --image "./pdf.png" \
				--text="   Edita los 2 intervalos de páginas a extraer que desees (Ejemplos): \n   \
    <b>PagIni1-PagFin1 PagIni2-PagFin2\n   \
    1-10 16-18\n   \
    2-8 8-8\n   \
    6-end end-end\n   \
    4-14 20-end</b>\n" \
				--list --editable --print-all \
				--multiple --separator="|" \
				--column="Pagina Incial 1" --column="Pagina Final1" \
				--column="Pagina Incial 2" --column="Pagina Final2" \
				"1" "10" "15" "end" \
				--button=Seguir:0)
				# echo Los intervalos son: $INTERVALOS
				PAGINI1=$(echo $INTERVALOS | cut -d"|" -f1)
				PAGFIN1=$(echo $INTERVALOS | cut -d"|" -f2)
				PAGINI2=$(echo $INTERVALOS | cut -d"|" -f3)
				PAGFIN2=$(echo $INTERVALOS | cut -d"|" -f4)
			else
				error1
			fi
		fi

		if test $ERROR -ne 0 ; then
			error1
			salir-mal
		else
			if /usr/bin/pdftk ${PARAM[0]} cat $PAGINI1-$PAGFIN1 $PAGINI2-$PAGFIN2 output $HOME/Documentos/resultado.pdf | yad --progress --progress-text="Uniendo PDFS ..." --pulsate --auto-close
			then
				correcto
			else
				error2
			fi
		fi
		;;
	"3" )
		;;
esac
