#!/bin/sh
# rcrsn51 2011-08-09
# version 2.3 2012-11-15
# gettexted by esmourguit 2013/02/13
# radky 2024-04-29:       adjust compatibility with Puppy Linux
#                         - change JPEG tab -> Pic2PDF
#                         - change xdialog3 -> xdialog
#                         - remove MuPDF option
# MochiMoppel 2024-04-30: - adjust size options for CUSTOMMODE PDF output
#                         - support conversion of additional graphic formats to PDF (e.g. SVG, BMP, GIF ...)

export TEXTDOMAIN=peasypdf
export OUTPUT_CHARSET=UTF-8

eval_gettext ()
{
local myMESSAGE=$(gettext "$1")
eval echo -n \"$myMESSAGE\"
}
export -f eval_gettext

CONVERT ()
{
if [ ! -f "$CONVERTNAME" ]; then
	Xdialog --title " "  --msgbox "$(eval_gettext 'File $CONVERTNAME not found!')" 0 0
	exit 
fi

Xdialog --title " " --no-buttons --infobox "$(eval_gettext 'Converting $CONVERTNAME ...')" 0 0 10000 &
MSGPID=$!

TYPE=$(file -L "$CONVERTNAME" | cut -d ":" -f 2 | cut -d " " -f 2)
case $TYPE in
	JPEG)jpegtopnm "$CONVERTNAME" > /tmp/pptemp.pnm ;;
	PNG)	pngtopnm  -mix -background white "$CONVERTNAME" > /tmp/pptemp.pnm	;; # 2024-04-30 ##MM set transparent pixels to white (same as PDF page background) instead of black
	SVG)	rsvg-convert -b white -o /tmp/pptemp.png "$CONVERTNAME" && pngtopnm "/tmp/pptemp.png" > /tmp/pptemp.pnm ;; # 2024-04-30 #MM set transparent pixels to white
	TIFF)	tifftopnm "$CONVERTNAME" > /tmp/pptemp.pnm ;;
	   *)	anytopnm  "$CONVERTNAME" > /tmp/pptemp.pnm ;; # 2024-04-30 #MM convert BMP, GIF and ...?

esac

if [ ! -s /tmp/pptemp.pnm ] ;then # 2024-04-30 ##MM conversions successful? Even recognized TYPESs may result in empty pptemp.pnm (e.g. many camera specific TIFF formats)
	kill $MSGPID
	Xdialog --title " " --msgbox "$(gettext 'Not a valid graphics file!')" 0 0
	exit
fi

CUSTOMMODE="yes"
if [ "$PAGESIZE" = "$(gettext 'Custom') (100%)" ]; then
	CUSTOMDPI=96;	#based on Puppy de-facto standard screen resolution of 96dpi (2024-04-30)
elif [ "$PAGESIZE" = "$(gettext 'Custom+') (200%)" ]; then
	CUSTOMDPI=48;	#increase size by 200% (2024-04-30)
elif [ "$PAGESIZE" = "$(gettext 'Custom-') (50%)" ]; then
	CUSTOMDPI=192;	#decrease size by 50% (2024-04-30)
else
	CUSTOMMODE="no"
fi

if [ "$CUSTOMMODE" = "yes" ]; then	
	read PIXWIDTH PIXHEIGHT <<< $(get-image-size /tmp/pptemp.pnm)
	INWIDTH=$((PIXWIDTH*1000 / CUSTOMDPI)) # 2024-04-30 #MM same 3 decimals precision as dc but much faster and reliable; POSIX compliant
	INWIDTH=${INWIDTH%???}.${INWIDTH#${INWIDTH%???}}
	INHEIGHT=$((PIXHEIGHT*1000 / CUSTOMDPI))
	INHEIGHT=${INHEIGHT%???}.${INHEIGHT#${INHEIGHT%???}}

	OPTIONS="-noturn -setpage -imagewidth=$INWIDTH -imageheight=$INHEIGHT -width=$INWIDTH -height=$INHEIGHT"
else
	OPTIONS="-center -setpage"
	[ "$TURN" = "false" ] && OPTIONS=$OPTIONS" -noturn" 
	[ "$RESIZE" = "false" ] && OPTIONS=$OPTIONS" -equalpixels"
	case "$PAGESIZE" in
		Letter) INWIDTH=8.5; INHEIGHT=11 ;;
		Legal) INWIDTH=8.5; INHEIGHT=14 ;;
		A4) INWIDTH=8.3; INHEIGHT=11.7 ;;
		5x7) INWIDTH=5; INHEIGHT=7 ;;
		6x8) INWIDTH=6; INHEIGHT=8 ;;
		*) INWIDTH=8.5; INHEIGHT=11 ;;
	esac
	if [ $LANDSCAPE = "true" ]; then
		TEMP=$INWIDTH; INWIDTH=$INHEIGHT; INHEIGHT=$TEMP
	fi 
	OPTIONS=$OPTIONS" -w $INWIDTH -h $INHEIGHT"
fi

pnmtops $OPTIONS /tmp/pptemp.pnm > /tmp/pptemp.ps
OUTNAME=$CONVERTNAME".pdf"
ps2pdf /tmp/pptemp.ps "$OUTNAME"
rm /tmp/pptemp.pnm /tmp/pptemp.ps

kill $MSGPID
Xdialog --title " " --msgbox "$(eval_gettext 'File saved as $OUTNAME')" 0 0
}
export -f CONVERT 

PROJVIEW ()
{
$FILEMANAGER $JOINPATH
}
export -f PROJVIEW 

NEWPROJECT ()
{ 
mkdir -p $JOINPATH
rm -f $JOINPATH/*
echo "0" > $JOINPATH/.filecounter
Xdialog --title " " --msgbox "$(eval_gettext 'New project started in $JOINPATH')" 0 0
}
export -f NEWPROJECT

ADD ()
{
[ ! -f $JOINPATH/.filecounter ] && NEWPROJECT

if [ -z "$JOINNAME" ]; then
	Xdialog --title " " --msgbox "$(gettext 'Nothing to add!')" 0 0
	exit
fi

if [ ! -f "$JOINNAME" ]; then
	Xdialog --title " "  --msgbox "$(eval_gettext 'File $JOINNAME not found!')" 0 0
	exit
fi
	
FC=$(cat $JOINPATH/.filecounter)
let FC=FC+1
FN=$(printf "%003d" $FC)".pdf"
echo $FC > $JOINPATH/.filecounter

TYPE=$(file "$JOINNAME" | cut -d ":" -f 2 | cut -d " " -f 2)
case $TYPE in
	PDF)
		Xdialog --title " " --no-buttons --infobox "$(eval_gettext 'Adding $JOINNAME ...')" 0 0 1000 &
		if [ "${JOINNAME:0:4}" = "/tmp" ]; then
			cp "$JOINNAME" $JOINPATH/$FN
		else
			ln -s "$JOINNAME" $JOINPATH/$FN
		fi
		;;
	*) 
		Xdialog --title " " --msgbox "$(gettext 'Not a valid PDF file!')" 0 0
		;;
esac
}
export -f ADD

JOIN ()
{
rm -f $JOINPATH/PROJECT.PDF

ls $JOINPATH/*.pdf > /dev/null
if [ $? -gt 0 ]; then
	Xdialog --title " " --msgbox "$(gettext 'Nothing to join!')" 0 0 
	exit
fi

Xdialog --title " " --no-buttons --infobox "$(gettext 'Joining PDFs ...')" 0 0 10000 &
MSGPID=$!

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=$JOINPATH/PROJECT.PDF $JOINPATH/*.pdf

kill $MSGPID
Xdialog --title " " --msgbox "$(eval_gettext 'Project saved as $JOINPATH/PROJECT.PDF')" 0 0
}
export -f JOIN

JOINALL ()
{
[ ! -d "$JOINALLFOLDER" ] && Xdialog --title " " --msgbox "Folder not found!" 0 0 && exit
ls "$JOINALLFOLDER"/*.pdf > /dev/null
[ $? -gt 0 ] && Xdialog --title " " --msgbox "No .pdf files found!" 0 0 && exit

Xdialog --title " " --no-buttons --infobox "$(gettext 'Joining PDFs ...')" 0 0 10000 &
MSGPID=$!

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="$JOINALLFOLDER/JOINALL.PDF" "$JOINALLFOLDER"/*.pdf

kill $MSGPID
Xdialog --title " " --msgbox "$(eval_gettext 'Project saved as $JOINALLFOLDER/JOINALL.PDF')" 0 0
}
export -f JOINALL

PIC2PDF ()
{
if [ ! -d "$PICFOLDER" ]; then
	Xdialog --title " "  --msgbox "$(eval_gettext 'Folder $PICFOLDER not found!')" 0 0
	exit 
fi

mkdir -p $JOINPATH
rm -f $JOINPATH/*

Xdialog --title " " --no-buttons --infobox "$(gettext 'Converting images ...')" 0 0 10000 &
MSGPID=$!

for F in "$PICFOLDER"/*; do
	OUTNAME=$(basename "$F")
	OUTPATH=$JOINPATH/${OUTNAME%.*}.pdf
	TYPE=$(file -L "$F" | cut -d ":" -f 2 | cut -d " " -f 2)
	case $TYPE in
		JPEG|PNG) image-changer "$F" /tmp/pptemp.tif 
					tiff2pdf -F -j -o "$OUTPATH" /tmp/pptemp.tif ;;
		TIFF) tiff2pdf -F -j -o "$OUTPATH" "$F" ;;
	esac
	[ $? -gt 0 ] && rm -f "$OUTPATH"
done

kill $MSGPID
Xdialog --title " " --no-buttons --infobox "$(gettext 'Joining PDFs ...')" 0 0 10000 &
MSGPID=$!
pdfunite $JOINPATH/*.pdf $HOME/PIC2PDF.PDF 
kill $MSGPID
Xdialog --title " " --msgbox "$(eval_gettext 'The images are combined in the file $HOME/PIC2PDF.PDF')" 0 0

rm /tmp/pptemp.tif
}
export -f PIC2PDF

EXTRACT ()
{
if [ -z "$PDFNAME" -o -z "$PAGELIST" -o -z "$DPI" ]; then
	Xdialog --title " " --msgbox "$(gettext 'Missing data!')" 0 0
	exit
fi 

if [ ! -f "$PDFNAME" ]; then
	Xdialog --title " " --msgbox "$(gettext 'File not found!')" 0 0
	exit
fi

mkdir -p $EXTRACTPATH

LOGFILE=/tmp/peasypdf.log
rm -f $LOGFILE

PAGELIST=$(echo $PAGELIST | tr -s "," " ")

if [ $EXTRACTPDF = "true" -a $COMBINE = "true" ]; then   #split off and combine one page range into a PDF
	FIRST=${PAGELIST%-*}
	LAST=${PAGELIST#*-}
	[ -z "$LAST" ] && LAST=$(pdfinfo "$PDFNAME" | grep "^Pages" | awk '{print $2}')
	test "$FIRST" -lt "$LAST" 
	if [ $? -gt 0 ]; then
		Xdialog --title " " --msgbox "$(gettext 'PDF+Combine only works with ranges like 5-100 or 101-')" 0 0
		exit
	fi
	Xdialog --title " " --no-buttons --infobox "$(eval_gettext 'Extracting pages $PAGELIST')" 0 0 10000 &
	MSGPID=$!
	RANGENAME=$(printf "%003d" $FIRST)-$(printf "%003d" $LAST).pdf
	rm -f $EXTRACTPATH/$RANGENAME
	gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=$FIRST -dLastPage=$LAST  -sOutputFile=$EXTRACTPATH/$RANGENAME "$PDFNAME" >>$LOGFILE 2>&1
	kill $MSGPID
	Xdialog --title " " --msgbox "$(gettext 'Click View to see the extracted PDF.')" 0 0
	exit
fi

BIGLIST=""
for N in $PAGELIST; do
	FIRST=${N%-*}
	LAST=${N#*-}
	[ -z "$LAST" ] && LAST=$(pdfinfo "$PDFNAME" | grep "^Pages" | awk '{print $2}')
	BIGLIST=$BIGLIST" "$(seq $FIRST $LAST)
done

for PAGE in $BIGLIST; do
	PAGENUM=$(printf "%003d" $PAGE)

	Xdialog --title " " --no-buttons --infobox "$(eval_gettext 'Extracting page $PAGE of $PDFNAME')" 0 0 10000 &
	MSGPID=$!

	if [ $EXTRACTJPG = "true" ]; then
		gs -sDEVICE=jpeg -dNOPAUSE -dBATCH -dSAFER -r$DPI -sOutputFile=$EXTRACTPATH/$PAGENUM.jpg -dFirstPage=$PAGE -dLastPage=$PAGE "$PDFNAME" >>$LOGFILE 2>&1
	elif [ $EXTRACTPNG = "true" ]; then
		gs -sDEVICE=png16m -dNOPAUSE -dBATCH -dSAFER -r$DPI -sOutputFile=$EXTRACTPATH/$PAGENUM.png -dFirstPage=$PAGE -dLastPage=$PAGE "$PDFNAME" >>$LOGFILE 2>&1
	elif [ $EXTRACTTXT = "true" ]; then
		pdftotext -f $PAGE -l $PAGE "$PDFNAME" - >> $EXTRACTPATH/EXTRACTED.TXT
	elif [ $EXTRACTPDF = "true" ]; then
		gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=$EXTRACTPATH/$PAGENUM.pdf -dFirstPage=$PAGE -dLastPage=$PAGE "$PDFNAME" >>$LOGFILE 2>&1
	fi

	kill $MSGPID
done

Xdialog --title " " --msgbox "$(gettext 'Click View to see the extracted files.')" 0 0
}
export -f EXTRACT

EXTVIEW ()
{
$FILEMANAGER $EXTRACTPATH
}
export -f EXTVIEW 

CLEAR ()
{
rm -f $EXTRACTPATH/*
Xdialog --title " " --msgbox "$(gettext 'The folder /tmp/PDFExtract has been cleared.')" 0 0
}
export -f CLEAR

GODUPLICATE ()
{
mkdir -p $JOINPATH
rm -f $JOINPATH/*

FILELIST=""
for I in $(seq 1 $PRINTCOPIES); do
	FILELIST=$FILELIST" "\"$PRINTPDFNAME\"
done

eval pdfunite $FILELIST $JOINPATH/PROJECT.PDF
}
export -f GODUPLICATE

PRINT ()
{
if [ ! -f "$PRINTPDFNAME" ]; then
	Xdialog --title " "  --msgbox "$(eval_gettext 'File $PRINTPDFNAME not found!')" 0 0
	exit 
fi

TYPE=$(file "$PRINTPDFNAME" | cut -d ":" -f 2 | cut -d " " -f 2)
[ "$TYPE" != "PDF" ] &&	Xdialog --title " " --msgbox "$(gettext 'Not a valid PDF file!')" 0 0 && exit

if [ $COPYNUP = "true" ]; then
  GODUPLICATE
  PRINTCOPIES=1
  PRINTPDFNAME=$JOINPATH/PROJECT.PDF
fi

OPTIONS="-n $PRINTCOPIES -o media=$PAPERSIZE"
[ $CUPSFITTOPAGE = "true" ] && OPTIONS=$OPTIONS" -o fit-to-page"
[ "$NUP" -gt 1 ] && OPTIONS=$OPTIONS" -o number-up="$NUP

if [ -z "$PRINTSELECTION" ]; then	#print the whole document
	PRINTPDFNAME2=$PRINTPDFNAME
else
	FIRST=${PRINTSELECTION%-*}
	LAST=${PRINTSELECTION#*-}
	[ -z "$LAST" ] && LAST=$(pdfinfo "$PRINTPDFNAME" | grep "^Pages" | awk '{print $2}')
	test "$FIRST" -le "$LAST" 
	if [ $? -gt 0 ]; then
		Xdialog --title " " --msgbox "$(gettext 'Not a valid page range!')" 0 0
		exit
	fi
	PRINTPDFNAME2=/tmp/$(basename "$PRINTPDFNAME" ".pdf")-${FIRST}-${LAST}.pdf
	rm -f $PRINTPDFNAME2
	Xdialog --title " " --no-buttons --infobox "$(gettext 'Extracting pages ...')" 0 0 10000 &
	MSGPID=$!
	gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=$FIRST -dLastPage=$LAST  -sOutputFile="$PRINTPDFNAME2" "$PRINTPDFNAME"
	kill $MSGPID
fi

if [ $CUPSPSMODE = "true" ]; then
	Xdialog --title " " --no-buttons --infobox "$(gettext 'Converting to Postscript ...')" 0 0 120000 &
	MSGPID=$!
	PRINTPDFNAME3=/tmp/$(basename "$PRINTPDFNAME2" ".pdf").ps
	rm -f "PRINTPDFNAME3"
	pdftops "$PRINTPDFNAME2" "$PRINTPDFNAME3"
	PRINTPDFNAME2=$PRINTPDFNAME3
	kill $MSGPID
fi

Xdialog --title " " --no-buttons --infobox "$(gettext 'Printing ...')" 0 0 3000 &
lp $OPTIONS -d $PRINTER "$PRINTPDFNAME2"
}
export -f PRINT

CANCELPRINT ()
{
cancel -a
rm -f /var/spool/cups/tmp/*
Xdialog --title " "  --msgbox "$(gettext 'All print jobs cancelled!')" 0 0
}
export -f CANCELPRINT

STARTCUPS () {
  $WEBBROWSER http://localhost:631/printers/$PRINTER &
}
export -f STARTCUPS

PDF2PICCONVERT ()
{
[ ! -f "$PDF2PICNAME" ] && Xdialog --title " "  --msgbox "$(eval_gettext 'File $PDF2PICNAME not found!')" 0 0 && exit

Xdialog --title " " --no-buttons --infobox "$(gettext 'Converting PDF ...')" 0 0 10000 &
MSGPID=$!

BASENAME=${PDF2PICNAME%.pdf}
pdftoppm -$PDF2PICFORMAT -f $PDF2PICPAGE  -l $PDF2PICPAGE -r $PDF2PICDPI "$PDF2PICNAME" "$BASENAME"
RETVAL=$?

kill $MSGPID
if [ $RETVAL -eq 0 ]; then
	Xdialog --title " " --msgbox "Image saved to $(dirname "$PDF2PICNAME")" 0 0
else
	Xdialog --title " " --msgbox "Conversion failed! Is this a PDF file?" 0 0
fi

}
export -f PDF2PICCONVERT

#########################

mkdir -p /etc/pwf #just in case
APPFILE=/etc/pwf/appfile
if [ ! -f $APPFILE ]; then
	echo "export TEXTEDITOR=leafpad" > $APPFILE
	echo "export FILEMANAGER=defaultfilemanager" >> $APPFILE
	echo "export WEBBROWSER=defaultbrowser" >> $APPFILE
	echo "export IMAGEVIEWER=defaultimageviewer" >> $APPFILE
#	Xdialog --title " " --msgbox "$(gettext 'Open the file /etc/pwf/appfile.\nSet your helper applications.')" 0 0
#	exit
fi
. $APPFILE

export JOINPATH="/tmp/PDFJoin"
export EXTRACTPATH="/tmp/PDFExtract"

PRINTERLIST=`lpstat -v | cut -d " " -f 3 | cut -d ":" -f 1`
COMBOLIST=""
for P in $PRINTERLIST
do
 COMBOLIST="$COMBOLIST<item>$P</item>"
done

export DIALOG="
<window title=\"PeasyPDF v5.2\" width-request=\"500\" image-name=\"/usr/share/pixmaps/puppy/pdf.svg\" window-position=\"1\">
<vbox>
<notebook labels=\"$(gettext 'Convert|Join|Extract|PDF2Pic|Pic2PDF|Print')\">
	<vbox>
		<frame $(gettext 'CONVERT')>
			<text xalign=\"0\">
				<label>$(gettext 'This tool converts JPEG, PNG, SVG, TIFF graphic files to PDF format.  To convert a text document, load it into a word processor and use Print > Print to File.')</label>
			</text>
		</frame>
		<frame $(gettext 'Select a file')>
			<hbox>
				<entry accept=\"filename\"><variable>CONVERTNAME</variable></entry>
				<button>
					<input file stock=\"gtk-open\"></input>
					<action type=\"fileselect\">CONVERTNAME</action>
				</button>
				<button>
       					<input file stock=\"gtk-clear\"></input>
       					<action>Clear:CONVERTNAME</action>
      				</button>
			</hbox>
		</frame>
		<frame $(gettext 'Output')>
			<hbox>
				<text><label>$(gettext 'Choose a PDF page size') </label></text>
				<comboboxtext>
					<variable>PAGESIZE</variable>
					<item>$(gettext 'Custom') (100%)</item><item>$(gettext 'Custom+') (200%)</item><item>$(gettext 'Custom-') (50%)</item>
					<item>Letter</item><item>Legal</item><item>A4</item><item>5x7</item><item>6x8</item>
				</comboboxtext>
			</hbox>
			<hbox>
				<checkbox>
					<label>$(gettext 'Resize graphic to fit page') </label>
					<variable>RESIZE</variable>
				</checkbox>
				<checkbox>
					<label>$(gettext 'Turn')</label>
					<variable>TURN</variable>
				</checkbox>
				<checkbox>
					<label>$(gettext 'Landscape')</label>
					<variable>LANDSCAPE</variable>
				</checkbox>
			</hbox>
			<hbox>
				<button>
					<label>$(gettext 'Convert')</label>
					<action>CONVERT &</action>
				</button>
			</hbox>
		</frame>
		<text><label>\"    \"</label></text>
		<text><label>\"    \"</label></text>
	</vbox>
	<vbox>
		<frame $(gettext 'JOIN')>
			<text xalign=\"0\">
				<label>$(gettext 'This tool joins individual PDF files into a single PDF document. Click New to start a new project. Select a file and click Add. Repeat. When all files are added, click Join. Click View to see the project folder in /tmp.')</label>
			</text>
		</frame>
		<frame $(gettext 'Select a PDF file')>
			<hbox>
				<entry accept=\"filename\"><variable>JOINNAME</variable></entry>
				<button><input file stock=\"gtk-open\"></input><action type=\"fileselect\">JOINNAME</action></button>
			</hbox>
		<hbox>
			<button>
				<label>$(gettext 'New')</label>
				<action>NEWPROJECT</action>
			</button>
			<button>
				<label>$(gettext 'Add')</label>
				<action>ADD</action>
				<action>Clear:JOINNAME</action>
			</button>
			<button>
				<label>$(gettext 'Join')</label>
				<action>JOIN</action>
			</button>
			<button>
				<label>$(gettext 'View')</label>
				<action>PROJVIEW</action>
			</button>
		</hbox>
		</frame>
		<frame Or join all the PDFs in this folder>
			<hbox>
				<entry accept=\"directory\"><variable>JOINALLFOLDER</variable></entry>
				<button>
					<input file stock=\"gtk-open\"></input>
					<action type=\"fileselect\">JOINALLFOLDER</action>
				</button>
				<button>
					<input file stock=\"gtk-clear\"></input>
					<action>Clear:JOINALLFOLDER</action>
				</button>
				<button>
					<label>$(gettext 'Join')</label>
					<action>JOINALL</action>
				</button>
			</hbox>
		</frame>
	</vbox>
	<vbox>
		<frame $(gettext 'EXTRACT')>
			<text xalign=\"0\">
				<label>$(gettext 'This tool extracts pages from a PDF document and optionally combines them. Pages can be selected with a list, a range like 1-10 or both.')</label>
			</text>
		</frame>
		<frame $(gettext 'Select a PDF file')>
			<hbox>
				<entry accept=\"filename\">
					<variable>PDFNAME</variable>
				</entry>
				<button>
					<input file stock=\"gtk-open\"></input>
					<action type=\"fileselect\">PDFNAME</action>
				</button>
				<button>
					<input file stock=\"gtk-clear\"></input>
					<action>Clear:PDFNAME</action>
				</button>
			</hbox>
		</frame>
		<frame $(gettext 'Output')>
		<hbox>
			<text><label>$(gettext 'Extract to: ')</label></text>
			<radiobutton>
				<variable>EXTRACTJPG</variable>
				<label>JPG</label>
				<action>Clear:COMBINE</action>
			</radiobutton>
			<radiobutton> 
				<variable>EXTRACTPNG</variable>
				<label>PNG</label>
				<action>Clear:COMBINE</action>
			</radiobutton>
			<radiobutton> 
				<variable>EXTRACTTXT</variable>
				<label>TXT</label>
				<action>Clear:COMBINE</action>
			</radiobutton>

			<vseparator space-expand=\"false\" space-fill=\"false\"></vseparator>

			<radiobutton> 
				<variable>EXTRACTPDF</variable>
				<label> PDF  +</label>
			</radiobutton>
			<checkbox>
				<label>$(gettext 'Combine')</label>
				<variable>COMBINE</variable>
			 </checkbox>
			<text><label>\"  \"</label></text>
		</hbox>
		<hbox>
			<vbox>
			  <text><label>Page number(s)</label></text>
				<hbox>	
					<entry>
						<variable>PAGELIST</variable>
					</entry>
					<button>
						<input file stock=\"gtk-clear\"></input>
						<action>Clear:PAGELIST</action>
					</button>
				</hbox>
			</vbox>
			<text><label>\"    \"</label></text>
			<vbox>
				<text><label>DPI</label></text>
				<entry>
					<variable>DPI</variable>
					<default>300</default>
				</entry>
			</vbox>
			<text><label>\"    \"</label></text>
		</hbox>	 
		<hbox>
			<button>
				<label>$(gettext 'Clear')</label>
				<action>CLEAR</action>
			</button>
			<button>
				<label>$(gettext 'Extract')</label>
				<action>EXTRACT</action>
			</button>
			<button>
				<label>$(gettext 'View')</label>
				<action>EXTVIEW</action>
			</button>
		</hbox>
		</frame>
		<text><label>\"    \"</label></text>
	</vbox>
	<vbox>
		<frame $(gettext 'PDF2Pic')>
			<text xalign=\"0\"><label>$(gettext 'This tool converts a PDF page into a graphic image.')</label></text>
			<text xalign=\"0\"><label>$(gettext 'It may work better than Extract.')</label></text>
		</frame>
		<frame $(gettext 'Select a PDF file')>
			<hbox>
				<entry accept=\"filename\"><variable>PDF2PICNAME</variable></entry>
				<button>
					<input file stock=\"gtk-open\"></input>
					<action type=\"fileselect\">PDF2PICNAME</action>
				</button>
				<button>
					<input file stock=\"gtk-clear\"></input>
					<action>Clear:PDF2PICNAME</action>
				</button>
			</hbox>
			<hbox>
				<text><label>$(gettext 'Page number') </label></text>
				<entry>
					<variable>PDF2PICPAGE</variable>
					<default>1</default>
				</entry>
				<button>
					<input file stock=\"gtk-clear\"></input>
					<action>Clear:PDF2PICPAGE</action>
				</button>
			</hbox> 
		</frame>
		<frame $(gettext 'Output')>
			<hbox>
				<text><label>$(gettext 'Graphic format and DPI') </label></text>
				<comboboxtext width-request=\"100\">
					<variable>PDF2PICFORMAT</variable>
					<item>png</item><item>jpeg</item><item>tiff</item><item>gray</item>
				</comboboxtext>
				<comboboxtext width-request=\"100\">
					<variable>PDF2PICDPI</variable>
					<item>150</item><item>300</item><item>600</item>
				</comboboxtext>
			</hbox>
		<hbox>
			<button>
				<label>$(gettext 'Convert')</label>
				<action>PDF2PICCONVERT &</action>
			</button>
		</hbox>
		</frame>
		<text><label>\"    \"</label></text>
	</vbox>
	<vbox>
		<frame $(gettext 'Pic2PDF')>
			<text xalign=\"0\"><label>$(gettext 'This tool combines a folder of images (JPEG,PNG,TIFF)')</label></text>
			<text xalign=\"0\"><label>$(gettext 'into a single PDF.')</label></text>
		</frame>
		<frame $(gettext 'Folder of image files')>
			<hbox>
				<entry accept=\"directory\"><variable>PICFOLDER</variable></entry>
				<button>
					<input file stock=\"gtk-open\"></input>
					<action type=\"fileselect\">PICFOLDER</action>
				</button>
				<button>
					<input file stock=\"gtk-clear\"></input>
					<action>Clear:PICFOLDER</action>
				</button>
			</hbox>
			<hbox>
				<button>
					<label>$(gettext 'Combine')</label>
					<action>PIC2PDF &</action>
				</button>
				<button>
					<label>$(gettext 'View')</label>
					<action>PROJVIEW</action>
				</button>
			</hbox>
		</frame>
		<text><label>\"    \"</label></text>
		<text><label>\"    \"</label></text>
		<text><label>\"    \"</label></text>
		<text><label>\"    \"</label></text>
		<text><label>\"    \"</label></text>
	</vbox>
	<vbox>
		<frame $(gettext 'Select a PDF file')>
			<hbox>
				<entry accept=\"filename\">
					<variable>PRINTPDFNAME</variable>
				</entry>
				<button>
					<input file stock=\"gtk-open\"></input>
					<action type=\"fileselect\">PRINTPDFNAME</action>
				</button>
				<button>
					<input file stock=\"gtk-clear\"></input>
					<action>Clear:PRINTPDFNAME</action>
				</button>
			</hbox>
		</frame>
		<frame $(gettext 'Select a printer')>
			<comboboxtext>
				<variable>PRINTER</variable>
				 $COMBOLIST 
			</comboboxtext>
		</frame>
		<frame $(gettext 'Pages (optional - select one page or a page range)')>
			<hbox>
				<entry>
					<variable>PRINTSELECTION</variable>
				</entry>
				<button>
       					<input file stock=\"gtk-clear\"></input>
       					<action>Clear:PRINTSELECTION</action>
      				</button>
				<checkbox>
					<label>$(gettext 'Fit to page')</label>
					<variable>CUPSFITTOPAGE</variable>
				</checkbox>
				<checkbox tooltip-text=\"Convert a print job to Postscript\">
					<label>$(gettext 'PS')</label>
					<variable>CUPSPSMODE</variable>
				</checkbox>
				<checkbox tooltip-text=\"Duplicate a PDF image and print with N-up\">
					<label>$(gettext 'Dup')</label>
					 <variable>COPYNUP</variable>
				</checkbox>
			</hbox>
			<hbox>
			<vbox>
			  <text><label>Paper size</label></text>
				<comboboxtext width-request=\"100\">
					 <variable>PAPERSIZE</variable>
					 <item>Letter</item><item>Legal</item><item>A4</item>
				</comboboxtext>
			</vbox>
			<text><label>\"    \"</label></text>
			<vbox>
			  <text><label>Copies</label></text>
				<comboboxtext width-request=\"100\">
					 <variable>PRINTCOPIES</variable>
					 <item>1</item><item>2</item><item>3</item><item>4</item><item>5</item>
				</comboboxtext>
			</vbox>
			<text><label>\"    \"</label></text>
			<vbox>
			  <text><label>N-up pages per sheet</label></text>
				<comboboxtext width-request=\"100\">
					 <variable>NUP</variable>
					 <item>1</item><item>2</item><item>4</item><item>6</item><item>9</item>
				</comboboxtext>
			</vbox>
			<text><label>\"    \"</label></text>
			</hbox>
		</frame>
		<hbox>
				 <text><label>\"     \"</label></text>
				<button>
					<label>$(gettext 'CUPS')</label>
					<action>STARTCUPS</action>
				</button>
				<button>
					<label>$(gettext 'Cancel')</label>
					<action>CANCELPRINT</action>
				</button>
				<button>
					<label>$(gettext 'Print')</label>
					<action>PRINT</action>
				</button>
		 </hbox>
	</vbox>
</notebook>
<hbox>
	<button>
		<label>$(gettext 'Help')</label>
		<action>$WEBBROWSER https://oldforum.puppylinux.com/viewtopic.php?p=551954&i=2 &</action>
	</button>
	<button><label>$(gettext 'Quit')</label></button>
</hbox>
</vbox>
</window>"

gtkdialog -p DIALOG #MM reverted to original gtkdialog
