.KEY source/k,dest/k,label/k
.DEF source "dh1:telecom/downloads/"
.DEF dest "ram:"
.DEF label FirstMenu
;
failat 20
skip <label>
; -------------------------------------------------------------------------
; This is a script using JMenu. It allows you to select an 
; archive program (LHarc, Zoo, etc.) and a file to unpack.
;
; format: execute unpack (SOURCE SourceDir) (DEST DestDir)
: note: if the source or destination are subdirectories they must end
;       with a "/"
; -------------------------------------------------------------------------
lab FirstMenu
;
; show archive programs menu
;    'unpack.menu1' contains the menu definition
;    'selection1' is the environment variable which will equal the
;        user's choice
;
JMenu >NIL: s:unpack.menu1 selection1
if $selection1 eq 1
   quit   ;user selected Quit from menu
endif
if $selection1 eq 2
   Pkazip
   skip SKIPFIRST
endif
;
; If choice 3, 4 or 5 build a menu of available files.
; An error will occur if there are more files than can be displayed on
; the menu.
;
setenv dcsource <source>
cd <source>
if $selection1 eq 3   ;display menu of #?.lzh
   echo >ram:dir.menu "TITLE Directory of LZH files"
	echo >>ram:dir.menu "TITLE Choose a file to unpack"
	echo >>ram:dir.menu "MENU Never mind"
	echo >>ram:dir.menu "EXEC"
	list >>ram:dir.menu #?.lzh LFORMAT="MENU %s"
	list >>ram:dir.menu #?.lzh LFORMAT="EXEC SetEnv dcfile %s"
	setenv dcmethod Lharc
	setenv dcstring " -x -m -a e "
endif
if $selection1 eq 4   ;display menu of #?.zoo
   echo >ram:dir.menu "TITLE Directory of ZOO files"
	echo >>ram:dir.menu "TITLE Choose a file to unpack"
	echo >>ram:dir.menu "MENU Never mind"
	echo >>ram:dir.menu "EXEC"
	list >>ram:dir.menu #?.zoo LFORMAT="MENU %s"
	list >>ram:dir.menu #?.zoo LFORMAT="EXEC SetEnv dcfile %s"
	setenv dcmethod Zoo
	setenv dcstring " e "
endif
if $selection1 eq 5   ;display menu of #?.arc
   echo >ram:dir.menu "TITLE Directory of ARC files"
   echo >>ram:dir.menu "TITLE Choose a file to unpack"
	echo >>ram:dir.menu "MENU Never mind"
	echo >>ram:dir.menu "EXEC"
	list >>ram:dir.menu #?.arc LFORMAT="MENU %s"
	list >>ram:dir.menu #?.arc LFORMAT="EXEC SetEnv dcfile %s"
	setenv dcmethod Arc
	setenv dcstring " e "
endif
;
lab SecondMenu
;
; show file names menu
;    'dir.menu' contains the menu definition
;    'selection2' is the environment variable which will equal the
;        user's choice

jmenu >nil: ram:dir.menu selection2
if ERROR
   echo "Too many files to display on menu."
	quit
endif
if $selection2 eq 1		;never mind was chosen
	skip SKIPFIRST
endif
;
;  create single line script to execute selected program with parameters
;
join env:dcmethod env:dcstring env:dcsource env:dcfile AS ram:temp
cd <dest>
execute ram:temp
skip SKIPSECOND
;
;  since you can't skip backwards, re-execute this script with a label name
;
lab SKIPSECOND
execute unpack SOURCE <source> DEST <dest> LABEL SecondMenu
quit
lab SKIPFIRST
execute unpack SOURCE <source> DEST <dest>
quit
