#!/bin/bash
# Sunday, 07/24/2022

pth=`dirname "$1"`
if [ -z "$1" ]; then
	DIALOG=Xdialog
	$DIALOG   --rc-file /usr/share/pixmaps/colorboxDOH.rc  --icon /usr/share/pixmaps/doh.xpm  --title "DOH!" \
		--msgbox "\nFile to convert not found\n" 0 0
	exit 1
fi
cd $pth


echo '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
rkJggg==' | base64 -d > /tmp/icon.png

yy=`command -v convert`
if [ -z "$yy" ]; then	
	DIALOG=Xdialog
	$DIALOG   --rc-file /usr/share/pixmaps/colorboxDOH.rc  --icon /usr/share/pixmaps/doh.xpm  --title "DOH!" \
		--msgbox "\nThe Imagemagick encoder is needed for this conversion.\n" 0 0
	exit 1
fi

# get rid of spaces in filename
newname="$(echo "$1" | sed 's/ /_/g')"
mv "$1" "$newname" 2> /dev/null
jname=`echo "$newname" | sed 's/\.png/\.jpg/I'`
VALUE=`yad --scale --window-icon="/tmp/icon.png" --value "90" --min-value "60" --max-value "100" --title "Output Quality" --center --on-top  --width=320`
# In case user cancels operation:
if [ -z "$VALUE" ]; then
	exit 
fi

$(sleep 1 && wmctrl -a "Converting" -b add,above)&
gm convert -background white -extent 0x0 +matte -quality $VALUE "$newname" "$jname" | zenity --width=400 --title="Converting" --progress --pulsate --window-icon="/tmp/icon.png" --auto-close 2> /dev/null&
####  THE REST of this simply stops conversion if the dialog is cancelled #########
# get zenity process id
PID_ZENITY=${!}
# get firstly created child process id, which is running all tasks
PID_CHILD=$(pgrep -o -P $$)
# loop to check that progress dialog has not been cancelled
while [ "$PID_ZENITY" != "" ]
do
  # get PID of all running tasks
  PID_TASKS=$(pgrep -d ' ' -P ${PID_CHILD})
  # check if zenity PID is still there (dialog box still open)
  PID_ZENITY=$(ps h -o pid --pid ${PID_ZENITY} | xargs)
  # sleep for 2 second
  sleep 2
done
# since dialog is finished or cancelled...
killall -9 gm 2>/dev/null
###################################################################

rm /tmp/icon.png 2>/dev/null
echo "Conversion complete"
exit 0
