#!/bin/bash

# This script convert images to jpg using GraphicsMagick
# Created: 2019.09.02 15:08
# Author: Kārlis Kalviškis <eko@lanet.lv>
# License: GPLv3

# For translation
export TEXTDOMAIN="karlo-scripts"
. gettext.sh


echo 
echo `eval_gettext 'Converts PNG format images to JPG format images'`
type -P convert &>/dev/null || { xterm -hold -e echo  "`eval_gettext 'Command'` 'convert (GraphicsMagick)' `eval_gettext 'is missing'`"; exit 1; }
if [ ! -t 1 ]; then
	type -P zenity &>/dev/null || { xterm -hold -e echo  "`eval_gettext 'Command'` 'zenity' `eval_gettext 'is missing'`"; exit 1; }
fi
echo

if [ $# -gt 0 ]; then
	for parametrs in $*
	do
		case $parametrs in
			-h | --help ) echo `eval_gettext 'Usage'`: $0  [-h][-f] [`eval_gettext 'source'`] [`eval_gettext 'destination'`]
				echo -e '\t-h|--help – '`eval_gettext 'this help file'`.
				echo -e '\t-f – '`eval_gettext 'Uses destination directory even it exists'`.
				echo -e '\t-s – '`eval_gettext 'Silent mode'`.
				exit
				;;
			-f ) noquestion=true
				;;
			-s ) issilent=true
				;;
			-* ) echo `eval_gettext 'Unknown parameter '` $parametrs
				exit 1
				;;
			* ) if [ -z $FROMDIR ]; then
					FROMDIR=${parametrs%\/}
				else
					KURKOPEET=$parametrs
				fi
				;;
		esac
	done
else

	# For GUI enviroment the sorce directory should be defined
	if [ ! -t 1 ]; then
		zenity  --warning --text="`eval_gettext 'Missing parameters. Usage:'`\n$0 [-f] [-h] `eval_gettext 'source'` [`eval_gettext 'destination'`]"
		exit 2
	fi
fi

zinjo ()
{
	if [ -t 1 ]; then
		echo $1
	else
		yad  --warning --text="$1"
	fi
}

straadaa ()
{
	shopt -s nocaseglob
	for f in *.png; do
		nf1=$(echo $f|sed 's/.png$//i')
		nf=$nf1.jpg
		counter=1
		while [ -f "$KURKOPEET/$nf" ]
		do
			nf=$nf1-$counter.jpg
			((counter++))
		done
		if  [ ! $issilent ]; then
			if [ -t 1 ]; then
				echo -n "#$kopskaits $procenti $f "
				kopskaits=$(( $kopskaits-1 ))
			else
				procenti=$(echo "scale=2; $patreiz / $kopskaits * 100"  | bc)
				procenti=${procenti%.*}
				patreiz=$(( $patreiz+1 ))
				echo "# $f"
				echo $procenti
			fi
		fi
		convert -quality 90 -type optimize \
			"$f" "$KURKOPEET/$nf"
	done
}

: ${FROMDIR:=.}
: ${KURKOPEET:=$FROMDIR/JPG}

if [ ! -d $KURKOPEET ]; then
	mkdir $KURKOPEET || exit $?
elif [ ! $noquestion ]; then
	if [ -t 1 ]; then
		echo -n `eval_gettext 'The destination already exists.'` `eval_gettext 'Process the files?'` `eval_gettext '(Y)es or (N)o?'` ' '
		while true; do
			read yn
			case $yn in
				[YyJj]* ) break
					;;
				[Nn]* ) exit 10
					;;
				* ) echo `eval_gettext '(Y)es or (N)o?'`
					;;
			esac
		done
	else
		zenity --question --text="`eval_gettext 'The destination already exists.'` `eval_gettext 'Process the files?'` `eval_gettext '(Y)es or (N)o?.'`"
		ATBILDE=$?
		if [ $ATBILDE != "0" ]; then
			exit 10
		fi
	fi
fi

kopskaits=$(ls *.{png,PNG} 2>/dev/null | wc -l)
patreiz=1
if [ $kopskaits != "0" ]; then
	if [ -t 1 ]; then
		straadaa
	else
		straadaa | zenity  --progress   --percentage=1 --auto-close --auto-kill --title "`eval_gettext 'Image convertion'`"
	fi
else
	zinjo "eval_gettext 'Cannot find PNG files'";
fi
echo
