#! /bin/bash
# rcrsn51 2012-04-14
# based on MU's scale2jpg

export TEXTDOMAIN=peasyscale
export OUTPUT_CHARSET=UTF-8

STARTSCALE () {

SOURCE=$FILEORFOLDER
SCALE=${SCALINGVALUE%\%}

if [ -z "$SOURCE" -o -z "$SCALE" ]; then
 Xdialog --title " " --msgbox "$(gettext 'Missing information!')" 0 0  
 exit 1
fi

case "$TRANSFORM" in
  $(gettext 'Flip horizontal') ) TRANSARG="-flip h";;
  $(gettext 'Flip vertical') ) TRANSARG="-flip v";;
  $(gettext 'Rotate 90')) TRANSARG="-rotate 90";;
  $(gettext 'Rotate -90')) TRANSARG="-rotate 270";;
  *) TRANSARG="";;
esac

if [ -d "$SOURCE" ]; then
  Xdialog --title " " --msgbox "$(gettext 'Scaling... Please wait...')" 0 0 &
  MSGPID=$!
  mkdir -p "$SOURCE"/PEASYSCALE
  if [ -n "$BATCHNAME" ]; then 
    if [ -f "$SOURCE"/PEASYSCALE/.COUNT ]; then
      COUNT=`cat "$SOURCE"/PEASYSCALE/.COUNT`
    else
      COUNT=0
    fi
  fi
  for F in "$SOURCE"/*; do
    [ -d "$F" ] && continue
    file "$F" | grep -q JPEG
    [ $? -ne 0 ] && continue
    if [ -z "$BATCHNAME" ]; then
      FF=`basename "$F"`
    else
      let COUNT=COUNT+1
      echo $COUNT > "$SOURCE"/PEASYSCALE/.COUNT
      CCC=`printf "%003d" $COUNT`
      FF="$BATCHNAME"-$CCC.jpg
    fi
    if [ -z "$TRANSARG" ]; then
      peasyscale.bin "$F" "$SOURCE"/PEASYSCALE/"$FF" $SCALE
    else
      [ "$(which jpegtran)" ] && jpegtran $TRANSARG "$F" > "$SOURCE"/PEASYSCALE/"$FF"
    fi 
  done
  kill $MSGPID
elif [ -f "$SOURCE" ]; then
  file "$SOURCE" | grep -q JPEG
  [ $? -ne 0 ] && exit 1
  DD=`dirname "$SOURCE"`
  mkdir -p "$DD"/PEASYSCALE
  if [ -n "$BATCHNAME" ]; then 
    if [ -f "$DD"/PEASYSCALE/.COUNT ]; then
      COUNT=`cat "$DD"/PEASYSCALE/.COUNT`
    else
      COUNT=0
    fi  
  fi
  if [ -z "$BATCHNAME" ]; then
    FF=`basename "$SOURCE"`
  else
    let COUNT=COUNT+1
    echo $COUNT > "$DD"/PEASYSCALE/.COUNT
    CCC=`printf "%003d" $COUNT`
    FF="$BATCHNAME"-$CCC.jpg
  fi
  if [ -z "$TRANSARG" ]; then
    peasyscale.bin "$SOURCE" "$DD"/PEASYSCALE/"$FF" $SCALE
  else
    [ "$(which jpegtran)" ] && jpegtran $TRANSARG "$SOURCE" > "$DD"/PEASYSCALE/"$FF"
  fi
else
  Xdialog --title " " --msgbox "$(gettext 'File not found!')" 0 0
fi
}

export -f STARTSCALE

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

DEFAULTFILENAME=\"\"
[ $# -eq 1 ] && DEFAULTFILENAME=$1

export PROG="
<window title=\"PeasyScale v1.6\">
<vbox>
  <frame>
    <text xalign=\"0\">
      <label>$(gettext 'PeasyScale can resize single JPEGs or entire folders. The scaled JPEGs are stored in a subfolder of the originals named PEASYSCALE. To perform transformations, your Puppy must have jpegtran.')</label>
    </text>
  </frame>
  <frame $(gettext 'Drag a JPEG file or folder into this box')>
    <hbox>
      <entry>
        <variable>FILEORFOLDER</variable>
        <default>$DEFAULTFILENAME</default>
      </entry>
    </hbox>
  </frame>
  <frame $(gettext 'Select a scaling % value      Or a transformation')>
    <hbox>
      <entry>
        <default>50</default>
        <variable>SCALINGVALUE</variable>
      </entry>
      <combobox>        
        <variable>TRANSFORM</variable>
        <item>$(gettext 'None')</item><item>$(gettext 'Rotate 90')</item><item>$(gettext 'Rotate -90')</item>
        <item>$(gettext 'Flip horizontal')</item><item>$(gettext 'Flip vertical')</item>
      </combobox>
    </hbox>
  </frame>
  <frame $(gettext 'Use a batch filename?')>
     <text xalign=\"0\">
      <label>$(gettext 'If you enter a name like PARTY, the files will be named PARTY-001.jpg, etc.')</label>
    </text>
    <entry>
        <variable>BATCHNAME</variable>
     </entry>
  </frame>
  <hbox>
    <button>
      <label>$(gettext 'Scale')</label>
      <action>STARTSCALE</action>
      <action>Clear:FILEORFOLDER</action>
    </button>
    <button><label>$(gettext 'Quit')</label></button>
  </hbox>
</vbox>
</window>
"
gtkdialog3 -c -p PROG
