#!/bin/sh

#+
# Xop
#
# NAME
# xop - starts an xop task
#
# SYNOPSIS
# xop [-e -u -d -h task]
#
# DESCRIPTION
# Starts either the xop main program or an xop task given by 
# the "task" argument. The task must recognized by xop, i.e.,
# xplot, dabax, xbragg, etc. 
#
# OPTIONS:
#     -e  starts xop in embedded mode (default)
#     -d  starts xop in developer mode 
#     -h  displays the xop man page
#
# EXAMPLES:
#     xop -h       [displays help]
#     xop          [calls xop in embedded mode]
#     xop -d       [calls xop in developer mode]
#     xop xplot    [calls task xplot in embedded mode]
#     xop -e xplot [calls task xplot in embedded mode (as above)]
#-

############################################################################
#
# PLEASE CUSTOMIZE!!!!!!!!!!!!!!
#

# Define the environmental variable XOP_HOME pointing to the XOP distribution
XOP_HOME=/scisoft/XRayOptics/xop2.1

# Define default XOP mode 
XOP_MODE=EMBEDDED			# Mode

# The following variables are only used if you want to use XOP also
# in "development" mode. For that you nee a licensed version of idl 6.0
# They are ignored if only "embedded" mode will be used.
#
# Define IDL_DIR_DEVELOPMENT as the directory  where a licensed version of IDL 
# is installed. 
# Different idl installations and/or licenses are can be defined in different "case" 
# blocks. 

case `hostname` in
  indigo*)
    IDL_DIR_DEVELOPMENT=/sware/com/idl-6.0/idl_6.0
    ;;
  amber*)
    IDL_DIR_DEVELOPMENT=/sware/com/idl-6.0/idl_6.0
    ;;
  *)
    IDL_DIR_DEVELOPMENT=/opt/rsi/idl_6.0
    LM_LICENSE_FILE= /opt/rsi/license/license.dat
    export LM_LICENSE_FILE
    ;;
esac

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

#
# check if DISPLAY variable is set
#
if [ "$DISPLAY" = "" ]; then
  echo "$0: DISPLAY variable not set."
  exit 1
fi

#
# Optional environmental variables
#

# DABAX_PATH
#DABAX_PATH=$XOP_HOME/data/dabax
#export DABAX_PATH

# DABAX_HELP
#DABAX_HELP=$XOP_HOME/doc
#export DABAX_HELP

# XOP_WD [Working Directory]
#XOP_WD=~/xop
#export XOP_WD

# XOP_BINARIES. Where the application's binaries sit down
#XOP_BINARIES=$XOP_HOME/bin.`$XOP_HOME/xop_uname`
#export XOP_BINARIES

# XOP_BINARIES_DEBUG. Debugging flag to test the xop-spawn'ed processes.
#XOP_BINARIES_DEBUG=1
#export XOP_BINARIES_DEBUG

# XOP_ANNOUNCE. If this flag is set, then start the "announce" window
# when starting XOP
#XOP_ANNOUNCE=1
#export XOP_ANNOUNCE

# XOP_BARTITLE. To redefine the XOP bar title.
XOP_BARTITLE='XOP 2.11 (2004/01/15)'
export XOP_BARTITLE

# XOP_DEFAULTS_DIR. To write/read defaults input files
#XOP_DEFAULTS_DIR=$HOME/.xop
#export XOP_DEFAULTS_DIR

# XPLOT_DEFAULTS. Xplot defaults file
#XPLOT_DEFAULTS=
#export XPLOT_DEFAULTS


#
# Parses the command line to define the XOP_MODE ('EMBEDDED' [default],
# 'USER' or 'DEVELOPER') and XOP_TASK (the task to be launched 
# [default=xop]).
#
# If the local distribution do not allow all the modes, customize the
# error messages.
#

# This overwrites the defaults
while getopts eudh c
do 
  case $c in
    e) 
      XOP_MODE=EMBEDDED
      ;;
    d)
      XOP_MODE=DEVELOPER
      ;;
    h)
      nroff -man $XOP_HOME/xop.1 | more 
      exit 0
      ;;
    ?)
      echo "Usage: xop [-e -d -h task]"
      exit 2
      ;;
  esac
done
shift `expr $OPTIND - 1`

#
# Define task
#
if [ "$1" = "" ]; then
  XOP_TASK=xop
else
  XOP_TASK=$1
fi


#
# Set IDL_PATH
#

case $XOP_MODE in
  EMBEDDED ) 
    IDL_DIR=$XOP_HOME/idl_6.0
    ;;
  DEVELOPER )
    IDL_DIR=$IDL_DIR_DEVELOPMENT
    ;;
  ?)
    echo "IDL mode ($IDL_MODE) not valid."
    exit 2
    ;;
esac

#
# export variables to be accessed by XOP trough the "GetEnv" function.
#
export XOP_HOME
export XOP_RC
export XOP_MODE
export XOP_TASK
export IDL_DIR

#
# Display options
#
echo "XOP_HOME: $XOP_HOME"
echo "XOP_MODE: $XOP_MODE"
echo "XOP_TASK: $XOP_TASK"
echo "IDL_DIR: $IDL_DIR"

#
# Start xop
#
echo "Starting XOP task: $XOP_TASK in $XOP_MODE mode."
case $XOP_MODE in
  EMBEDDED) 
    XOP_COMMAND="$IDL_DIR/bin/idl -em=$XOP_HOME/xop.sav"
    echo "Executing: $XOP_COMMAND"
    $XOP_COMMAND
    ;;
  DEVELOPER)  
    XOP_COMMAND="$IDL_DIR/bin/idl $XOP_HOME/maind.pro"
    echo "Executing: $XOP_COMMAND"
    $XOP_COMMAND
    ;;
  *)
    echo "Mode $XOP_MODE not recognized."
    exit 2
    ;;
esac

exit 0
