#!/bin/bash
###############################################################################################
# Rotina de Gravacao do CD
#
# Copyright (C) 2005 Crazy Remasters
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# dreamCD - This version was made toward Linux by Crazy Remasters
# Crazy Remasters are: nelsongs <ngsilveira@gmail.com>
# 		       drjesteves <drjesteves@yahoo.com.br>
#		       katatau <katatau@epronx.com.br>
# Create by Nelson Gomes da Silveira (ngsilveira@gmail.com), on 10/05/2005.
# Last revision & update, by Gaspar Domingos de Araujo (katatau@epronx.com.br), on 08/06/2005.
# Test and suport drjesteves.
# Obs: A culpa de tudo isto deve-se a NELSONGS que iniciou-nos e viciou-nos à criar scripts.
#################################################################################################

function escolha
{
retval=$?
case $retval in
1)
exit 0;;
255)
exit 0;;
esac
}

case "`tty`" in
/dev/tty[1-8])
MODE=text
DIALOG=dialog
;;
/dev/pts/*|/dev/ttyp*)
MODE=x
export XDIALOG_HIGH_DIALOG_COMPAT=1
[ -x /usr/bin/gdialog ] && DIALOG=gdialog
[ -x /usr/bin/Xdialog ] && DIALOG=Xdialog
[ $DIALOG = dialog ] && MODE=text
;;
*)
esac

if [ -f /usr/bin/cdrecord ]; then
   $DIALOG --title "Gravador de CD." \
   --ok-label "Sim" --cancel-label "Nao" \
   --yesno "\nO programa de gravação de CD foi detectado, deseja utiliza-lo para gravar o CD." 8 48
   if [ $? = 0 ]; then  #usuario escolheu gravar usando o cdrecord ##Verifica quantos dispositivos existem, até 2
      cdrecord -scanbus > grvcds.txt 2>/dev/null  #para beatrix
      if [ ! `grep 0,0,0 grvcds.txt | cut -f2` ]; then
         cdr=1
         cdrecord -dev=ATAPI -scanbus > grvcds.txt 2>/dev/nul #para knoppix e kanotix
      fi 

      if [ `grep 0,0,0 grvcds.txt | cut -f2` ]; then
         unid1="0,0,0"
         disp1=`grep 0,0,0 grvcds.txt | cut -f3`
         unid2="0,0,0"
         disp2=`grep 0,1,0 grvcds.txt | cut -c13`
      else
         unid1=""
      fi 

      if [ $disp2 != "*" ]; then
         unid2="0,1,0"
         disp2=`grep 0,1,0 grvcds.txt | cut -f3`
      else
         unid2="0,0,0"
      fi
      if [ $unid1 != $unid2 ]; then
         grvCD=$($DIALOG --stdout --cancel-label "Sair" --title "Escolha o Gravador de CD." \
         --menu "\n\nEscolha que gravador deseja usar para queimar a imagem iso.\n\n" 12 75 2 $unid1 "$disp1" $unid2 "$disp2")
      else
         grvCD="$unid1"
      fi
      export grvCD

      if [ "$grvCD" == "$unid1" ]; then
         device="$disp1"
      else
         device="$disp2"
      fi
      speed=$($DIALOG --stdout --cancel-label "Sair" --title "Velocidade do Gravador." \
      --inputbox "\nSeu gravador é$device ($grvCD).\nQual a velocidade de gravação dessa unidade? Se não souber, aceite a padronizada de 8, pois é segura." 12 85 8)
      export speed

function fim {
      $DIALOG --msgbox "Seu CD já esta gravado!!!" 8 33
      rm -f grvcds.txt
exit
}

function gravar {
while : ; do
function iso {
 isofile=$($DIALOG --stdout --cancel-label "Sair" --title "Digite o diretório e o nome onde encontra-se a imagem .iso" --fselect / 20 60)
 if [ $cdr = 1 ]; then
  cdrecord -dev=ATAPI:$grvCD -v -eject -data $isofile 
 else
  cdrecord -dev=$grvCD -v -eject -data $isofile
 fi
}
function dire {
 isofile=$($DIALOG --stdout --cancel-label "Sair" --title "Digite o diretório que sera gravado." --fselect / 20 60)
 nvol=$($DIALOG --stdout --title "Nome para o Volume (midia)." \
 --inputbox "\nDigite um nome para o Volume. Se não quizer, o padrão sera:" 8 65 DreamCD)
 if [ $cdr = 1 ]; then
  mkisofs -J -L -l -r -T -V $nvol $isofile | cdrecord -v fs=32m dev=ATAPI:$grvCD -eject -
 else
  mkisofs -J -L -l -r -T -V $nvol $isofile | cdrecord -v fs=32m dev=$grvCD -eject -
 fi
}
	resposta=$($DIALOG --stdout --cancel-label "Sair" \
	--title "Tipo de gravação" \
	--menu "Escolha uma das opções:" \
	9 45 2 \
	1 'Gravar uma imagem .iso' \
	2 'Um Diretorio, encerando o CD' )
	# Se clicou em cancelar ou teclou ESC, sair,,,
	[ $? -ne 0 ] && break
	# Tratar as respostas 
	case "$resposta" in
		1) iso   ;;
		2) dire ;;
	esac 
fim
done
}
function cdrw {
   function clean {
      while : ; do
      function fast {
         if [ $cdr = 1 ]; then
            cdrecord -dev=ATAPI:$grvCD -blank=fast 
         else
            cdrecord -dev=$grvCD -blank=fast  
         fi
      }
      function all {
         if [ $cdr = 1 ]; then
            cdrecord -dev=ATAPI:$grvCD -blank=all 
         else
            cdrecord -dev=$grvCD -blank=all  
         fi
      }
	resposta=$($DIALOG --stdout --cancel-label "Sair" \
	--title "Apagar a Mídia Regravavel" \
	--menu "Escolha uma das opções:" \
	9 45 2 \
	1 'Rápidamente.' \
	2 'Totalmente.' )
	# Se clicou em cancelar ou teclou ESC, sair,,,
	[ $? -ne 0 ] && break
	# Tratar as respostas 
	case "$resposta" in
		1) fast   ;;
		2) all ;;
	esac 
gravar
done
}
while : ; do
	resposta=$($DIALOG --stdout --cancel-label "Sair" \
	--title "Apagar a Mídia Regravavel" \
	--menu "Escolha uma das opções:" \
	9 45 2 \
	1 'Apagar CD RW.' \
	2 'Não apagar CD RW.' )
	# Se clicou em cancelar ou teclou ESC, sair,,,
	[ $? -ne 0 ] && break
	# Tratar as respostas 
	case "$resposta" in
		1) clean   ;;
		2) gravar ;;
	esac 
echo $resposta
sleep 5
done
}

#Menu Inicial
while : ; do
	resposta=$($DIALOG --stdout --cancel-label "Sair" \
	--title "Tipo de Mídia." \
	--menu "Escolha uma das opções:" \
	9 45 2 \
	1 'CD RW - Mídias regravaveis.' \
	2 'CD R  - Mídias não regravaveis.' )
	# Se clicou em cancelar ou teclou ESC, sair,,,
	[ $? -ne 0 ] && break
	# Tratar as respostas 
	case "$resposta" in
		1) cdrw ;;
		2) gravar;;
	esac 
done
  fi
fi
#The End