#! /bin/sh

# File:        squeak
# Author:      Jos L. Redrejo <jredrejo@edu.juntaextremadura.net>
#
# Carga la imagen de squeak que se le pasa como comando y si no
#se le pasa ninguna llama a squeak con la imagen preparada para LinEx
#
# Copyright (C) 2003 J.L.Redrejo.
#
# This file 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.
#


ensuredir()
{
  if [ ! -d "${1}" ] ; then
    if mkdir "${1}" ; then
	echo squeak: Creado ${1}
	if [ -d $GNOME_DESKTOP ]; then 
		cp /usr/share/applications/squeak.desktop $GNOME_DESKTOP/
	fi
    else
      echo squeak: No se ha podido crear ${1}!
    fi
  fi
}
ensuredir()
{
  if [ ! -d "${1}" ] ; then
    if mkdir "${1}" ; then
      echo squeak: Created ${1}
      if [ -d $GNOME_DESKTOP ]; then 
	cp /usr/share/applications/squeak.desktop $GNOME_DESKTOP/
      fi
      if [ -n "${2}" ] ; then
        chmod "${2}" "${1}"
      fi
    else
      echo npsqueak: Could not create ${1}!
    fi
  fi
}

ensurefile()
{
  if [ ! -e "${2}" ] ; then
    if cp "${1}" "${2}" ; then
      echo squeak: Creado ${2}
    else
      echo squeak: No se ha podido crear ${2}
      if [ ! -r "${1}" ] ; then
        echo squeak: porque ${1} no existe
      fi
    fi
  fi
}

#Elige la imagen ms reciente de las que haya en /usr/share/squeak. Otra alternativa sera #mostrar un dilogo como el ltimo, pero entonces lo lgico sera mostrarlo siempre.
#
#Si el usuario no sabe manejar las imgenes no merece la pena tal idea. Y si sabe manejaralas
#no necesita ese dilogo para hacerlo.
lastIMAGE=`ls --sort=time /usr/share/squeak/*.image |head -1`
IMAGE=`basename ${lastIMAGE}`
CHANGES=`echo $IMAGE|sed 's/.image/.changes/'`
SQ_DIR=/usr/lib/squeak/3.7-7
VM="$SQ_DIR/squeak -mmap 512M -nomixer "

#Emulacion oss en alsa, quitado porque da problemas a la vm
#if [ -f /usr/bin/aoss ]; then
# 	VM="aoss $VM"
#fi

#Si hay UTF hay que eliminarlo o no funciona bien la vm
export LC_ALL=`echo $LC_ALL|sed 's/.UTF-8//'`
export LANG=`echo $LC_ALL`

#vemos si el primer parmetro es un .pr
derecha=`echo ${1: -3}`

if [  -z "$1" ] || [ "$derecha" = ".pr" ]; then

	HOME2=$HOME
	if [ -f /etc/institutoLinex ]; then #estoy en un instituto con LinEx
		HOME2=/homeSqueak/$USER
	fi

	if [ -d $HOME/.gnome-desktop ]; then GNOME_DESKTOP=$HOME/.gnome-desktop; fi
	if [ -d $HOME/Desktop ]; then GNOME_DESKTOP=$HOME/Desktop; fi

	ensuredir "${HOME2}"
	ensuredir "${HOME2}/.squeak"
	ensurefile "/usr/share/squeak/${IMAGE}"  "${HOME2}/.squeak/${IMAGE}" 
	if [ -f /usr/share/squeak/$CHANGES ]; then
		ensurefile "/usr/share/squeak/${CHANGES}"  "${HOME2}/.squeak/${CHANGES}"
	fi
	if [ ! -h ${HOME2}/.squeak/SqueakV3.sources ]; then
		ln -s /usr/share/squeak/SqueakV3.sources ${HOME2}/.squeak/SqueakV3.sources
	fi

	#crea el enlace adecuado para tener squeak en la carpeta del home:
	if [ ! -h ${HOME}/squeak ]; then
		ln -s ${HOME2}/.squeak ${HOME}/squeak
	fi

	#si hay ms de una imagen muestra todas
	cuenta=`ls ${HOME}/squeak/*.image|wc -l`
	
	if [ $cuenta == 1 ]; then
		Archivo=`ls ${HOME}/squeak/*.image`
		export SQUEAK_IMAGE=$Archivo
	else
		Archivo=`Xdialog --stdout --title "Tienes ms de una imagen de squeak, escoje una:" --fselect "${HOME}/squeak/*.image" 0 0`
		case $? in
       		 0)
                export SQUEAK_IMAGE=$Archivo;;
      		  1)
                export SQUEAK_IMAGE="";;
      		  255)
                export SQUEAK_IMAGE=`ls --sort=time $HOME/squeak/*.image | head -1`;;
		esac
		#case 0: eligi una imagen
		#case 1: cancel la eleccin:
		#case 255: Cerr el cuadro de dilogo: carga la ltima imagen usada en el directorio de squeak:



	fi
else
	
	export SQUEAK_IMAGE=$1
	
fi

#prepara el plugin si no est ya preparado y est instalado nuestro squeak-plugin:
if [ ! -z "$IMAGE" ]; then
	ensuredir "${HOME}/.npsqueak"
	ensuredir "${HOME}/.npsqueak/secure" 700
	ensuredir "${HOME}/.npsqueak/untrusted"
	cd  ${HOME}/.npsqueak
	#Si en /usr/share/squeak hay una imagen de plugin la usamos
	if [ -f /usr/share/squeak/SmallLandPlugin.image ];then
		ln -sf /usr/share/squeak/SmallLandPlugin.image SmallLandPlugin.image
	fi

	if [ -f /usr/share/squeak/SqueakPlugin.image ];then
	   cp -f /usr/share/squeak/SqueakPlugin.image SqueakPlugin.image
	else
		if [ -e SmallLandPlugin.image ]; then
		   ln -sf SmallLandPlugin.image SqueakPlugin.image
		fi
        fi
        cd -
fi



#Si est activado Caps_Lock lo desactivamos
xresetcapslock

#Si no cancel arranca:

if [ ! -z "$SQUEAK_IMAGE" ]; then	
	if [ -z $2 ]; then
		#vemos si el primer parmetro es un .pr
		derecha=`echo ${1: -3}`
		#vemos si contiene la url completa, empezando por /:
		principio=`echo $1|cut -c1`
		
		if [ "$derecha" = ".pr" ]; then
			if [ "$principio"="/" ]; then
				$VM "$SQUEAK_IMAGE" "$PWD/$1"
			else
				$VM "$SQUEAK_IMAGE" "$1"
			fi
		else
			$VM 
		fi
	else
		$VM "$1" "$2"
	fi

fi
