>!RunImage "ERROR "+ $+" at line "+ Set up variables and dimming memory. ==================================== CFirst= :Quit%= :Run%= :MaxFiles=99:SP=1:ScanItems%=0:ILen=&1000 ISfname$="":ExName$="":ViewFile$="":FType$="":Virtual%=0:DragASprite=0 GTaskN$="Resource Write":Ticked=0:Mod%= :Cur%=1:Mul$="":Debugging%=0 KModName$="ResourceFiles":View=1:Total=1:Multiple%=0:Next%=0:FileOpen%=0 Block%1024,Block2% 512,Window% &1000,Ind% ILen,FListMenu &1000,Font% 256 Menu% 400,Object$(MaxFiles),Positioned$(MaxFiles),ScanName$(MaxFiles) ScanPos$(99),ObType%(MaxFiles),ScanLen%(99),ScanType%(99):Free=Ind% Scale% 32,Trans% 32:Verbose%= :ModSave$="Module":FailDrag%= Clear the font memory and start messagetrans file. ================================================== X=0 256:Font%?X=0: StartMessage Now here's the clever bit, I'm calculating how much memory I've used so I can reduce the wimpslot to the minimum. =========================================================== "OS_ReadMemMapInfo" PageSize%:Size%= :Size%+=8*1024 ;Temp=Size% PageSize%:Size%=Size% PageSize%:Size%+=1 Temp>(PageSize%/2) Size%+=1 CSize%=Size%*PageSize%: =&8000+Size%: "Wimp_SlotSize",Size%,-1 $OSize%=Size%:Address=Size%+&8000 Error(1, $+" at line "+ Start the task and kill any other active version of this program. ================================================================= Block%!0=0 "Wimp_Initialise",310,&4B534154,TaskN$,Block% WimpVer,THandle% Kill(TaskN$) Open the template file and load the windows. ============================================ "Wimp_OpenTemplate",,".Templates" !;Main%= CreateWindow("Main"):File%= CreateWindow("File") ";Save%= CreateWindow("Save"):Info%= CreateWindow("Info") #IFileInfo%= CreateWindow("FileInfo"):Choices%= CreateWindow("Choices") $EPane%= CreateWindow("Pane"):Operation%= CreateWindow("Operation") Debugging% Debug%= CreateWindow("Debug") "Wimp_CloseTemplate" Set up the menu, iconbar and blank all the text icons. ====================================================== SetUpMenu(Menu%): DisplayText:First= IconBar: Blank Icon%=2 IconText(Operation%,Icon%,""): "Font_FindFont",,"Homerton.Medium",12*16,12*16 FileLHandle% ,FTe=FileLHandle%: Font%?Te=0 Font%?Te+=1 "Font_LoseFont",Te Read in the choices and select the pane window accordingly. =========================================================== Choices(".Choices"): Select(Pane%,1,Run%) Select(Pane%,0,Multiple%): IconText(Pane%,3,Mul$) Select(Pane%,8,Virtual%) Debugging% 34Block%!0=Debug%: "Wimp_GetWindowState",,Block% "Wimp_OpenWindow",,Block% Error(2, $+" at line "+ Right here we go and poll. ========================== "Wimp_Poll",1,Block% Reason% Reason% Redraw OpeningWindow ClosingWindow Button DragBoxSave Keyboard(Block%!24) MenuSelect 17,18: Receive Quit% Lose all the fonts and close the messagetrans file. =================================================== L=0 255:Y=Font%?L: Y>0: "Font_LoseFont",L:Y-=1: "Font_LoseFont",Ifhandle%: "MessageTrans_CloseFile",Filedesc% ClosingWindow Block%!0 Main%: "Wimp_CloseWindow",,Block%:Block%!0=File% Choices%: "Wimp_CloseWindow",,Block%:Block%!0=Pane% "Wimp_CloseWindow",,Block% OpeningWindow As I'm using a pane I need to reposition the pane on top of my choices window. To make it easier I'm using two different Block%. ============================================================== Block%!0 Choices% ]Mminx=Block%!4:miny=Block%!8:maxx=Block%!12:maxy=Block%!16:Block2%!0=Pane% "Wimp_GetWindowState",,Block2%:lx=Block2%!12-Block2%!4 _Ely=Block2%!16-Block2%!8:Block2%!4=minx+26:Block2%!12=Block2%!4+lx `CBlock2%!16=maxy-24:Block2%!8=Block2%!16-ly:Block2%!28=Block%!28 "Wimp_OpenWindow",,Block2%:Block%!28=Pane% "Wimp_OpenWindow",,Block% IconBar h@!Block%=-5:Block%!4=0:Block%!8=-16:Block%!12=80:Block%!16=82 "Font_FindFont",,"Homerton.Medium",12*16,12*16 Ifhandle% j4Block%!20=(Ifhandle%<<24)+%11000100001011+(1<<6) IconSpr% 14,IconText% 14 lF$IconSpr%="sromapps;F17"+ 0:$IconText%="Write":Block%!24=IconText% m"Block%!28=IconSpr%:Block%!32=1 Prioritised to be just right of Apps Icon. ========================================== "Wimp_CreateIcon",&45000000,Block% BarIcon% DragEnd When a drag has finished, close the window and replace the sprite ================================================================= WindowDrag% File%:Block2%!0=WindowDrag%: "Wimp_CloseWindow",,Block2% Save%: DestWindow% Save%,Main%,File%,Choices%,Pane%,Choices%,Operation%,FileInfo%,Menu% z0FailDrag%= PROCIconText(Save%,1,ModSave$) Block2%!0=Save%: "Wimp_CloseWindow",,Block2% ~MBlock2%!0=WindowDrag%:Block2%!4=IconDrag%: "Wimp_GetIconState",,Block2% ValidText(WindowDrag%,IconDrag%,TextDrag$) CreateWindow(WName$) Handle% "Wimp_LoadTemplate",,Window%,Free,Ind%+ILen,Font%,WName$ ,,Free "Wimp_CreateWindow",,Window% Handle% =Handle% DragBoxSave "Wimp_GetPointerInfo",,Block%:DestWindow%=Block%!12 +Block%!20=Block%!12:Block%!24=Block%!16 MBlock%!28=Block%!0:Block%!32=Block%!4:Block%!36=0:Block%!0=64:Block%!12=0 8Block%!16=1:Block%!40=FType%:$(Block%+44)=Sfname$+ Replace the sprite and close the window. ======================================== DragEnd FailDrag%= "Wimp_SendMessage",18,Block%,Block%!20,Block%!24 FailDrag%= Receive Block%!16 0:Quit%= DataSaveAck DataLoad &502: &40040: NetMessage &400C1: ModeChange &400CC: Iconising DataSaveAck DragASprite "DragASprite_Stop" DestName$= Strip(Block%+44) DraggingWindow% File%: DataSave_File Save%: DataSave_Save FileInfo%: DataSave_FileInfo Pane%: DataSave_Pane DataSave_File: A:A=0:A$=DestName$ A$,9)="Resources" A$,"."):A= A$,"."):A$= A$-A): Mod% "Change%=(Positioned$(Cur%)="") DestName$,A$):DestName$= DestName$,A-2) ?Positioned$(Cur%)=DestName$: Change% Next%+=1:Cur%=Next% DestName$,A$):DestName$= DestName$,A-2) 6Positioned$(Next%+1)=DestName$:Next%+=1:Cur%=Next% =Block%!0=File%: "Wimp_CloseWindow",,Block%: DisplayText Mod% Mod%= DataSave_Save DestName$,9)="Resources" ;TotalLen=0: f=1 Next%:TotalLen+= Count(Object$(f)): TotalLen+=16*1024 @Temp=TotalLen PageSize%:Slot=TotalLen PageSize%:Slot+=1: Temp>(PageSize%/2) PageSize%+=1 ASlot=Slot*PageSize%: "Wimp_SlotSize",Size%+Slot,-1 NSize% NSize%=Size% Dialogue(1234,"Not enough memory, I need "+ Slot/1024+"k free",1,""): "Wimp_CreateMenu",-1: MakeMod: "Wimp_SlotSize",Size%,-1 NSize% Size%<>NSize% Dialogue(1234,"Not been able to free memory",1,"") "Wimp_CreateMenu",-1 DestName$="" HBlock%!16=3:Block%!36=Size%: "Wimp_SendMessage",18,Block%,Block%!4 IconText(Save%,1,DestName$) ModSave$=DestName$ DataSave_FileInfo Number,A$ DestName$,9)="Resources" Verbose% IconText(Operation%,2,"Retrieve") A$=DestName$ IconDrag% Verbose% IconText(Operation%,4,"Retrieving single file") IconText(Operation%,3, Right(ScanName$(SP))) Retrieve(SP) DestName$="" HBlock%!16=3:Block%!36=Size%: "Wimp_SendMessage",18,Block%,Block%!4 Verbose% IconText(Operation%,4,"Retrieving all files") DestName$<>"" Number=1 ScanItems% Verbose% IconText(Operation%,3, Right(ScanName$(Number))) CreateDirectorys(A$+ScanPos$(Number)) 7DestName$=A$+ScanPos$(Number)+"."+ScanName$(Number) Retrieve(Number) CreateDirectorys(A$) Path$,B$,A B$="" A$,"."):Path$= A$,A):A$= A$-A) A$,".") A<>0 "CDir "+Path$+B$+ A$,A-1) B$=B$+ A$,A-1)+".": A$-A) A$,".") "CDir "+Path$+B$+ A$,A-1) Retrieve(Number) x,N,B$,Name$,Loc,Off,A,B,Finish%:Loc=0:Finish%= FileOpen%= (DestName$):X= ExName$ #X=StartOfData: "Hourglass_On" :Ptr%= GetWord: Ptr%<>0 #X+Ptr%-4:Load= GetWord:Exec= GetWord:Len= GetWord:Acc= GetWord &B$="":A= A<>0:B$+= *Name$= Right(B$):Loc+=1: Loc=Number #X:[OPT 0:ALIGN:]: #X=P% %Len2= GetWord: ClaimSlot(Len) "OS_GBPB",4,X,Address,Len "OS_GBPB",2,N,Address,Len:Finish%= 'Off=1: Off<>Len+1: #X:Off+=1 "Hourglass_Percentage",100*(Off/Len) :Finish%= "Wimp_SlotSize",Size%,-1 Loc>=Number Finish%= Finish%: #N:FileOpen%= "Settype "+DestName$+" "+ ~(ScanType%(Number)) "Hourglass_Off" ClaimSlot(Extra) OK%,A$,X:X=Extra A$="":A$=STR$(X MOD 1024)+" Bytes.":X=X DIV 1024 A$=STR$(X MOD 1024)+"K "+A$:X=X DIV 1024 A$=STR$(X MOD 1024)+"M "+A$:VDU 4:PRINTTAB(0,0);A$:VDU5 9Slot=Extra PageSize%:Temp=Extra PageSize%:Slot+=1 Temp>(PageSize%/2) Slot+=1 ASlot=Slot*PageSize%: "Wimp_SlotSize",Size%+Slot,-1 NSize% NSize%=Size% DataSave_Pane DestName$,12)="Resources:$." Select(Pane%,0, IconText(Pane%,3,DestName$) Select(Pane%,0, DisplayText IconText(Main%,3, Pad(Cur%,2)): IconText(Main%,7,Object$(Cur%)) IconText(Main%,9,Positioned$(Cur%)) DataLoad This is when a file is dragged to one of my windows. ==================================================== Block%!20 FileInfo%: ExamineFile Main%,-2:X%=Block%!28:Y%=Block%!32 6>Fname$= Strip(Block%+44):Sfname$= FilenameFromFull(Fname$) 7KFType%=Block%!40:Block%!16=4:Block%!12=Block%!8:ObType%(Next%+1)=FType% "Wimp_SendMessage",17,Block%,Block%!4:Object$(Next%+1)=Fname$ FType% &1000:FType$="directory" &2000: Application FType$="file_"+ ~FType% ValidText(File%,0,"r1;s"+FType$): IconText(File%,1,Sfname$) Wimp_BringUpWindow(Main%,-1) Selected(Pane%,0) A&FFA ScanItems%=0 Verbose% IconText(Operation%,2,"Examine") IconText(Operation%,3, Right(Fname$)) IconText(Operation%,4,"Examining module") MName$="":X= Fname$: `AStart= GetWord:Initialise= GetWord: L=1 3:Title= GetWord: Initialise=0 Initialise> Fail%= Fail%= #X=Initialise:C=0 :Temp= GetWord:C+=4: C>1024 Temp=&EF061B40 Temp=&EF041B0 C>1024 Fail%= Fail%= g&C=0: #X-8:Temp= GetWord:C+=4 (Temp &0FFFFFFF)=&F0000000 Temp=0 C>1024 (Temp &F000FFFF)=&28F0000 C>1024 Fail%= Fail%= Temp=(Temp &FFFFF000) m*StartOfData= #X+Temp+4: #X=StartOfData Fail% Blank: IconText(FileInfo%,2,"Can't understand") IconText(FileInfo%,15,"This module") Verbose% IconText(Operation%,4,"Does this have Resource Data?") Verbose% IconText(Operation%,4,"Found Resource Data") :Ptr%= GetWord: Ptr%<>0 #X+Ptr%-4:Load= GetWord:Exec= GetWord:Len= GetWord:Acc= GetWord z&B$="":A= A<>0:B$+= {GScanName$(ScanItems%+1)= Right(B$):ScanPos$(ScanItems%+1)= Left(B$) |4ScanLen%(ScanItems%+1)=Len:T$= ~Load:T$= T$,4,3) }9ScanType%(ScanItems%+1)= ("&"+T$): #X=L:ScanItems%+=1 Ptr%=0 #X=Title:MName$="":Temp= Temp<>0:MName$+= (Temp):Temp= ESP=1: IconText(FileInfo%,2,Fname$): IconText(FileInfo%,15,MName$) IconText(FileInfo%,5, Pad(ScanItems%,2)): DisplayScan Verbose% IconText(Operation%,4,"Finished examine module") Blank IconText(FileInfo%,2,""): IconText(FileInfo%,15,"") IconText(FileInfo%,5,""): IconText(FileInfo%,7,"Object :XX") IconText(FileInfo%,12,""): IconText(FileInfo%,14,"") IconText(FileInfo%,21,"") DisplayScan IconText(FileInfo%,7,"Object : "+ Pad(SP,2)) IconText(FileInfo%,12,ScanName$(SP)) IconText(FileInfo%,14,ScanPos$(SP)) IconText(FileInfo%,21, (ScanLen%(SP))) ValidText(FileInfo%,9,"r1;sfile_"+ ~ScanType%(SP)) %ViewType$="file_"+ ~ScanType%(SP) ValidText(Window%,Icon%,Text$) EBlock2%!0=Window%:Block2%!4=Icon%: "Wimp_GetIconState",,Block2% SBlock2%!8=0:Block2%!12=0:$(Block2%!32)=Text$+ "Wimp_SetIconState",,Block2% Debugging% =Block%!0=Debug%:Block%!4=8: "Wimp_GetIconState",,Block% Window% Main%:$(Block%!28)="Main" Info%:$(Block%!28)="Info" FileInfo%:$(Block%!28)="FileInfo" Save%:$(Block%!28)="Save" File%:$(Block%!28)="File" Choices%:$(Block%!28)="Choices" Pane%:$(Block%!28)="Pane" $(Block%!28)="Unknown" 9Block%!8=0:Block%!12=0: "Wimp_SetIconState",,Block% =Block%!0=Debug%:Block%!4=9: "Wimp_GetIconState",,Block% K$(Block%!28)= (Icon%):Block%!0=Debug%:Block%!4=9:Block%!8=0:Block%!12=0 "Wimp_SetIconState",,Block% >Block%!0=Debug%:Block%!4=10: "Wimp_GetIconState",,Block% I$(Block%!28)=Text$:Block%!0=Debug%:Block%!4=10:Block%!8=0:Block%!12=0 "Wimp_SetIconState",,Block% JBlock%!0=Debug%:Block%!4=13: "Wimp_GetIconState",,Block%:Block%!4=13 A$(Block%!28)= Text$):Block%!0=Debug%:Block%!8=0:Block%!12=0 "Wimp_SetIconState",,Block% GetValidText(Window%,Icon%) EBlock2%!0=Window%:Block2%!4=Icon%: "Wimp_GetIconState",,Block2% =$(Block2%!32) FilenameFromFull(A$) A$,"."): A<>0:A$= A$-A):A= A$,"."): Strip(Address%): A%,A$ 9A%=0:A$="": Address%?A%<>0:A$+= Address%?A%:A%+=1: PBlock%!12=Block%!8:Block%!16=&503:Mess$="":HWind%=Block%!32:HIcon%=Block%!36 HWind% -2:Mess$= Message("IconBar","","") Main%:Mess$= Message("M"+ HIcon%,"","") File%:Mess$= Message("F"+ HIcon%,"","") Save%:Mess$= Message("S"+ HIcon%,"","") Info%:Mess$= Message("I"+ HIcon%,"","") FileInfo%:Mess$= Message("FI"+ HIcon%,"","") Choices%:Mess$= Message("C"+ HIcon%,"","") Pane%:Mess$= Message("P"+ HIcon%,"","") Operation%:Mess$= Message("V"+ HIcon%,"","") WimpVer>=217 MenuOpen% Menu% "Wimp_GetMenuState",1,Block2%,HWind%,HIcon% .Mess$= Message("Menu"+ (!Block2%+1),"","") FListMenu 4Mess$="Press select or adjust to view an object" &Block%!0=256:$(Block%+20)=Mess$+ "Wimp_SendMessage",17,Block%,Block%!4 Wimp_BringUpWindow(window%,pos) 4!Block%=window%: "Wimp_GetWindowState",,Block% .Block%!28=pos: "Wimp_OpenWindow",,Block% Wimp_CloseWindow(Window%) 1!Block%=Window%: "Wimp_CloseWindow",,Block% Button: SaveChoice% Block%!12 -2 : Button_IconBar FileInfo%: Button_FileInfo Info% : Button_Info Save% : Button_Save File% : Button_File Main% : Button_Main Choices% : Button_Choices Pane% : Button_Pane Operation% : Button_Operation Button_IconBar Block%!8 1 : Wimp_CloseWindow(Main%): Wimp_CloseWindow(FileInfo%) 2 : BringUpMenu(Menu%,!Block%-64,MenuSize%) 4 : Wimp_BringUpWindow(Main%,-1) Button_FileInfo Update%= Block%!16 6:SP-=1: SP<1 SP=1 Update%= 8:SP+=1: SP>ScanItems% SP=ScanItems% Update%= Block%!8 ScanItems%>0 7FType$="file_"+ ~ScanType%(SP):FType%=ScanType%(SP) =Sfname$= GetIconText(FileInfo%,12): Dragfile(FileInfo%,9) Block%!8 ScanItems%>0 DSfname$="":FType$="file_FFD":FType%=&FFD: Dragfile(FileInfo%,29) Block%!8 2 : Grey(Menu%,1,1): Grey(Menu%,4,1) BringUpMenu(Menu%,Block%!0,Block%!4) Grey(Menu%,1,0): Grey(Menu%,4,0) Update% DisplayScan Button_Info Block%!8 DragBox(Info%,1) Button_File Block%!16 0 : Block%!8 Dragfile(File%,0) Button_Save Block%!16 0 : FType$="file_FFA":FType%=&FFA:A$= GetIconText(Save%,1) !Sfname$= FilenameFromFull(A$) Block%!8 Dragfile(Save%,0) 2 :FType$="file_FFA":FType%=&FFA:DestName$= GetIconText(Save%,1) DataSave_Save Button_Main Block%!8 BringUpMenu(Menu%,!Block%,Block%!4) Update%= Block%!16 2 : Cur%>1 Cur%-=1:Update%= 4 : Cur%0 SetUpFileList(FListMenu) BringUpMenu(FListMenu,Block%!0,Block%!4) Update% DisplayText Button_Choices Block%!8 BringUpMenu(Menu%,!Block%,Block%!4) >)Ad%=(Block%!8 %1)<>0: Block%!16 1,2 : SaveChoice%=(Block%!16=1):Virtual%= Selected(Pane%,8) @;Mul$= GetIconText(Pane%,3):Multiple%= Selected(Pane%,0) A+Run%= Selected(Pane%,1): SaveChoice% ".Choices" CDTe$="Multiple File Drag : ": Multiple% Te$+="Yes" Te$+="No" #X,Te$:Te$="Multiple Directory : "+Mul$: #X,Te$ E9Te$="Save and Run : ": Run% Te$+="Yes" Te$+="No" #X,Te$ G8Te$="Virtual : ": Virtual% Te$+="Yes" Te$+="No" #X,Te$: #X,"Finish": "Settype .Choices Text" Block%!0=Choices% 3 : IconText(Pane%,3,Mul$): Select(Pane%,0,Multiple%) Select(Pane%,1,Run%):Block%!0=Choices% Ad% "Wimp_CloseWindow",,Block%: ClosingWindow Button_Pane Block%!8 BringUpMenu(Menu%,!Block%,Block%!4) Block%!16<>4 Select(Pane%,Block%!16, Selected(Pane%,Block%!16)) Block%!16 Block%!8 \!FType$="file_FFD":FType%=&FFD Sfname$="" Dragfile(Pane%,4) Button_Operation Block%!8 BringUpMenu(Menu%,!Block%,Block%!4) Block%!16 Iconise(Operation%,"Verbose") Wimp_CloseWindow(Operation%):Verbose%= Tick(Menu%,2) Block%!8 DragBox(Operation%,1) SetUpFileList(ThisMenu) tGTicked=0:Title$="FileList":$ThisMenu=Title$:Width%=( (Title$)-2)*16 uDThisMenu!12=&70207:ThisMenu!20=44:ThisMenu!24=0:Pos%=ThisMenu+28 vFFlags%=%0:SubMenuPointer%=-1:MFlags%=&7000021: Position=1 Next% wFMFlags%=(FileLHandle%<<24)+&61: Position=Next% Flags%=%10000000 x)!Pos%=Flags%:Pos%!4=-1:Pos%!8=MFlags% yBTemp$= FilenameFromFull(Object$(Position))+ 0:$(Pos%+12)=Temp$ z7Temp%=( (Temp$)+1)*16: Width%1 Cur%=Cur%-1 Next%>0 Next%=Next%-1 Dragfile(Window%,Icon%) IWindowDrag%=Window%:IconDrag%=Icon%:Block2%!0=Window%:Block2%!4=Icon% "Wimp_GetIconState",,Block2% JTextDrag$= GetValidText(Window%,Icon%):A= Convert(TextDrag$),"sfile") 7String$= TextDrag$,A-1)+ TextDrag$, TextDrag$-A-9) 8String$="R2;SFile": ValidText(Window%,Icon%,String$) NDraggingWindow%=Window%:!Block2%=Window%: "Wimp_GetWindowState",,Block2% Dox=Block2%!4-Block2%!20:oy=Block2%!16-Block2%!24:Block2%!4=Icon% "Wimp_GetIconState",,Block2%:Block2%!4=5:Block2%!8=ox+Block2%!8 Block2%!12=oy+Block2%!12 5Block2%!16=ox+Block2%!16:Block2%!20=oy+Block2%!20 HBlock2%!24=0:Block2%!28=0:Block2%!32=&7FFFFFFF:Block2%!36=Block2%!32 "OS_Byte",161,28 ,,C%: %10 GDragSprite= "DragASprite_Start",%11000101,1,FType$+ 0,Block2%+8 +DragSprite= "Wimp_DragBox",,Block2% TextDrag$,1)= TextDrag$= TextDrag$) Grey(Menu%,item%,set%) >Grey=Menu%+36:Grey+=(24*item%):Flags%=!Grey:Oflags%=Flags% 6Flags%=(Flags% (1<<22)) set%<<22:!Grey=Flags% Dialogue(errornumber%,message$,flags%,title$) 1Block%!0=errornumber%:$(Block%+4)=message$+ "Wimp_ReportError",Block%,flags%,title$ ,Result% =Result% Iconise(window%,Title$) EBlock%!0=40:Block%!16=&400CA:Block%!20=window%:Block%!24=THandle% <$(Block%+28)=Title$+ "Wimp_SendMessage",17,Block%,0 Iconising *Block%!0=56:Block%!24=0: Block%!20 Main%:$(Block%+28)="Resres":$(Block%+36)="Resource Write" FileInfo%:$(Block%+28)="Resfin":$(Block%+36)="Module Info" Choices%:$(Block%+28)="Rescho":$(Block%+36)="Choices" Operation%:$(Block%+28)="ResOpe":$(Block%+36)="Verbose" ?Block%!12=Block%!8: "Wimp_SendMessage",17,Block%,Block%!4 WindowTitle(Window%) GetIconText(Window%,-4) IconText(Window%,Icon%,Text$) EBlock2%!0=Window%:Block2%!4=Icon%: "Wimp_GetIconState",,Block2% E$(Block2%!28)=Text$:Block2%!0=Window%:Block2%!4=Icon%:Block2%!8=0 0Block2%!12=0: "Wimp_SetIconState",,Block2% Debugging% =Block%!0=Debug%:Block%!4=5: "Wimp_GetIconState",,Block% Window% Main%:$(Block%!28)="Main" Info%:$(Block%!28)="Info" FileInfo%:$(Block%!28)="FileInfo" Save%:$(Block%!28)="Save" File%:$(Block%!28)="File" Choices%:$(Block%!28)="Choices" Pane%:$(Block%!28)="Pane" $(Block%!28)="Unknown" 9Block%!8=0:Block%!12=0: "Wimp_SetIconState",,Block% =Block%!0=Debug%:Block%!4=6: "Wimp_GetIconState",,Block% K$(Block%!28)= (Icon%):Block%!0=Debug%:Block%!4=6:Block%!8=0:Block%!12=0 "Wimp_SetIconState",,Block% =Block%!0=Debug%:Block%!4=7: "Wimp_GetIconState",,Block% H$(Block%!28)=Text$:Block%!0=Debug%:Block%!4=7:Block%!8=0:Block%!12=0 "Wimp_SetIconState",,Block% JBlock%!0=Debug%:Block%!4=12: "Wimp_GetIconState",,Block%:Block%!4=12 A$(Block%!28)= Text$):Block%!0=Debug%:Block%!8=0:Block%!12=0 "Wimp_SetIconState",,Block% GetIconText(Window%,Icon%) EBlock2%!0=Window%:Block2%!4=Icon%: "Wimp_GetIconState",,Block2% Text$=$(Block2%!28) =Text$ Keyboard(Key%): Te$:Window%=Block%!0:Icon%=Block%!4 Window% Main%: Icon% 9:A$= GetIconText(Main%,9) A$,11)="Resources:$" Positioned$(Cur%)=A$ DisplayText "Wimp_ProcessKey",Key% Pane%: Icon% GetIconText(Pane%,3),12)="Resources:$." 8Te$= GetIconText(Pane%,3): Te$,1)<>".":Te$+=".": IconText(Pane%,3,Te$): Select(Pane%,0, Select(Pane%,0, Save%: Icon% 1:FType$="file_FFA":FType%=&FFA:DestName$= GetIconText(Save%,1) DataSave_Save "Wimp_ProcessKey",Key% Key%=13 "Wimp_SetCaretPosition",-1 SetUpMenu(Menu%) DTicked=0: Title$,MItem%:$Menu%=Title$:Width%=( (Title$)-2)*16 8Menu%!12=&70207:Menu%!20=44:Menu%!24=0:Pos%=Menu%+28 Position=1 MItem% Flags%,SubMenuPointer%,MFlags%,Item$,Font$,size% Flags% %10 Ticked+=1 "Font_FindFont",,Font$,size%*16,size%*16 FHandle% #MFlags%=(FHandle%<<24)+%1100001 Font%?FHandle%>0 "Font_LoseFont",FHandle% Font%?FHandle%+=1 G!Pos%=Flags%:Pos%!4=SubMenuPointer%:Pos%!8=MFlags%:$(Pos%+12)=Item$ 7Temp%=( (Item$)+1)*16: Width%MenuOpen%=Data%: Next%=0 Data%=Menu% Grey(Menu%,1,1) "Wimp_CreateMenu",,Data%,Mx%,My% Next%=0 Data%=Menu% Grey(Menu%,1,0) Resource,6 %00000000,Info%,&7000021,"Info","Homerton.Medium",12 %00000010,Save%,&7000021,"Save","Homerton.Medium",12 %00000000,-1,&7000021,"Verbose","Homerton.Medium",12 %00000000,-1,&7000021,"Choices","Homerton.Medium",12 %00000010,-1,&7000021,"Examine","Homerton.Medium",12 %10000000,-1,&7000021,"Quit","Homerton.Bold.Oblique",12 ModeChange Here comes my font routines. ============================ X=0 256: Font%?X<>0:Font%?X-=1: "Font_LoseFont",X: "Font_FindFont",,"Homerton.Medium",12*16,12*16 FileLHandle% FTe=FileLHandle%: Font%?Te<1 Font%?Te+=1 "Font_LoseFont",Te SetUpMenu(Menu%): FontWindow(Main%): FontWindow(File%) FontWindow(Save%): FontWindow(Info%): FontWindow(FileInfo%) FontWindow(Choices%): FontWindow(Pane%) Debugging% FontWindow(Debug%) "Font_LoseFont",Ifhandle% GBlock%!0=-2:Block%!4=BarIcon%: "Wimp_DeleteIcon",,Block%: IconBar MenuSelect MenuOpen% Menu%: "Wimp_DecodeMenu",,Menu%,Block%,Block2% $Block2% "Verbose": Tick(Menu%,2) Wimp_BringUpWindow(Operation%,-1):Verbose%= Wimp_CloseWindow(Operation%):Verbose%= Tick(Menu%,2) "Choices": Wimp_BringUpWindow(Choices%,-1) #$Block%!0=Choices%: OpeningWindow "Examine": Wimp_BringUpWindow(FileInfo%,-1) "Quit":Quit%= FListMenu:Cur%=Block%!0+1: DisplayText "Wimp_GetPointerInfo",,Block% Block%!8=1 BringUpMenu(MenuOpen%,0,0) DragBox(window%,Flags%) .K!Block%=window%: "Wimp_GetWindowState",,Block%:ox%=Block%!4-Block%!20 /Eoy%=Block%!16-Block%!24:Block%!4=0: "Wimp_GetIconState",,Block% 0ABlock%!4=Flags%:Block%!8=ox%+Block%!8:Block%!12=oy%+Block%!12 1KBlock%!16=ox%+Block%!16:Block%!20=oy%+Block%!20:Block%!24=0:Block%!28=0 2EBlock%!32=&7FFFFFFF:Block%!36=&7FFFFFFF: "Wimp_DragBox",,Block% Tick(Menu%,Icon%) 63Tick=Menu%+28:Tick+=(24*Icon%):!Tick=!Tick Tick(Menu%,Icon%) :2Tick=Menu%+28:Tick+=(24*Icon%):Tick=!Tick =(Tick=1) Pad(V,L) T$:T$= T$,"0")+T$ Selected(window%,icon%) BBBlock%!0=window%:Block%!4=icon%: "Wimp_GetIconState",,Block% Flags%=Block%!24 =(Flags% 1<<21)<>0 Select(window%,icon%,state%) GBBlock%!0=window%:Block%!4=icon%: "Wimp_GetIconState",,Block% state%=-1 Flags%=1 Flags%=0 IGBlock%!0=window%:Block%!4=icon%:Block%!8=Flags%<<21:Block%!12=1<<21 "Wimp_SetIconState",,Block% FontWindow(WHandle%) "Wimp_WhichIcon",WHandle%,Block%,1<<6,1<<6 OIA=0: Block%!A<>-1:Icon%=Block%!A:Block2%!0=WHandle%:Block2%!4=Icon% "Wimp_GetIconState",,Block2%:Flags%=Block2%!24:FHandle%=Flags%>>24 "Font_ReadDefn",FHandle%,Block2% ,,xsize,ysize "Font_FindFont",,Block2%,xsize,ysize FHandle% Font%?FHandle%=0 Font%?FHandle%+=1 "Font_LoseFont",FHandle% TPBlock2%!0=WHandle%:Block2%!4=Icon%:Block2%!8=FHandle%<<24:Block2%!12=255<<24 "Wimp_SetIconState",,Block2%:A+=4: StartMessage YFMName$=".Messages": "MessageTrans_FileInfo",,MName$ "OS_Module",6,,,17+ MName$ ,,Filedesc% [N$(Filedesc%+16)=MName$: "MessageTrans_OpenFile",Filedesc%,Filedesc%+16,0 Message(Token$,Par1$,Par2$) X=0 508 4:Block2%!X=0: "XMessageTrans_Lookup",Filedesc%,Token$+ 0,Block2%,512,Par1$,Par2$ ,,Message$ =Message$ Count(Fname$): Total Verbose% IconText(Operation%,2,"Counting") IconText(Operation%,3, Right(Fname$)) IconText(Operation%,4,"Total : "+ Total+" bytes") i3Total=0: "OS_File",5,Fname$ type,,,,Length% type=0 1234,"Not found" type=2 Count(Fname$,0) Total=Length% =Total Count(Dir$,L%) N%,M% pGN%=0: N%<>-1: "OS_GBPB",10,Dir$,Block2%,1,N%,255,"*" ,,,M%,N% M%>0 Block2%?16=2 Verbose% IconText(Operation%,3, Right( Strip(Block2%+20))) Count(Dir$+"."+ Strip(Block2%+20),L%+1) Total+=Block2%!8 Verbose% IconText(Operation%,4,"Total : "+ Total+" bytes") Error(Er%,Ern%,Erm$) FileOpen% #N:FileOpen%= Er% 1:Flag%=%10 2:Flag%=%11 %Block%!0=Ern%:$(Block%+4)=Erm$+ "Wimp_ReportError",Block%,Flag% ,Return% Return%=2 Quit%= MakeMod %ModuleName$= GetIconText(Main%,1) Verbose% IconText(Operation%,2,"Creating") IconText(Operation%,4,"") l=1 Next%:file$=Object$(l):path$=Positioned$(l): 9Version$="3.00":Date$="("+ $,5,11)+")": AssembleCode Object=1 Next%:Dir$=Object$(Object):Top$= FileNameFromFull(Dir$) Dir$,Top$):Rest$= Dir$,A-1): "OS_File",5,Dir$ Type Virtual% ObType%(Object)=&2000 Verbose% IconText(Operation%,4,"Virtual application") IconText(Operation%,3, Right(Object$(Object))) Virtual(Object$(Object),"") Rest$="." Scan("."+ Right(Object$(Object)),0) Verbose% IconText(Operation%,4,"Adding object") IconText(Operation%,3, Right(Object$(Object))) Type=0 1234,"Not found" Type=2 Scan(Dir$,0) Type=1 AddFile(Dir$,Positioned$(Object)) Virtual% ObType%(Object)=&2000 "XOS_Cli","Wipe ."+ Right(Object(Object)) R F ~C ~V" >Module$=DestName$: "OS_File",10,Module$,&FFA,,Address,O% Run% "OS_Module",11,Address,P% Scan(Dir$,L%) N%,M%:N%=0: N%<>-1: "OS_GBPB",10,Dir$,Block2%,1,N%,255,"*" ,,,M%,N%: M%>0 Block2%?16=2 Scan(Dir$+"."+ getname(Block2%+20),L%+1) AddFile(Dir$+"."+ getname(Block2%+20),Positioned$(Object)) getname(add%) ,b$="": ?add%<>0:b$+= (?add%):add%+=1: AddFile(Pos$,Res$) 0:A$= A$-A):A= A$,"."): Choices(ChoiceFile$) 1Run%=0:Multiple%=0:Mul$="": Read(ChoiceFile$) (Mul$)=32:Mul$= Mul$, Mul$-1): Mul$,12)<>"Resources:$." Mul$="":Multiple%=0 Read(File$): X,A$:X= File$:A$="" GetLine: Convert(A$)<>"finish" Convert(A$),1)<>"#" A$,":"):L$= A$,A-1):R$= A$-A) Convert(L$):RR$= Convert(R$): "multiple file drag": RR$="yes" Multiple%= "save and run": RR$="yes" Run%= "multiple directory":Mul$=R$ "virtual": RR$="yes" Virtual%= Convert(A$)="finish" GetLine: A$:A$="":A= :A$=A$+ A=13 A=10 A$>250 A$>250 1234,"Error in data file, line too long" Convert(T$) B$,X:B$="": X=1 T$:B$+= T$,X,1)) &20): (B$)=32:B$= B$-1): B$,1)=" ":B$= Kill(TaskN$): Ptr%,Task$:Ptr%=0 "TaskManager_EnumerateTasks",Ptr%,Block%,16 Ptr% +B%=Block%!4:ItHandle%=Block%!0:Task$="" ?B%>31:Task$+= (?B%):B%+=1: Task$=TaskN$ ItHandle%<>THandle% $NBlock%!0=32:Block%!16=0: "Wimp_SendMessage",17,Block%,ItHandle%:Task$="" Ptr%<0 Virtual(App$,TempDir$) Boot%,Run%,Sprites%,NewDir$,File%:NewDir$=TempDir$+"."+ Right(App$) ,9Boot%= Exist(App$+".!Boot"):Run%= Exist(App$+".!Run") -6Sprites%= Exist(App$+".!Sprites"): "CDir "+NewDir$ Boot% //File%= (NewDir$+".!Boot"): #File%,"|!Boot" #File%,"|A Virtual !Boot created by !Resource": #File%,"" Sprites% #File%,"IconSprites "+App$+".!Sprites" #File%,"Filer_Run "+App$+".!Boot": #File% "Settype "+NewDir$+".!Boot Obey" Run% 6-File%= (NewDir$+".!Run"): #File%,"|!Run" #File%,"|A Virtual !Run created by !Resource": #File%,"" Sprites% #File%,"IconSprites "+App$+".!Sprites" #File%,"Filer_Run "+App$+".!Run": #File% "Settype "+NewDir$+".!Run Obey" Exist(File$): X:X= (File$): #X:=(X<>0) Convert(A$): A=1 A$,A,1)= A$,A,1) &20: Redraw 0,0);!Block%: !Window%=!Block% G