#!/bin/bash
# Modificado para GALPon MiniNo
#----------------------------------------------------------------------
# Calculate MD5 (Files and Directories) - Nautilus Script
#----------------------------------------------------------------------
# License agreement (GPL) can be found at the end of this file
#----------------------------------------------------------------------
# Author: Ofir Klinger (http://violetech.googlepages.com/)
# Original author: Christopher Bratusek (http://www.nanolx.org/)
#----------------------------------------------------------------------
# Version 2.0.20071115
#----------------------------------------------------------------------
# Modificado para GALPon MiniNo

case $LANG in
    es*)
	MSG1="Calcular MD5 (archivos y directorios)"
	MSG2="Haciendo"
	MSG3="Mostrar en pantalla el resultado."
	MSG4="Guardar en un archivo (con extensión .md5)"
	MSG5="Por favor, escoja el modo en que desea que se presente la suma MD5:"
	MSG6="archivo(s) seleccionado(s))"
	MSG7="La suma MD5 del archivo seleccionado es:"
	MSG8="Seleccione"
    ;;
    gl*)
	MSG1="Calcular MD5 (ficheiros e directorios)"
	MSG2="Haciendo"
	MSG3="Mostrar en pantalla o resultado."
	MSG4="Gardar nun ficheiro (con estensión .md5)"
	MSG5="Por favor, escolla o modo no que desexa que se lle presente a suma MD5:"
	MSG6="ficheiro(s) seleccionado(s))"
	MSG7="A suma MD5 do ficheiro seleccionado é:"
	MSG8="Seleccione"
    ;;
    *)
	MSG1="Calculate MD5 (files and folders)"
	MSG2="Doing"
	MSG3="Display results."
	MSG4="Save in a file (with .md5 extension)"
	MSG5="Please, choose the way you wish sum MD5 to be displayed:"
	MSG6="selected file(s))"
	MSG7="MD5 sum of the selected file is:"
	MSG8="Choose"
    ;;
esac


# Define NEWLINE as the delimiter...
IFS='

';

# List all files
files=();
count=0;
for file in "$@";
do
  files[$count]=$file;
  count=$(($count+1));
done
filesCount=${#files[*]};

if [ -z "$@" ];then
	file=`zenity --file-selection --title="$MSG1"`
	filesCount=1
	if [ -z "$@" ];then
		exit 0
	fi
fi

if [ $filesCount == 1 ] ; then
  if [[ -d "$file" ]]; then
    Sumname=$(echo ${files[0]} | sed -e 's/.*\///g');
    totalFiles=$(find $file -type f | wc -l)
    count=0;
    (for innerFile in `find $file`; do
      if [[ -f "$innerFile" ]]; then
        md5sum "$innerFile" >> "$Sumname.md5"
        count=$(($count+1));
        newPercentage=$(($(($count*100))/$totalFiles));
        if [ "$newPercentage" \> "$percentage" ]; then
          echo $newPercentage;
          percentage=$newPercentage;
        fi;
      fi;
    done) | zenity --progress --title "$MSG1" --text "$MSG2: $Sumname.md5" --auto-close;
  else
    # Ask which way the user wants the MD5 to be presented...
    choice=`zenity --list --title "$MSG1" --radiolist TRUE "$MSG3" FALSE "$MSG4" --column= --column=$MSG8  --text="$MSG5\n($filesCount $MSG6"`

    filename=$(echo ${files[0]} | sed -e 's/.*\///g');

    if [ "$choice" == "$MSG4" ] ; then
      (md5sum "${files[0]}" > "$filename.md5") 2>&1 | zenity --progress --title "$MSG2 md5" --text "$MSG2: $filename.md5" --pulsate --auto-close;
    elif [ "$choice" == "$MSG3" ] ; then
      md5Hash=`md5sum "$file"`;
      zenity --entry --title "$MSG1" --text="$MSG7" --entry-text="$md5Hash";
    else
      echo ""
    fi
  fi
else
  count=0;
  Sumname="md5Results";
  (for file in "${files[@]}"; do
    if [[ -d "$file" ]]; then
      for innerFile in `find $file`; do
        if [[ -f "$innerFile" ]]; then
          md5sum "$innerFile" >> "$Sumname.md5"
        fi;
      done;
    else
      md5sum "$file" >> "$Sumname.md5"
    fi
    count=$(($count+1));
    echo $(($(($count*100))/$filesCount));
  done) | zenity --progress --title "$MSG1" --text "$MSG2: $Sumname.md5" --auto-close;
  leafpad "$Sumname.md5"
fi

