#! /bin/bash

## 
## Usage: %PROG% [OPTIONS] [FILE]
## 
##   Uses gxmessage to view a file, with options to edit or print
## 
## Options:
##   -c          center
##   -f COLOUR   foreground colour
##   -b COLOUR   background colour
##   -s FONT     message font or style (e.g. 'serif 14')
##   -w          wrap long lines
##   -h          help
## 

# I, the Copyright holder of this work, hereby release it into the Public
# Domain. This applies worldwide. In case this is not legally possible, I
# grant anyone the right to use this work for any purpose, without any
# conditions, unless such conditions are required by law.
#
# 2009 Timothy Richard Musson <trmusson@gmail.com>


PROG=$(basename $0)
EX_USAGE=64
XMESSAGE=${XMESSAGE:-$(which gxmessage)} || XMESSAGE=xmessage
GEDIT=gedit

MSG_TITLE=$PROG
MSG_FG=
MSG_BG=
MSG_GEOM=800x600
MSG_FONT=monospace


[ "$XMESSAGE" = xmessage ] && MSG_FONT=


invocationError ()
{
  echo "Try '$PROG -h'" >&2
  exit $EX_USAGE
}


showUsage ()
{
  sed -n '/^##/s/^## //p' $0 | sed -e "s#%PROG%#${PROG}#g"
  exit
}


while getopts 'chf:b:s:w' Option
do
  case $Option in
  c) center=1 ;;
  f) MSG_FG=$OPTARG ;;
  b) MSG_BG=$OPTARG ;;
  s) MSG_FONT=$OPTARG ;;
  w) wrap=1 ;;
  h) showUsage ;;
  *) invocationError ;;
  esac
done
shift $(($OPTIND - 1))
[ "$#" -gt 1 ] && invocationError


filename=${1:--}

if [ "$filename" = '-' ]; then
  buttons=GTK_STOCK_CLOSE:103
else
  MSG_TITLE="$MSG_TITLE: $filename"
  buttons=GTK_STOCK_EDIT:101,GTK_STOCK_PRINT:102,GTK_STOCK_CLOSE:103
fi


$XMESSAGE -title "$MSG_TITLE"                \
          ${MSG_GEOM:+-geometry "$MSG_GEOM"} \
          ${center:+-center}                 \
          ${MSG_FONT:+-font "$MSG_FONT"}     \
          ${MSG_FG:+-fg "$MSG_FG"}           \
          ${MSG_BG:+-bg "$MSG_BG"}           \
          ${wrap:+-wrap}                     \
          -buttons "$buttons"                \
          -default GTK_STOCK_CLOSE           \
          -file "$filename"

action=$?
if [ "$action" -eq 101 ]; then
  $GEDIT "$filename"
elif [ "$action" -eq 102 ]; then
  enscript -G "$filename" | lpr
fi

exit 0

