#!/bin/bash
#
# Script supporting the commandline program
# disc-cover through GUI support via zenity
# Version 0.2


# Change
PS_VIEWER="evince"
EDITOR="gedit"
CONVERT_OPTIONS="-antialias"

# Don't Change
MYCDDB="/tmp/mycddb"
MYPIC="/tmp/picture.eps"
MYLABEL="/tmp/label.ps"

cleanup() {
  rm $MYCDDB
  rm $MYPIC
  rm $MYLABEL
  rm -rf /tmp/disc-cover*
}


# DVD Gerät oder CDDB Datei (z.B. von freedb.org downloaden und anpassen)
DVD_DEVICE="$( \
	zenity --width=800 --height=600 \
	--title "CD einlesen oder CDDB Datei" --text "Bitte wählen Sie eine Option aus." \
	--list --radiolist \
	--column "Auswahl" --column "Gerät" --column "Information" \
	TRUE  "/dev/scd0"  'Erstes internes CD/DVD Gerät' \
	FALSE "/dev/scd1"  'Zweites internes CD/DVD Gerät' \
	FALSE "/dev/cdrom" 'Standard' \
	FALSE "/dev/dvd"   'Standard' \
	FALSE "CDDB" 'Eine CDDB Datei' \
	)"

[ "${DVD_DEVICE}" = "" ] && exit 1


DVD_CDDB_COMMAND=""

if [ "${DVD_DEVICE}" = "CDDB" ]
then
	CDDBFILE="$(zenity --file-selection \
	--title 'CDDB Datei auswählen' \
	--text  'Bitte wählen Sie eine GÜLTIGE CDDB Datei aus.' \
	)"

	[ "${CDDBFILE}" = "" ] && exit 1

	# Prüfen, ob tatsächtlich CDDB
	if file "${CDDBFILE}" | grep "xmcd database"
	then 
		if zenity --question --title "CDDB editieren" \
			--text "Möchten sie die CDDB Datei editieren?" 
		then 
			${EDITOR} "${CDDBFILE}"
		fi

		DVD_CDDB_COMMAND="-file ${MYCDDB}"


	else
		zenity 	--info --title "Fehler" \
			--text "Die angegene Datei ist keine gültige CDDB Datei.\n\nBitte starten Sie erneut."
		cleanup
		exit 1

	fi

else
	if wodim dev="${DVD_DEVICE}" -toc 
	then 
		DVD_CDDB_COMMAND="-Device ${DVD_DEVICE}"

	else		
		zenity  --info --title "Fehler" \
			--text "Bitte legen Sie erst ein CD oder DVD Medium ein."
		cleanup
		exit 1

	fi

fi



# Typ der CD
CASE_TYPE="$( \
	zenity --width=800 --height=600 \
	--title "Druckoptionen" --text "Bitte wählen Sie eine Option aus." \
	--list --radiolist \
	--column "Drucken" --column "Hüllenformat" --column "Information" \
	FALSE "backonly" 'most common jewel case' \
	FALSE "jewel" 'most common jewel case' \
	FALSE "jewel-picture" 'jewel case with picture on the front cover' \
      	TRUE  "paper-box" 'paper-box for cd (Papierhuelle für CDs)' \
	FALSE "letter-slim" "slim that fits on letter sized paper" \
	FALSE "sleeve" "simple sleeve insert" \
	FALSE "slim" 'slim case (Philips)' \
	FALSE "tape" 'audio cassette tape (experimental)' \
	FALSE "tdk-slim" 'slim case for TDK' \
	FALSE "tevion-slim" 'slim case for Tevion' \
	FALSE "x-slim" "slim with exchanged flap and side" \
	)"

[ "${CASE_TYPE}" = "" ] && exit 1

# Bild auf Frontcover einfügen
if zenity --question --title "Bild einfügen" --text "Möchten Sie ein Bild einfügen?"
then 
	FRONT_PICTURE="$(zenity --file-selection \
	--title "Bildauswahl für Cover" \
	--text  "Bitte geben Sie eine Bilddatei an" \
	)"

	if [ "${FRONT_PICTURE}" = "" ]
	then
		MYPICCOMMAND=""

	else
		MYPICCOMMAND="-p ${MYPIC}"
		convert "${CONVERT_OPTIONS}" "${FRONT_PICTURE}" ${MYPIC}

	fi

fi

cp "${CDDBFILE}" ${MYCDDB}

DISC_COVER_COMMAND=" -va ${DVD_CDDB_COMMAND} -c ${CASE_TYPE} ${MYPICCOMMAND} -o $MYLABEL "
echo "${DISC_COVER_COMMAND}"

disc-cover ${DISC_COVER_COMMAND} && ${PS_VIEWER} $MYLABEL

cleanup

exit 0
