# WimpWorks Information File
# WimpWorks  Jaffa Software 1997. All rights reserved.

DEF TASKdetails
	Name		ZipEE
	Purpose		Desktop Encoding and Extraction
	Author		John Pettigrew
	Licence		FreeWare
	Version		1.47 (19th May 1998)
	Compress	True
	Memory		0K
	IconbarSide	Right
	IconbarPriority	&00000000
	IconbarSprite	!zipee
	IconbarText	
ENDTASK

DEF WEMinclude
	Starter Pack
ENDWEM

DEF MENUiconMenu%
	ZipEE
	Info
		LS(infoWindow%)
		
	ZipInfo
		
		PROCforceinfo
	Force Zip
		
		PROCforcezip
	Force Unzip
		
		PROCforceunzip
	Choices
		L
		CENTREWIN(choices)
	Quit
		
		CLOSEDOWN
ENDMENU

DEF SUBR_PROCstart
	Event	0
	Every	-1
DEF PROCstart
  LOCAL choices%,temp%
  ZipDir$=ZSTRING(TASKINFO(1))
  currentzip$=""
  newdir%=FALSE
  specfile$=""
  SETSAVE("ZipFile","file_ddc")
  choices%=LOADFILE("<WWTask$Dir>.Choices")
  IF choices%=-1 THEN 
   temp%=STDBOX("ZipEE initialization problem - no choices file","ZipEE",%1)
   PROCresetchoices
   PROCsetchoices
  ELSE
   PROCloadchoices
  ENDIF
  SHADEICON(choices,33,1)
  SHADEICON(choices,34,1)
  RELEASE(choices%)
ENDPROC
ENDSUBR

DEF SUBR_PROCloadfile
	Event	4
	Every	-1
DEF PROCloadfile(window%, icon%, file$, type%)
 IF window%=-1 THEN
  IF ITEMTICKED(iconMenu%,2) THEN
   unzip%=FALSE
   SETSAVE("Zipfile","file_ddc")
   zip$=file$
   OPENSAVE
  ELSE
   IF type%=&ddc OR ITEMTICKED(iconMenu%,3) THEN
    IF ITEMTICKED(iconMenu%,1) THEN
     SHELL(ZipDir$+".Resources.UnZip -ZM"+opt$+" "+file$)
    ELSE
     unzip%=TRUE
     SETSAVE("Unzipped","directory")
     unzip$=file$
     OPENSAVE
    ENDIF
   ELSE
    unzip%=FALSE
    SETSAVE("Zipfile","file_ddc")
    zip$=file$
    IF currentzip$>"" THEN PROCzip(currentzip$) ELSE OPENSAVE
   ENDIF
  ENDIF
 ENDIF
 IF window%=zipfile AND (ITEMTICKED(iconMenu%,2) OR type%=&ddc) THEN SETICON(zipfile,8,file$)
ENDPROC
ENDSUBR

DEF SUBR_PROCloadchoices
	Event	-1
	Every	-1
DEF PROCloadchoices
 LOCAL file%,I,load$
 load$=""
 file%=OPENIN "<WWTask$Dir>.Choices"
 FOR I=1 TO 11
  load$=load$+CHR$(BGET#file%)
 NEXT I
 CLOSE#file%
 SETICON(choices,3,MID$(load$,1,1))
 IF MID$(load$,2,1)="I" THEN SETSTATE(choices,4,1)
 IF MID$(load$,3,1)="k" THEN SETSTATE(choices,5,1)
 IF MID$(load$,4,1)="r" THEN SETSTATE(choices,6,1)
 IF MID$(load$,5,1)="j" THEN SETSTATE(choices,7,1)
 IF MID$(load$,6,1)="m" THEN SETSTATE(choices,8,1)
 SETSTATE(choices,VAL(MID$(load$,7,1))+10,1)
 IF MID$(load$,8,1)="j" THEN SETSTATE(choices,17,1)
 IF MID$(load$,9,1)="f" THEN SETSTATE(choices,18,1)
 IF MID$(load$,10,1)="N" THEN SETSTATE(choices,35,1)
 SETSTATE(choices,VAL(MID$(load$,11,1))+20,1)
 PROCsetchoices
ENDPROC
ENDSUBR

DEF SUBR_PROCresetchoices
	Event	-1
	Every	-1
DEF PROCresetchoices
 REM Set Zip choices
 SETICON(choices,3,"6")
 SETSTATE(choices,4,1)
 SETSTATE(choices,5,0)
 SETSTATE(choices,6,1)
 SETSTATE(choices,7,0)
 SETSTATE(choices,8,0)
 SETSTATE(choices,9,0)
 SETICON(choices,10,"")
 SETSTATE(choices,31,0)
 SETSTATE(choices,33,1)
 SETSTATE(choices,34,0)
 REM Clear Password icons
 SETICON(choices,11,"")
 SETICON(choices,12,"")
 REM Set Unzip choices
 SETSTATE(choices,15,1)
 SETSTATE(choices,17,0)
 SETSTATE(choices,18,0)
 SETSTATE(choices,35,0)
 REM Set ZipInfo choices
 SETSTATE(choices,22,1)
ENDPROC
ENDSUBR

DEF SUBR_PROCsetchoices
	Event	-1
	Every	-1
DEF PROCsetchoices
  LOCAL store%,pass$,temp$
  REM Set Zip choices
  zipchoice$=READICON(choices,3)
  IF READSTATE(choices,4) THEN zipchoice$=zipchoice$+"I"
  IF READSTATE(choices,5) THEN zipchoice$=zipchoice$+"k"
  IF READSTATE(choices,6) THEN zipchoice$=zipchoice$+"r"
  IF READSTATE(choices,7) THEN zipchoice$=zipchoice$+"j"
  IF READSTATE(choices,8) THEN zipchoice$=zipchoice$+"m"
  IF READSTATE(choices,9) THEN
   temp$=READICON(choices,10)
   IF temp$<>"" THEN zipchoice$=zipchoice$+" -b "+temp$
  ENDIF
  pass$=READICON(choices,11)
  IF pass$<>"" THEN zipchoice$=zipchoice$+" -P "+pass$
  IF READSTATE(choices,31) THEN
   currentzip$=READICON(zipfile,8)
   IF currentzip$="" THEN store%=STDBOX("No Zipfile is open. Please define one (drag file to window or enter manually).","ZipEE",1)
  ELSE
   currentzip$=""
  ENDIF
  IF NOT ICONSHADED(choices,33) THEN
   IF READSTATE(choices,33) THEN zipchoice$=zipchoice$+"f"
   IF READSTATE(choices,34) THEN zipchoice$=zipchoice$+"u"
  ENDIF
  REM Set Unzip choices
  unzipchoice$=""
  store%=GROUPSTATE(choices,1)
  IF store%=14 THEN unzipchoice$=unzipchoice$+"n"
  IF store%=16 THEN unzipchoice$=unzipchoice$+"o"
  IF READSTATE(choices,17) THEN unzipchoice$=unzipchoice$+"j"
  IF READSTATE(choices,18) THEN unzipchoice$=unzipchoice$+"f"
  pass$=READICON(choices,11)
  IF pass$<>"" THEN unzipchoice$=unzipchoice$+" -P "+pass$
  IF READSTATE(choices,25) THEN newdir%=TRUE ELSE newdir%=FALSE
  REM Set ZipInfo choices
  opt$=""
  store%=GROUPSTATE(choices,2)
  IF store%=21 THEN opt$="1"
  IF store%=22 THEN opt$="2t"
  IF store%=23 THEN opt$=""
ENDPROC
ENDSUBR

DEF SUBR_PROCsavechoices
	Event	-1
	Every	-1
DEF PROCsavechoices
 LOCAL file%,store%,save$,I
 save$=READICON(choices,3)
 IF READSTATE(choices,4)=TRUE THEN save$=save$+"I" ELSE save$=save$+" "
 IF READSTATE(choices,5)=TRUE THEN save$=save$+"k" ELSE save$=save$+" "
 IF READSTATE(choices,6)=TRUE THEN save$=save$+"r" ELSE save$=save$+" "
 IF READSTATE(choices,7)=TRUE THEN save$=save$+"j" ELSE save$=save$+" "
 IF READSTATE(choices,8)=TRUE THEN save$=save$+"m" ELSE save$=save$+" "
 store%=GROUPSTATE(choices,1)
 IF store%=14 THEN save$=save$+"4"
 IF store%=15 THEN save$=save$+"5"
 IF store%=16 THEN save$=save$+"6"
 IF READSTATE(choices,17) THEN save$=save$+"j" ELSE save$=save$+" "
 IF READSTATE(choices,18) THEN save$=save$+"f" ELSE save$=save$+" "
 IF READSTATE(choices,35) THEN save$=save$+"N" ELSE save$=save$+" "
 REM Set ZipInfo choices
 store%=GROUPSTATE(choices,2)
 IF store%=21 THEN save$=save$+"1"
 IF store%=22 THEN save$=save$+"2"
 IF store%=23 THEN save$=save$+"3"
 REM Save file
 file%=OPENOUT "<WWTask$Dir>.Choices"
 FOR I=1 TO 11
  BPUT#file%,MID$(save$,I,1);
 NEXT I
 CLOSE#file%
ENDPROC
ENDSUBR

DEF SUBR_PROCforcezip
	Event	-1
	Every	-1
DEF PROCforcezip
 IF ITEMTICKED(iconMenu%,2) THEN
  CHANGEITEM(iconMenu%,2,""," ")
 ELSE
  CHANGEITEM(iconMenu%,2,"","T")
  CHANGEITEM(iconMenu%,3,""," ")
 ENDIF
ENDPROC
ENDSUBR

DEF SUBR_PROCforceunzip
	Event	-1
	Every	-1
DEF PROCforceunzip
 IF ITEMTICKED(iconMenu%,3) THEN
  CHANGEITEM(iconMenu%,3,""," ")
 ELSE
  CHANGEITEM(iconMenu%,2,""," ")
  CHANGEITEM(iconMenu%,3,"","T")
 ENDIF
ENDPROC
ENDSUBR

DEF SUBR_PROCforceinfo
	Event	-1
	Every	-1
DEF PROCforceinfo
  IF ITEMTICKED(iconMenu%,1) THEN CHANGEITEM(iconMenu%,1,""," ") ELSE CHANGEITEM(iconMenu%,1,"","T")
ENDPROC
ENDSUBR

DEF SUBR_PROCiconbar_clicked
	Event	3
	Every	-1
DEF PROCiconbar_clicked(button%)
  IF button%=1 OR button%=4 THEN CENTREWIN(choices)
ENDPROC
ENDSUBR

DEF SUBR_PROCwindow_clicked
	Event	12
	Every	-1
DEF PROCwindow_clicked(window%, icon%, button%)
 LOCAL store%,pass$,temp$,file$
 IF window%=choices AND button%<>2 THEN
   CASE icon% OF
   WHEN 1:
    store%=VAL(READICON(choices,3))-1
    IF store%<0 THEN store%=0
    SETICON(choices,3,STR$store%)
   WHEN 2:
    store%=VAL(READICON(choices,3))+1
    IF store%>9 THEN store%=9
    SETICON(choices,3,STR$store%)
   WHEN 24:
   IF READICON(choices,11)<>READICON(choices,12) THEN
    store%=STDBOX(TOKEN("password"),"ZipEE",1)
   ELSE
    PROCsetchoices
    IF button%=4 THEN
     CLOSEWINDOW(choices)
     CLOSEWINDOW(zipfile)
    ENDIF
   ENDIF
   WHEN 26: PROCresetchoices
   WHEN 30: PROCsavechoices
   WHEN 31:
    IF READSTATE(choices,31) THEN
     SHADEICON(choices,33,0)
     SHADEICON(choices,34,0)
     CENTREWIN(zipfile)
     SETCARET(zipfile,1,-1)
    ELSE
     SHADEICON(choices,33,1)
     SHADEICON(choices,34,1)
    ENDIF
   WHEN 32:
    CENTREWIN(zipfile)
    SETCARET(zipfile,1,-1)
   WHEN 36:
    CENTREWIN(zipfile)
    SETCARET(zipfile,4,-1)
   ENDCASE
  ENDIF
 ENDIF
 IF window%=zipfile AND button%<>2 THEN
  temp$=READICON(zipfile,8)
  IF temp$="" THEN store%=STDBOX("No Zipfile is open. Please define one (drag file to window or enter manually).","ZipEE",1)
  CASE icon% OF
  WHEN 2:
   IF temp$>"" THEN SHELL(ZipDir$+".Resources.UnZip -ZM"+opt$+" "+temp$)
  WHEN 5:
   IF temp$>"" THEN
    file$=READICON(zipfile,4)
    IF file$="" THEN
     store%=STDBOX("Please specify a file to unzip","ZipEE",1)
    ELSE
     unzip%=TRUE
     unzip$=temp$
     specfile$=file$
     SETSAVE(specfile$,"directory")
     OPENSAVE
    ENDIF
   ENDIF
  WHEN 6:
   IF temp$>"" THEN
    SYS "OS_FSControl",0,ZipDir$+".Resources"
    SHELL("Zip -T "+temp$)
   ENDIF
  WHEN 7:
   IF temp$>"" THEN
    file$=READICON(zipfile,4)
    IF file$="" THEN
     store%=STDBOX("Please specify a file to delete","ZipEE",1)
    ELSE
     SHELL(ZipDir$+".Resources.Zip -d "+temp$+" "+file$)
    ENDIF
   ENDIF
  ENDCASE
 ENDIF
ENDPROC
ENDSUBR

DEF SUBR_FNsave
	Event	8
	Every	-1
DEF FNsave(file$)
 LOCAL pass$,opt$,x
 opt$=""
 IF unzip%=TRUE THEN
  HOURON
  IF newdir%=FALSE THEN file$=LEFT$(file$,(LEN(file$)-LEN(LEAFNAME(file$))-1)) ELSE SYS "OS_File",8,file$,,,0
  IF specfile$>"" THEN
   unzip$=unzip$+" "+specfile$
   specfile$=""
  ENDIF
  SHELL(ZipDir$+".Resources.Unzip -qq"+unzipchoice$+" "+unzip$+" -d "+file$)
  HOUROFF
 ELSE
  SETICON(zipfile,8,file$)
  PROCzip(file$)
 ENDIF
=TRUE
ENDSUBR

DEF SUBR_PROCzip
	Event	-1
	Every	-1
DEF PROCzip(file$)
 LOCAL len%,len2%,CSD$,leaf$
 leaf$=LEAFNAME(zip$)
 len%=LEN(zip$)
 len2%=LENleaf$+1
 CSD$=LEFT$(zip$,(len%-len2%))
 SYS "OS_FSControl",0,CSD$
 HOURON
 SHELL(ZipDir$+".Resources.Zip -q"+zipchoice$+" "+file$+" "+leaf$)
 HOUROFF
ENDPROC
ENDSUBR

