Home » Archimedes archive » Archimedes World » AW-1995-03-Disc2.adf » Disk2Mar95 » !AWMar95/Goodies/Templed/!TemplEd/Extras/Source

!AWMar95/Goodies/Templed/!TemplEd/Extras/Source

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1995-03-Disc2.adf » Disk2Mar95
Filename: !AWMar95/Goodies/Templed/!TemplEd/Extras/Source
Read OK:
File size: 259BA bytes
Load address: 0000
Exec address: 0000
File contents
    1REM ><TemplEd$Dir>.Extras.Source
    2REM This application is FreeWare. (c) 1992,1993 Dick Alstein
    3
    4Appl$="TemplEd"
    5Version$="1.24 (12-Sep-93)"
    6
    7REM The following maximum values can be set to suit your needs
    8REM (You may need to adapt the WimpSlot)
    9MaxTemplates%=100  : REM max number of user templates
   10MaxIcons%=200      : REM max number of icons in a user template
   11MaxIndirSize%=8000 : REM space for indirected data (only for loading)
   12
   13REM *** main program and top-level procs ***
   14Quit%=FALSE
   15PROCinit
   16ON ERROR PROCerror(0)
   17PollMask%=(1<<0)+(1<<4)+(1<<5)+(1<<11)+(1<<12)
   18REPEAT
   19  SYS "Wimp_Poll",PollMask%,Blk% TO reason%
   20  CASE reason% OF
   21    WHEN 0
   22      SYS "Wimp_GetPointerInfo",,PtrInfo%
   23      IF (PtrInfo%!8>0) AND Mbuttons_Released% THEN
   24        REM signal press of mouse button
   25        Mbuttons_Released%=FALSE
   26        PROCclick(PtrInfo%!0,PtrInfo%!4,PtrInfo%!8,PtrInfo%!12,PtrInfo%!16,0)
   27      ELSE
   28        IF PtrInfo%!8=0 THEN
   29          Mbuttons_Released%=TRUE
   30          Drag_Type%=-1
   31          TimedDrag_Enabled%=FALSE
   32        ELSE
   33          REM button still pressed - test if OK to start "timed drag"
   34          IF ABS(PtrInfo%!0-ThisClickX%)+ABS(PtrInfo%!4-ThisClickY%)>16 THEN
   35            TimedDrag_Enabled%=FALSE : REM moved mouse since click
   36          ENDIF
   37          IF TimedDrag_Enabled% THEN
   38            IF ((TIME-ThisClickTime%)>DragInterval%) AND (PtrInfo%!16>=0) THEN
   39              SYS "Wimp_DragBox",-1
   40              PROCstarticondrag(PtrInfo%!8,PtrInfo%!12,PtrInfo%!16)
   41              TimedDrag_Enabled%=FALSE
   42            ENDIF
   43          ENDIF
   44        ENDIF
   45      ENDIF
   46    WHEN 1 : PROCredraw(Blk%!0)
   47    WHEN 2 
   48      IF (Blk%!0=TemplW%)THEN
   49        c%=(Blk%!12-Blk%!4) DIV TemplW_IconX%
   50        IF c%<1 THEN c%=1
   51        IF TemplW_Cols%<>c% THEN
   52          TemplW_Cols%=c%
   53          PROCredefinebrowser(0)
   54          Blk%!0=TemplW%
   55        ENDIF
   56      ENDIF
   57      SYS "Wimp_OpenWindow",,Blk%
   58      IF Blk%!0=OptionsW% THEN
   59        PROCopenpane(OptPaneW%)
   60      ENDIF
   61    WHEN 3
   62      no%=FNwhichtemplate(Blk%!0)
   63      IF no%>=0 THEN
   64        PROCclosetemplate(no%)
   65      ELSE
   66        IF NOT (INKEY -1) THEN
   67          PROCclosewindow(Blk%!0)
   68        ENDIF
   69        SYS "Wimp_GetPointerInfo",,PtrInfo%
   70        IF (Blk%!0=TemplW%)AND(PtrInfo%!8=1)AND(INSTR(MainFName$,".")>0) THEN
   71          SYS "Wimp_StartTask","Filer_OpenDir "+FNdirname(MainFName$)
   72        ENDIF
   73      ENDIF
   74    WHEN 6 : PROCclick(Blk%!0,Blk%!4,Blk%!8,Blk%!12,Blk%!16,TRUE)
   75    WHEN 7 : PROCfinishdrag(Blk%!0,Blk%!4,Blk%!8,Blk%!12)
   76    WHEN 8 : PROCkey(Blk%!0,Blk%!4,Blk%!24)
   77    WHEN 9 : PROCmenuselect(Blk%)
   78    WHEN 17,18 : PROCreceive(Blk%)
   79  ENDCASE
   80  IF IcInfo_Active% THEN
   81    PROCicinf_update
   82  ENDIF
   83UNTIL Quit% AND (TIME>=QuitDeadline%)
   84PROCfont_loseall
   85PROCregisteraeh(FALSE)
   86PROCmsg_exit
   87SYS "Wimp_CloseDown"
   88END
   89
   90DEF PROCinit
   91LOCAL cmdstr%,p%,fn$,i%,mask%
   92DIM ErrBlk% &100
   93SYS "Wimp_Initialise",200,&4B534154,Appl$ TO OSversion%,ThisTask%
   94ON ERROR PROCerror(1)
   95DIM VarBuf% 256
   96ApplDir$=FNreadvarval("TemplEd$Dir")
   97PROCheap_init           : REM initialize heap
   98PROCmsg_init            : REM load Messages file
   99REM lower bounds for Max* variables
  100IF MaxTemplates%<4 THEN MaxTemplates%=4
  101IF MaxIcons%<64 THEN MaxIcons%=64
  102IF MaxIndirSize%<&1000 THEN MaxIndirSize%=&1000
  103REM declaration of data blocks and arrays
  104DIM IconBlk% 40
  105SelBlkSize%=4*MaxIcons%
  106DIM SelBlk% SelBlkSize% : REM block to hold list of selected icons
  107DIM SelBlk2% SelBlkSize%
  108DIM ScrapBlk% &100      : REM block to hold various temporary data
  109DIM Blk% &100           : REM for data returned by Wimp_Poll
  110DIM PtrInfo% 20         : REM to store pointer info
  111DIM NumValidStr% 8      : REM validation string for entering a number
  112$NumValidStr%="A0-9"
  113DIM FpNumValidStr% 8    : REM for entering a floating point number
  114$FpNumValidStr%="A0-9."
  115DIM TemplNames% MaxTemplates%*28 : REM to store name and name of icon
  116DIM TemplHandle%(MaxTemplates%)  : REM handles of the user templates
  117DIM PaneFlag% MaxTemplates%      : REM 'Pane' flags are kept in this array
  118NrTemplates%=0                   : REM current number of user templates
  119TemplatesOpen%=0                 : REM number of templates currently open
  120MaxTemplateSize%=92+32*MaxIcons% : REM max size for a template
  121MaxTemplateSize%+=MaxIndirSize%  : REM extra space for indirected data
  122DIM WinBlk% MaxTemplateSize%
  123SysIndirSize%=&1800         : REM size of indirected data for system windows
  124DIM IndirBlk% SysIndirSize%
  125IndirEnd%=IndirBlk%         : REM pointer to first unused byte
  126IndirFree%=SysIndirSize%    : REM remaining free space after IndirEnd%
  127DIM IconText%(32)           : REM pointers to indirected text icons
  128DIM IconTextWhdl%(32)       : REM corresponding window handles
  129DIM IconTextIhdl%(32)       : REM corresponding icon handles
  130DIM CselText%(12)           : REM pointers to text in colour-select boxes
  131DIM CselTextWhdl%(12)       : REM corresponding window handles
  132DIM CselTextIhdl%(12)       : REM corresponding icon handles
  133DIM IcButton% 20*16         : REM names of button types for icons
  134DIM WinButton% 20*16        : REM names of button types for windows
  135FOR i%=0 TO 15
  136  $(IcButton%+20*i%)=FNmsg_lookup0("ICBT"+STR$(i%))
  137  $(WinButton%+20*i%)=FNmsg_lookup0("WNBT"+STR$(i%))
  138NEXT i%
  139DIM WinEd_Col%(6)      : REM colours in the colour-select boxes
  140DIM InverseColour%(15) : REM to display text in colour boxes / colour menu
  141FOR i%=0 TO 15
  142  CASE i% OF
  143    WHEN 0,1,2,3,9,12,14
  144      InverseColour%(i%)=7
  145    OTHERWISE
  146      InverseColour%(i%)=0
  147  ENDCASE
  148NEXT i%
  149DIM DragBlk% 40     : REM data block for starting drags
  150FileIndexSize%=16+MaxTemplates%*24+4
  151DIM FileIndex% FileIndexSize% : REM contains index of a template file
  152DIM FontUsage%(256) : REM counts number of icons that use a font
  153DIM Fra% 256        : REM font reference array for loading+saving templates
  154DIM FontData% 64    : REM buffer for reading font data
  155DIM Mouse_Ptt% 16        : REM pixel translation table for pointer changes
  156REM initialise global variables
  157IcEd_Win%=-1000          : REM invalid values
  158IcEd_Icon%=-1000
  159WinEd_Win%=-1
  160Mbuttons_Released%=FALSE : REM to debounce mouse clicks
  161ThisClickTime%=TIME      : REM to store data of last mouse click
  162ThisClickX%=-1000
  163ThisClickY%=-1000
  164ThisClickButton%=0
  165TimedDrag_Enabled%=FALSE : REM can I start "timed drag" from current click?
  166DragInterval%=50         : REM interval after which "timed drag" can start
  167DclickInterval%=50       : REM max time between clicks of a double-click
  168NextIconNr%=0            : REM for semi-automatic renumbering of icons
  169LastMenu%=-1             : REM handle of last menu shown
  170LastMenu_Win%=-31        : REM window above which last menu was made
  171LastMenu_Icon%=-1        : REM icon handle of same
  172MainFName$="Templates"   : REM save all templates as ....
  173SelFName$="Selection"    : REM save template selection as ....
  174SavingSelection%=FALSE   : REM was last save dialogue to save a selection?
  175QuitAfterSave%=FALSE     : REM quit program after current save proc?
  176QuitDeadline%=0          : REM for "delayed" quit, to avoid Wimp bug
  177NewFName$=""             : REM name of new template file to be loaded
  178ChangesMade%=FALSE       : REM have current templates been modified?
  179UserSprites%=1  : REM sprites in user templates from Wimp area (at first)
  180SpriteFName$="" : REM name of sprite file if not using Wimp area
  181Drag_Type%=-1   : REM type of current drag operation (-1 => none)
  182SupportAEH%=FALSE : REM is in setup, but must exist before loading templates
  183AEHregistered%=FALSE
  184REM create icon on icon bar
  185IconBlk%!0=-1
  186IconBlk%!4=0 : IconBlk%!8=0
  187IconBlk%!12=68 : IconBlk%!16=68
  188IconBlk%!20=&7000301A
  189$(IconBlk%+24)="!templed"
  190SYS "Wimp_CreateIcon",,IconBlk% TO BarIcon%
  191REM load system sprites
  192SysSprites%=FNloadspritefile(ApplDir$+".Sprites")
  193REM initialise font reference arrays
  194FOR i%=0 TO 255
  195  Fra%?i%=0
  196NEXT i%
  197REM load system templates and set pointers to indirected data
  198SYS "Wimp_OpenTemplate",,ApplDir$+".Templates"
  199InfoW%=FNloadtemplate("Info",WinBlk%,IndirEnd%,IndirFree%,1)
  200$(WinBlk%!(92+3*32+20))=Version$
  201TemplW%=FNloadtemplate("Templates",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  202TemplTbar%=WinBlk%!76           : REM pointer to text in title bar
  203$(TemplTbar%)=MainFName$
  204i%=WinBlk%+92
  205TemplW_IconX%=i%!8-i%!0 + 8     : REM size of an icon in browser window
  206TemplW_IconY%=i%!12-i%!4 + 8
  207TemplW_IconFlags%=i%!16         : REM icon flags
  208TemplW_Cols%=(WinBlk%!12-WinBlk%!4) DIV TemplW_IconX% : REM #columns
  209IF TemplW_Cols%<1 THEN TemplW_Cols%=1
  210ScrapBlk%!0=TemplW%
  211ScrapBlk%!4=0
  212SYS "Wimp_DeleteIcon",,ScrapBlk% : REM icon is only used to set size
  213IcEdW%=FNloadtemplate("IconEdit",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  214IcEdTbar%=WinBlk%!76
  215PROClinkicontext(0,WinBlk%,23)  : REM text in a text icon
  216PROClinkicontext(1,WinBlk%,24)  : REM name of a sprite
  217PROClinkicontext(2,WinBlk%,25)  : REM validation string
  218PROClinkicontext(3,WinBlk%,26)  : REM max size
  219PROClinkicontext(4,WinBlk%,28)  : REM icon button type
  220PROClinkicontext(5,WinBlk%,31)  : REM esg
  221PROClinkicontext(19,WinBlk%,45) : REM font name
  222PROClinkicontext(20,WinBlk%,48) : REM font x size
  223PROClinkicontext(21,WinBlk%,51) : REM font y size
  224PROClinkcseltext(0,WinBlk%,34)  : REM foreground colour
  225PROClinkcseltext(1,WinBlk%,37)  : REM background colour
  226WinEdW%=FNloadtemplate("WindowEdit",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  227WinEdTbar%=WinBlk%!76
  228PROClinkicontext(6,WinBlk%,23)  : REM window button type
  229PROClinkcseltext(2,WinBlk%,27)  : REM title foreground colour
  230PROClinkcseltext(3,WinBlk%,31)  : REM title background colour
  231PROClinkcseltext(4,WinBlk%,35)  : REM work area foreground colour
  232PROClinkcseltext(5,WinBlk%,39)  : REM work area background colour
  233PROClinkcseltext(6,WinBlk%,43)  : REM scrollbar inner colour
  234PROClinkcseltext(7,WinBlk%,47)  : REM scrollbar outer colour
  235PROClinkcseltext(8,WinBlk%,51)  : REM input focus colour
  236DefW%=FNloadtemplate("DefaultWin",WinBlk%,IndirEnd%,IndirFree%,1)
  237SaveW%=FNloadtemplate("SaveBox",WinBlk%,IndirEnd%,IndirFree%,1)
  238FileName%=WinBlk%!(92+1*32+20)  : REM pointer to file name in savebox
  239IcInfoW%=FNloadtemplate("IconInfo",WinBlk%,IndirEnd%,IndirFree%,1)
  240PROClinkicontext(7,WinBlk%,6)   : REM template name
  241PROClinkicontext(8,WinBlk%,7)   : REM icon number
  242PROClinkicontext(9,WinBlk%,9)   : REM minimum x coordinate
  243PROClinkicontext(26,WinBlk%,10) : REM maximum x coordinate
  244PROClinkicontext(10,WinBlk%,11) : REM minimum y coordinate
  245PROClinkicontext(27,WinBlk%,8)  : REM maximum y coordinate
  246PROClinkicontext(11,WinBlk%,12) : REM icon size
  247PROClinkicontext(24,WinBlk%,13) : REM pointer position
  248WorkW%=FNloadtemplate("WorkArea",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  249PROClinkicontext(12,WinBlk%,10) : REM top left X coord
  250PROClinkicontext(13,WinBlk%,13) : REM top left Y coord
  251PROClinkicontext(14,WinBlk%,16) : REM work area X size
  252PROClinkicontext(15,WinBlk%,19) : REM work area Y size
  253PROClinkicontext(16,WinBlk%,22) : REM min X size
  254PROClinkicontext(17,WinBlk%,25) : REM min Y size
  255AlignW%=FNloadtemplate("Align",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  256PROCselecticon(AlignW%,2,1)     : REM set align-left on
  257PROCselecticon(AlignW%,8,1)     : REM move icons
  258OptionsW%=FNloadtemplate("Options",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  259OptPaneW%=FNloadtemplate("OptPane",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  260PROClinkicontext(28,WinBlk%,19) : REM iconsize grid X size
  261PROClinkicontext(29,WinBlk%,23) : REM iconsize grid Y size
  262PROClinkicontext(30,WinBlk%,28) : REM iconpos grid X size
  263PROClinkicontext(31,WinBlk%,32) : REM iconpos grid Y size
  264SpaceW%=FNloadtemplate("Spaceout",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  265PROCselecticon(SpaceW%,3,1)    : REM set space-vertically on
  266PROCselecticon(SpaceW%,4,1)    : REM set to fixed spacing
  267PROClinkicontext(18,WinBlk%,6) : REM space between icons
  268SpaceOut_Space%=4
  269PROCseticontext(18,STR$(SpaceOut_Space%))
  270PROCspace_shadeicons
  271StatW%=FNloadtemplate("Stats",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
  272PROCselecticon(StatW%,1,1)
  273StdIconW%=FNloadtemplate("StdIcons",WinBlk%,IndirEnd%,IndirFree%,1)
  274LastStdIcon%=WinBlk%!88-1
  275DialW%=FNloadtemplate("Dialogue",WinBlk%,IndirEnd%,IndirFree%,1)
  276Dial_Msg%=WinBlk%!(92+20)
  277Dial_Button1%=WinBlk%!(92+1*32+20) : REM pointer to text in left button
  278Dial_Button2%=WinBlk%!(92+2*32+20) : REM pointer to text in middle button
  279Dial_Button3%=WinBlk%!(92+3*32+20) : REM pointer to text in right button
  280REM store colours and border flag of buttons
  281mask%=(1<<2)+(&FF<<24)
  282Dial_ButtonCol1%=(WinBlk%!(92+1*32+16)) AND mask%
  283Dial_ButtonCol2%=(WinBlk%!(92+2*32+16)) AND mask%
  284Dial_ButtonCol3%=(WinBlk%!(92+3*32+16)) AND mask%
  285SYS "Wimp_CloseTemplate"
  286REM initialise font usage
  287FOR i%=0 TO 255
  288  IF Fra%?i%>0 THEN
  289    FontUsage%(i%)=1 : REM font is used by system templates
  290  ELSE
  291    FontUsage%(i%)=0
  292  ENDIF
  293NEXT i%
  294PROCsetup_load
  295PROCselecticon(OptPaneW%,13,IcInfo_Active%)
  296PROCselecticon(OptPaneW%,11,DuplNames%)
  297PROCselecticon(OptPaneW%,12,Hatch%)
  298PROCselecticon(OptPaneW%,16,Grid_SizeLock%)
  299PROCseticontext(28,STR$(Grid_SizeX%))
  300PROCseticontext(29,STR$(Grid_SizeY%))
  301PROCselecticon(OptPaneW%,25,Grid_PosLock%)
  302PROCseticontext(30,STR$(Grid_PosX%))
  303PROCseticontext(31,STR$(Grid_PosY%))
  304PROCselecticon(OptPaneW%,14,Save_Unselected%)
  305PROCselecticon(OptPaneW%,15,DeleteOutside%)
  306PROCselecticon(OptPaneW%,8,TrapDclick%)
  307PROCpreparemenus
  308PROCsupportinterface(SupportInterface%)
  309AEHregistered%=FALSE
  310PROCsupportaeh(SupportAEH%)
  311PROCreadscreenvars
  312REM get filename that was given as argument with command
  313SYS "OS_GetEnv" TO cmdstr%
  314fn$=FNstr(cmdstr%)
  315p%=INSTR(fn$,ApplDir$)
  316p%=INSTR(fn$," ",p%+LEN(ApplDir$))
  317IF p%>0 THEN
  318  fn$=MID$(fn$,p%+1)
  319  p%=INSTR(fn$," ",p%)
  320  fn$=LEFT$(fn$,p%-1)
  321  IF LEN(fn$)>0 THEN
  322    PROCtempl_loadfile(fn$,1) : REM found filename - load the file
  323    PROCsetmainfname(fn$)
  324  ENDIF
  325ELSE
  326  PROCsetextent
  327ENDIF
  328ENDPROC
  329
  330DEF PROCkey(window%,icon%,key%)
  331LOCAL i%,waslast%,dx%,dy%,no%,help$,xmin%,ymin%,xmax%,ymax%,xstep%,ystep%
  332IF (key%=27) AND (Drag_Type%<>-1) THEN
  333  PROCabortdrag
  334ELSE
  335  CASE window% OF
  336    WHEN IcEdW%
  337      CASE key% OF
  338        WHEN &18E,&18A,13 : REM down, tab, return
  339          IF icon%>0 THEN
  340            i%=icon%
  341            waslast%=FALSE
  342            REPEAT
  343              IF i%=26 THEN
  344                i%=23
  345                waslast%=TRUE : REM caret went "round"
  346              ELSE
  347                i%+=1
  348              ENDIF
  349            UNTIL (NOT FNiconshaded(IcEdW%,i%)) OR (i%=icon%)
  350            IF waslast% AND (key%=13) THEN
  351              PROCselecticon(IcEdW%,9,1)
  352              PROCiced_readwin(-1)
  353              PROCselecticon(IcEdW%,9,0)
  354              i%=icon%
  355            ENDIF
  356            PROCsetcaret(IcEdW%,i%)
  357          ENDIF
  358        WHEN &18F,&19A : REM up, shift+tab
  359          IF icon%>0 THEN
  360            i%=icon%
  361            REPEAT
  362              IF i%=23 THEN
  363                i%=26
  364              ELSE
  365                i%-=1
  366              ENDIF
  367            UNTIL (NOT FNiconshaded(IcEdW%,i%)) OR (i%=icon%)
  368            PROCsetcaret(IcEdW%,i%)
  369          ENDIF
  370        WHEN &181 : REM F1
  371          SYS "Wimp_GetPointerInfo",,PtrInfo%
  372          IF PtrInfo%!12=IcEdW% THEN
  373            help$=""
  374            CASE PtrInfo%!16 OF
  375              WHEN 14            : help$="Indirected"
  376              WHEN 3,25          : help$="Validation"
  377              WHEN 4,26          : help$="Maxsize"
  378              WHEN 15            : help$="Border"
  379              WHEN 16            : help$="Filled"
  380              WHEN 17            : help$="Hcentred"
  381              WHEN 18            : help$="Vcentred"
  382              WHEN 19            : help$="Rjustified"
  383              WHEN 20            : help$="Needshelp"
  384              WHEN 21            : help$="Allowadjust"
  385              WHEN 22            : help$="Halfsize"
  386              WHEN 5,27,28,29    : help$="Buttontype"
  387              WHEN 6,30,31,32    : help$="ESG"
  388              WHEN 39            : help$="Shaded"
  389              WHEN 7,33,34,35    : help$="Fgcol"
  390              WHEN 8,36,37,38    : help$="Bgcol"
  391              WHEN 41            : help$="Font"
  392              WHEN 1             : help$="Flags"
  393            ENDCASE
  394            IF help$<>"" THEN
  395              PROCaskhelp("TemplEd.IconInfo_"+help$)
  396            ENDIF
  397          ENDIF
  398        WHEN &182 : REM F2
  399          PROCselecticon(IcEdW%,9,1)
  400          PROCiced_readwin(-1)
  401          PROCselecticon(IcEdW%,9,0)
  402        WHEN &183 : REM F3
  403          PROCselecticon(IcEdW%,10,1)
  404          PROCiced_readwin(-1)
  405          PROCselecticon(IcEdW%,10,0)
  406          PROCclosewindow(IcEdW%)
  407          PROCsetcaret(IcEd_Win%,-1)
  408        WHEN &184,27 : REM F4, Esc
  409          PROCselecticon(IcEdW%,11,1)
  410          PROCclosewindow(IcEdW%)
  411          PROCselecticon(IcEdW%,11,0)
  412          PROCsetcaret(IcEd_Win%,-1)
  413        OTHERWISE
  414          SYS "Wimp_ProcessKey",key%
  415      ENDCASE
  416    WHEN WinEdW%
  417      CASE key% OF
  418        WHEN &181     
  419          SYS "Wimp_GetPointerInfo",,PtrInfo%
  420          IF PtrInfo%!12=WinEdW% THEN
  421            help$=""
  422            CASE PtrInfo%!16 OF
  423              WHEN 4             : help$="Moveable"
  424              WHEN 5             : help$="Auto-redraw"
  425              WHEN 6             : help$="Hotkeys"
  426              WHEN 7             : help$="Pane"
  427              WHEN 8             : help$="Nobounds"
  428              WHEN 9             : help$="GCOL"
  429              WHEN 10            : help$="Backwindow"
  430              WHEN 11,12         : help$="Scroll"
  431              WHEN 1,21,22,23,24 : help$="Buttontype"
  432              WHEN 20            : help$="Newformat"
  433            ENDCASE
  434            IF help$<>"" THEN
  435              PROCaskhelp("TemplEd.WinInfo_"+help$)
  436            ENDIF
  437          ENDIF
  438        WHEN &182,13
  439          PROCselecticon(WinEdW%,53,1)
  440          PROCwined_readwin
  441          PROCselecticon(WinEdW%,53,0)
  442        WHEN &183
  443          PROCselecticon(WinEdW%,54,1)
  444          PROCwined_readwin
  445          PROCselecticon(WinEdW%,54,0)
  446          PROCclosewindow(WinEdW%)
  447          PROCsetcaret(WinEd_Win%,-1)
  448        WHEN &184,27
  449          PROCselecticon(WinEdW%,55,1)
  450          PROCclosewindow(WinEdW%)
  451          PROCselecticon(WinEdW%,55,0)
  452          PROCsetcaret(WinEd_Win%,-1)
  453        OTHERWISE
  454          SYS "Wimp_ProcessKey",key%
  455      ENDCASE
  456    WHEN SaveW%
  457      CASE key% OF
  458        WHEN 13
  459          PROCselecticon(SaveW%,0,1)
  460          IF SavingSelection% THEN
  461            SelFName$=$(FileName%)
  462            PROCsavetemplates(SelFName$)
  463          ELSE
  464            PROCsetmainfname($(FileName%))
  465            PROCsavetemplates(MainFName$)
  466          ENDIF
  467          PROCselecticon(SaveW%,0,0)
  468          SYS "Wimp_CreateMenu",,-1
  469        WHEN 27
  470          SYS "Wimp_CreateMenu",,-1
  471        OTHERWISE
  472          SYS "Wimp_ProcessKey",key%
  473      ENDCASE
  474    WHEN WorkW%
  475      CASE key% OF
  476        WHEN &18E,&18A,13
  477          IF icon%=25 THEN
  478            IF key%=13 THEN
  479              PROCselecticon(WorkW%,30,1)
  480              PROCsetworkarea
  481              PROCselecticon(WorkW%,30,0)
  482              SYS "Wimp_CreateMenu",,-1
  483            ELSE
  484              PROCsetcaret(WorkW%,10)
  485            ENDIF
  486          ELSE
  487            PROCsetcaret(WorkW%,icon%+3)
  488          ENDIF
  489        WHEN &18F,&19A
  490          IF icon%=10 THEN
  491            PROCsetcaret(WorkW%,25)
  492          ELSE
  493            PROCsetcaret(WorkW%,icon%-3)
  494          ENDIF
  495        WHEN 27
  496          SYS "Wimp_CreateMenu",,-1
  497        OTHERWISE
  498          SYS "Wimp_ProcessKey",key%
  499      ENDCASE
  500    WHEN SpaceW%
  501      IF key%=13 THEN
  502        PROCselecticon(SpaceW%,9,1)
  503        PROCspaceicons(LastMenu_Win%)
  504        PROCselecticon(SpaceW%,9,0)
  505        SYS "Wimp_CreateMenu",,-1
  506      ELSE
  507        SYS "Wimp_ProcessKey",key%
  508      ENDIF
  509    OTHERWISE
  510      CASE Drag_Type% OF
  511        WHEN 0,1,5,6
  512          dx%=0
  513          dy%=0
  514          CASE key% OF
  515            WHEN &18C : dx%=-PixToOS_X%
  516            WHEN &18D : dx%=PixToOS_X%
  517            WHEN &18E : dy%=-PixToOS_Y%
  518            WHEN &18F : dy%=PixToOS_Y%
  519            WHEN &19C : dx%=-4*PixToOS_X%
  520            WHEN &19D : dx%=4*PixToOS_X%
  521            WHEN &19E : dy%=-4*PixToOS_Y%
  522            WHEN &19F : dy%=4*PixToOS_Y%
  523            OTHERWISE : SYS "Wimp_ProcessKey",key%
  524          ENDCASE
  525          SYS "Wimp_GetPointerInfo",,PtrInfo%
  526          MOUSE TO (PtrInfo%!0)+dx%,(PtrInfo%!4)+dy%
  527        OTHERWISE
  528          no%=FNwhichtemplate(window%)
  529          IF no%<>-1 THEN
  530            CASE key% OF
  531              WHEN 1        : PROCsel_all(window%)          : REM ^A
  532              WHEN 3
  533                dummy%=-1
  534                PROCcopyiconsel(window%,dummy%,0)           : REM ^C
  535              WHEN 4
  536                dummy%=-1
  537                PROCcopyiconsel(window%,dummy%,2)           : REM ^D
  538              WHEN 5       : PROCiced_start(window%,-1)     : REM ^E
  539              WHEN 10
  540                PROCsel_get(window%)                        : REM ^J
  541                IF NrSelected%>=2 THEN
  542                  LastMenu_Win%=window%
  543                  LastMenu_Icon%=-1
  544                  SYS "Wimp_GetPointerInfo",,PtrInfo%
  545                  SYS "Wimp_CreateMenu",,AlignW%,PtrInfo%!0-80,PtrInfo%!4+80
  546                ENDIF
  547              WHEN 11
  548                PROCsel_get(window%)                        : REM ^K
  549                IF NrSelected%>=2 THEN
  550                  LastMenu_Win%=window%
  551                  LastMenu_Icon%=-1
  552                  SYS "Wimp_GetPointerInfo",,PtrInfo%
  553                  SYS "Wimp_CreateMenu",,SpaceW%,PtrInfo%!0-80,PtrInfo%!4+80
  554                ENDIF
  555              WHEN 12
  556                dummy%=-1
  557                PROCcopyiconsel(window%,dummy%,3)           : REM ^L
  558              WHEN 17,&1A2 : PROCclosetemplate(no%)         : REM ^Q,^F2
  559              WHEN 18
  560                dummy%=-1
  561                PROCcopyiconsel(window%,dummy%,4)           : REM ^R
  562              WHEN 20      : PROCiced_start(window%,-4)     : REM ^T
  563              WHEN 21
  564                dummy%=-1
  565                PROCcopyiconsel(window%,dummy%,1)           : REM ^U
  566              WHEN 23      : PROCwined_fillwin(window%)     : REM ^W
  567              WHEN 24      : PROCdeleteiconsel(window%,-1)  : REM ^X
  568              WHEN 26      : PROCsel_clear(window%,-1)      : REM ^Z
  569              WHEN &18C,&18D,&18E,&18F,&19C,&19D,&19E,&19F
  570                PROCsel_get(window%)
  571                IF NrSelected%>0 THEN
  572                  PROCsel_box(window%,xmin%,ymin%,xmax%,ymax%)
  573                  IF Grid_PosLock% THEN
  574                    xstep%=Grid_PosX%
  575                    ystep%=Grid_PosY%
  576                  ELSE
  577                    IF Grid_SizeLock% THEN
  578                      xstep%=Grid_SizeX%
  579                      ystep%=Grid_SizeY%
  580                    ELSE
  581                      xstep%=PixToOS_X%
  582                      ystep%=PixToOS_Y%
  583                    ENDIF
  584                  ENDIF
  585                  CASE (key% AND &F) OF
  586                    WHEN &C : dx%=-xstep%
  587                    WHEN &D : dx%=xstep%
  588                    WHEN &E : dy%=-ystep%
  589                    WHEN &F : dy%=ystep%
  590                  ENDCASE
  591                  IF key% AND &10 THEN
  592                    dx%=dx%*4
  593                    dy%=dy%*4
  594                  ENDIF
  595                  xmin%+=dx%
  596                  xmax%+=dx%
  597                  ymin%+=dy%
  598                  ymax%+=dy%
  599                  PROCmoveresize(window%,-1,window%,xmin%,ymin%,xmax%,ymax%)
  600                ENDIF
  601              OTHERWISE    : SYS "Wimp_ProcessKey",key%
  602            ENDCASE
  603          ELSE
  604            SYS "Wimp_ProcessKey",key%
  605          ENDIF
  606      ENDCASE
  607  ENDCASE
  608ENDIF
  609ENDPROC
  610
  611DEF FNloadtemplate(name$,buf%,RETURN indir%,RETURN free%,spptr%)
  612LOCAL oldindir%,handle%
  613LOCAL ERROR
  614ON ERROR LOCAL SYS "Wimp_CloseTemplate" : PROCerror(1)
  615oldindir%=indir%
  616name$=name$+STRING$(12,CHR$0)
  617SYS "Wimp_LoadTemplate",,buf%+4,indir%,indir%+free%,Fra%,name$,0 TO ,,indir%
  618free%-=(indir%-oldindir%)
  619buf%!68=spptr%
  620IF buf%!88>0 THEN
  621  FOR i%=0 TO buf%!88
  622    f%=buf%!(92+i%*32+16)
  623    IF (f% AND &103)=&102 THEN
  624      buf%!(92+i%*32+24)=spptr%
  625    ENDIF
  626  NEXT i%
  627ENDIF
  628SYS "Wimp_CreateWindow",,buf%+4 TO handle%
  629buf%!0=handle%
  630=handle%
  631
  632DEF PROCmenuselect(selection%)
  633LOCAL adjust%,selinfo%,itemnr%,item%,item$,parentitem%,parentitem$
  634LOCAL cmd$,i%,j%,minx%,miny%,size,dir%
  635SYS "MenuUtil_Decode",LastMenu%,selection% TO ,adjust%,selinfo%
  636itemnr%=selinfo%!0
  637item%=selinfo%!8
  638item$=FNstr(selinfo%!12)
  639parentitem%=selinfo%!24
  640IF parentitem%<>0 THEN parentitem$=FNstr(selinfo%!28)
  641CASE LastMenu% OF
  642  WHEN MainMenu%
  643    CASE item% OF
  644      WHEN item_options%
  645        PROCopenwindow(OptionsW%,2)
  646      WHEN item_stats%
  647        PROCstat_fillwin
  648      WHEN item_sprview%
  649        cmd$="Run "+SpriteFName$
  650        IF OSversion%>=300 THEN cmd$="Filer_"+cmd$
  651        SYS "Wimp_StartTask",cmd$
  652      WHEN item_sprreload%
  653        PROCloadusersprites(SpriteFName$)
  654      WHEN item_sprreset%
  655        PROCloadusersprites("")
  656      WHEN item_quit%
  657        IF ChangesMade% THEN
  658          PROCdialogue(0,"","")
  659        ELSE
  660          PROCprequit(0)
  661        ENDIF
  662    ENDCASE
  663  WHEN TemplMenu%
  664    CASE item% OF
  665      WHEN item_templname%
  666        CASE parentitem% OF
  667          WHEN item_createtempl%
  668            IF LEN(item$)>0 THEN
  669              WinBlk%!0=DefW%
  670              SYS "Wimp_GetWindowInfo",,WinBlk%
  671              $(WinBlk%+76)=item$ : REM title bar equal to template name
  672              WinBlk%!88=0
  673              PROCtempl_add(item$,WinBlk%,1)
  674              PROCopentemplate(NrTemplates%-1)
  675              PROCsetchanged(TRUE)
  676            ENDIF
  677          WHEN item_renametempl%
  678            IF LEN(item$)>0 THEN
  679              j%=0
  680              REM check if name already exists
  681              WHILE (j%<NrTemplates%) AND ($(TemplNames%+28*j%)<>item$)
  682                j%+=1
  683              ENDWHILE
  684              IF (j%=NrTemplates%) OR DuplNames% THEN
  685                i%=SelBlk%!0
  686                $(TemplNames%+28*i%)=item$
  687                IconBlk%!0=TemplW%
  688                IconBlk%!4=i%
  689                SYS "Wimp_GetIconState",,IconBlk%
  690                IconBlk%!16=(IconBlk%!8)+(TemplW_IconX%-8)-16*(11-LEN(item$))
  691                dummy%=FNredefineicon(TemplW%,i%,IconBlk%)
  692                PROCsetchanged(TRUE)
  693              ELSE
  694                PROCcomplain(FNmsg_lookup0("TAEX"))
  695              ENDIF
  696            ENDIF
  697          WHEN item_copytempl%
  698            IF LEN(item$)>0 THEN
  699              PROCsel_get(TemplW%)
  700              WinBlk%!0=TemplHandle%(SelBlk%!0)
  701              SYS "Wimp_GetWindowInfo",,WinBlk%
  702              IF PaneFlag%?(SelBlk%!(4*i%)) THEN
  703                WinBlk%!32=WinBlk%!32 OR (1<<5) : REM copy 'Pane' flag
  704              ENDIF
  705              PROCiconrealloc(WinBlk%+60,WinBlk%+76)
  706              IF WinBlk%!88>0 THEN
  707                FOR i%=0 TO WinBlk%!88-1
  708                  PROCiconrealloc(WinBlk%+92+32*i%+16,WinBlk%+92+32*i%+20)
  709                NEXT i%
  710              ENDIF
  711              PROCtempl_add(item$,WinBlk%,1)
  712              PROCopentemplate(NrTemplates%-1)
  713              PROCsetchanged(TRUE)
  714            ENDIF
  715        ENDCASE
  716      WHEN item_opentempl%
  717        PROCsel_get(TemplW%)
  718        FOR i%=NrSelected%-1 TO 0 STEP -1
  719          PROCopentemplate(SelBlk%!(4*i%))
  720        NEXT i%
  721      WHEN item_closetempl%
  722        PROCsel_get(TemplW%)
  723        FOR i%=NrSelected%-1 TO 0 STEP -1
  724          PROCclosetemplate(SelBlk%!(4*i%))
  725        NEXT i%
  726      WHEN item_deletetempl%
  727        SYS "Hourglass_On"
  728        PROCsel_get(TemplW%)
  729        FOR i%=NrSelected%-1 TO 0 STEP -1
  730          PROCtempl_delete(SelBlk%!(4*i%))
  731        NEXT i%
  732        PROCsel_clear(TemplW%,-1)
  733        LastMenu_Win%=TemplW%
  734        LastMenu_Icon%=-1
  735        SYS "Hourglass_Off"
  736      WHEN item_selalltempl%
  737        PROCsel_all(TemplW%)
  738      WHEN item_clearseltempl%
  739        PROCsel_clear(TemplW%,-1)
  740      WHEN item_deleteall%
  741        IF ChangesMade% THEN
  742          PROCdialogue(1,"","")
  743        ELSE
  744          PROCtempl_deleteall
  745          LastMenu_Win%=TemplW%
  746          LastMenu_Icon%=-1
  747        ENDIF
  748      WHEN item_sorttempl%
  749        PROCsel_clear(TemplW%,-1)
  750        PROCtempl_sort
  751        PROCredefinebrowser(TRUE)
  752        LastMenu_Win%=TemplW%
  753        LastMenu_Icon%=-1
  754      WHEN item_save%
  755        SavingSelection%=FALSE
  756        PROCsavetemplates(MainFName$)
  757    ENDCASE
  758    IF TemplMenu_Deselect% THEN PROCsel_clear(TemplW%,-1)
  759  WHEN UserMenu%
  760    CASE item% OF
  761      WHEN item_copyicon%,item_up%,item_down%,item_left%,item_right%
  762        CASE item% OF
  763          WHEN item_copyicon% : dir%=0
  764          WHEN item_up%       : dir%=1
  765          WHEN item_down%     : dir%=2
  766          WHEN item_left%     : dir%=3
  767          WHEN item_right%    : dir%=4
  768        ENDCASE
  769        PROCcopyiconsel(LastMenu_Win%,LastMenu_Icon%,dir%)
  770      WHEN item_iconnr%,item_renumbericon%
  771        IF item%=item_iconnr% THEN NextIconNr%=VAL(item$)
  772        PROCsel_get(LastMenu_Win%)
  773        CASE NrSelected% OF
  774          WHEN 0
  775            PROCrenumbericon(LastMenu_Win%,LastMenu_Icon%)
  776            LastMenu_Icon%=NextIconNr%
  777          WHEN 1
  778            PROCrenumbericon(LastMenu_Win%,SelBlk%!0)
  779          OTHERWISE
  780            PROCrenumbericonsel(LastMenu_Win%)
  781        ENDCASE
  782      WHEN item_deleteicon%
  783        PROCdeleteiconsel(LastMenu_Win%,LastMenu_Icon%)
  784      WHEN item_editicon%
  785        PROCiced_start(LastMenu_Win%,LastMenu_Icon%)
  786      WHEN item_minsize%
  787        PROCminimizeiconsel(LastMenu_Win%,LastMenu_Icon%,0)
  788      WHEN item_centericon%
  789        PROCcentericonsel(LastMenu_Win%,LastMenu_Icon%,0)
  790      WHEN item_samesize%
  791        PROCsamesizeiconsel(LastMenu_Win%,LastMenu_Icon%,0)
  792      WHEN item_both%,item_xdim%,item_ydim%
  793        CASE parentitem% OF
  794          WHEN item_minsize%
  795            PROCminimizeiconsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)
  796          WHEN item_centericon%
  797            PROCcentericonsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)
  798          WHEN item_samesize%
  799            PROCsamesizeiconsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)
  800        ENDCASE
  801      WHEN item_selallicons%
  802        PROCsel_all(LastMenu_Win%)
  803      WHEN item_clearselicons%
  804        PROCsel_clear(LastMenu_Win%,-1)
  805      WHEN item_editwindow%
  806        PROCwined_fillwin(LastMenu_Win%)
  807      WHEN item_edittitle%
  808        PROCiced_start(LastMenu_Win%,-4)
  809      WHEN item_tidyicons%
  810        LastMenu_Win%=FNtidyicons(LastMenu_Win%)
  811      WHEN item_centerwin%
  812        PROCopenwindow(LastMenu_Win%,1)
  813      WHEN item_wimparea%
  814        PROCwindow_setspritearea(LastMenu_Win%,1)
  815      WHEN item_customarea%
  816        PROCwindow_setspritearea(LastMenu_Win%,UserSprites%)
  817      WHEN item_closewin%
  818        PROCclosetemplate(FNwhichtemplate(LastMenu_Win%))
  819      OTHERWISE
  820        IF (item%=item_createicon%) OR (parentitem%=item_createicon%) THEN
  821          IF item%=item_createicon% THEN item$=""
  822          REM convert screen coords to window coords
  823          ScrapBlk%!0=LastMenu_Win%
  824          SYS "Wimp_GetWindowState",,ScrapBlk%
  825          minx%=LastMenu_X%-(ScrapBlk%!4-ScrapBlk%!20)
  826          miny%=LastMenu_Y%-(ScrapBlk%!16-ScrapBlk%!24)
  827          PROCcreatestandardicon(item$,LastMenu_Win%,minx%,miny%)
  828        ENDIF
  829    ENDCASE
  830  WHEN IcButtonMenu%
  831    IcEd_Button%=itemnr%
  832    PROCseticontext(4,$(IcButton%+20*IcEd_Button%))
  833  WHEN WinButtonMenu%
  834    WinEd_Button%=itemnr%
  835    PROCseticontext(6,$(WinButton%+20*WinEd_Button%))
  836  WHEN EsgMenu%
  837    IcEd_Esg%=VAL(LEFT$(item$,2))
  838    PROCseticontext(5,STR$(IcEd_Esg%))
  839  WHEN ColourMenu%
  840    IF item$="None" THEN
  841      j%=255
  842    ELSE
  843      j%=VAL(item$)
  844    ENDIF
  845    CASE LastMenu_Win% OF
  846      WHEN IcEdW%
  847        CASE LastMenu_Icon% OF
  848          WHEN 34
  849            IcEd_Fgcol%=j%
  850            PROCsetcolourbox(0,j%)
  851          WHEN 37
  852            IcEd_Bgcol%=j%
  853            PROCsetcolourbox(1,j%)
  854        ENDCASE
  855      WHEN WinEdW%
  856        i%=(LastMenu_Icon%-27) DIV 4
  857        WinEd_Col%(i%)=j%
  858        PROCsetcolourbox(2+i%,j%)
  859    ENDCASE
  860  WHEN FontMenu%
  861    IF LEN(parentitem$)>0 THEN
  862      IF item$="(Regular)" THEN
  863        IcEd_Font$=parentitem$
  864      ELSE
  865        IcEd_Font$=parentitem$+"."+item$
  866      ENDIF
  867      PROCseticontext(19,IcEd_Font$)
  868    ENDIF
  869  WHEN FontSizemenu%
  870    size=VAL(item$)
  871    IF size>0 THEN
  872      IF LastMenu_Icon%=48 THEN
  873        IcEd_Xsize=size
  874        PROCseticontext(20,LEFT$(STR$(IcEd_Xsize),4))
  875        IF FNiconselected(IcEdW%,53) THEN
  876          IcEd_Ysize=IcEd_Xsize
  877          PROCseticontext(21,LEFT$(STR$(IcEd_Ysize),4))
  878        ENDIF
  879      ELSE
  880        IcEd_Ysize=size
  881        PROCseticontext(21,LEFT$(STR$(IcEd_Ysize),4))
  882      ENDIF
  883    ENDIF
  884  WHEN Updatemenu%
  885    CASE item% OF
  886      WHEN item_updbt%   : PROCiced_readwin(&F<<12)
  887      WHEN item_updesg%  : PROCiced_readwin(&1F<<16)
  888      WHEN item_updfg%   : PROCiced_readwin((&F<<24)+(1<<6))
  889      WHEN item_updbg%   : PROCiced_readwin((&F<<28)+(1<<6))
  890      WHEN item_updfont% : PROCiced_readwin((&FF<<24)+(1<<6))
  891      WHEN item_updrest% : PROCiced_readwin(&EFC+(1<<22))
  892      WHEN item_updbo%:  : PROCiced_readwin(1<<2)
  893      WHEN item_updfi%:  : PROCiced_readwin(1<<5)
  894      WHEN item_updhc%:  : PROCiced_readwin(1<<3)
  895      WHEN item_updvc%:  : PROCiced_readwin(1<<4)
  896      WHEN item_updrj%:  : PROCiced_readwin(1<<9)
  897      WHEN item_updnh%:  : PROCiced_readwin(1<<7)
  898      WHEN item_updaa%:  : PROCiced_readwin(1<<10)
  899      WHEN item_updhs%:  : PROCiced_readwin(1<<11)
  900      WHEN item_updsh%:  : PROCiced_readwin(1<<22)
  901    ENDCASE
  902    IF LastMenu_Icon%=10 THEN
  903      PROCclosewindow(IcEdW%)
  904      PROCsetcaret(IcEd_Win%,-1)
  905      adjust%=FALSE
  906    ENDIF
  907ENDCASE
  908IF adjust% THEN
  909  PROCcreatemenu(LastMenu_X%,LastMenu_Y%,LastMenu_Win%,LastMenu_Icon%)
  910ELSE
  911  LastMenu%=-1
  912ENDIF
  913ENDPROC
  914
  915DEF PROCeditaction(xpos%,ypos%,button%,window%,icon%)
  916LOCAL key%,dclick%
  917key%=0
  918dclick%=FALSE
  919IF (INKEY -1) THEN key%+=1 : REM bit 0 -> Shift key
  920IF (INKEY -2) THEN key%+=2 : REM bit 1 -> Ctrl key
  921IF (INKEY -3) THEN key%+=4 : REM bit 2 -> Alt key
  922TimedDrag_Enabled%=(key%=0)AND(icon%>=-1)
  923IF button%>256 THEN
  924  button%=button%>>8 : REM clicked on icon with button type 10
  925ENDIF
  926CASE key% OF
  927  WHEN 0 : REM mouse button, no key
  928    IF button%>0 THEN
  929      dclick%=(TIME-ThisClickTime%)<DclickInterval%
  930      dclick%=dclick% AND (ThisClickButton%=button%)
  931      dclick%=dclick% AND (ABS(ThisClickX%-xpos%)+ABS(ThisClickY%-ypos%))<32
  932      ThisClickTime%=TIME
  933      ThisClickX%=xpos%
  934      ThisClickY%=ypos%
  935      ThisClickButton%=button%
  936    ENDIF
  937    CASE button% OF
  938      WHEN 1,4
  939        CASE icon% OF
  940          WHEN -4
  941            IF dclick% AND TrapDclick% AND (button%=4) THEN
  942              PROCiced_start(window%,icon%)
  943            ENDIF
  944          WHEN -1
  945            IF button%=4 THEN PROCsel_clear(window%,-1)
  946            IF dclick% AND TrapDclick% AND (button%=4) THEN
  947              PROCwined_fillwin(window%)
  948            ELSE
  949              PROCdragselect(button%)
  950              PROCsetcaret(window%,-1)
  951            ENDIF
  952          OTHERWISE
  953            IF icon%>=0 THEN
  954              IF button%=1 THEN
  955                REM toggle "selected" state
  956                ScrapBlk%!0=window%
  957                ScrapBlk%!4=icon%
  958                SYS "Wimp_GetIconState",,ScrapBlk%
  959                CASE ((ScrapBlk%!24)>>12) AND 15 OF
  960                  WHEN 4,9      : REM selecting useless for these button types
  961                  WHEN 5,7,8,11 : REM selecting done by wimp
  962                  OTHERWISE PROCseticonstate(window%,icon%,1<<21,0)
  963                ENDCASE
  964              ELSE
  965                REM "exclusive" select
  966                PROCsel_clear(window%,icon%)
  967                IF NOT FNiconselected(window%,icon%) THEN
  968                  PROCselecticon(window%,icon%,1)
  969                ENDIF
  970              ENDIF
  971              IF dclick% AND TrapDclick% AND (button%=4) THEN
  972                PROCiced_start(window%,icon%)
  973              ELSE
  974                PROCdragselect(button%)
  975                PROCsetcaret(window%,-1)
  976              ENDIF
  977            ENDIF
  978        ENDCASE
  979    ENDCASE
  980  WHEN 1 : REM shift + mouse button
  981    CASE button% OF
  982      WHEN 1,4
  983        PROCsetcaret(window%,-1)
  984        PROCstarticondrag(button%,window%,icon%)
  985      WHEN 2
  986        PROCiced_start(window%,icon%)
  987    ENDCASE
  988  WHEN 2 : REM ctrl + mouse button
  989    CASE button% OF
  990      WHEN 1
  991        PROCsetcaret(window%,-1)
  992        PROCstartwindowresize(window%)
  993      WHEN 2
  994        IF icon%=-4 THEN
  995          PROCiced_start(window%,icon%)
  996        ELSE
  997          PROCwined_fillwin(window%)
  998        ENDIF
  999      WHEN 4
 1000        PROCsetcaret(window%,-1)
 1001        PROCstartwindowmove(window%)
 1002    ENDCASE
 1003  WHEN 4 : REM alt + mouse button
 1004    CASE button% OF
 1005      WHEN 1
 1006        IF icon%>=0 THEN
 1007          PROCrenumbericon(window%,icon%)
 1008          IF NextIconNr%>0 THEN NextIconNr%-=1
 1009        ENDIF
 1010      WHEN 4
 1011        IF icon%>=0 THEN
 1012          PROCrenumbericon(window%,icon%)
 1013          NextIconNr%+=1
 1014        ENDIF
 1015    ENDCASE
 1016  OTHERWISE
 1017    IF (button%>0) AND SupportInterface% THEN
 1018      REM make Interface invert icon
 1019      ScrapBlk%!8=button%
 1020      ScrapBlk%!12=window%
 1021      ScrapBlk%!16=icon%
 1022      SYS "Wimp_BorderIcon",,ScrapBlk%
 1023      REM back to normal
 1024      ScrapBlk%!8=0
 1025      ScrapBlk%!12=window%
 1026      ScrapBlk%!16=icon%
 1027      SYS "Wimp_BorderIcon",,ScrapBlk%
 1028    ENDIF
 1029    IF (button%>0) AND SupportAEH% THEN
 1030      ScrapBlk%!8=button%
 1031      ScrapBlk%!12=window%
 1032      ScrapBlk%!16=icon%
 1033      SYS "AEH_RedrawIcon",,ScrapBlk%
 1034      SYS "AEH_ReleaseIcon",0
 1035    ENDIF
 1036ENDCASE
 1037ENDPROC
 1038
 1039DEF PROCclick(xpos%,ypos%,button%,window%,icon%,wimpclick%)
 1040LOCAL no%,key%
 1041Mbuttons_Released%=(button%=0)
 1042TimedDrag_Enabled%=FALSE
 1043no%=FNwhichtemplate(window%)
 1044IF button%=2 THEN
 1045  REM "steal" clicks with Menu if Shift, Ctrl or Alt pressed
 1046  SYS "OS_Byte",121,0 TO ,key%
 1047  IF key%>=3 THEN
 1048    IF wimpclick% THEN PROCcreatemenu(xpos%,ypos%,window%,icon%)
 1049  ELSE
 1050    IF no%>=0 THEN PROCeditaction(xpos%,ypos%,button%,window%,icon%)
 1051  ENDIF
 1052ELSE
 1053  IF no%>=0 THEN
 1054    PROCeditaction(xpos%,ypos%,button%,window%,icon%)
 1055  ELSE
 1056    IF wimpclick% THEN PROCiconclick(xpos%,ypos%,button%,window%,icon%)
 1057  ENDIF
 1058ENDIF
 1059ENDPROC
 1060
 1061DEF PROCiconclick(xpos%,ypos%,button%,window%,icon%)
 1062LOCAL select%,menu%,adjust%,i%,j%,xsize%,ysize%,up%,lo%
 1063select%=(button%=4)
 1064menu%=(button%=2)
 1065adjust%=(button%=1)
 1066CASE window% OF
 1067  WHEN -2
 1068    IF select% THEN
 1069      PROCopenwindow(TemplW%,3)
 1070      IF IcInfo_Active% THEN PROCopenwindow(IcInfoW%,4)
 1071    ENDIF
 1072  WHEN IcEdW%
 1073    PROCiced_click(xpos%,ypos%,select%,adjust%,icon%)
 1074  WHEN WinEdW%
 1075    PROCwined_click(xpos%,ypos%,select%,adjust%,icon%)
 1076  WHEN StatW%
 1077    PROCstat_fillwin
 1078  WHEN TemplW%
 1079    IF (select% OR adjust%) AND (icon%>=0) THEN
 1080      ScrapBlk%!0=TemplHandle%(icon%)
 1081      SYS "Wimp_GetWindowState",,ScrapBlk%
 1082      IF ScrapBlk%!32 AND (1<<16) THEN
 1083        PROCclosetemplate(icon%)
 1084      ELSE
 1085        PROCopentemplate(icon%)
 1086      ENDIF
 1087      PROCselecticon(TemplW%,icon%,0)
 1088    ENDIF
 1089    IF select% AND (icon%=-1) THEN
 1090      PROCsel_clear(TemplW%,-1)
 1091    ENDIF
 1092    IF (button%=16) OR (button%=64) THEN
 1093      PROCdragselect(button%>>4)
 1094    ENDIF
 1095  WHEN SaveW%
 1096    CASE icon% OF
 1097      WHEN 0
 1098        IF SavingSelection% THEN
 1099          SelFName$=$(FileName%)
 1100          PROCsavetemplates(SelFName$)
 1101        ELSE
 1102          PROCsetmainfname($(FileName%))
 1103          PROCsavetemplates(MainFName$)
 1104        ENDIF
 1105        SYS "Wimp_CreateMenu",,-1
 1106      WHEN 2
 1107        IF (button%>>4) AND 5 THEN
 1108          IF SavingSelection% THEN
 1109            SelFName$=$(FileName%)
 1110          ELSE
 1111            PROCsetmainfname($(FileName%))
 1112          ENDIF
 1113          PROCstartsavedrag
 1114        ENDIF
 1115    ENDCASE
 1116  WHEN AlignW%
 1117    CASE icon% OF
 1118      WHEN 10
 1119        PROCalignicons(LastMenu_Win%)
 1120        IF (NOT adjust%) THEN SYS "Wimp_CreateMenu",,-1
 1121      OTHERWISE
 1122        PROCalign_shadeicons
 1123    ENDCASE
 1124  WHEN SpaceW%
 1125    CASE icon% OF
 1126      WHEN 5,7
 1127        SpaceOut_Space%=VAL($(IconText%(18)))
 1128        up%=(adjust% EOR (icon%=7))
 1129        IF FNchangevar(SpaceOut_Space%,4,up%,-512,512) THEN
 1130          PROCseticontext(18,STR$(SpaceOut_Space%))
 1131          PROCsetcaret(SpaceW%,6)
 1132        ENDIF
 1133     WHEN 4,8
 1134        PROCspace_shadeicons
 1135        IF icon%=8 THEN PROCsetcaret(-1,-1)
 1136      WHEN 9
 1137        PROCspaceicons(LastMenu_Win%)
 1138        IF (NOT adjust%) THEN SYS "Wimp_CreateMenu",,-1
 1139    ENDCASE
 1140  WHEN WorkW%
 1141    IF icon%<=26 THEN
 1142      IF (icon%>=9) AND ((icon% MOD 3)<>1) THEN
 1143        REM click on arrow icons
 1144        up%=((icon% MOD 3)=2) EOR adjust%
 1145        i%=(icon%-9) DIV 3
 1146        j%=VAL($(IconText%(12+i%)))
 1147        IF i%<2 THEN
 1148          lo%=-10000
 1149        ELSE
 1150          lo%=0 : REM "size" field, can't be negative
 1151        ENDIF
 1152        IF FNchangevar(j%,4,up%,lo%,10000) THEN
 1153          PROCseticontext(12+i%,STR$(j%))
 1154          PROCsetcaret(WorkW%,3*i%+10)
 1155        ENDIF
 1156      ENDIF
 1157    ELSE                 
 1158      WinBlk%!0=LastMenu_Win%
 1159      SYS "Wimp_GetWindowState",,WinBlk%
 1160      CASE icon% OF
 1161        WHEN 27,28
 1162          xsize%=WinBlk%!12-WinBlk%!4+WinBlk%!20-WinBlk%!44
 1163          ysize%=WinBlk%!16-WinBlk%!8-WinBlk%!24+WinBlk%!56
 1164          IF icon%=27 THEN
 1165            PROCseticontext(12,STR$(WinBlk%!44))
 1166            PROCseticontext(13,STR$(WinBlk%!56))
 1167            PROCseticontext(14,STR$(xsize%))
 1168            PROCseticontext(15,STR$(ysize%))
 1169            PROCsetcaret(WorkW%,16)
 1170          ELSE
 1171            PROCseticontext(16,STR$(xsize%))
 1172            PROCseticontext(17,STR$(ysize%))
 1173            PROCsetcaret(WorkW%,22)
 1174          ENDIF
 1175        WHEN 29
 1176          PROCseticontext(12,"0")
 1177          PROCseticontext(13,"0")
 1178          PROCseticontext(14,"1236")
 1179          PROCseticontext(15,"936")
 1180          PROCseticontext(16,"0")
 1181          PROCseticontext(17,"0")
 1182          PROCsetcaret(WorkW%,16)
 1183        WHEN 30
 1184          PROCsetworkarea
 1185          IF (NOT adjust%) THEN SYS "Wimp_CreateMenu",,-1
 1186        OTHERWISE
 1187      ENDCASE
 1188    ENDIF
 1189  WHEN OptPaneW%
 1190    CASE icon% OF
 1191      WHEN 8  : TrapDclick%=NOT TrapDclick%
 1192      WHEN 9  : PROCsupportinterface(NOT SupportInterface%)
 1193      WHEN 10 : PROCsupportaeh(NOT SupportAEH%)
 1194      WHEN 11 : DuplNames%=NOT DuplNames%
 1195      WHEN 12
 1196        Hatch%=NOT Hatch%
 1197        PROCredrawall
 1198      WHEN 13
 1199        IcInfo_Active%=NOT IcInfo_Active%
 1200        IF IcInfo_Active% THEN
 1201          PROCopenwindow(IcInfoW%,4)
 1202        ELSE
 1203          PROCclosewindow(IcInfoW%)
 1204        ENDIF
 1205      WHEN 14 : Save_Unselected%=NOT Save_Unselected%
 1206      WHEN 15 : DeleteOutside%=NOT DeleteOutside%
 1207      WHEN 16 : Grid_SizeLock%=NOT Grid_SizeLock%
 1208      WHEN 18,20
 1209        up%=(adjust% EOR (icon%=20))
 1210        IF FNchangevar(Grid_SizeX%,PixToOS_X%,up%,PixToOS_X%,64) THEN
 1211          PROCseticontext(28,STR$(Grid_SizeX%))
 1212        ENDIF
 1213      WHEN 22,24
 1214        up%=(adjust% EOR (icon%=24))
 1215        IF FNchangevar(Grid_SizeY%,PixToOS_Y%,up%,PixToOS_Y%,64) THEN
 1216          PROCseticontext(29,STR$(Grid_SizeY%))
 1217        ENDIF
 1218      WHEN 25 : Grid_PosLock%=NOT Grid_PosLock%
 1219      WHEN 27,29
 1220        up%=(adjust% EOR (icon%=29))
 1221        IF FNchangevar(Grid_PosX%,PixToOS_X%,up%,PixToOS_X%,64) THEN
 1222          PROCseticontext(30,STR$(Grid_PosX%))
 1223        ENDIF
 1224      WHEN 31,33
 1225        up%=(adjust% EOR (icon%=33))
 1226        IF FNchangevar(Grid_PosY%,PixToOS_Y%,up%,PixToOS_Y%,64) THEN
 1227          PROCseticontext(31,STR$(Grid_PosY%))
 1228        ENDIF
 1229    ENDCASE
 1230  WHEN OptionsW%
 1231    CASE icon% OF
 1232      WHEN 0
 1233        PROCsetup_save
 1234        PROCclosewindow(OptionsW%)
 1235      WHEN 1
 1236        PROCclosewindow(OptionsW%)
 1237    ENDCASE
 1238  WHEN DialW%
 1239    SYS "Wimp_CreateMenu",,-1
 1240    CASE LastDialogue% OF
 1241      WHEN 0
 1242        REM program quit with changes made
 1243        CASE icon% OF
 1244          WHEN 1
 1245            SYS "Wimp_GetPointerInfo",,PtrInfo%
 1246            $(FileName%)=MainFName$
 1247            SavingSelection%=FALSE
 1248            QuitAfterSave%=TRUE
 1249            SYS "Wimp_CreateMenu",,SaveW%,PtrInfo%!0-126,PtrInfo%!4+56
 1250          WHEN 2
 1251            PROCprequit(1)
 1252        ENDCASE
 1253      WHEN 1
 1254        REM delete all with changes made
 1255        IF icon%=1 THEN PROCtempl_deleteall
 1256      WHEN 2
 1257        REM load new file with changes made
 1258        IF icon%=1 THEN
 1259          PROCtempl_deleteall
 1260          PROCtempl_loadfile(NewFName$,1)
 1261          PROCsetmainfname(NewFName$)
 1262        ENDIF
 1263      WHEN 8
 1264        REM exit from desktop with changes made
 1265        CASE icon% OF
 1266          WHEN 1
 1267            PROCtempl_deleteall
 1268            REM resume prequit procedure (code copied from PRM)
 1269            SYS "Wimp_GetCaretPosition",,ScrapBlk%
 1270            ScrapBlk%!24=&1FC
 1271            SYS "Wimp_SendMessage",8,ScrapBlk%,PreQuitSender%
 1272        ENDCASE
 1273    ENDCASE
 1274ENDCASE
 1275ENDPROC
 1276
 1277DEF PROCwined_click(xpos%,ypos%,select%,adjust%,icon%)
 1278LOCAL up%,i%,gcol%
 1279CASE icon% OF
 1280  WHEN 53
 1281    PROCwined_readwin
 1282  WHEN 54
 1283    PROCwined_readwin
 1284    PROCclosewindow(WinEdW%)
 1285    PROCsetcaret(WinEd_Win%,-1)
 1286  WHEN 55
 1287    PROCclosewindow(WinEdW%)
 1288    PROCsetcaret(WinEd_Win%,-1)
 1289  WHEN 13
 1290    IF NOT FNiconselected(WinEdW%,20) THEN
 1291      PROCselecticon(WinEdW%,14,FNiconselected(WinEdW%,13))
 1292    ENDIF
 1293  WHEN 14
 1294    IF NOT FNiconselected(WinEdW%,20) THEN
 1295      PROCselecticon(WinEdW%,13,FNiconselected(WinEdW%,14))
 1296    ENDIF
 1297  WHEN 15,17,19,20
 1298    PROCwined_shadeicons(icon%)
 1299  WHEN 23,27,31,35,39,43,47,51
 1300    PROCcreatemenu(xpos%,ypos%,WinEdW%,icon%)
 1301  WHEN 22,24
 1302    up%=(adjust% EOR (icon%=24))
 1303    IF FNchangevar(WinEd_Button%,1,up%,0,15) THEN
 1304      PROCseticontext(6,$(WinButton%+20*WinEd_Button%))
 1305    ENDIF
 1306  WHEN 56
 1307    WinEd_Col%(0)=7
 1308    WinEd_Col%(1)=2
 1309    WinEd_Col%(2)=7
 1310    WinEd_Col%(3)=1
 1311    WinEd_Col%(4)=3
 1312    WinEd_Col%(5)=1
 1313    WinEd_Col%(6)=12
 1314    FOR i%=0 TO 6
 1315      PROCsetcolourbox(2+i%,WinEd_Col%(i%))
 1316    NEXT i%
 1317  OTHERWISE
 1318    IF (icon%>=26) AND (icon%<=52) AND ((icon% MOD 2)=0) THEN
 1319      up%=((icon% MOD 4)=0) EOR adjust%
 1320      i%=(icon%-26) DIV 4
 1321      gcol%=FNiconselected(WinEdW%,9)
 1322      PROCchangecolourbox(2+i%,WinEd_Col%(i%),1,up%,gcol%)
 1323    ENDIF
 1324ENDCASE
 1325ENDPROC
 1326
 1327DEF PROCiced_click(xpos%,ypos%,select%,adjust%,icon%)
 1328LOCAL up%,l%
 1329CASE icon% OF
 1330  WHEN 4
 1331    IF adjust% AND FNiconselected(IcEdW%,14) THEN
 1332      REM minimize number in 'Max size' field
 1333      IF FNiconselected(IcEdW%,12) THEN
 1334          l%=LEN($(IconText%(0)))
 1335      ELSE
 1336        IF FNiconselected(IcEdW%,13) THEN
 1337          l%=LEN($(IconText%(1)))
 1338        ENDIF
 1339      ENDIF
 1340      PROCseticontext(3,STR$(l%+1))
 1341    ENDIF
 1342  WHEN 9
 1343    PROCiced_readwin(-1)
 1344  WHEN 10
 1345    PROCiced_readwin(-1)
 1346    PROCclosewindow(IcEdW%)
 1347    PROCsetcaret(IcEd_Win%,-1)
 1348  WHEN 11
 1349    PROCclosewindow(IcEdW%)
 1350    PROCsetcaret(IcEd_Win%,-1)
 1351  WHEN 12,13,14,41,53
 1352    PROCiced_shadeicons(icon%)
 1353  WHEN 28,31,34,37,45,46,48,51
 1354    PROCcreatemenu(xpos%,ypos%,IcEdW%,icon%)
 1355  WHEN 27,29
 1356    up%=(adjust% EOR (icon%=29))
 1357    IF FNchangevar(IcEd_Button%,1,up%,0,15) THEN
 1358      PROCseticontext(4,$(IcButton%+20*IcEd_Button%))
 1359    ENDIF
 1360  WHEN 30,32
 1361    up%=(adjust% EOR (icon%=32))
 1362    IF FNchangevar(IcEd_Esg%,1,up%,0,31) THEN
 1363      PROCseticontext(5,STR$(IcEd_Esg%))
 1364    ENDIF
 1365  WHEN 33,35
 1366    up%=(adjust% EOR (icon%=35))
 1367    PROCchangecolourbox(0,IcEd_Fgcol%,1,up%,0)
 1368  WHEN 36,38
 1369    up%=(adjust% EOR (icon%=38))
 1370    PROCchangecolourbox(1,IcEd_Bgcol%,1,up%,0)
 1371  WHEN 47,49
 1372    IF (adjust% AND (icon%=47)) OR (select% AND (icon%=49)) THEN
 1373      IF IcEd_Xsize<998 THEN
 1374        IcEd_Xsize+=2
 1375        PROCseticontext(20,LEFT$(STR$(IcEd_Xsize),4))
 1376        IF FNiconselected(IcEdW%,53) THEN
 1377          IcEd_Ysize=IcEd_Xsize
 1378          PROCseticontext(21,LEFT$(STR$(IcEd_Ysize),4))
 1379        ENDIF
 1380      ENDIF
 1381    ELSE
 1382      IF IcEd_Xsize>2 THEN
 1383        IcEd_Xsize-=2
 1384        PROCseticontext(20,LEFT$(STR$(IcEd_Xsize),4))
 1385        IF FNiconselected(IcEdW%,53) THEN
 1386          IcEd_Ysize=IcEd_Xsize
 1387          PROCseticontext(21,LEFT$(STR$(IcEd_Ysize),4))
 1388        ENDIF
 1389      ENDIF
 1390    ENDIF
 1391  WHEN 50,52
 1392    IF (adjust% AND (icon%=50)) OR (select% AND (icon%=52)) THEN
 1393      IF IcEd_Ysize<998 THEN
 1394        IcEd_Ysize+=2
 1395        PROCseticontext(21,LEFT$(STR$(IcEd_Ysize),4))
 1396      ENDIF
 1397    ELSE
 1398      IF IcEd_Ysize>2 THEN
 1399        IcEd_Ysize-=2
 1400        PROCseticontext(21,LEFT$(STR$(IcEd_Ysize),4))
 1401      ENDIF
 1402    ENDIF
 1403ENDCASE
 1404ENDPROC
 1405
 1406DEF PROCreceive(buf%)
 1407LOCAL sender%,ref%,code%,ackcode%,acktype%,fname$,ftype%,icon%,no%,boot$
 1408sender%=buf%!4
 1409ref%=buf%!8
 1410code%=buf%!16
 1411ackcode%=0 : REM sort of message to acknowledge this message with
 1412acktype%=17 : REM message type of acknowledge
 1413IF sender% <> ThisTask% THEN
 1414  CASE code% OF
 1415    WHEN 0
 1416      REM 'quit' message
 1417      PROCprequit(0)
 1418    WHEN 1
 1419      REM data save
 1420      IF buf%!40=&FEC THEN
 1421        REM other app saves file to TemplEd (via Wimp$Scrap)
 1422        NewLeafName$=FNstr(buf%+44)
 1423        $(buf%+44)="<Wimp$Scrap>"
 1424        buf%!36=-1 : REM saved file is "unsafe"
 1425        ackcode%=2
 1426      ENDIF
 1427    WHEN 2
 1428      REM data save ack
 1429      fname$=FNstr(buf%+44)
 1430      IF SavingSelection% THEN
 1431        SelFName$=fname$
 1432        PROCsavetemplates(SelFName$)
 1433      ELSE
 1434        IF (buf%!36<>-1) AND (fname$<>"<Wimp$Scrap>") THEN
 1435          PROCsetmainfname(fname$)
 1436        ENDIF
 1437        PROCsavetemplates(fname$)
 1438      ENDIF
 1439      SYS "OS_File",17,fname$ TO ftype%,,,,fsize%
 1440      IF ftype%=1 THEN
 1441        ackcode%=3
 1442        buf%!36=fsize%
 1443      ENDIF
 1444    WHEN 3
 1445      REM data load
 1446      NewFName$=FNstr(buf%+44)
 1447      CASE buf%!40 OF
 1448        WHEN &FEC
 1449          CASE buf%!20 OF
 1450            WHEN TemplW%
 1451              PROCsetchanged(NrTemplates%>0)
 1452              PROCtempl_loadfile(NewFName$,0)
 1453              ackcode%=4
 1454            WHEN -2
 1455              IF buf%!24=BarIcon% THEN
 1456                IF ChangesMade% THEN
 1457                  PROCdialogue(2,"","")
 1458                ELSE
 1459                  PROCtempl_deleteall
 1460                  PROCtempl_loadfile(NewFName$,1)
 1461                ENDIF
 1462              ENDIF
 1463              ackcode%=4
 1464          ENDCASE
 1465        WHEN &FF9
 1466          IF (buf%!20=-2) AND (buf%!24=BarIcon%) THEN
 1467            PROCloadusersprites(NewFName$)
 1468            ackcode%=4
 1469          ENDIF
 1470        WHEN &2000
 1471          NewFName$=FNstr(buf%+44)+".Templates"
 1472          IF FNfileexists(NewFName$)AND(buf%!20=-2)AND(buf%!24=BarIcon%) THEN
 1473            IF ChangesMade% THEN
 1474              PROCdialogue(2,"","")
 1475            ELSE
 1476              PROCtempl_deleteall
 1477              PROCtempl_loadfile(NewFName$,1)
 1478            ENDIF
 1479            ackcode%=4
 1480          ENDIF
 1481      ENDCASE
 1482    WHEN 5
 1483      REM double-click on a file
 1484      NewFName$=FNstr(buf%+44)
 1485      CASE buf%!40 OF
 1486        WHEN &FEC
 1487          IF NrTemplates%=0 THEN
 1488            PROCtempl_loadfile(NewFName$,1)
 1489            ackcode%=4
 1490          ENDIF
 1491      ENDCASE
 1492    WHEN 8
 1493      REM desktop exit
 1494      IF ChangesMade% THEN
 1495        ackcode%=8
 1496        acktype%=19
 1497        PreQuitSender%=sender%
 1498        PROCdialogue(8,"","")
 1499      ENDIF
 1500    WHEN 10
 1501      REM desktop save (RiscOS 3)
 1502      boot$="Run "+FNreadvarval("TemplEd$Dir")+CHR$10
 1503      SYS "OS_GBPB",2,buf%!20,boot$,LEN(boot$)
 1504    WHEN &502
 1505      REM request from !Help application
 1506      no%=FNwhichtemplate(buf%!32)
 1507      icon%=buf%!36
 1508      IF (no%>=0) AND (icon%>=-1) THEN
 1509        $(buf%+20)=FNiconhelp(no%,icon%)
 1510        ackcode%=&503
 1511      ENDIF
 1512    WHEN &400C0
 1513      REM about to open submenu
 1514      CASE LastMenu% OF
 1515        WHEN TemplMenu%
 1516          REM set filename in save window
 1517          IF buf%!36=-1 THEN
 1518            $(FileName%)=MainFName$
 1519            SavingSelection%=FALSE
 1520          ELSE
 1521            $(FileName%)=SelFName$
 1522            SavingSelection%=TRUE
 1523          ENDIF
 1524          PROCsel_get(TemplW%)
 1525          IF (buf%!36=-1) OR (NrSelected%=0) THEN
 1526            REM template name to create
 1527            SYS "MenuUtil_Text",item_templname%,""
 1528          ELSE
 1529            REM template name to copy or rename
 1530            SYS "MenuUtil_Text",item_templname%,$(TemplNames%+28*(SelBlk%!0))
 1531          ENDIF
 1532        WHEN UserMenu%
 1533          REM fill icons in workarea window
 1534          WinBlk%!0=LastMenu_Win%
 1535          SYS "Wimp_GetWindowInfo",,WinBlk%
 1536          $(IconText%(12))=STR$(WinBlk%!44)
 1537          $(IconText%(13))=STR$(WinBlk%!56)
 1538          $(IconText%(14))=STR$(WinBlk%!52-WinBlk%!44)
 1539          $(IconText%(15))=STR$(WinBlk%!56-WinBlk%!48)
 1540          $(IconText%(16))=STR$((WinBlk%!72) AND &FFFF)
 1541          $(IconText%(17))=STR$((WinBlk%!72)>>16)
 1542      ENDCASE
 1543      SYS "Wimp_CreateSubMenu",,buf%!20,buf%!24,buf%!28
 1544    WHEN &400C1
 1545      REM mode change
 1546      PROCreadscreenvars
 1547      IF TemplW_MaxCol%<TemplW_Cols% THEN PROCredefinebrowser(TRUE)
 1548    WHEN &400C9
 1549      REM menu removed with no menu item chosen
 1550      IF LastMenu%=TemplMenu% THEN
 1551        IF TemplMenu_Deselect% THEN PROCsel_clear(TemplW%,-1)
 1552      ENDIF
 1553  ENDCASE
 1554  IF ackcode%<>0 THEN
 1555    buf%!0=256
 1556    buf%!12=ref%
 1557    buf%!16=ackcode%
 1558    SYS "Wimp_SendMessage",17,buf%,sender%
 1559  ENDIF
 1560ENDIF
 1561ENDPROC
 1562
 1563DEF PROCredraw(handle%)
 1564LOCAL more%,win0x%,win0y%,dx%
 1565LOCAL xstart%,height%,xcorr%,ycorr%,x%,y%
 1566dx%=48
 1567Blk%!0=handle%
 1568SYS "Wimp_RedrawWindow",,Blk% TO more%
 1569win0x%=Blk%!4-Blk%!20
 1570win0y%=Blk%!16-Blk%!24
 1571WHILE more%
 1572  IF Hatch% THEN
 1573    height%=Blk%!40-Blk%!32
 1574    xstart%=Blk%!28-height%
 1575    xcorr%=(xstart%-win0x%) MOD dx%
 1576    ycorr%=(win0y%-Blk%!32) MOD dx%
 1577    FOR x%=xstart%-(xcorr%+ycorr%) TO Blk%!36 STEP dx%
 1578      MOVE x%,Blk%!32
 1579      PLOT 1,height%,height%
 1580    NEXT x%
 1581    ycorr%=(win0y%-Blk%!40) MOD dx%
 1582    FOR x%=xstart%-(xcorr%-ycorr%) TO Blk%!36 STEP dx%
 1583      MOVE x%,Blk%!40
 1584      PLOT 1,height%,-height%
 1585    NEXT x%
 1586  ENDIF
 1587  IF SupportInterface% THEN
 1588    SYS "Wimp_BorderWindow",,Blk%
 1589  ENDIF
 1590  IF SupportAEH% THEN
 1591    SYS "AEH_RedrawWindow",,Blk%
 1592  ENDIF
 1593  SYS "Wimp_GetRectangle",,Blk% TO more%
 1594ENDWHILE
 1595ENDPROC
 1596
 1597REM *** procs for the window-edit window ***
 1598
 1599DEF PROCwined_fillwin(window%)
 1600LOCAL no%,flags%,i%
 1601WinEd_Win%=window%
 1602WinBlk%!0=WinEd_Win%
 1603no%=FNwhichtemplate(window%)
 1604SYS "Wimp_GetWindowInfo",,WinBlk%
 1605flags%=WinBlk%!32
 1606WinEd_Button%=(WinBlk%!64)>>12
 1607FOR i%=0 TO 6
 1608  WinEd_Col%(i%)=(WinBlk%?(36+i%))
 1609NEXT i%
 1610PROCselecticon(WinEdW%,4,flags% AND (1<<1))
 1611PROCselecticon(WinEdW%,5,flags% AND (1<<4))
 1612PROCselecticon(WinEdW%,6,flags% AND (1<<12))
 1613PROCselecticon(WinEdW%,7,PaneFlag%?no%)
 1614PROCselecticon(WinEdW%,8,flags% AND (1<<6))
 1615PROCselecticon(WinEdW%,9,flags% AND (1<<10))
 1616PROCselecticon(WinEdW%,10,flags% AND (1<<11))
 1617PROCselecticon(WinEdW%,11,flags% AND (1<<8))
 1618PROCselecticon(WinEdW%,12,flags% AND (1<<9))
 1619PROCselecticon(WinEdW%,20,flags% AND (1<<31))
 1620FOR i%=0 TO 6
 1621  PROCselecticon(WinEdW%,13+i%,flags% AND (1<<(24+i%)))
 1622NEXT i%
 1623IF (flags% AND (1<<31))=0 THEN
 1624  PROCselecticon(WinEdW%,14,(flags% AND (1<<7))=0)
 1625  PROCselecticon(WinEdW%,13,(flags% AND (1<<7))=0)
 1626  PROCselecticon(WinEdW%,15,flags% AND (1<<0))
 1627  PROCselecticon(WinEdW%,17,flags% AND (1<<2))
 1628  PROCselecticon(WinEdW%,19,flags% AND (1<<3))
 1629ENDIF
 1630PROCsettitlebar(WinEdW%,WinEdTbar%,FNmsg_lookup1("EDTP",$(TemplNames%+28*no%)))
 1631PROCseticontext(6,$(WinButton%+20*WinEd_Button%))
 1632FOR i%=0 TO 6
 1633  PROCsetcolourbox(2+i%,WinEd_Col%(i%))
 1634NEXT i%
 1635PROCwined_shadeicons(-1)
 1636PROCopenwindow(WinEdW%,0)
 1637PROCsetcaret(WinEdW%,-1)
 1638ENDPROC
 1639
 1640DEF PROCwined_shadeicons(clickedon%)
 1641LOCAL newformat%,titlebar%,scroll%
 1642newformat%=FNiconselected(WinEdW%,20)
 1643titlebar%=FNiconselected(WinEdW%,15)
 1644scroll%=FNiconselected(WinEdW%,17) OR FNiconselected(WinEdW%,19)
 1645IF (clickedon%=-1) OR (clickedon%=20) THEN
 1646  PROCshadeicon(WinEdW%,16,NOT newformat%)
 1647ENDIF
 1648IF (clickedon%=-1) OR (clickedon%=15) THEN
 1649  PROCshadeicon(WinEdW%,13,NOT titlebar%)
 1650  PROCshadeicon(WinEdW%,14,NOT titlebar%)
 1651  PROCshadeicon(WinEdW%,16,NOT titlebar%)
 1652ENDIF
 1653IF (clickedon%<>15) THEN
 1654  PROCshadeicon(WinEdW%,18,newformat% AND (NOT scroll%))
 1655ENDIF
 1656ENDPROC
 1657
 1658DEF PROCwined_readwin
 1659LOCAL flags%,no%,i%
 1660WinBlk%!0=WinEd_Win%
 1661SYS "Wimp_GetWindowInfo",,WinBlk%
 1662flags%=(WinBlk%!32)AND(&1F<<16)
 1663IF FNiconselected(WinEdW%,15) THEN flags%+=(1<<0)
 1664IF FNiconselected(WinEdW%,4) THEN flags%+=(1<<1)
 1665IF FNiconselected(WinEdW%,17) THEN flags%+=(1<<2)
 1666IF FNiconselected(WinEdW%,19) THEN flags%+=(1<<3)
 1667IF FNiconselected(WinEdW%,5) THEN flags%+=(1<<4)
 1668no%=FNwhichtemplate(WinEd_Win%)
 1669IF FNiconselected(WinEdW%,7) THEN
 1670  PaneFlag%?no%=1<<5
 1671ELSE
 1672  PaneFlag%?no%=0
 1673ENDIF
 1674IF FNiconselected(WinEdW%,8) THEN flags%+=(1<<6)
 1675IF NOT FNiconselected(WinEdW%,14) THEN flags%+=(1<<7)
 1676IF FNiconselected(WinEdW%,11) THEN flags%+=(1<<8)
 1677IF FNiconselected(WinEdW%,12) THEN flags%+=(1<<9)
 1678IF FNiconselected(WinEdW%,9) THEN flags%+=(1<<10)
 1679IF FNiconselected(WinEdW%,10) THEN flags%+=(1<<11)
 1680IF FNiconselected(WinEdW%,6) THEN flags%+=(1<<12)
 1681FOR i%=0 TO 7
 1682  IF FNiconselected(WinEdW%,13+i%) THEN flags%+=(1<<(24+i%))
 1683NEXT i%
 1684WinBlk%!32=flags%
 1685WinBlk%!64=WinEd_Button%<<12
 1686FOR i%=0 TO 6
 1687  WinBlk%?(36+i%)=WinEd_Col%(i%)
 1688NEXT i%
 1689WinEd_Win%=FNredefinewindow(WinBlk%,1)
 1690ENDPROC
 1691
 1692REM *** procs for the icon-edit window ***
 1693
 1694DEF PROCiced_start(window%,icon%)
 1695IF icon%=-4 THEN
 1696  PROCiced_fillwin(window%,-4)
 1697ELSE
 1698  PROCsel_get(window%)
 1699  IF NrSelected%>0 THEN
 1700     IF NrSelected%=1 THEN
 1701      PROCiced_fillwin(window%,SelBlk%!0)
 1702     ELSE
 1703       PROCiced_fillwin(window%,-1)
 1704     ENDIF
 1705  ELSE
 1706    IF (icon%>=0) THEN
 1707      PROCiced_fillwin(window%,icon%)
 1708    ENDIF
 1709  ENDIF
 1710ENDIF
 1711ENDPROC
 1712
 1713DEF PROCiced_fillwin(window%,icon%)
 1714LOCAL no%,flags%,data%,arg$,title$,text%,sprite%,indir%,caretto%
 1715LOCAL t$,v$,m$,s$
 1716IcEd_Win%=window%
 1717IcEd_Icon%=icon%
 1718no%=FNwhichtemplate(window%)
 1719WinBlk%!0=IcEd_Win%
 1720SYS "Wimp_GetWindowInfo",,WinBlk%
 1721CASE icon% OF
 1722  WHEN -4  : REM editing title bar icon
 1723    flags%=(WinBlk%!60) AND &FFF : REM mask out irrelevant bits
 1724    flags%=flags% OR &14
 1725    IF (flags% AND (1<<6))=0 THEN
 1726      REM copy fg and bg colour flags from window colours
 1727      flags%=(flags% AND &FFF) OR ((WinBlk%?36)<<24) OR ((WinBlk%?37)<<28)
 1728    ENDIF
 1729    data%=WinBlk%+76
 1730    arg$+=FNmsg_lookup0("TBAR")
 1731  WHEN -1  : REM editing selection (read flags from first icon)
 1732    PROCsel_get(IcEd_Win%)
 1733    flags%=WinBlk%!(92+32*(SelBlk%!0)+16)
 1734    data%=WinBlk%+92+32*(SelBlk%!0)+20
 1735    arg$+=FNmsg_lookup0("SEL")
 1736  OTHERWISE : REM editing single icon
 1737    flags%=WinBlk%!(92+32*IcEd_Icon%+16)
 1738    data%=WinBlk%+92+32*IcEd_Icon%+20
 1739    arg$+=FNmsg_lookup1("ICNR",STR$(icon%))
 1740ENDCASE
 1741title$=FNmsg_lookup2("EDIC",$(TemplNames%+28*no%),arg$)
 1742text%=(flags% AND 1)>0
 1743sprite%=(flags% AND 2)>0
 1744indir%=(flags% AND &100)>0
 1745IF text% THEN
 1746  IF indir% THEN
 1747    t$=$(data%!0)
 1748    m$=STR$(data%!8)
 1749    IF data%!4<>-1 THEN v$=$(data%!4)
 1750  ELSE
 1751    t$=$(data%)
 1752  ENDIF
 1753ENDIF
 1754IF sprite% AND (NOT text%) THEN
 1755  IF indir% THEN
 1756    s$=$(data%!0)
 1757    m$=STR$(data%!8)
 1758  ELSE
 1759    s$=$(data%)
 1760  ENDIF
 1761ENDIF
 1762IcEd_Button%=(flags%>>12) AND 15
 1763IcEd_Esg%=(flags%>>16) AND 31
 1764IF (flags% AND (1<<6)) THEN
 1765  IcEd_Fgcol%=7
 1766  IcEd_Bgcol%=0
 1767  PROCfont_getinfo((flags%>>24) AND 255,IcEd_Font$,IcEd_Xsize,IcEd_Ysize)
 1768ELSE
 1769  IcEd_Fgcol%=(flags%>>24) AND 15
 1770  IcEd_Bgcol%=(flags%>>28) AND 15
 1771  IcEd_Font$="Homerton.Medium"
 1772  IcEd_Xsize=12
 1773  IcEd_Ysize=12
 1774ENDIF
 1775PROCsettitlebar(IcEdW%,IcEdTbar%,title$)
 1776PROCselecticon(IcEdW%,12,text%)
 1777PROCselecticon(IcEdW%,13,sprite%)
 1778PROCselecticon(IcEdW%,14,indir%)
 1779PROCseticontext(0,t$)
 1780PROCseticontext(1,s$)
 1781PROCseticontext(2,v$)
 1782PROCseticontext(3,m$)
 1783PROCselecticon(IcEdW%,15,flags% AND (1<<2))
 1784PROCselecticon(IcEdW%,17,flags% AND (1<<3))
 1785PROCselecticon(IcEdW%,18,flags% AND (1<<4))
 1786PROCselecticon(IcEdW%,16,flags% AND (1<<5))
 1787PROCselecticon(IcEdW%,41,flags% AND (1<<6))
 1788PROCselecticon(IcEdW%,20,flags% AND (1<<7))
 1789PROCselecticon(IcEdW%,19,flags% AND (1<<9))
 1790PROCselecticon(IcEdW%,21,flags% AND (1<<10))
 1791PROCselecticon(IcEdW%,22,flags% AND (1<<11))
 1792PROCselecticon(IcEdW%,39,flags% AND (1<<22))
 1793PROCseticontext(4,$(IcButton%+20*IcEd_Button%))
 1794PROCseticontext(5,STR$(IcEd_Esg%))
 1795PROCsetcolourbox(0,IcEd_Fgcol%)
 1796PROCsetcolourbox(1,IcEd_Bgcol%)
 1797PROCseticontext(19,IcEd_Font$)
 1798PROCseticontext(20,LEFT$(STR$(IcEd_Xsize),4))
 1799PROCseticontext(21,LEFT$(STR$(IcEd_Ysize),4))
 1800PROCselecticon(IcEdW%,53,IcEd_Xsize=IcEd_Ysize)
 1801FOR i%=12 TO 14
 1802  PROCshadeicon(IcEdW%,i%,IcEd_Icon%=-1)
 1803NEXT i%
 1804IF IcEd_Icon%=-1 THEN
 1805  FOR i%=23 TO 26
 1806    PROCshadeicon(IcEdW%,i%,1)
 1807  NEXT i%
 1808ENDIF
 1809PROCshadeicon(IcEdW%,15,IcEd_Icon%=-4)
 1810PROCshadeicon(IcEdW%,16,IcEd_Icon%=-4)
 1811PROCshadeicon(IcEdW%,20,IcEd_Icon%=-4)
 1812PROCshadeicon(IcEdW%,21,IcEd_Icon%=-4)
 1813FOR i%=27 TO 32
 1814  PROCshadeicon(IcEdW%,i%,IcEd_Icon%=-4)
 1815NEXT i%
 1816PROCshadeicon(IcEdW%,39,IcEd_Icon%=-4)
 1817PROCiced_shadeicons(-1)
 1818PROCopenwindow(IcEdW%,0)
 1819caretto%=-1
 1820IF IcEd_Icon%<>-1 THEN
 1821  IF indir% THEN caretto%=25
 1822  IF sprite% THEN caretto%=24
 1823  IF text% THEN caretto%=23
 1824ENDIF
 1825PROCsetcaret(IcEdW%,caretto%)
 1826ENDPROC
 1827
 1828DEF PROCiced_shadeicons(clickedon%)
 1829LOCAL t%,s%,i%,f%,lockaspect%
 1830IF IcEd_Icon%<>-1 THEN
 1831  IF (clickedon%=-1) OR (clickedon%<=14) THEN
 1832    t%=FNiconselected(IcEdW%,12)
 1833    s%=FNiconselected(IcEdW%,13)
 1834    i%=FNiconselected(IcEdW%,14)
 1835    PROCshadeicon(IcEdW%,23,NOT t%)
 1836    PROCshadeicon(IcEdW%,24,(NOT s%) OR (t% AND i%))
 1837    PROCshadeicon(IcEdW%,25,NOT(t% AND i%))
 1838    PROCshadeicon(IcEdW%,26,NOT i%)
 1839  ENDIF
 1840ENDIF
 1841f%=FNiconselected(IcEdW%,41)
 1842lockaspect%=FNiconselected(IcEdW%,53)
 1843IF (clickedon%=-1) OR (clickedon%=41) THEN
 1844  FOR i%=33 TO 38
 1845    PROCshadeicon(IcEdW%,i%,f%)
 1846  NEXT i%
 1847  FOR i%=45 TO 49
 1848    PROCshadeicon(IcEdW%,i%,NOT f%)
 1849  NEXT i%
 1850  PROCshadeicon(IcEdW%,53,NOT f%)
 1851ENDIF
 1852IF (clickedon%=-1) OR (clickedon%=41) OR (clickedon%=53) THEN
 1853  FOR i%=50 TO 52
 1854    PROCshadeicon(IcEdW%,i%,(NOT f%) OR lockaspect%)
 1855  NEXT i%
 1856ENDIF
 1857SYS "Wimp_GetCaretPosition",,ScrapBlk%
 1858IF FNiconshaded(ScrapBlk%!0,ScrapBlk%!4) THEN
 1859  PROCsetcaret(IcEdW%,-1) : REM move caret from shaded icon
 1860ENDIF
 1861ENDPROC
 1862
 1863DEF PROCiced_readwin(mask%)
 1864LOCAL flags%,flagptr%,data%,ib%,cbp%,xsize,ysize
 1865LOCAL xsize16%,ysize16%,fhandle%
 1866LOCAL i%,t%,s%,deflen%,maxlen%,p%
 1867WinBlk%!0=IcEd_Win%
 1868SYS "Wimp_GetWindowInfo",,WinBlk%
 1869CASE IcEd_Icon% OF
 1870  WHEN -4  : REM editing title bar icon
 1871    flagptr%=WinBlk%+60
 1872    data%=WinBlk%+76
 1873  WHEN -1  : REM editing selection (read flags from first icon)
 1874    PROCsel_get(IcEd_Win%)
 1875    flagptr%=WinBlk%+92+32*(SelBlk%!0)+16
 1876    data%=WinBlk%+92+32*(SelBlk%!0)+20
 1877  OTHERWISE : REM editing single icon
 1878    IF IcEd_Icon%>=0 THEN
 1879      flagptr%=WinBlk%+92+32*IcEd_Icon%+16
 1880      data%=WinBlk%+92+32*IcEd_Icon%+20
 1881      ib%=WinBlk%+92+32*IcEd_Icon%
 1882    ENDIF
 1883ENDCASE
 1884cbp%=WinBlk%!68
 1885REM construct new flags, but do not change "selected" state
 1886flags%=(flagptr%!0) AND (1<<21)
 1887IF FNiconselected(IcEdW%,15) THEN flags%+=(1<<2)
 1888IF FNiconselected(IcEdW%,16) THEN flags%+=(1<<5)
 1889IF FNiconselected(IcEdW%,17) THEN flags%+=(1<<3)
 1890IF FNiconselected(IcEdW%,18) THEN flags%+=(1<<4)
 1891IF FNiconselected(IcEdW%,19) THEN flags%+=(1<<9)
 1892IF FNiconselected(IcEdW%,20) THEN flags%+=(1<<7)
 1893IF FNiconselected(IcEdW%,21) THEN flags%+=(1<<10)
 1894IF FNiconselected(IcEdW%,22) THEN flags%+=(1<<11)
 1895IF FNiconselected(IcEdW%,39) THEN flags%+=(1<<22)
 1896flags%+=(IcEd_Button%<<12)
 1897flags%+=(IcEd_Esg%<<16)
 1898IF FNiconselected(IcEdW%,41) THEN
 1899  flags%+=(1<<6)
 1900  xsize16%=INT(IcEd_Xsize*16)
 1901  ysize16%=INT(IcEd_Ysize*16)
 1902  IF xsize16%<=0 THEN xsize16%=12*16
 1903  IF ysize16%<=0 THEN ysize16%=12*16
 1904  SYS "Font_FindFont",,IconText%(19),xsize16%,ysize16%,0,0 TO fhandle%
 1905  IF FontUsage%(fhandle%)>0 THEN
 1906    SYS "Font_LoseFont",fhandle% : REM font was already in use
 1907  ENDIF
 1908  FontUsage%(fhandle%)+=1
 1909  flags%+=(fhandle%<<24)
 1910ELSE
 1911  flags%+=(IcEd_Fgcol%<<24)
 1912  flags%+=(IcEd_Bgcol%<<28)
 1913ENDIF
 1914IF (IcEd_Icon%>=0)OR(IcEd_Icon%=-4) THEN
 1915  PROCiconrelease(flagptr%!0,data%)
 1916  t%=FNiconselected(IcEdW%,12)
 1917  s%=FNiconselected(IcEdW%,13)
 1918  i%=FNiconselected(IcEdW%,14)
 1919  IF s% AND (NOT t%) THEN
 1920    deflen%=LEN($(IconText%(1)))+1 : REM default maximum size
 1921  ELSE
 1922    deflen%=LEN($(IconText%(0)))+1
 1923  ENDIF
 1924  IF i% THEN
 1925    maxlen%=VAL($(IconText%(3)))
 1926  ELSE
 1927    maxlen%=12
 1928  ENDIF
 1929  IF maxlen%<deflen% THEN
 1930    maxlen%=deflen%                : REM increase max size if text is longer
 1931    PROCseticontext(3,STR$(maxlen%))
 1932  ENDIF
 1933  IF (NOT i%) AND (deflen%>12) THEN
 1934    PROCselecticon(IcEdW%,14,1)    : REM make indirected if > 12 chars
 1935    PROCseticontext(2,"")          : REM default validation string
 1936    PROCiced_shadeicons(14)
 1937    i%=TRUE
 1938  ENDIF
 1939  IF t% THEN flags%+=(1<<0)
 1940  IF s% THEN flags%+=(1<<1)
 1941  IF i% THEN flags%+=(1<<8)
 1942  IF i% THEN
 1943    IF s% AND (NOT t%) THEN
 1944      data%!0=IconText%(1)
 1945      data%!4=cbp% : REM window CBP as default sprite area pointer
 1946    ENDIF
 1947    IF t% THEN
 1948      data%!0=IconText%(0)
 1949      IF LEN($(IconText%(2)))>0 THEN
 1950        data%!4=IconText%(2)
 1951      ELSE
 1952        data%!4=-1 : REM empty validation string
 1953      ENDIF
 1954    ENDIF
 1955    data%!8=maxlen%
 1956  ELSE
 1957    IF t% THEN
 1958      $(data%)=$(IconText%(0))
 1959    ELSE
 1960      IF s% THEN
 1961        $(data%)=$(IconText%(1))
 1962      ENDIF
 1963    ENDIF
 1964  ENDIF
 1965  flagptr%!0=flags%
 1966  PROCiconrealloc(flagptr%,data%)
 1967ENDIF
 1968CASE IcEd_Icon% OF
 1969  WHEN -4
 1970    WinBlk%?36=IcEd_Fgcol%
 1971    WinBlk%?37=IcEd_Bgcol%
 1972    IcEd_Win%=FNredefinewindow(WinBlk%,1)
 1973  WHEN -1
 1974    REM do not change text, sprite and indir flags of selection
 1975    mask%=mask% AND (NOT &103)
 1976    IF NrSelected%>0 THEN
 1977      FOR i%=0 TO NrSelected%-1
 1978        PROCseticonstate(IcEd_Win%,SelBlk%!(4*i%),flags% AND mask%,mask%)
 1979      NEXT i%
 1980    ELSE
 1981      PROCdialogue(9,"","")
 1982    ENDIF
 1983  OTHERWISE
 1984    IF IcEd_Icon%>=0 THEN
 1985      IcEd_Icon%=FNredefineicon(IcEd_Win%,IcEd_Icon%,ib%-8)
 1986    ELSE
 1987      PROCdialogue(4,"","")
 1988    ENDIF
 1989ENDCASE
 1990IF FNiconselected(IcEdW%,41) THEN
 1991  REM font count was increased earlier when finding font handle
 1992  PROCfont_lose(fhandle%)
 1993ENDIF
 1994PROCsetchanged(TRUE)
 1995ENDPROC
 1996
 1997REM *** menu procs ***
 1998
 1999DEF FNmenu_add(text$,submenu%,genmsg%)
 2000LOCAL handle%
 2001SYS "MenuUtil_Add",,text$ TO handle%
 2002IF submenu%<>-1 THEN SYS "MenuUtil_SubMenu",handle%,submenu%
 2003IF genmsg% THEN SYS "MenuUtil_Warning",handle%,1
 2004=handle%
 2005
 2006DEF FNmenu_addwritable(maxlen%,validstr%)
 2007LOCAL handle%
 2008SYS "MenuUtil_Add",,"" TO handle%
 2009SYS "MenuUtil_Writable",,1,maxlen%,validstr%
 2010=handle%
 2011
 2012DEF PROCpreparemenus
 2013LOCAL i%
 2014SYS "MenuUtil_Initialise",010,0
 2015SYS "MenuUtil_New",,"Sprites" TO SpritesMenu%
 2016item_sprview%=FNmenu_add("View/Edit",-1,0)
 2017item_sprreload%=FNmenu_add("Re-load",-1,0)
 2018item_sprreset%=FNmenu_add("Reset",-1,0)
 2019REM --- iconbar menu
 2020SYS "MenuUtil_New",,Appl$ TO MainMenu%
 2021item_info%=FNmenu_add("Info",InfoW%,0)
 2022item_options%=FNmenu_add("Options...",-1,0)
 2023item_stats%=FNmenu_add("Statistics...",-1,0)
 2024item_customsprites%=FNmenu_add("Custom sprites",SpritesMenu%,0)
 2025item_quit%=FNmenu_add("Quit",-1,0)
 2026REM --- template-name menu
 2027SYS "MenuUtil_New",,"   Name:   " TO TemplNamemenu%
 2028item_templname%=FNmenu_addwritable(12,0)
 2029REM --- template submenu
 2030SYS "MenuUtil_New",,"" TO TemplSubmenu%
 2031item_copytempl%=FNmenu_add("Copy",TemplNamemenu%,1)
 2032item_renametempl%=FNmenu_add("Rename",TemplNamemenu%,1)
 2033item_deletetempl%=FNmenu_add("Delete",-1,0)
 2034item_savetempl%=FNmenu_add("Save",SaveW%,1)
 2035item_opentempl%=FNmenu_add("Open",-1,0)
 2036item_closetempl%=FNmenu_add("Close",-1,0)
 2037REM --- template menu
 2038SYS "MenuUtil_New",,Appl$ TO TemplMenu%
 2039item_createtempl%=FNmenu_add("Create",TemplNamemenu%,1)
 2040item_template%=FNmenu_add("",TemplSubmenu%,0)
 2041item_selalltempl%=FNmenu_add("Select all",-1,0)
 2042item_clearseltempl%=FNmenu_add("Clear selection",-1,0)
 2043item_deleteall%=FNmenu_add("Delete all",-1,0)
 2044item_sorttempl%=FNmenu_add("Sort templates",-1,0)
 2045item_save%=FNmenu_add("Save",SaveW%,1)
 2046REM --- direction menu for icon copying
 2047SYS "MenuUtil_New",,"Copy" TO DirMenu%
 2048item_up%=FNmenu_add("Up    ^U",-1,0)
 2049item_down%=FNmenu_add("Down  ^D",-1,0)
 2050item_left%=FNmenu_add("Left  ^L",-1,0)
 2051item_right%=FNmenu_add("Right ^R",-1,0)
 2052REM --- menu for icon renumbering
 2053SYS "MenuUtil_New",,"No.:" TO IconNrmenu%
 2054item_iconnr%=FNmenu_addwritable(4,NumValidStr%)
 2055REM --- "dimension" menu
 2056SYS "MenuUtil_New",,"Dim." TO DimensionMenu%
 2057item_both%=FNmenu_add("Both",-1,0)
 2058item_xdim%=FNmenu_add("X",-1,0)
 2059item_ydim%=FNmenu_add("Y",-1,0)
 2060REM --- user-template submenu
 2061SYS "MenuUtil_New",,"" TO UserSubmenu%
 2062item_copyicon%=FNmenu_add("Copy      ^C",DirMenu%,0)
 2063item_renumbericon%=FNmenu_add("Renumber",IconNrmenu%,0)
 2064item_deleteicon%=FNmenu_add("Delete    ^X",-1,0)
 2065item_editicon%=FNmenu_add("Edit...   ^E",-1,0)
 2066SYS "MenuUtil_Dots",,1
 2067item_align%=FNmenu_add("Align     ^J",AlignW%,0)
 2068item_spaceout%=FNmenu_add("Space out ^K",SpaceW%,0)
 2069item_minsize%=FNmenu_add("Min. size",DimensionMenu%,0)
 2070item_centericon%=FNmenu_add("Center",DimensionMenu%,0)
 2071item_samesize%=FNmenu_add("Same size",DimensionMenu%,0)
 2072REM --- sprite area menu
 2073SYS "MenuUtil_New",,"Sprites from" TO SpriteAreaMenu% 
 2074item_wimparea%=FNmenu_add("Wimp area",-1,0)
 2075item_customarea%=FNmenu_add("Custom area",-1,0)
 2076REM --- "Misc" submenu
 2077SYS "MenuUtil_New",,"Misc" TO MiscMenu%
 2078item_centerwin%=FNmenu_add("Center to screen",-1,0)
 2079item_spritearea%=FNmenu_add("Sprite area",SpriteAreaMenu%,0)
 2080item_tidyicons%=FNmenu_add("Tidy icons",-1,0)
 2081REM --- user-template menu
 2082PROCstandardiconmenu
 2083SYS "MenuUtil_New",,"Window" TO UserMenu%
 2084IF NrStdIcons%=0 THEN
 2085  item_createicon%=FNmenu_add("Create icon",-1,0)
 2086ELSE
 2087  item_createicon%=FNmenu_add("Create icon",StdIconMenu%,0)
 2088ENDIF
 2089item_icon%=FNmenu_add("",UserSubmenu%,0)
 2090item_selallicons%=FNmenu_add("Select all       ^A",-1,0)
 2091item_clearselicons%=FNmenu_add("Clear selection  ^Z",-1,0)
 2092SYS "MenuUtil_Dots",item_clearselicons%,1
 2093item_workarea%=FNmenu_add("Work area",WorkW%,1)
 2094item_editwindow%=FNmenu_add("Edit window...   ^W",-1,0)
 2095item_edittitle%=FNmenu_add("Edit title...    ^T",-1,0)
 2096item_misc%=FNmenu_add("Misc",MiscMenu%,0)
 2097item_closewin%=FNmenu_add("Close window     ^Q",-1,0)
 2098REM --- menu with icon button-types
 2099SYS "MenuUtil_New",,"Button type" TO IcButtonMenu%
 2100FOR i%=0 TO 15
 2101  dummy%=FNmenu_add($(IcButton%+20*i%),-1,0)
 2102NEXT i%
 2103REM --- menu with window button-types
 2104SYS "MenuUtil_New",,"Button type" TO WinButtonMenu%
 2105FOR i%=0 TO 15
 2106  dummy%=FNmenu_add($(WinButton%+20*i%),-1,0)
 2107NEXT i%
 2108REM --- actual ESG menu is built when Menu is clicked
 2109EsgMenu%=0
 2110REM --- actual colour menu is built when Menu is clicked
 2111ColourMenu%=0
 2112REM --- font menu
 2113PROCfontmenu
 2114REM --- font size menu
 2115SYS "MenuUtil_New",,"Size" TO FontSizemenu%
 2116SYS "MenuUtil_Add",,"10pt"
 2117SYS "MenuUtil_Add",,"12pt"
 2118SYS "MenuUtil_Add",,"16pt"
 2119SYS "MenuUtil_Add",,"20pt"
 2120SYS "MenuUtil_Add",,"24pt"
 2121SYS "MenuUtil_Add",,"36pt"
 2122item_fontsize%=FNmenu_addwritable(5,FpNumValidStr%)
 2123REM --- "partial update" submenu
 2124SYS "MenuUtil_New",,"Other" TO UpdateSubmenu%
 2125item_updbo%=FNmenu_add("Border",-1,0)
 2126item_updfi%=FNmenu_add("Filled",-1,0)
 2127item_updhc%=FNmenu_add("H centre",-1,0)
 2128item_updvc%=FNmenu_add("V centre",-1,0)
 2129item_updrj%=FNmenu_add("R justified",-1,0)
 2130item_updnh%=FNmenu_add("Needs help",-1,0)
 2131item_updaa%=FNmenu_add("Allow adjust",-1,0)
 2132item_updhs%=FNmenu_add("Half size",-1,0)
 2133item_updsh%=FNmenu_add("Shaded",-1,0)
 2134REM --- "partial update" menu
 2135SYS "MenuUtil_New",,"Update" TO Updatemenu%
 2136item_updbt%=FNmenu_add("Button type",-1,0)
 2137item_updesg%=FNmenu_add("ESG",-1,0)
 2138item_updfg%=FNmenu_add("Fg col",-1,0)
 2139item_updbg%=FNmenu_add("Bg col",-1,0)
 2140item_updfont%=FNmenu_add("Font",-1,0)
 2141item_updrest%=FNmenu_add("Other flags",UpdateSubmenu%,0)
 2142ENDPROC
 2143
 2144DEF PROCmainmenu
 2145SYS "MenuUtil_Fade",item_stats%,NrTemplates%=0
 2146SYS "MenuUtil_Fade",item_customsprites%,UserSprites%=1
 2147ENDPROC
 2148
 2149DEF PROCtemplatemenu(RETURN xpos%,RETURN ypos%,icon%)
 2150LOCAL t$
 2151PROCsel_get(TemplW%)
 2152IF (NrSelected%=0) AND (icon%>=0) THEN
 2153  PROCselecticon(TemplW%,icon%,1)
 2154  SelBlk%!0=icon%
 2155  NrSelected%=1
 2156  TemplMenu_Deselect%=TRUE  : REM deselect icon when menu is removed?
 2157ELSE
 2158  TemplMenu_Deselect%=FALSE
 2159ENDIF
 2160t$=""
 2161IF NrSelected%>1 THEN
 2162  t$="Selection"
 2163ELSE
 2164  IF NrSelected%=1 THEN
 2165    t$=$(TemplNames%+28*(SelBlk%!0))
 2166  ENDIF
 2167ENDIF
 2168SYS "MenuUtil_Text",TemplSubmenu%,t$
 2169SYS "MenuUtil_Fade",item_copytempl%,NrSelected%<>1
 2170SYS "MenuUtil_Fade",item_renametempl%,NrSelected%<>1
 2171SelFName$=t$
 2172IF NrSelected%>1 THEN
 2173  SYS "MenuUtil_Text",item_template%,"Selection"
 2174ELSE
 2175  SYS "MenuUtil_Text",item_template%,"Template '"+t$+"'"
 2176ENDIF
 2177SYS "MenuUtil_Fade",item_template%,LEN(t$)=0
 2178SYS "MenuUtil_Fade",item_selalltempl%,NrTemplates%=0
 2179SYS "MenuUtil_Fade",item_clearseltempl%,NrSelected%=0
 2180SYS "MenuUtil_Fade",item_deleteall%,NrTemplates%=0
 2181SYS "MenuUtil_Fade",item_sorttempl%,NrTemplates%=0
 2182SYS "MenuUtil_Fade",item_save%,NrTemplates%=0
 2183QuitAfterSave%=FALSE
 2184xpos%-=64
 2185IF NrSelected%=0 THEN
 2186  ypos%+=22
 2187ELSE
 2188  ypos%+=66
 2189ENDIF
 2190ENDPROC
 2191
 2192DEF PROCusermenu(RETURN xpos%,RETURN ypos%,window%,icon%)
 2193LOCAL t$,st$
 2194PROCsel_get(window%)
 2195IF (NrSelected%=0) AND (icon%>=0) THEN
 2196  SelBlk%!0=icon%
 2197  NrSelected%=1
 2198ENDIF
 2199CASE NrSelected% OF
 2200  WHEN 0
 2201    t$="No icon"
 2202    st$=t$
 2203  WHEN 1
 2204    t$="Icon #"+STR$(SelBlk%!0)
 2205    st$=t$
 2206  OTHERWISE
 2207    t$="Selection"
 2208    st$=STR$(NrSelected%)+" icons"
 2209ENDCASE
 2210SYS "MenuUtil_Text",UserSubmenu%,st$
 2211SYS "MenuUtil_Fade",item_renumbericon%,NrSelected%=0
 2212SYS "MenuUtil_Fade",item_align%,NrSelected%<2
 2213SYS "MenuUtil_Fade",item_spaceout%,NrSelected%<2
 2214SYS "MenuUtil_Text",item_iconnr%,STR$(NextIconNr%)
 2215SYS "MenuUtil_Fade",item_samesize%,NrSelected%<2
 2216WinBlk%!0=window%
 2217SYS "Wimp_GetWindowInfo",,WinBlk%
 2218IF WinBlk%!68=1 THEN
 2219  SYS "MenuUtil_TickOnly",SpriteAreaMenu%,0
 2220ELSE
 2221  SYS "MenuUtil_TickOnly",SpriteAreaMenu%,1
 2222ENDIF
 2223SYS "MenuUtil_Text",item_icon%,t$
 2224SYS "MenuUtil_Fade",item_icon%,NrSelected%=0
 2225SYS "MenuUtil_Fade",item_selallicons%,WinBlk%!88=0
 2226SYS "MenuUtil_Fade",item_clearselicons%,NrSelected%=0
 2227SYS "MenuUtil_Fade",item_tidyicons%,WinBlk%!88=0
 2228SYS "MenuUtil_Fade",item_spritearea%,UserSprites%=1
 2229xpos%-=64
 2230IF NrSelected%=0 THEN
 2231  ypos%+=22
 2232ELSE
 2233  ypos%+=66
 2234ENDIF
 2235ENDPROC
 2236
 2237DEF PROCicbuttonmenu(RETURN xpos%,RETURN ypos%)
 2238SYS "MenuUtil_TickOnly",IcButtonMenu%,IcEd_Button%
 2239xpos%+=16
 2240ypos%+=22+IcEd_Button%*44
 2241ENDPROC
 2242
 2243DEF PROCwinbuttonmenu(RETURN xpos%,RETURN ypos%)
 2244SYS "MenuUtil_TickOnly",WinButtonMenu%,WinEd_Button%
 2245xpos%+=16
 2246ypos%+=22+WinEd_Button%*44
 2247ENDPROC
 2248
 2249DEF PROCesgmenu(RETURN xpos%,RETURN ypos%)
 2250IF EsgMenu%<>0 THEN SYS "MenuUtil_Delete",EsgMenu%,FALSE
 2251IF SupportAEH% THEN
 2252  SYS "MenuUtil_New",,"ESG" TO EsgMenu%
 2253  dummy%=FNmenu_addwritable(3,NumValidStr%)
 2254  SYS "MenuUtil_Text",,STR$(IcEd_Esg%)
 2255  dummy%=FNmenu_add("16 (Action)",-1,0)
 2256  dummy%=FNmenu_add("18 (Default action)",-1,0)
 2257  dummy%=FNmenu_add("19 (Writable)",-1,0)
 2258  dummy%=FNmenu_add("20 (Display)",-1,0)
 2259  dummy%=FNmenu_add("21 (Group box)",-1,0)
 2260  dummy%=FNmenu_add("24 (24bit colour)",-1,0)
 2261  dummy%=FNmenu_add("25 (Slider)",-1,0)
 2262  ypos%+=22
 2263ELSE
 2264  SYS "MenuUtil_New",,"ESG" TO EsgMenu%
 2265  FOR i%=0 TO 15
 2266    dummy%=FNmenu_add(STR$(i%),-1,0)
 2267  NEXT i%
 2268  ypos%+=22
 2269  IF IcEd_Esg%<=15 THEN
 2270    SYS "MenuUtil_TickOnly",EsgMenu%,IcEd_Esg%
 2271    ypos%+=IcEd_Esg%*44
 2272  ENDIF
 2273ENDIF
 2274xpos%+=16
 2275ENDPROC
 2276
 2277DEF PROCcolourmenu(RETURN xpos%,RETURN ypos%,window%,icon%)
 2278LOCAL i%,flags%,current%,bigrange%,transp%
 2279IF ColourMenu%<>0 THEN SYS "MenuUtil_Delete",ColourMenu%,FALSE
 2280CASE window% OF
 2281  WHEN IcEdW%
 2282    CASE icon% OF
 2283      WHEN 34 : current%=IcEd_Fgcol%
 2284      WHEN 37 : current%=IcEd_Bgcol%
 2285    ENDCASE
 2286    bigrange%=FALSE
 2287    transp%=FALSE
 2288  WHEN WinEdW%
 2289    bigrange%=FNiconselected(WinEdW%,9)
 2290    transp%=(icon%=27)OR(icon%=39)
 2291    current%=WinEd_Col%((icon%-27)DIV4)
 2292ENDCASE
 2293IF bigrange% THEN
 2294  REM colour menu for colour numbers 0-255 (GCOL colours)
 2295  SYS "MenuUtil_New",,"Col" TO ColourMenu%
 2296  dummy%=FNmenu_addwritable(4,NumValidStr%)
 2297  SYS "MenuUtil_Text",,STR$(current%)
 2298  IF transp% THEN
 2299    SYS "MenuUtil_Add",,"None"
 2300    SYS "MenuUtil_Tick",,current%=255
 2301  ENDIF
 2302ELSE
 2303  REM colour menu for colour numbers 0-15
 2304  SYS "MenuUtil_New",,"Col" TO ColourMenu%
 2305  FOR i%=0 TO 15
 2306    SYS "MenuUtil_Add",,STR$(i%)
 2307    SYS "MenuUtil_Colours",,InverseColour%(i%),i%
 2308  NEXT i%
 2309  IF transp% THEN
 2310    SYS "MenuUtil_Dots",,1
 2311    SYS "MenuUtil_Add",,"None"
 2312  ENDIF
 2313  IF current%=255 THEN
 2314    SYS "MenuUtil_TickOnly",ColourMenu%,16
 2315  ELSE
 2316    SYS "MenuUtil_TickOnly",ColourMenu%,current%
 2317  ENDIF
 2318ENDIF
 2319xpos%+=16
 2320ypos%+=22
 2321IF (NOT bigrange%) THEN
 2322  IF current%=255 THEN
 2323    ypos%+=16*44+22
 2324  ELSE
 2325    ypos%+=current%*44
 2326  ENDIF
 2327ENDIF
 2328ENDPROC
 2329
 2330DEF PROCfontmenu
 2331LOCAL next%,font$,fam$,style$,p%,submenu%,item%
 2332SYS "MenuUtil_New",,"Font" TO FontMenu%
 2333fam$=""
 2334next%=0
 2335REPEAT
 2336  f$=STRING$(40," ")
 2337  SYS "Font_ListFonts",,FontData%,next%,-1 TO ,,next%
 2338  IF next%<>-1 THEN
 2339    f$=$(FontData%)
 2340    p%=INSTR(f$,".")
 2341    IF p%>0 THEN
 2342      style$=MID$(f$,p%+1)
 2343      f$=LEFT$(f$,p%-1)
 2344    ELSE
 2345      style$="(Regular)"
 2346    ENDIF
 2347    IF (f$<>fam$) AND (next%<>-1) THEN
 2348      REM new font family
 2349      fam$=f$
 2350      SYS "MenuUtil_Add",FontMenu%,fam$ TO item%
 2351      SYS "MenuUtil_New",,fam$ TO submenu%
 2352      SYS "MenuUtil_SubMenu",item%,submenu%
 2353    ENDIF
 2354    SYS "MenuUtil_Add",submenu%,style$
 2355  ENDIF
 2356UNTIL next%=-1
 2357ENDPROC
 2358
 2359DEF PROCfontsizemenu(RETURN xpos%,RETURN ypos%,window%,icon%)
 2360IF icon%=48 THEN
 2361  SYS "MenuUtil_Text",item_fontsize%,LEFT$(STR$(IcEd_Xsize),5)
 2362ELSE
 2363  SYS "MenuUtil_Text",item_fontsize%,LEFT$(STR$(IcEd_Ysize),5)
 2364ENDIF
 2365ypos%+=7*44
 2366ENDPROC
 2367
 2368DEF PROCupdatemenu(RETURN xpos%,RETURN ypos%,window%,icon%)
 2369LOCAL font%
 2370font%=FNiconselected(IcEdW%,41)
 2371SYS "MenuUtil_Fade",item_updfg%,font%
 2372SYS "MenuUtil_Fade",item_updbg%,font%
 2373SYS "MenuUtil_Fade",item_updfont%,NOT font%
 2374ypos%+=22
 2375ENDPROC
 2376
 2377DEF PROCcreatemenu(xpos%,ypos%,window%,icon%)
 2378LastMenu_X%=xpos%
 2379LastMenu_Y%=ypos%
 2380LastMenu_Win%=window%
 2381LastMenu_Icon%=icon%
 2382LastMenu%=-1
 2383CASE window% OF
 2384  WHEN -2
 2385    PROCmainmenu
 2386    LastMenu%=MainMenu%
 2387  WHEN TemplW%
 2388    PROCtemplatemenu(xpos%,ypos%,icon%)
 2389    LastMenu%=TemplMenu%
 2390  WHEN IcEdW%
 2391    CASE icon% OF
 2392      WHEN 9,10
 2393        IF IcEd_Icon%=-1 THEN
 2394          PROCupdatemenu(xpos%,ypos%,window%,icon%)
 2395          LastMenu%=Updatemenu%
 2396        ENDIF
 2397      WHEN 28
 2398        PROCicbuttonmenu(xpos%,ypos%)
 2399        LastMenu%=IcButtonMenu%
 2400      WHEN 31
 2401        PROCesgmenu(xpos%,ypos%)
 2402        LastMenu%=EsgMenu%
 2403      WHEN 34,37
 2404        PROCcolourmenu(xpos%,ypos%,window%,icon%)
 2405        LastMenu%=ColourMenu%
 2406      WHEN 45,46
 2407        xpos%+=16
 2408        ypos%+=22
 2409        LastMenu%=FontMenu%
 2410      WHEN 48,51
 2411        PROCfontsizemenu(xpos%,ypos%,window%,icon%)
 2412        LastMenu%=FontSizemenu%
 2413    ENDCASE
 2414  WHEN WinEdW%
 2415    CASE icon% OF
 2416      WHEN 23
 2417        PROCwinbuttonmenu(xpos%,ypos%)
 2418        LastMenu%=WinButtonMenu%
 2419      WHEN 27,31,35,39,43,47,51
 2420        PROCcolourmenu(xpos%,ypos%,window%,icon%)
 2421        LastMenu%=ColourMenu%
 2422    ENDCASE
 2423  OTHERWISE
 2424    IF FNwhichtemplate(window%)>=0 THEN
 2425      PROCusermenu(xpos%,ypos%,window%,icon%)
 2426      LastMenu%=UserMenu%
 2427    ENDIF
 2428ENDCASE
 2429IF LastMenu%<>-1 THEN
 2430  ScrapBlk%!0=xpos%
 2431  ScrapBlk%!4=ypos%
 2432  ScrapBlk%!12=window%
 2433  SYS "MenuUtil_Show",LastMenu%,ScrapBlk%
 2434ENDIF
 2435ENDPROC
 2436
 2437REM *** drag procs; for moving and resizing icons ***
 2438
 2439DEF PROCfinishdrag(xmin%,ymin%,xmax%,ymax%)
 2440LOCAL win0x%,win0y%,i%,iconblk%,inbox%
 2441PROCsetmouseshape(0)                  : REM restore default pointer shape
 2442IF xmin%>xmax% THEN SWAP xmin%,xmax%
 2443IF ymin%>ymax% THEN SWAP ymin%,ymax%
 2444SYS "Wimp_GetPointerInfo",,PtrInfo%
 2445CASE Drag_Type% OF
 2446  WHEN 0,1 : REM move / resize icon(s)
 2447    IF FNwhichtemplate(PtrInfo%!12)>=0 THEN
 2448      WinBlk%!0=PtrInfo%!12
 2449      SYS "Wimp_GetWindowInfo",,WinBlk%
 2450      win0x%=WinBlk%!4-WinBlk%!20
 2451      win0y%=WinBlk%!16-WinBlk%!24
 2452      xmin%-=win0x% : REM translate from screen coords to window coords
 2453      ymin%-=win0y%
 2454      xmax%-=win0x%
 2455      ymax%-=win0y%
 2456      PROCmoveresize(Drag_Win%,Drag_Icon%,PtrInfo%!12,xmin%,ymin%,xmax%,ymax%)
 2457    ELSE
 2458      IF DeleteOutside% AND (Drag_Type%=0) THEN
 2459        REM moved icons outside window - delete them if option set
 2460        FOR i%=0 TO NrSelected%-1
 2461          PROCdeleteicon(oldwin%,SelBlk%!(4*i%),1,1)
 2462        NEXT i%
 2463      ENDIF
 2464    ENDIF
 2465  WHEN 2,3 : REM drag-select icons (with Select/Adjust)
 2466    WinBlk%!0=Drag_Win%
 2467    SYS "Wimp_GetWindowInfo",,WinBlk%
 2468    win0x%=WinBlk%!4-WinBlk%!20
 2469    win0y%=WinBlk%!16-WinBlk%!24
 2470    xmin%-=win0x%
 2471    xmax%-=win0x%
 2472    ymin%-=win0y%
 2473    ymax%-=win0y%
 2474    IF (WinBlk%!88>0) AND ((xmax%-xmin%)+(ymax%-ymin%)>=32) THEN
 2475      FOR i%=0 TO WinBlk%!88-1
 2476        iconblk%=WinBlk%+92+i%*32
 2477        inbox%=(iconblk%!0<xmax%) AND (iconblk%!8>=xmin%)
 2478        inbox%=inbox% AND (iconblk%!4<ymax%) AND (iconblk%!12>=ymin%)
 2479        IF inbox% AND (i%<>Drag_Icon%) THEN
 2480          IF Drag_Type%=2 THEN
 2481            PROCselecticon(Drag_Win%,i%,1)
 2482          ELSE
 2483            PROCseticonstate(Drag_Win%,i%,1<<21,0)
 2484          ENDIF
 2485        ENDIF
 2486      NEXT i%
 2487    ENDIF
 2488  WHEN 4 : REM drag from save-box
 2489    IF DragASprite% THEN SYS "DragASprite_Stop"
 2490    Blk%!0=60
 2491    Blk%!12=0
 2492    Blk%!16=1
 2493    Blk%!20=PtrInfo%!12
 2494    Blk%!24=PtrInfo%!16
 2495    Blk%!28=PtrInfo%!0
 2496    Blk%!32=PtrInfo%!4
 2497    Blk%!36=20+112*NrTemplates% : REM this is a low estimate of file size
 2498    Blk%!40=&FEC
 2499    IF SavingSelection% THEN
 2500      $(Blk%+44)=FNleafname(SelFName$)
 2501    ELSE
 2502      $(Blk%+44)=FNleafname(MainFName$)
 2503    ENDIF
 2504    SYS "Wimp_SendMessage",17,Blk%,PtrInfo%!12,PtrInfo%!16
 2505  WHEN 5,6
 2506    REM window move/resize - do nothing, no drag event
 2507ENDCASE
 2508Drag_Type%=-1
 2509ENDPROC
 2510
 2511DEF PROCinitdrag(type%,window%,icon%,box0x%,box0y%)
 2512LOCAL b%
 2513SYS "OS_Byte",161,&1C TO ,,b% : REM read "dragasprite" bit in CMOS RAM (RO3)
 2514DragASprite%=(b% AND 2)<>0
 2515IF DragASprite% AND (type%=4) THEN
 2516  SYS "DragASprite_Start",&A1,1,"file_fec",DragBlk%+8,DragBlk%+24
 2517ELSE
 2518  SYS "Wimp_DragBox",1,DragBlk%
 2519ENDIF
 2520Drag_Type%=type%   : REM is not the same as Wimp drag type!
 2521Drag_Win%=window%
 2522Drag_Icon%=icon%
 2523Drag_Box0x%=box0x% : REM window coords of bottomleft corner of box
 2524Drag_Box0y%=box0y%
 2525Drag_BoxSizex%=ABS(DragBlk%!16-DragBlk%!8)
 2526Drag_BoxSizey%=ABS(DragBlk%!20-DragBlk%!12)
 2527SYS "Wimp_GetPointerInfo",,PtrInfo%
 2528Drag_Ptrx%=PtrInfo%!0
 2529Drag_Ptry%=PtrInfo%!4
 2530ENDPROC
 2531
 2532DEF PROCabortdrag
 2533IF DragASprite% AND (type%=4) THEN
 2534  SYS "DragASprite_Stop"
 2535ELSE
 2536  SYS "Wimp_DragBox",,-1
 2537ENDIF
 2538PROCsetmouseshape(0)          : REM restore default pointer shape
 2539Drag_Type%=-1
 2540ENDPROC
 2541
 2542DEF PROCstartwindowmove(window%)
 2543DragBlk%!0=window%
 2544DragBlk%!4=1
 2545PROCinitdrag(5,-1,-1,0,0)
 2546ENDPROC
 2547
 2548DEF PROCstartwindowresize(window%)
 2549DragBlk%!0=window%
 2550DragBlk%!4=2
 2551PROCinitdrag(6,-1,-1,0,0)
 2552ENDPROC
 2553
 2554DEF PROCstarticondrag(button%,window%,icon%)
 2555CASE button% OF
 2556  WHEN 1,256
 2557    PROCsel_get(window%)
 2558    IF NrSelected%>0 THEN
 2559      PROCstarticonresize(window%,-1)
 2560    ELSE
 2561      IF icon%>=0 THEN PROCstarticonresize(window%,icon%)
 2562    ENDIF
 2563  WHEN 4,1024
 2564    PROCsel_get(window%)
 2565    IF NrSelected%>0 THEN
 2566      PROCstarticonmove(window%,-1)
 2567    ELSE
 2568      IF icon%>=0 THEN PROCstarticonmove(window%,icon%)
 2569    ENDIF
 2570ENDCASE
 2571ENDPROC
 2572
 2573DEF PROCstarticonmove(window%,icon%)
 2574LOCAL win0x%,win0y%,xmin%,xmax%,ymin%,ymax%
 2575WinBlk%!0=window%
 2576SYS "Wimp_GetWindowState",,WinBlk%
 2577win0x%=WinBlk%!4-WinBlk%!20
 2578win0y%=WinBlk%!16-WinBlk%!24
 2579IF icon%>=0 THEN
 2580  SelBlk%!0=icon% : REM simulate selection of 1 icon
 2581  NrSelected%=1
 2582ELSE
 2583  PROCsel_get(window%)
 2584ENDIF
 2585PROCsel_box(window%,xmin%,ymin%,xmax%,ymax%)
 2586SYS "Wimp_GetPointerInfo",,PtrInfo%
 2587DragBlk%!4=5
 2588DragBlk%!8=xmin%+win0x%
 2589DragBlk%!12=ymin%+win0y%
 2590DragBlk%!16=xmax%+win0x%
 2591DragBlk%!20=ymax%+win0y%
 2592DragBlk%!24=DragBlk%!8-PtrInfo%!0
 2593DragBlk%!28=DragBlk%!12-PtrInfo%!4
 2594DragBlk%!32=ScreenSize_X%+DragBlk%!16-PtrInfo%!0
 2595DragBlk%!36=ScreenSize_Y%+DragBlk%!20-PtrInfo%!4
 2596PROCinitdrag(0,window%,icon%,xmin%,ymin%)
 2597PROCsetmouseshape(1)
 2598ENDPROC
 2599
 2600DEF PROCstarticonresize(window%,icon%)
 2601LOCAL ibxmin%,ibxmax%,ibymin%,ibymax%
 2602LOCAL pbxmin%,pbxmax%,pbymin%,pbymax%
 2603LOCAL a,b,c
 2604LOCAL ibsizex%,ibsizey%,minsizex%,minsizey%
 2605LOCAL shape%
 2606LOCAL win0x%,win0y%,xmin%,xmax%,ymin%,ymax%
 2607WinBlk%!0=window%
 2608SYS "Wimp_GetWindowState",,WinBlk%
 2609win0x%=WinBlk%!4-WinBlk%!20
 2610win0y%=WinBlk%!16-WinBlk%!24
 2611IF icon%>=0 THEN
 2612  SelBlk%!0=icon% : REM simulate selection of 1 icon
 2613  NrSelected%=1
 2614ELSE
 2615  PROCsel_get(window%)
 2616ENDIF
 2617PROCsel_box(window%,xmin%,ymin%,xmax%,ymax%)
 2618ibxmin%=win0x%+xmin% : REM for initial box, convert to screen coords
 2619ibymin%=win0y%+ymin%
 2620ibxmax%=win0x%+xmax%
 2621ibymax%=win0y%+ymax%
 2622ibsizex%=xmax%-xmin%
 2623ibsizey%=ymax%-ymin%
 2624REM at first, set parent box equal to initial box
 2625pbxmin%=ibxmin%
 2626pbymin%=ibymin%
 2627pbxmax%=ibxmax%
 2628pbymax%=ibymax%
 2629REM fixed minimum size of drag box (very difficult to calculate!)
 2630minsizex%=32
 2631minsizey%=32
 2632IF minsizex%>ibsizex% THEN minsizex%=ibsizex%
 2633IF minsizey%>ibsizey% THEN minsizey%=ibsizey%
 2634REM get position of window on screen
 2635WinBlk%!0=window%
 2636SYS "Wimp_GetWindowState",,WinBlk%
 2637REM determine which side to drag - test mouse position relative to
 2638REM diagonals of box
 2639REM diagonal 1 (bottomleft-topright) y = a*x + b
 2640REM diagonal 2 (topleft-bottomright) y = -a*x + c
 2641a=ibsizey%/ibsizex%
 2642b=ibymin%-a*ibxmin%
 2643c=ibymax%+a*ibxmin%
 2644SYS "Wimp_GetPointerInfo",,PtrInfo%
 2645IF PtrInfo%!4>(a*(PtrInfo%!0)+b) THEN
 2646  REM above diagonal 1
 2647  IF PtrInfo%!4>(-a*(PtrInfo%!0)+c) THEN
 2648    REM above diagonal 2 - drag top side
 2649    IF WinBlk%!16>ibymax% THEN pbymax%=WinBlk%!16-ibsizey%
 2650    pbymin%+=minsizey%
 2651    shape%=2
 2652    SWAP ibymin%,ibymax% : REM top side of box must be "rubber"
 2653  ELSE
 2654    REM below diagonal 2 - drag left side
 2655    IF WinBlk%!4<ibxmin% THEN pbxmin%=WinBlk%!4+ibsizex%
 2656    pbxmax%-=minsizex%
 2657    shape%=5
 2658    SWAP ibxmin%,ibxmax% : REM left side of box must be "rubber"
 2659  ENDIF
 2660ELSE
 2661  REM below diagonal 1
 2662  IF PtrInfo%!4>(-a*(PtrInfo%!0)+c) THEN
 2663    REM above diagonal 2 - drag right side
 2664    IF pbxmax%<WinBlk%!12 THEN pbxmax%=WinBlk%!12
 2665    pbxmin%-=ibsizex%-minsizex%
 2666    shape%=3
 2667  ELSE
 2668    REM below diagonal 2 - drag bottom side
 2669    IF pbymin%>WinBlk%!8 THEN pbymin%=WinBlk%!8
 2670    pbymax%+=ibsizey%-minsizey%
 2671    shape%=4
 2672  ENDIF
 2673ENDIF
 2674DragBlk%!4=6
 2675DragBlk%!8=ibxmin%
 2676DragBlk%!12=ibymin%
 2677DragBlk%!16=ibxmax%
 2678DragBlk%!20=ibymax%
 2679DragBlk%!24=pbxmin%
 2680DragBlk%!28=pbymin%
 2681DragBlk%!32=pbxmax%
 2682DragBlk%!36=pbymax%
 2683PROCinitdrag(1,window%,icon%,xmin%,ymin%)
 2684PROCsetmouseshape(shape%)
 2685ENDPROC
 2686
 2687DEF PROCdragselect(button%)
 2688IF Drag_Type%<0 THEN
 2689  SYS "Wimp_GetPointerInfo",,PtrInfo%
 2690  DragBlk%!4=6
 2691  DragBlk%!8=PtrInfo%!0
 2692  DragBlk%!12=PtrInfo%!4
 2693  DragBlk%!16=PtrInfo%!0
 2694  DragBlk%!20=PtrInfo%!4
 2695  WinBlk%!0=PtrInfo%!12
 2696  SYS "Wimp_GetWindowState",,WinBlk%
 2697  DragBlk%!24=WinBlk%!4
 2698  DragBlk%!28=WinBlk%!8
 2699  DragBlk%!32=WinBlk%!12
 2700  DragBlk%!36=WinBlk%!16
 2701  IF button%=1 THEN
 2702    PROCinitdrag(3,PtrInfo%!12,PtrInfo%!16,0,0) : REM drag with Adjust
 2703  ELSE
 2704    PROCinitdrag(2,PtrInfo%!12,PtrInfo%!16,0,0) : REM drag with Select
 2705  ENDIF
 2706ENDIF
 2707ENDPROC
 2708
 2709DEF PROCstartsavedrag
 2710LOCAL win0x%,win0y%
 2711WinBlk%!0=SaveW%
 2712SYS "Wimp_GetWindowState",,WinBlk%
 2713win0x%=WinBlk%!4-WinBlk%!20
 2714win0y%=WinBlk%!16-WinBlk%!24
 2715ScrapBlk%!0=SaveW%
 2716ScrapBlk%!4=2
 2717SYS "Wimp_GetIconState",,ScrapBlk%
 2718DragBlk%!4=5
 2719DragBlk%!8=ScrapBlk%!8+win0x%
 2720DragBlk%!12=ScrapBlk%!12+win0y%
 2721DragBlk%!16=ScrapBlk%!16+win0x%
 2722DragBlk%!20=ScrapBlk%!20+win0y%
 2723SYS "Wimp_GetPointerInfo",,PtrInfo%
 2724DragBlk%!24=DragBlk%!8-PtrInfo%!0
 2725DragBlk%!28=DragBlk%!12-PtrInfo%!4
 2726DragBlk%!32=ScreenSize_X%+DragBlk%!16-PtrInfo%!0
 2727DragBlk%!36=ScreenSize_Y%+DragBlk%!20-PtrInfo%!4
 2728PROCinitdrag(4,SaveW%,-1,0,0)
 2729ENDPROC
 2730
 2731REM --- move or resize icons, based on new coords of box ---
 2732DEF PROCmoveresize(oldwin%,icon%,newwin%,xmin%,ymin%,xmax%,ymax%)
 2733LOCAL oldxmin%,oldymin%,oldxmax%,oldymax%
 2734LOCAL xscale,yscale,new%,i%
 2735IF icon%>=0 THEN
 2736  SelBlk%!0=icon% : REM simulate selection of 1 icon
 2737  NrSelected%=1
 2738ELSE
 2739  PROCsel_get(oldwin%)
 2740ENDIF
 2741PROCsel_box(oldwin%,oldxmin%,oldymin%,oldxmax%,oldymax%)
 2742REM calculate scaling factors (will be 1 for move)
 2743xscale=(xmax%-xmin%)/(oldxmax%-oldxmin%)
 2744yscale=(ymax%-ymin%)/(oldymax%-oldymin%)
 2745FOR i%=0 TO NrSelected%-1
 2746  IconBlk%!0=Drag_Win%
 2747  IconBlk%!4=SelBlk%!(4*i%)
 2748  SYS "Wimp_GetIconState",,IconBlk%
 2749  IconBlk%!8=xmin%+INT((IconBlk%!8-oldxmin%)*xscale+0.5)
 2750  IconBlk%!12=ymin%+INT((IconBlk%!12-oldymin%)*yscale+0.5)
 2751  IconBlk%!16=xmin%+INT((IconBlk%!16-oldxmin%)*xscale+0.5)
 2752  IconBlk%!20=ymin%+INT((IconBlk%!20-oldymin%)*yscale+0.5)
 2753  IF oldwin%=newwin% THEN
 2754    REM move / resize in same window
 2755    new%=FNredefineicon(oldwin%,SelBlk%!(4*i%),IconBlk%)
 2756  ELSE
 2757    REM move to other other window = copy icons
 2758    IconBlk%!4=newwin%
 2759    PROCiconrealloc(IconBlk%+24,IconBlk%+28) : REM copy indirected data
 2760    new%=FNcreateicon(IconBlk%+4)
 2761  ENDIF
 2762NEXT i%
 2763ENDPROC
 2764
 2765REM *** procs for dialogue and reporting errors ***
 2766
 2767DEF FNerrbox(err$,boxes%)
 2768ErrBlk%!0=0
 2769$(ErrBlk%+4)=err$+CHR$0
 2770SYS "Wimp_ReportError",ErrBlk%,boxes%,Appl$ TO ,click%
 2771=(click%=1)
 2772
 2773DEF PROCerror(forcequit%)
 2774LOCAL button%
 2775LOCAL ERROR
 2776ON ERROR LOCAL SYS "Wimp_CloseDown" : END
 2777SYS "Hourglass_Smash"
 2778IF forcequit% THEN
 2779  button%=2
 2780ELSE
 2781  button%=3
 2782ENDIF
 2783IF (NOT FNerrbox(REPORT$+" (line "+STR$(ERL)+")",button%)) THEN
 2784  SYS "Wimp_CloseDown"
 2785  END
 2786ENDIF
 2787ENDPROC
 2788
 2789DEF PROCcomplain(msg$)
 2790LOCAL dummy%
 2791dummy%=FNerrbox(msg$,17)
 2792ENDPROC
 2793
 2794DEF PROCdialogue(no%,arg1$,arg2$)
 2795LOCAL b1$,b2$,b3$,mask%
 2796b1$=""
 2797b2$=""
 2798b3$=""
 2799CASE no% OF
 2800  WHEN 0
 2801    $Dial_Msg%=FNmsg_lookup0("MOD0")
 2802    b1$=FNmsg_lookup0("SAVE")
 2803    b2$=FNmsg_lookup0("DCRD")
 2804    b3$=FNmsg_lookup0("CANC")
 2805  WHEN 1
 2806    $Dial_Msg%=FNmsg_lookup0("MOD0")
 2807    b1$=FNmsg_lookup0("DALL")
 2808    b3$=FNmsg_lookup0("CANC")
 2809  WHEN 2
 2810    $Dial_Msg%=FNmsg_lookup0("MOD0")
 2811    b1$=FNmsg_lookup0("LNEW")
 2812    b3$=FNmsg_lookup0("CANC")
 2813  WHEN 3
 2814    $Dial_Msg%=FNmsg_lookup1("NORM",arg1$)
 2815    b2$=FNmsg_lookup0("OK")
 2816  WHEN 4
 2817    $Dial_Msg%=FNmsg_lookup0("NUPD")
 2818    b2$=FNmsg_lookup0("OK")
 2819  WHEN 5
 2820    $Dial_Msg%=FNmsg_lookup0("NSTF")
 2821    b2$=FNmsg_lookup0("OK")
 2822  WHEN 6
 2823    $Dial_Msg%=FNmsg_lookup0("NOCH")
 2824    b2$=FNmsg_lookup0("OK")
 2825  WHEN 7
 2826    $Dial_Msg%=FNmsg_lookup2("TIDY",arg1$,arg2$)
 2827    b2$=FNmsg_lookup0("OK")
 2828  WHEN 8
 2829    $Dial_Msg%=FNmsg_lookup0("MOD0")
 2830    b1$=FNmsg_lookup0("DCRD")
 2831    b3$=FNmsg_lookup0("CANC")
 2832  WHEN 9
 2833    $Dial_Msg%=FNmsg_lookup0("NSEL")
 2834    b2$=FNmsg_lookup0("OK")
 2835ENDCASE
 2836$Dial_Button1%=b1$
 2837$Dial_Button2%=b2$
 2838$Dial_Button3%=b3$
 2839mask%=(1<<2)+(&FF<<24)
 2840IF LEN(b1$)=0 THEN
 2841  REM grey colour -> invisible%
 2842  PROCseticonstate0(DialW%,1,&11<<24,mask%)
 2843ELSE
 2844  PROCseticonstate0(DialW%,1,Dial_ButtonCol1%,mask%)
 2845ENDIF
 2846IF LEN(b2$)=0 THEN
 2847  PROCseticonstate0(DialW%,2,&11<<24,mask%)
 2848ELSE
 2849  PROCseticonstate0(DialW%,2,Dial_ButtonCol2%,mask%)
 2850ENDIF
 2851IF LEN(b3$)=0 THEN
 2852  PROCseticonstate0(DialW%,3,&11<<24,mask%)
 2853ELSE
 2854  PROCseticonstate0(DialW%,3,Dial_ButtonCol3%,mask%)
 2855ENDIF
 2856ScrapBlk%!0=DialW%
 2857SYS "Wimp_GetWindowState",,ScrapBlk%
 2858SYS "Wimp_CreateMenu",,DialW%,ScrapBlk%!4,ScrapBlk%!16
 2859LastDialogue%=no%
 2860ENDPROC
 2861
 2862REM *** heap procs ***
 2863
 2864DEF PROCheap_init
 2865Heap%=HIMEM : REM heap starts just after end of allocated memory
 2866SYS "OS_ReadMemMapInfo" TO PageSize%
 2867REM enlarge wimpslot (1 page) and create private heap in new memory
 2868SlotSize%=Heap%-&8000
 2869SYS "Wimp_SlotSize",SlotSize%+PageSize%,-1 TO SlotSize%
 2870HeapEnd%=SlotSize%+&8000
 2871IF HeapEnd%<=Heap% THEN ERROR 0,"Can't claim space for heap"
 2872SYS "OS_Heap",0,Heap%,,HeapEnd%-Heap%
 2873ENDPROC
 2874
 2875DEF FNheap_get(size%)
 2876LOCAL maxfree%,nrpages%,oldheapend%,ptr%
 2877SYS "OS_Heap",1,Heap% TO ,,maxfree%
 2878IF size%>maxfree% THEN
 2879  REM largest free block is too small - try to enlarge wimpslot and heap
 2880  nrpages%=1+(size% DIV PageSize%) : REM required # pages of memory
 2881  SYS "Wimp_SlotSize",SlotSize%+nrpages%*PageSize%,-1 TO SlotSize%
 2882  oldheapend%=HeapEnd%
 2883  HeapEnd%=SlotSize%+&8000
 2884  SYS "OS_Heap",5,Heap%,,HeapEnd%-oldheapend%
 2885  SYS "OS_Heap",1,Heap% TO ,,maxfree% : REM do we have enough now?
 2886ENDIF
 2887IF size%>maxfree% THEN
 2888  PROCcomplain(FNmsg_lookup0("NOHP"))
 2889  ptr%=-1
 2890ELSE
 2891  SYS "OS_Heap",2,Heap%,,size% TO ,,ptr%
 2892ENDIF
 2893=ptr%
 2894
 2895DEF PROCheap_release(ptr%)
 2896LOCAL maxfree%,nrpages%,flg%
 2897SYS "OS_Heap",3,Heap%,ptr%
 2898SYS "OS_Heap",1,Heap% TO ,,maxfree%
 2899IF maxfree%>PageSize% THEN
 2900  REM more than 1 page free - try to shrink heap (page by page)
 2901  nrpages%=0 : REM # pages of memory freed
 2902  REPEAT
 2903    SYS "XOS_Heap",5,Heap%,,-PageSize% TO ;flg%
 2904    IF (flg% AND 1)=0 THEN
 2905      nrpages%+=1
 2906    ENDIF
 2907  UNTIL (flg% AND 1)<>0
 2908  IF nrpages%>0 THEN
 2909    REM successfully shrunk heap - shrink WimpSlot
 2910    SYS "Wimp_SlotSize",SlotSize%-nrpages%*PageSize%,-1 TO SlotSize%
 2911    HeapEnd%=SlotSize%+&8000
 2912  ENDIF
 2913  SYS "OS_Heap",5,Heap%,,(HeapEnd%-Heap%)-Heap%!12
 2914ENDIF
 2915ENDPROC
 2916
 2917REM *** service procs; interface with SWIs, etc. ***
 2918
 2919REM --- change a variable with given difference, but keep inside bounds ---
 2920DEF FNchangevar(RETURN var%,diff%,up%,low%,high%)
 2921LOCAL oldval%
 2922oldval%=var%
 2923IF up% THEN
 2924  var%+=diff%
 2925ELSE
 2926  var%-=diff%
 2927ENDIF
 2928IF var%>high% THEN var%=high%
 2929IF var%<low% THEN var%=low%
 2930REM return TRUE if changed
 2931=(oldval%<>var%) 
 2932
 2933DEF FNreadvarval(var$)
 2934LOCAL len%
 2935SYS "OS_ReadVarVal",var$,VarBuf%,256,0 TO ,,len%
 2936VarBuf%?len%=13
 2937=$(VarBuf%)
 2938
 2939REM --- return name of icon to display in browser window ---
 2940DEF FNwindowicon(wflags%,open%)
 2941LOCAL sname$,tbar%,hscroll%,vscroll%
 2942IF wflags% AND (1<<31) THEN
 2943  tbar%=(wflags% AND (1<<26))>0
 2944  hscroll%=(wflags% AND (1<<30))>0
 2945  vscroll%=(wflags% AND (1<<28))>0
 2946ELSE
 2947  tbar%=(wflags% AND (1<<0))>0
 2948  hscroll%=(wflags% AND (1<<3))>0
 2949  vscroll%=(wflags% AND (1<<2))>0
 2950ENDIF
 2951sname$="Swin_"
 2952IF tbar% THEN sname$+="t"
 2953IF hscroll% THEN sname$+="h"
 2954IF vscroll% THEN sname$+="v"
 2955IF open% THEN sname$+="o"
 2956=sname$
 2957
 2958DEF FNmodevar(mode%,v%)
 2959LOCAL val%
 2960SYS "OS_ReadModeVariable",mode%,v% TO ,,val%
 2961=val%
 2962
 2963DEF PROCreadscreenvars
 2964LOCAL xeig%,yeig%,xpixels%,ypixels%
 2965xeig%=FNmodevar(-1,4)
 2966yeig%=FNmodevar(-1,5)
 2967xpixels%=FNmodevar(-1,11)
 2968ypixels%=FNmodevar(-1,12)
 2969PixToOS_X%=1<<xeig% : REM # OS units that 1 pixel takes
 2970PixToOS_Y%=1<<yeig%
 2971ScreenSize_X%=(xpixels%+1)*PixToOS_X% : REM screen size in OS units
 2972ScreenSize_Y%=(ypixels%+1)*PixToOS_Y%
 2973REM grid size must be multiple of # OS units per pixel
 2974IF Grid_SizeX%<PixToOS_X% THEN
 2975  Grid_SizeX%=PixToOS_X%
 2976ELSE
 2977  Grid_SizeX%-=(Grid_SizeX% MOD PixToOS_X%)
 2978ENDIF
 2979IF Grid_SizeY%<PixToOS_Y% THEN
 2980  Grid_SizeY%=PixToOS_Y%
 2981ELSE
 2982  Grid_SizeY%-=(Grid_SizeY% MOD PixToOS_Y%)
 2983ENDIF
 2984PROCseticontext(28,STR$(Grid_SizeX%))
 2985PROCseticontext(29,STR$(Grid_SizeY%))
 2986IF Grid_PosX%<PixToOS_X% THEN
 2987  Grid_PosX%=PixToOS_X%
 2988ELSE
 2989  Grid_PosX%-=(Grid_PosX% MOD PixToOS_X%)
 2990ENDIF
 2991IF Grid_PosY%<PixToOS_Y% THEN
 2992  Grid_PosY%=PixToOS_Y%
 2993ELSE
 2994  Grid_PosY%-=(Grid_PosY% MOD PixToOS_Y%)
 2995ENDIF
 2996PROCseticontext(30,STR$(Grid_PosX%))
 2997PROCseticontext(31,STR$(Grid_PosY%))
 2998TemplW_MaxCol%=(ScreenSize_X%-100) DIV TemplW_IconX%
 2999ENDPROC
 3000
 3001DEF PROCsetcaret(window%,icon%)
 3002LOCAL l%
 3003IF icon%>=0 THEN
 3004  ScrapBlk%!0=window%
 3005  ScrapBlk%!4=icon%
 3006  SYS "Wimp_GetIconState",,ScrapBlk%
 3007  l%=LEN($(ScrapBlk%!28))
 3008  SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,l%
 3009ELSE
 3010  REM invisible caret
 3011  SYS "Wimp_SetCaretPosition",window%,-1,0,0,1<<25
 3012ENDIF
 3013ENDPROC
 3014
 3015DEF PROCsetmouseshape(i%)
 3016LOCAL n$,xoff%,yoff%
 3017CASE i% OF
 3018  WHEN 0 : REM default pointer shape
 3019    n$="ptr_default"
 3020    xoff%=0
 3021    yoff%=0
 3022  WHEN 1 : REM hand pointer for moving icons
 3023    n$="ptr_hand"
 3024    xoff%=7
 3025    yoff%=6
 3026  WHEN 2 : REM pointer for resizing icons, dragging top side
 3027    n$="ptr_sizet"
 3028    xoff%=7
 3029    yoff%=6
 3030  WHEN 3 : REM pointer for resizing icons, dragging right side
 3031    n$="ptr_sizer"
 3032    xoff%=5
 3033    yoff%=5
 3034  WHEN 4 : REM pointer for resizing icons, dragging bottom side
 3035    n$="ptr_sizeb"
 3036    xoff%=7
 3037    yoff%=4
 3038  WHEN 5 : REM pointer for resizing icons, dragging left side
 3039    n$="ptr_sizel"
 3040    xoff%=10
 3041    yoff%=5
 3042ENDCASE
 3043Mouse_Ptt%!0=&03020100
 3044IF i%=0 THEN
 3045  SYS "Wimp_SpriteOp",36,,n$,&2,xoff%,yoff%,0,Mouse_Ptt%
 3046ELSE
 3047  SYS "OS_SpriteOp",&100+36,SysSprites%,n$,&2,xoff%,yoff%,0,Mouse_Ptt%
 3048ENDIF
 3049MouseShape%=i%
 3050ENDPROC
 3051
 3052REM --- re-allocate indirected icon data and increase font count ---
 3053DEF PROCiconrealloc(flagptr%,data%)
 3054LOCAL flags%,s$,s%,len%
 3055flags%=flagptr%!0
 3056IF (flags% AND &800100)=&100 THEN
 3057  s$=FNstr(data%!0)
 3058  len%=data%!8              : REM don't allocate actual size!
 3059  IF len%>256 THEN len%=256 : REM Basic can't handle longer strings
 3060  s%=FNheap_get(len%)
 3061  IF s%>0 THEN
 3062    $(s%)=LEFT$(s$,len%-1)
 3063    data%!0=s%
 3064    IF (flags% AND 1) AND (data%!4<>-1) THEN
 3065      REM re-allocate validation string
 3066      s$=FNstr(data%!4)
 3067      s%=FNheap_get(LENs$+1)
 3068      IF s%>0 THEN
 3069        $(s%)=s$
 3070        data%!4=s%
 3071      ELSE
 3072        data%!4=-1
 3073      ENDIF
 3074    ENDIF
 3075  ELSE
 3076    REM allocation failed - make non-indirected and store first chars
 3077    flagptr%!0=flagptr%!0 AND (NOT (1<<8))
 3078    $data%=LEFT$(s$,11)
 3079  ENDIF
 3080ENDIF
 3081IF (flags% AND &800040)=&40 THEN
 3082  FontUsage%((flags%)>>24)+=1
 3083ENDIF
 3084ENDPROC
 3085
 3086REM --- release indirected icon data and decrease font count ---
 3087DEF PROCiconrelease(flags%,data%)
 3088IF (flags% AND &800100)=&100 THEN
 3089  PROCheap_release(data%!0)
 3090  IF (flags% AND 1) AND (data%!(4)<>-1) THEN
 3091    REM release validation string
 3092    PROCheap_release(data%!4)
 3093  ENDIF
 3094ENDIF
 3095IF (flags% AND &800040)=&40 THEN
 3096  PROCfont_lose(flags%>>24)
 3097ENDIF
 3098ENDPROC
 3099
 3100REM --- open a window ---
 3101REM       pos% = 0 -> at current position
 3102REM              1 -> centered to screen
 3103REM              2 -> centered unless already open
 3104REM              3 -> in topleft corner unless already open
 3105REM              4 -> in topright corner unless already open
 3106DEF PROCopenwindow(handle%,pos%)
 3107LOCAL notopen%,cx%,cy%,dx%,dy%
 3108ScrapBlk%!0=handle%
 3109SYS "Wimp_GetWindowState",,ScrapBlk%
 3110notopen%=((ScrapBlk%!32 AND (1<<16))=0)
 3111dx%=0
 3112dy%=0
 3113CASE pos% OF
 3114  WHEN 1,2
 3115    IF (pos%=1) OR notopen% THEN
 3116      REM center window to screen
 3117      cx%=ScreenSize_X% DIV 2
 3118      cy%=ScreenSize_Y% DIV 2
 3119      dx%=cx%-(ScrapBlk%!12+ScrapBlk%!4) DIV 2
 3120      dy%=cy%-(ScrapBlk%!16+ScrapBlk%!8) DIV 2
 3121    ENDIF
 3122  WHEN 3
 3123    IF notopen% THEN
 3124      dx%=-ScrapBlk%!4
 3125      dy%=ScreenSize_Y%-ScrapBlk%!16
 3126    ENDIF
 3127  WHEN 4
 3128    IF notopen% THEN
 3129      dx%=ScreenSize_X%-ScrapBlk%!12
 3130      dy%=ScreenSize_Y%-ScrapBlk%!16
 3131    ENDIF
 3132ENDCASE
 3133ScrapBlk%!4=ScrapBlk%!4+dx%
 3134ScrapBlk%!8=ScrapBlk%!8+dy%
 3135ScrapBlk%!12=ScrapBlk%!12+dx%
 3136ScrapBlk%!16=ScrapBlk%!16+dy%
 3137ScrapBlk%!28=-1
 3138SYS "Wimp_OpenWindow",,ScrapBlk%
 3139IF handle%=OptionsW% THEN PROCopenpane(OptPaneW%)
 3140ENDPROC
 3141
 3142DEF PROCclosewindow(handle%)
 3143LOCAL i%
 3144ScrapBlk%!0=handle%
 3145SYS "Wimp_CloseWindow",,ScrapBlk%
 3146CASE handle% OF
 3147  WHEN TemplW%
 3148    ScrapBlk%!0=IcInfoW%
 3149    SYS "Wimp_CloseWindow",,ScrapBlk%
 3150    IF NrTemplates%>0 THEN
 3151      FOR i%=0 TO NrTemplates%-1
 3152        PROCclosetemplate(i%)
 3153      NEXT i%
 3154    ENDIF
 3155  WHEN OptionsW%
 3156    ScrapBlk%!0=OptPaneW%
 3157    SYS "Wimp_CloseWindow",,ScrapBlk%
 3158ENDCASE
 3159ENDPROC
 3160
 3161DEF PROCopenpane(handle%)
 3162LOCAL behind%,x%,y%
 3163CASE handle% OF
 3164  WHEN OptPaneW%
 3165    ScrapBlk%!0=OptionsW%
 3166    x%=16  : REM distance from topleft corner of parent window
 3167    y%=-16
 3168ENDCASE
 3169SYS "Wimp_GetWindowState",,ScrapBlk%
 3170x%+=ScrapBlk%!4
 3171y%+=ScrapBlk%!16
 3172behind%=ScrapBlk%!28
 3173ScrapBlk%!0=handle%
 3174SYS "Wimp_GetWindowState",,ScrapBlk%
 3175ScrapBlk%!12=x%+(ScrapBlk%!12-ScrapBlk%!4)
 3176ScrapBlk%!8=y%-(ScrapBlk%!16-ScrapBlk%!8)
 3177ScrapBlk%!4=x%
 3178ScrapBlk%!16=y%
 3179ScrapBlk%!28=behind%
 3180SYS "Wimp_OpenWindow",,ScrapBlk%
 3181ENDPROC
 3182
 3183DEF PROCopentemplate(no%)
 3184IF no%>=0 THEN
 3185  ScrapBlk%!0=TemplHandle%(no%)
 3186  SYS "Wimp_GetWindowState",,ScrapBlk%
 3187  IF (ScrapBlk%!32 AND (1<<16))=0 THEN
 3188    ScrapBlk%!28=-1
 3189    SYS "Wimp_OpenWindow",,ScrapBlk%
 3190    $(TemplNames%+28*no%+14)=FNwindowicon(ScrapBlk%!32,1)
 3191    PROCseticonstate0(TemplW%,no%,0,0)
 3192    IF TemplatesOpen%=0 THEN PollMask%=PollMask% AND (NOT 1)
 3193    TemplatesOpen%+=1
 3194    PROCsetcaret(TemplHandle%(no%),-1)
 3195  ENDIF
 3196ENDIF
 3197ENDPROC
 3198
 3199DEF PROCclosetemplate(no%)
 3200IF no%>=0 THEN
 3201  ScrapBlk%!0=TemplHandle%(no%)
 3202  SYS "Wimp_GetWindowState",,ScrapBlk%
 3203  IF (ScrapBlk%!32 AND (1<<16))>0 THEN
 3204    SYS "Wimp_CloseWindow",,ScrapBlk%
 3205    SYS "Wimp_GetWindowState",,ScrapBlk%
 3206    $(TemplNames%+28*no%+14)=FNwindowicon(ScrapBlk%!32,0)
 3207    PROCseticonstate0(TemplW%,no%,0,0)
 3208    IF TemplHandle%(no%)=IcEd_Win% THEN PROCclosewindow(IcEdW%)
 3209    IF TemplHandle%(no%)=WinEd_Win% THEN PROCclosewindow(WinEdW%)
 3210    TemplatesOpen%-=1
 3211    IF TemplatesOpen%=0 THEN PollMask%=PollMask% OR 1
 3212  ENDIF
 3213ENDIF
 3214ENDPROC
 3215
 3216REM --- convert string to uppercase ---
 3217DEF FNupcase(s$)
 3218LOCAL i%
 3219FOR i%=1 TO LEN(s$)
 3220  a%=ASC(MID$(s$,i%,1))
 3221  IF (a%>=97)AND(a%<=122) THEN
 3222    MID$(s$,i%,1)=CHR$(a%-32)
 3223  ENDIF
 3224NEXT i%
 3225=s$
 3226
 3227REM --- split off leaf name from a filename ---
 3228DEF FNleafname(f$)
 3229LOCAL p%,q%
 3230q%=0
 3231REPEAT
 3232  p%=q%+1
 3233  q%=INSTR(f$,".",p%)
 3234UNTIL q%=0
 3235=MID$(f$,p%)
 3236
 3237REM --- split off directory name from a filename ---
 3238DEF FNdirname(f$)
 3239LOCAL p%,q%
 3240p%=1
 3241REPEAT
 3242 q%=INSTR(f$,".",p%)
 3243 IF q% > 0 THEN p%=q%+1
 3244UNTIL q%=0
 3245=LEFT$(f$,p%-2)
 3246
 3247REM --- get the control-terminated string at the given address ---
 3248DEF FNstr(s%)
 3249LOCAL i%,n$
 3250i%=0
 3251WHILE (s%?i%>=32) AND (i%<255)
 3252  n$+=CHR$(s%?i%)
 3253  i%+=1
 3254ENDWHILE
 3255=n$
 3256
 3257DEF FNfileexists(f$)
 3258LOCAL type%
 3259type%=0
 3260IF LEN(f$)>0 THEN
 3261  SYS "OS_File",17,f$ TO type%
 3262ENDIF
 3263=(type%=1)
 3264
 3265REM --- set icon state in a template window ---
 3266DEF PROCseticonstate(window%,icon%,eor%,clr%)
 3267LOCAL oldflags%,newflags%
 3268ScrapBlk%!0=window%
 3269ScrapBlk%!4=icon%
 3270REM check if font usage is changing
 3271SYS "Wimp_GetIconState",,ScrapBlk%
 3272oldflags%=ScrapBlk%!24
 3273newflags%=(oldflags% AND NOT clr%) EOR eor%
 3274IF (newflags% AND &800040)=&40 THEN
 3275  FontUsage%(newflags%>>24)+=1
 3276ENDIF
 3277IF (oldflags% AND &800040)=&40 THEN
 3278  PROCfont_lose(oldflags%>>24)
 3279ENDIF
 3280ScrapBlk%!8=eor%
 3281ScrapBlk%!12=clr%
 3282IF SupportAEH% THEN
 3283 SYS "AEH_SetIconState",,ScrapBlk%
 3284ELSE
 3285 SYS "Wimp_SetIconState",,ScrapBlk%
 3286ENDIF
 3287ENDPROC
 3288
 3289REM --- set icon state in one of TemplEd's own windows ---
 3290DEF PROCseticonstate0(window%,icon%,eor%,clr%)
 3291LOCAL oldflags%,newflags%
 3292ScrapBlk%!0=window%
 3293ScrapBlk%!4=icon%
 3294ScrapBlk%!8=eor%
 3295ScrapBlk%!12=clr%
 3296SYS "Wimp_SetIconState",,ScrapBlk%
 3297ENDPROC
 3298
 3299DEF PROCselecticon(window%,icon%,f%)
 3300LOCAL oldflag%
 3301ScrapBlk%!0=window%
 3302ScrapBlk%!4=icon%
 3303SYS "Wimp_GetIconState",,ScrapBlk%
 3304oldflag%=(ScrapBlk%!24) AND (1<<21)
 3305IF f% THEN
 3306  ScrapBlk%!8=1<<21
 3307ELSE
 3308  ScrapBlk%!8=0
 3309ENDIF
 3310ScrapBlk%!12=1<<21
 3311IF oldflag%<>ScrapBlk%!8 THEN
 3312  REM only set when changing
 3313  IF SupportAEH% THEN
 3314   SYS "AEH_SetIconState",,ScrapBlk%
 3315  ELSE
 3316   SYS "Wimp_SetIconState",,ScrapBlk%
 3317  ENDIF
 3318ENDIF
 3319ENDPROC
 3320
 3321DEF FNiconselected(window%,icon%)
 3322ScrapBlk%!0=window%
 3323ScrapBlk%!4=icon%
 3324SYS "Wimp_GetIconState",,ScrapBlk%
 3325=((ScrapBlk%!24) AND (1<<21)) > 0
 3326
 3327DEF PROCshadeicon(window%,icon%,f%)
 3328LOCAL oldflag%
 3329ScrapBlk%!0=window%
 3330ScrapBlk%!4=icon%
 3331SYS "Wimp_GetIconState",,ScrapBlk%
 3332oldflag%=(ScrapBlk%!24) AND (1<<22)
 3333IF f% THEN
 3334  ScrapBlk%!8=(1<<22)
 3335ELSE
 3336  ScrapBlk%!8=0
 3337ENDIF
 3338ScrapBlk%!12=1<<22
 3339IF oldflag%<>ScrapBlk%!8 THEN
 3340  REM only set when changing
 3341  IF SupportAEH% THEN
 3342   SYS "AEH_SetIconState",,ScrapBlk%
 3343  ELSE
 3344   SYS "Wimp_SetIconState",,ScrapBlk%
 3345  ENDIF
 3346ENDIF
 3347ENDPROC
 3348
 3349DEF FNiconshaded(window%,icon%)
 3350ScrapBlk%!0=window%
 3351ScrapBlk%!4=icon%
 3352SYS "Wimp_GetIconState",,ScrapBlk%
 3353=((ScrapBlk%!24) AND (1<<22)) > 0
 3354
 3355REM --- store pointer to indirected text icon (for use in PROCseticontext) ---
 3356DEF PROClinkicontext(index%,wbuf%,icon%)
 3357IconText%(index%)=wbuf%!(92+icon%*32+20)
 3358IconTextWhdl%(index%)=wbuf%!0
 3359IconTextIhdl%(index%)=icon%
 3360ENDPROC
 3361
 3362DEF PROCseticontext(index%,text$)
 3363$(IconText%(index%))=text$
 3364PROCseticonstate0(IconTextWhdl%(index%),IconTextIhdl%(index%),0,0)
 3365ENDPROC
 3366
 3367REM --- store pointer to text of colour-select-box ---
 3368DEF PROClinkcseltext(index%,wbuf%,icon%)
 3369CselText%(index%)=wbuf%!(92+icon%*32+20)
 3370CselTextWhdl%(index%)=wbuf%!0
 3371CselTextIhdl%(index%)=icon%
 3372ENDPROC
 3373
 3374REM --- set colour number in colour-select-box ---
 3375DEF PROCsetcolourbox(index%,colour%)
 3376LOCAL c$,boxcol%
 3377c$=STR$(colour%)
 3378IF colour%=&FF THEN c$="--"
 3379$(CselText%(index%))=c$
 3380boxcol%=&07
 3381IF colour%<16 THEN
 3382  boxcol%=(colour%<<4)+InverseColour%(colour%)
 3383ENDIF
 3384boxcol%=boxcol%<<24
 3385PROCseticonstate0(CselTextWhdl%(index%),CselTextIhdl%(index%),boxcol%,&FF<<24)
 3386ENDPROC
 3387
 3388REM --- change colour number ---
 3389DEF PROCchangecolourbox(index%,RETURN colour%,diff%,up%,bigrange%)
 3390LOCAL newcolour%
 3391IF up% THEN
 3392  newcolour%=colour%+diff%
 3393ELSE
 3394  newcolour%=colour%-diff%
 3395ENDIF
 3396IF (newcolour% AND &FF)=255 THEN newcolour%=newcolour%+diff%
 3397IF bigrange% THEN
 3398  newcolour%=newcolour% AND &FF        : REM colours range from 0-255
 3399ELSE
 3400  IF newcolour%<0 THEN newcolour%=0    : REM colours range from 0-15
 3401  IF newcolour%>&F THEN newcolour%=&F
 3402ENDIF
 3403IF newcolour%<>colour% THEN
 3404  colour%=newcolour%
 3405  PROCsetcolourbox(index%,colour%)
 3406ENDIF
 3407ENDPROC
 3408
 3409REM --- find number of template corresponding with a window handle ---
 3410DEF FNwhichtemplate(handle%)
 3411LOCAL i%
 3412i%=0
 3413WHILE (TemplHandle%(i%)<>handle%) AND (i%<NrTemplates%)
 3414  i%+=1
 3415ENDWHILE
 3416IF i%=NrTemplates% THEN i%=-1 : REM handle does not belong to template window
 3417=i%
 3418
 3419DEF PROCsettitlebar(handle%,textptr%,title$)
 3420LOCAL xmax%,ymax%
 3421$(textptr%)=title$
 3422ScrapBlk%!0=handle%
 3423SYS "Wimp_GetWindowOutline",,ScrapBlk%
 3424xmax%=ScrapBlk%!12
 3425ymax%=ScrapBlk%!16
 3426SYS "Wimp_GetWindowState",,ScrapBlk%
 3427IF (ScrapBlk%!32 AND (1<<16)) THEN
 3428  SYS "Wimp_ForceRedraw",-1,ScrapBlk%!4,ScrapBlk%!16,xmax%,ymax%
 3429ENDIF
 3430ENDPROC
 3431
 3432REM --- delete all selected icons in a window ---
 3433DEF PROCdeleteiconsel(window%,default%)
 3434LOCAL i%
 3435PROCsel_get(window%)
 3436IF NrSelected%>0 THEN
 3437  FOR i%=0 TO NrSelected%-1
 3438    PROCdeleteicon(window%,SelBlk%!(4*i%),1,1)
 3439  NEXT i%
 3440ELSE
 3441  REM nothing selected - delete icon no. <default%>
 3442  IF default%>=0 THEN PROCdeleteicon(window%,default%,1,1)
 3443ENDIF
 3444NrSelected%=0
 3445ENDPROC
 3446
 3447DEF PROCdeleteicon(win%,icon%,release%,adjustvars%)
 3448ScrapBlk%!0=win%
 3449ScrapBlk%!4=icon%
 3450SYS "Wimp_GetIconState",,ScrapBlk%
 3451IF release% THEN
 3452  PROCiconrelease(ScrapBlk%!24,ScrapBlk%+28)
 3453ENDIF
 3454SYS "Wimp_DeleteIcon",,ScrapBlk%
 3455SYS "Wimp_ForceRedraw",win%,ScrapBlk%!8-20,ScrapBlk%!12-20,ScrapBlk%!16+20,ScrapBlk%!20+20
 3456IF adjustvars% THEN
 3457  IF (win%=IcEd_Win%) AND (icon%=IcEd_Icon%) THEN
 3458    IcEd_Icon%=-1000
 3459  ENDIF
 3460  IF (win%=LastMenu_Win%) AND (icon%=LastMenu_Icon%) THEN
 3461    LastMenu_Icon%=-1
 3462  ENDIF
 3463ENDIF
 3464PROCsetchanged(TRUE)
 3465ENDPROC
 3466
 3467DEF FNcreateicon(blk%)
 3468LOCAL dxmin%,dymin%,dxmax%,dymax%,handle%
 3469IF Grid_PosLock% THEN
 3470  dxmin%=FNgriddiff(blk%!4,Grid_PosX%)
 3471  dymin%=FNgriddiff(blk%!8,Grid_PosY%)
 3472  blk%!4=blk%!4-dxmin%
 3473  blk%!8=blk%!8-dymin%
 3474  blk%!12=blk%!12-dxmin%
 3475  blk%!16=blk%!16-dymin%
 3476ENDIF
 3477IF Grid_SizeLock% THEN
 3478  dxmin%=FNgriddiff(blk%!4,Grid_SizeX%)
 3479  dymin%=FNgriddiff(blk%!8,Grid_SizeY%)
 3480  dxmax%=FNgriddiff(blk%!12,Grid_SizeX%)
 3481  dymax%=FNgriddiff(blk%!16,Grid_SizeY%)
 3482ELSE
 3483  dxmin%=FNgriddiff(blk%!4,PixToOS_X%): REM round coords to screen pixels
 3484  dymin%=FNgriddiff(blk%!8,PixToOS_Y%)
 3485  dxmax%=FNgriddiff(blk%!12,PixToOS_X%)
 3486  dymax%=FNgriddiff(blk%!16,PixToOS_Y%)
 3487ENDIF
 3488blk%!4=blk%!4-dxmin%
 3489blk%!8=blk%!8-dymin%
 3490blk%!12=blk%!12-dxmax%
 3491blk%!16=blk%!16-dymax%
 3492SYS "Wimp_CreateIcon",,blk% TO handle%
 3493SYS "Wimp_ForceRedraw",blk%!0,blk%!4-12,blk%!8-12,blk%!12+12,blk%!16+12
 3494IF handle%>MaxIcons% THEN PROCcomplain(FNmsg_lookup0("MICX"))
 3495PROCsetchanged(TRUE)
 3496=handle%
 3497
 3498REM --- calculate distance from nearest gridpoint ---
 3499DEF FNgriddiff(c%,gridsize%)
 3500LOCAL diff%
 3501diff%=c% MOD gridsize%
 3502IF c%<0 THEN
 3503  IF (-diff%)>(gridsize%>>1) THEN diff%+=gridsize%
 3504ELSE
 3505  IF diff%>(gridsize%>>1) THEN diff%-=gridsize%
 3506ENDIF
 3507=diff%
 3508
 3509REM --- copy all selected icons in a window ---
 3510DEF PROCcopyiconsel(window%,RETURN icon%,dir%)
 3511LOCAL i%,xmin%,ymin%,xmax%,ymax%,dx%,dy%,handle%
 3512PROCsel_get(window%)
 3513IF (NrSelected%=0) AND (icon%>=0) THEN
 3514  SelBlk%!0=icon%
 3515  NrSelected%=1
 3516ENDIF
 3517PROCsel_box(window%,xmin%,ymin%,xmax%,ymax%)
 3518CASE dir% OF
 3519  WHEN 0 : dx%=16 : dy%=-16        : REM fixed distance (a bit lower+right)
 3520  WHEN 1 : dx%=0 : dy%=ymax%-ymin% : REM copy up
 3521  WHEN 2 : dx%=0 : dy%=ymin%-ymax% : REM copy down
 3522  WHEN 3 : dx%=xmin%-xmax% : dy%=0 : REM copy left
 3523  WHEN 4 : dx%=xmax%-xmin% : dy%=0 : REM copy right
 3524ENDCASE
 3525IF NrSelected%>0 THEN
 3526  FOR i%=0 TO NrSelected%-1
 3527    REM copy icon
 3528    ScrapBlk%!0=window%
 3529    ScrapBlk%!4=SelBlk%!(4*i%)
 3530    SYS "Wimp_GetIconState",,ScrapBlk%
 3531    ScrapBlk%!4=window%
 3532    ScrapBlk%!8=ScrapBlk%!8+dx%
 3533    ScrapBlk%!12=ScrapBlk%!12+dy%
 3534    ScrapBlk%!16=ScrapBlk%!16+dx%
 3535    ScrapBlk%!20=ScrapBlk%!20+dy%
 3536    PROCiconrealloc(ScrapBlk%+24,ScrapBlk%+28) : REM copy indirected data
 3537    handle%=FNcreateicon(ScrapBlk%+4)
 3538    REM deselect originals - copies remain selected
 3539    PROCselecticon(window%,SelBlk%!(4*i%),0)
 3540  NEXT i%
 3541  IF icon%>=0 THEN icon%=handle%
 3542  PROCsel_get(window%)
 3543ENDIF
 3544ENDPROC
 3545
 3546REM --- replace window definition with new one ---
 3547DEF FNredefinewindow(wbuf%,setchanged%)
 3548LOCAL oldhandle%,no%,wasopen%,newhandle%
 3549oldhandle%=wbuf%!0
 3550no%=FNwhichtemplate(oldhandle%)
 3551ScrapBlk%!0=oldhandle%
 3552SYS "Wimp_GetWindowState",,ScrapBlk%
 3553wasopen%=(ScrapBlk%!32) AND (1<<16)
 3554SYS "Wimp_DeleteWindow",,wbuf%
 3555SYS "Wimp_CreateWindow",,wbuf%+4 TO newhandle%
 3556wbuf%!0=newhandle%
 3557IF no%<>-1 THEN
 3558  TemplHandle%(no%)=newhandle%
 3559ENDIF
 3560IF oldhandle%=IcEd_Win% THEN
 3561  IcEd_Win%=newhandle%
 3562  IF IcEd_Icon%>=0 THEN
 3563    IcEd_Icon%=-1000 : REM invalidate icon handle
 3564  ENDIF
 3565ENDIF
 3566IF oldhandle%=WinEd_Win% THEN WinEd_Win%=newhandle%
 3567IF oldhandle%=LastMenu_Win% THEN
 3568  LastMenu_Win%=newhandle%
 3569  LastMenu_Icon%=-1
 3570ENDIF
 3571IF wasopen% THEN
 3572  SYS "Wimp_OpenWindow",,wbuf%
 3573ENDIF
 3574$(TemplNames%+28*no%+14)=FNwindowicon(wbuf%!32,wasopen%)
 3575PROCseticonstate0(TemplW%,no%,0,0)
 3576IF setchanged% THEN PROCsetchanged(TRUE)
 3577=newhandle%
 3578
 3579REM --- replace icon definition with new one ---
 3580DEF FNredefineicon(window%,icon%,blk%)
 3581LOCAL newicon%
 3582PROCdeleteicon(window%,icon%,0,0)
 3583REM new icon data must start at blk%+8 (as returned by Wimp_GetIconState)
 3584blk%!4=window%
 3585newicon%=FNcreateicon(blk%+4)
 3586IF (window%=IcEd_Win%) AND (icon%=IcEd_Icon%) THEN
 3587  IcEd_Icon%=newicon%
 3588ENDIF
 3589IF (window%=LastMenu_Win%) AND (icon%=LastMenu_Icon%) THEN
 3590  LastMenu_Icon%=newicon%
 3591ENDIF
 3592=newicon%
 3593
 3594REM --- renumber an icon; new number is equal to NextIconNr% ---
 3595DEF PROCrenumbericon(RETURN window%,icon%)
 3596LOCAL i%,ip1%,ip2%,temp%
 3597WinBlk%!0=window%
 3598SYS "Wimp_GetWindowInfo",,WinBlk%
 3599IF icon%>=WinBlk%!88 THEN icon%=WinBlk%!88-1
 3600IF NextIconNr%>=WinBlk%!88 THEN NextIconNr%=WinBlk%!88-1
 3601ip1%=WinBlk%+92+icon%*32
 3602ip2%=WinBlk%+92+NextIconNr%*32
 3603REM swap icon data blocks in window definition
 3604FOR i%=0 TO 28 STEP 4
 3605  temp%=ip1%!i%
 3606  ip1%!i%=ip2%!i%
 3607  ip2%!i%=temp%
 3608NEXT i%
 3609window%=FNredefinewindow(WinBlk%,1)
 3610ENDPROC
 3611
 3612REM --- renumber selected icons, ordering based on topleft coords ---
 3613DEF PROCrenumbericonsel(RETURN window%)
 3614LOCAL i%,j%,f%,l%
 3615PROCsel_get(window%)
 3616PROCsel_sort(window%,1,1,0,0,0,1)
 3617SYS "Wimp_WhichIcon",window%,SelBlk2%,(1<<21)+(1<<23),1<<21
 3618WinBlk%!0=window%
 3619SYS "Wimp_GetWindowInfo",,WinBlk%
 3620f%=NextIconNr%               : REM first number of new numbering
 3621l%=NextIconNr%+NrSelected%-1 : REM last number
 3622IF l%>=WinBlk%!88 THEN
 3623  l%=WinBlk%!88-1            : REM make sure new numbers are within range
 3624  f%=l%-(NrSelected%-1)
 3625ENDIF
 3626j%=0
 3627FOR i%=0 TO NrSelected%-1
 3628  REM replace icon with i%-th icon from sorted selection
 3629  PROCreplaceicon(WinBlk%,f%+i%,window%,SelBlk%!(4*i%))
 3630  IF NOT FNiconselected(window%,f%+i%) THEN
 3631    REM data of unselected icon overwritten - find new number for this icon
 3632    WHILE (SelBlk2%!(4*j%)>=f%) AND (SelBlk2%!(4*j%)<=l%)
 3633      j%+=1
 3634    ENDWHILE
 3635    PROCreplaceicon(WinBlk%,SelBlk2%!(4*j%),window%,f%+i%)
 3636    j%+=1
 3637  ENDIF
 3638NEXT i%
 3639window%=FNredefinewindow(WinBlk%,1)
 3640NextIconNr%=l%+1
 3641ENDPROC
 3642
 3643REM --- set selected icons to same size as topleft icon ---
 3644DEF PROCsamesizeiconsel(window%,default%,dim%)
 3645LOCAL i%,xsize%,ysize%,handle%
 3646PROCsel_get(window%)
 3647IF (NrSelected%=0) AND (default%>=0) THEN
 3648  SelBlk%!0=default%
 3649  NrSelected%=1
 3650ENDIF
 3651IF NrSelected%>0 THEN
 3652  PROCsel_sort(window%,1,1,0,0,0,1)
 3653  IconBlk%!0=window%
 3654  IconBlk%!4=SelBlk%!0
 3655  SYS "Wimp_GetIconState",,IconBlk%
 3656  xsize%=IconBlk%!16-IconBlk%!8
 3657  ysize%=IconBlk%!20-IconBlk%!12
 3658  FOR i%=0 TO NrSelected%-1
 3659    IconBlk%!0=window%
 3660    IconBlk%!4=SelBlk%!(4*i%)
 3661    SYS "Wimp_GetIconState",,IconBlk%
 3662    IF dim%<>2 THEN IconBlk%!16=IconBlk%!8+xsize%
 3663    IF dim%<>1 THEN IconBlk%!20=IconBlk%!12+ysize%
 3664    handle%=FNredefineicon(window%,SelBlk%!(4*i%),IconBlk%)
 3665  NEXT i%
 3666ENDIF
 3667ENDPROC
 3668
 3669REM --- in wbuf%, replace data for icon ic1% with data of icon ic2% ---
 3670DEF PROCreplaceicon(wbuf%,ic1%,window%,ic2%)
 3671LOCAL ib%,temp1%,temp2%
 3672ib%=wbuf%+92+32*ic1%
 3673temp1%=ib%!(-8) : REM save 2 words just before the icon block
 3674temp2%=ib%!(-4)
 3675ib%!(-8)=window%
 3676ib%!(-4)=ic2%
 3677SYS "Wimp_GetIconState",,ib%-8 : REM get icon data block
 3678ib%!(-8)=temp1% : REM restore the 2 words
 3679ib%!(-4)=temp2%
 3680ENDPROC
 3681
 3682REM --- update contents of icon info window ---
 3683DEF PROCicinf_update
 3684LOCAL no%,t$,i$,xmin$,xmax$,ymin$,ymax$,s$,mx%,my%,m$
 3685LOCAL showicondata%,xmin%,xmax%,ymin%,ymax%
 3686SYS "Wimp_GetPointerInfo",,PtrInfo%
 3687no%=FNwhichtemplate(PtrInfo%!12)
 3688t$=""
 3689i$=""
 3690xmin$=""
 3691xmax$=""
 3692ymin$=""
 3693ymax$=""
 3694s$=""
 3695m$=""
 3696showicondata%=FALSE
 3697IF (no%>=0) THEN
 3698  t$=$(TemplNames%+28*no%)
 3699  IF PtrInfo%!16>=-1 THEN
 3700    ScrapBlk%!0=PtrInfo%!12
 3701    SYS "Wimp_GetWindowState",,ScrapBlk%
 3702    mx%=PtrInfo%!0-(ScrapBlk%!4-ScrapBlk%!20)
 3703    my%=PtrInfo%!4-(ScrapBlk%!16-ScrapBlk%!24)
 3704    m$=STR$(mx%)+","+STR$(my%)
 3705    CASE Drag_Type% OF
 3706      WHEN 0
 3707        REM moving/resizing icon(s) - show current coordinates of dragbox
 3708        i$="..."
 3709        xmin%=mx%-(Drag_Ptrx%-DragBlk%!8)
 3710        ymin%=my%-(Drag_Ptry%-DragBlk%!12)
 3711        xmax%=xmin%+Drag_BoxSizex%
 3712        ymax%=ymin%+Drag_BoxSizey%
 3713        showicondata%=TRUE
 3714      WHEN 1
 3715        REM resizing icon(s) - show current coordinates of dragbox
 3716        i$="..."
 3717        xmin%=Drag_Box0x%
 3718        ymin%=Drag_Box0y%
 3719        xmax%=xmin%+Drag_BoxSizex%
 3720        ymax%=ymin%+Drag_BoxSizey%
 3721        CASE MouseShape% OF
 3722          WHEN 2 : ymax%+=(PtrInfo%!4-Drag_Ptry%)
 3723          WHEN 3 : xmax%+=(PtrInfo%!0-Drag_Ptrx%)
 3724          WHEN 4 : ymin%+=(PtrInfo%!4-Drag_Ptry%)
 3725          WHEN 5 : xmin%+=(PtrInfo%!0-Drag_Ptrx%)
 3726        ENDCASE
 3727        showicondata%=TRUE
 3728      OTHERWISE
 3729        REM show data of icon under pointer
 3730        IF PtrInfo%!16>=0 THEN
 3731          i$=STR$(PtrInfo%!16)
 3732          ScrapBlk%!0=PtrInfo%!12
 3733          ScrapBlk%!4=PtrInfo%!16
 3734          SYS "Wimp_GetIconState",,ScrapBlk%
 3735          xmin%=ScrapBlk%!8
 3736          xmax%=ScrapBlk%!16
 3737          ymin%=ScrapBlk%!12
 3738          ymax%=ScrapBlk%!20
 3739          showicondata%=TRUE
 3740        ENDIF
 3741    ENDCASE
 3742    IF showicondata% THEN
 3743      xmin$=STR$(xmin%)
 3744      xmax$=STR$(xmax%)
 3745      ymin$=STR$(ymin%)
 3746      ymax$=STR$(ymax%)
 3747      s$=STR$(xmax%-xmin%)+"x"+STR$(ymax%-ymin%)
 3748    ENDIF
 3749  ENDIF
 3750ENDIF
 3751IF t$<>$(IconText%(7)) THEN PROCseticontext(7,t$)
 3752IF i$<>$(IconText%(8)) THEN PROCseticontext(8,i$)
 3753IF xmin$<>$(IconText%(9)) THEN PROCseticontext(9,xmin$)
 3754IF xmax$<>$(IconText%(26)) THEN PROCseticontext(26,xmax$)
 3755IF ymin$<>$(IconText%(10)) THEN PROCseticontext(10,ymin$)
 3756IF ymax$<>$(IconText%(27)) THEN PROCseticontext(27,ymax$)
 3757IF s$<>$(IconText%(11)) THEN PROCseticontext(11,s$)
 3758IF m$<>$(IconText%(24)) THEN PROCseticontext(24,m$)
 3759ENDPROC
 3760
 3761DEF PROCalignicons(window%)
 3762LOCAL move%,imask%,type%,i%,anchorx%,anchory%
 3763LOCAL dx1%,dx2%,dy1%,dy2%,handle%
 3764move%=FNiconselected(AlignW%,8)
 3765imask%=(31<<16)+(1<<21)
 3766SYS "Wimp_WhichIcon",AlignW%,SelBlk%,imask%,(1<<16)+(1<<21)
 3767type%=SelBlk%!0
 3768PROCsel_get(window%)
 3769IF NrSelected%>1 THEN
 3770  CASE type% OF
 3771    WHEN 2,3 : PROCsel_sort(window%,0,0,1,0,1,1)
 3772    WHEN 4   : PROCsel_sort(window%,0,1,0,0,1,1)
 3773    WHEN 5,6 : PROCsel_sort(window%,1,1,0,1,0,0)
 3774    WHEN 7   : PROCsel_sort(window%,1,0,1,1,1,1)
 3775  ENDCASE
 3776  IconBlk%!0=window%
 3777  IconBlk%!4=SelBlk%!0
 3778  SYS "Wimp_GetIconState",,IconBlk%
 3779  CASE type% OF
 3780    WHEN 2
 3781      anchorx%=IconBlk%!8                                : REM left
 3782    WHEN 3
 3783      anchorx%=IconBlk%!8+(IconBlk%!16-IconBlk%!8)DIV2   : REM h centre
 3784    WHEN 4
 3785      anchorx%=IconBlk%!16                               : REM right
 3786    WHEN 5
 3787      anchory%=IconBlk%!20                               : REM top
 3788    WHEN 6
 3789      anchory%=IconBlk%!12+(IconBlk%!20-IconBlk%!12)DIV2 : REM v centre
 3790    WHEN 7
 3791      anchory%=IconBlk%!12                               : REM bottom
 3792  ENDCASE
 3793  FOR i%=1 TO NrSelected%-1
 3794    IconBlk%!0=window%
 3795    IconBlk%!4=SelBlk%!(4*i%)
 3796    SYS "Wimp_GetIconState",,IconBlk%
 3797    dx1%=0
 3798    dx2%=0
 3799    dy1%=0
 3800    dy2%=0
 3801    CASE type% OF
 3802      WHEN 2
 3803        dx1%=anchorx%-IconBlk%!8
 3804        IF move% THEN dx2%=dx1%
 3805      WHEN 3
 3806        dx1%=anchorx%-(IconBlk%!8+(IconBlk%!16-IconBlk%!8)DIV2)
 3807        IF move% THEN dx2%=dx1%
 3808      WHEN 4
 3809        dx2%=anchorx%-IconBlk%!16
 3810        IF move% THEN dx1%=dx2%
 3811      WHEN 5
 3812        dy2%=anchory%-IconBlk%!20
 3813        IF move% THEN dy1%=dy2%
 3814      WHEN 6
 3815        dy1%=anchory%-(IconBlk%!12+(IconBlk%!20-IconBlk%!12)DIV2)
 3816        IF move% THEN dy2%=dy1%
 3817      WHEN 7
 3818        dy1%=anchory%-IconBlk%!12
 3819        IF move% THEN dy2%=dy1%
 3820    ENDCASE
 3821    IconBlk%!8=IconBlk%!8+dx1%
 3822    IconBlk%!12=IconBlk%!12+dy1%
 3823    IconBlk%!16=IconBlk%!16+dx2%
 3824    IconBlk%!20=IconBlk%!20+dy2%
 3825    IF IconBlk%!16<=IconBlk%!8 THEN IconBlk%!16=IconBlk%!8+32
 3826    IF IconBlk%!20<=IconBlk%!12 THEN IconBlk%!20=IconBlk%!12+32
 3827    handle%=FNredefineicon(window%,SelBlk%!(4*i%),IconBlk%)
 3828  NEXT i%
 3829ENDIF
 3830ENDPROC
 3831
 3832REM --- shade the appropriate icons in the Align window
 3833DEF PROCalign_shadeicons
 3834IF FNiconselected(AlignW%,3) OR  FNiconselected(AlignW%,6) THEN
 3835  PROCshadeicon(AlignW%,9,1)
 3836ELSE
 3837  PROCshadeicon(AlignW%,9,0)
 3838ENDIF
 3839PROCshadeicon(AlignW%,3,FNiconselected(AlignW%,9))
 3840PROCshadeicon(AlignW%,6,FNiconselected(AlignW%,9))
 3841ENDPROC
 3842
 3843DEF PROCspaceicons(window%)
 3844LOCAL imask%,type%,i%,distance%,space%,ib%,anchor%,dx%,dy%,handle%
 3845SpaceOut_Space%=VAL($(IconText%(18)))
 3846imask%=(31<<16)+(1<<21) : REM check if spacing must be horizontal or vertical
 3847SYS "Wimp_WhichIcon",SpaceW%,SelBlk%,imask%,(1<<16)+(1<<21)
 3848type%=SelBlk%!0 : REM type%=2 => horizontal, type%=3 => vertical
 3849PROCsel_get(window%)
 3850IF NrSelected%>1 THEN
 3851  IF type%=2 THEN
 3852    PROCsel_sort(window%,0,0,1,0,1,0)
 3853  ELSE
 3854    PROCsel_sort(window%,1,0,1,1,1,0)
 3855  ENDIF
 3856  IF FNiconselected(SpaceW%,4) THEN
 3857    distance%=SpaceOut_Space%
 3858  ELSE
 3859    REM calc available space between icons
 3860    WinBlk%!0=window%
 3861    SYS "Wimp_GetWindowInfo",,WinBlk%
 3862    REM start with space between outer icons
 3863    IF type%=2 THEN
 3864      space%=WinBlk%!(92+32*(SelBlk%!(4*(NrSelected%-1))))
 3865      space%-=WinBlk%!(92+32*(SelBlk%!0)+8)
 3866    ELSE
 3867      space%=WinBlk%!(92+32*(SelBlk%!(4*(NrSelected%-1)))+4)
 3868      space%-=WinBlk%!(92+32*(SelBlk%!0)+12)
 3869    ENDIF
 3870    REM subtract sizes of intermediate icons
 3871    IF NrSelected%>2 THEN
 3872      FOR i%=1 TO (NrSelected%-2)
 3873        ib%=WinBlk%+92+32*(SelBlk%!(4*i%))
 3874        IF type%=2 THEN
 3875          space%-=(ib%!8-ib%!0)
 3876        ELSE
 3877          space%-=(ib%!12-ib%!4)
 3878        ENDIF
 3879      NEXT i%
 3880    ENDIF
 3881    distance%=space% DIV (NrSelected%-1)
 3882  ENDIF
 3883  IconBlk%!0=window%
 3884  IconBlk%!4=SelBlk%!0
 3885  SYS "Wimp_GetIconState",,IconBlk%
 3886  CASE type% OF
 3887    WHEN 2 : anchor%=IconBlk%!16
 3888    WHEN 3 : anchor%=IconBlk%!20
 3889  ENDCASE
 3890  FOR i%=1 TO NrSelected%-1
 3891    anchor%+=distance%
 3892    IconBlk%!0=window%
 3893    IconBlk%!4=SelBlk%!(4*i%)
 3894    SYS "Wimp_GetIconState",,IconBlk%
 3895    dx%=0
 3896    dy%=0
 3897    CASE type% OF
 3898      WHEN 2 : dx%=anchor%-IconBlk%!8
 3899      WHEN 3 : dy%=anchor%-IconBlk%!12
 3900    ENDCASE
 3901    IconBlk%!8=IconBlk%!8+dx%
 3902    IconBlk%!12=IconBlk%!12+dy%
 3903    IconBlk%!16=IconBlk%!16+dx%
 3904    IconBlk%!20=IconBlk%!20+dy%
 3905    CASE type% OF
 3906      WHEN 2 : anchor%=IconBlk%!16
 3907      WHEN 3 : anchor%=IconBlk%!20
 3908    ENDCASE
 3909    handle%=FNredefineicon(window%,SelBlk%!(4*i%),IconBlk%)
 3910  NEXT i%
 3911ENDIF
 3912ENDPROC
 3913
 3914DEF PROCspace_shadeicons
 3915LOCAL useavail%,i%
 3916useavail%=FNiconselected(SpaceW%,8)
 3917FOR i%=5 TO 7
 3918  PROCshadeicon(SpaceW%,i%,useavail%)
 3919NEXT i%
 3920ENDPROC
 3921
 3922DEF FNtidyicons(window%)
 3923LOCAL changed1%,changed2%,ib1%,ib2%,end%,nricons%,dx%,dy%,i%,handle%
 3924WinBlk%!0=window%
 3925SYS "Wimp_GetWindowInfo",,WinBlk%
 3926changed1%=0
 3927changed2%=0
 3928IF WinBlk%!88>0 THEN
 3929  ib1%=WinBlk%+92
 3930  ib2%=ib1%
 3931  end%=ib1%+32*(WinBlk%!88)
 3932  nricons%=0
 3933  WHILE ib1%<end%
 3934    IF ((ib1%!16)AND(1<<23))=0 THEN
 3935      REM test if icon position is within work area
 3936      dx%=0
 3937      dy%=0
 3938      IF ib1%!0<WinBlk%!44 THEN dx%=WinBlk%!44-ib1%!0
 3939      IF ib1%!4<WinBlk%!48 THEN dy%=WinBlk%!48-ib1%!4
 3940      IF ib1%!8>WinBlk%!52 THEN dx%=WinBlk%!52-ib1%!8
 3941      IF ib1%!12>WinBlk%!56 THEN dy%=WinBlk%!56-ib1%!12
 3942      ib1%!0=ib1%!0+dx%
 3943      ib1%!4=ib1%!4+dy%
 3944      ib1%!8=ib1%!8+dx%
 3945      ib1%!12=ib1%!12+dy%
 3946      REM move block of icon data
 3947      FOR i%=0 TO 28 STEP 4
 3948        ib2%!i%=ib1%!i%
 3949      NEXT i%
 3950      ib2%+=32
 3951      nricons%+=1
 3952      IF (dx%<>0)OR(dy%<>0) THEN changed2%+=1
 3953    ELSE
 3954      REM don't copy deleted icon
 3955      changed1%+=1
 3956    ENDIF
 3957    ib1%+=32
 3958  ENDWHILE
 3959  IF (changed1%=0)AND(changed2%=0) THEN
 3960    PROCdialogue(6,"","")
 3961  ELSE
 3962    WinBlk%!88=nricons%
 3963    handle%=FNredefinewindow(WinBlk%,1)
 3964    PROCdialogue(7,STR$(changed1%),STR$(changed2%))
 3965  ENDIF
 3966ENDIF
 3967=handle%
 3968
 3969DEF PROCsetworkarea
 3970LOCAL xtopleft%,ytopleft%,xsize%,ysize%,xmin%,ymin%
 3971WinBlk%!0=LastMenu_Win%
 3972SYS "Wimp_GetWindowInfo",,WinBlk%
 3973xtopleft%=VAL($(IconText%(12)))
 3974ytopleft%=VAL($(IconText%(13)))
 3975xsize%=VAL($(IconText%(14)))
 3976ysize%=VAL($(IconText%(15)))
 3977xmin%=VAL($(IconText%(16))) AND &FFFF
 3978ymin%=VAL($(IconText%(17))) AND &FFFF
 3979IF (xsize%<32) OR (ysize%<32) THEN
 3980  PROCcomplain(FNmsg_lookup0("IWAS"))
 3981ELSE
 3982  IF xmin%>xsize% THEN
 3983    xmin%=xsize%
 3984    PROCseticontext(16,STR$(xmin%))
 3985  ENDIF
 3986  IF ymin%>ysize% THEN
 3987    ymin%=ysize%
 3988    PROCseticontext(17,STR$(ymin%))
 3989  ENDIF
 3990  WinBlk%!44=xtopleft%
 3991  WinBlk%!48=ytopleft%-ysize%
 3992  WinBlk%!52=xtopleft%+xsize%
 3993  WinBlk%!56=ytopleft%
 3994  WinBlk%!72=(ymin%<<16)+xmin%
 3995  LastMenu_Win%=FNredefinewindow(WinBlk%,1)
 3996ENDIF
 3997ENDPROC
 3998
 3999DEF PROCcentericonsel(window%,default%,dim%)
 4000LOCAL xmin%,ymin%,xmax%,ymax%,xfree%,yfree%,dx%,dy%,i%,handle%
 4001PROCsel_get(window%)
 4002IF (NrSelected%=0) AND (default%>=0) THEN
 4003  SelBlk%!0=default%
 4004  NrSelected%=1
 4005ENDIF
 4006IF NrSelected%>0 THEN
 4007  PROCsel_box(window%,xmin%,ymin%,xmax%,ymax%)
 4008  ScrapBlk%!0=window%
 4009  SYS "Wimp_GetWindowState",,ScrapBlk%
 4010  xfree%=(ScrapBlk%!12-ScrapBlk%!4)-(xmax%-xmin%)
 4011  dx%=ScrapBlk%!20+(xfree% DIV 2)-xmin%
 4012  yfree%=(ScrapBlk%!16-ScrapBlk%!8)-(ymax%-ymin%)
 4013  dy%=ScrapBlk%!24-(yfree% DIV 2)-ymax%
 4014  IF dim%=2 THEN dx%=0
 4015  IF dim%=1 THEN dy%=0
 4016  FOR i%=0 TO NrSelected%-1
 4017    IconBlk%!0=window%
 4018    IconBlk%!4=SelBlk%!(4*i%)
 4019    SYS "Wimp_GetIconState",,IconBlk%
 4020    IconBlk%!8=IconBlk%!8+dx%
 4021    IconBlk%!12=IconBlk%!12+dy%
 4022    IconBlk%!16=IconBlk%!16+dx%
 4023    IconBlk%!20=IconBlk%!20+dy%
 4024    handle%=FNredefineicon(window%,SelBlk%!(4*i%),IconBlk%)
 4025  NEXT i%
 4026ENDIF
 4027ENDPROC
 4028
 4029DEF PROCsupportinterface(switch%)
 4030LOCAL flg%
 4031old%=SupportInterface%
 4032SupportInterface%=switch%
 4033IF switch% THEN
 4034  SYS "XOS_Module",18,"InterfaceManager" TO ;flg%
 4035  IF (flg% AND 1) THEN
 4036    SupportInterface%=FALSE
 4037    PROCdialogue(3,"Interface","")
 4038  ELSE
 4039    PROCsupportaeh(FALSE)
 4040  ENDIF
 4041ENDIF
 4042PROCselecticon(OptPaneW%,9,SupportInterface%)
 4043IF SupportInterface%<>old% THEN PROCredrawall
 4044ENDPROC
 4045
 4046DEF PROCsupportaeh(switch%)
 4047LOCAL old%,flg%
 4048old%=SupportAEH%
 4049SupportAEH%=switch%
 4050IF switch% THEN
 4051  SYS "XOS_Module",18,"AEHModule" TO ;flg%
 4052  IF (flg% AND 1) THEN
 4053    SupportAEH%=FALSE
 4054    PROCdialogue(3,"AEH","")
 4055  ELSE
 4056    PROCsupportinterface(FALSE)
 4057  ENDIF
 4058ENDIF
 4059PROCselecticon(OptPaneW%,10,SupportAEH%)
 4060PROCregisteraeh(SupportAEH%)
 4061IF SupportAEH%<>old% THEN PROCredrawall
 4062ENDPROC
 4063
 4064DEF PROCregisteraeh(switch%)
 4065LOCAL old%,flg%
 4066IF switch% THEN
 4067  IF NOT AEHregistered% THEN
 4068    SYS "XAEH_Register",1 TO ;flg%
 4069    AEHregistered%=((flg% AND 1)<>0)
 4070  ENDIF
 4071ELSE
 4072  IF AEHregistered% THEN
 4073    SYS "XAEH_Register",-1
 4074    AEHregistered%=FALSE
 4075  ENDIF
 4076ENDIF
 4077ENDPROC
 4078
 4079REM --- force the redraw of all open template windows ---
 4080DEF PROCredrawall
 4081LOCAL i%
 4082IF NrTemplates%>0 THEN
 4083  FOR i%=0 TO (NrTemplates%-1)
 4084    Blk%!0=TemplHandle%(i%)
 4085    SYS "Wimp_GetWindowState",,Blk%
 4086    IF (Blk%!32 AND (1<<16)) THEN
 4087      SYS "Wimp_ForceRedraw",-1,Blk%!4,Blk%!8,Blk%!12,Blk%!16
 4088    ENDIF
 4089  NEXT i%
 4090ENDIF
 4091ENDPROC
 4092
 4093DEF PROCsetmainfname(fn$)
 4094MainFName$=fn$
 4095IF ChangesMade% THEN fn$+=" *"
 4096PROCsettitlebar(TemplW%,TemplTbar%,fn$)
 4097ENDPROC
 4098
 4099REM --- set the 'changes made' status ---
 4100DEF PROCsetchanged(switch%)
 4101LOCAL title$
 4102IF ChangesMade%<>switch% THEN
 4103  IF switch% THEN
 4104    title$=$(TemplTbar%)+" *"
 4105  ELSE
 4106    title$=LEFT$($(TemplTbar%),LEN($(TemplTbar%))-2)
 4107  ENDIF
 4108  PROCsettitlebar(TemplW%,TemplTbar%,title$)
 4109  ChangesMade%=switch%
 4110ENDIF
 4111ENDPROC
 4112
 4113REM --- build string with info to send to !Help ---
 4114DEF FNiconhelp(no%,icon%)
 4115LOCAL help$,p%
 4116help$="Template '"+$(TemplNames%+28*no%)
 4117IF icon%>=0 THEN
 4118  help$+="', Icon #"+STR$(icon%)+"|M"
 4119  ScrapBlk%!0=TemplHandle%(no%)
 4120  ScrapBlk%!4=icon%
 4121  SYS "Wimp_GetIconState",,ScrapBlk%
 4122  flags%=ScrapBlk%!24
 4123  CASE (flags% AND 3) OF
 4124    WHEN 0 : help$+="Non-text, non-sprite"
 4125    WHEN 1 : help$+="Text"
 4126    WHEN 2 : help$+="Sprite"
 4127    WHEN 3 : help$+="Text + Sprite"
 4128  ENDCASE
 4129  help$+=" icon, "
 4130  IF (flags% AND &100) THEN
 4131    help$+="Indirected (max. size "+STR$(ScrapBlk%!36)+")|M"
 4132    IF (flags% AND 1) THEN
 4133      IF ScrapBlk%!32=-1 THEN
 4134        help$+="No validation string"
 4135      ELSE
 4136        help$+="Validation string: '"+$(ScrapBlk%!32)+"'"
 4137      ENDIF
 4138    ENDIF
 4139  ELSE
 4140    help$+="Non-indirected|M "
 4141  ENDIF
 4142  help$+="|MButton type: '"+$(IcButton%+20*((flags%>>12)AND &F))
 4143  help$+="', ESG: "+STR$((flags%>>16)AND &1F)
 4144  IF OSversion%>=300 THEN
 4145    REM replace "\" with "\\", else !Help (RiscOS 3) thinks it's a token
 4146    p%=INSTR(help$,"\")
 4147    WHILE p%<>0
 4148      help$=LEFT$(help$,p%)+"\"+MID$(help$,p%+1)
 4149      p%=INSTR(help$,"\",p%+2)
 4150    ENDWHILE
 4151  ENDIF
 4152ELSE
 4153  WinBlk%!0=TemplHandle%(no%)
 4154  SYS "Wimp_GetWindowInfo",,WinBlk%
 4155  help$+="', Window background|MButton type: '"
 4156  help$+=$(WinButton%+20*(((WinBlk%!64)>>12)AND &F))+"'"
 4157ENDIF
 4158=help$
 4159
 4160REM --- schedule the closedown of TemplEd ---
 4161DEF PROCprequit(delayed%)
 4162PollMask%=PollMask% AND(NOT 1)
 4163Quit%=TRUE
 4164IF delayed% THEN
 4165  REM delayed quit is a workaround for bug in RiscOS 3.1
 4166  QuitDeadline%=TIME+60  
 4167ELSE
 4168  QuitDeadline%=TIME
 4169ENDIF
 4170ENDPROC
 4171
 4172REM --- send help-request to StrongHelp, for help on a subject ---
 4173DEF PROCaskhelp(string$)
 4174Blk%!0=256
 4175Blk%!12=0
 4176Blk%!16=&43B00
 4177$(Blk%+20)="Help_Word "+string$+CHR$0
 4178SYS "Wimp_SendMessage",17,Blk%,0
 4179ENDPROC
 4180
 4181REM *** procs for saving templates ***
 4182
 4183DEF PROCsavetemplates(fname$)
 4184LOCAL handle%,offset%,no%
 4185LOCAL ERROR
 4186IF (INSTR(fname$,".")=0) AND (fname$<>"<Wimp$Scrap>") THEN
 4187  PROCcomplain(FNmsg_lookup0("ISLF"))
 4188ELSE
 4189  SYS "Hourglass_On"
 4190  PROCsave_init(fname$,NrTemplates%,handle%,offset%)
 4191  ON ERROR LOCAL CLOSE #handle% : PROCerror(0) : ENDPROC
 4192  FOR no%=0 TO NrTemplates%-1
 4193    IF (NOT SavingSelection%) OR (FNiconselected(TemplW%,no%)) THEN
 4194      PROCsave_template(no%,handle%,offset%)
 4195    ENDIF
 4196  NEXT no%
 4197  PROCsave_finish(handle%,offset%)
 4198  SYS "OS_File",18,fname$,&FEC
 4199  SYS "Hourglass_Off"
 4200  IF fname$=MainFName$ THEN PROCsetchanged(FALSE)
 4201ENDIF
 4202SYS "Wimp_CreateMenu",,-1
 4203IF QuitAfterSave% THEN PROCprequit(1)
 4204ENDPROC
 4205
 4206DEF PROCsave_init(fname$,nrtempl%,RETURN handle%,RETURN offset%)
 4207LOCAL i%
 4208Save_IndexOfs%=16
 4209FOR i%=0 TO FileIndexSize%-1
 4210  FileIndex%?i%=0
 4211NEXT i%
 4212REM set up translation table for font handles -> internal font handles
 4213FOR i%=0 TO 255
 4214  Fra%?i%=0
 4215NEXT i%
 4216Save_NrFonts%=0
 4217FileIndex%!0=-1          : REM no fonts (so far)
 4218offset%=16+nrtempl%*24+4 : REM skip first part of file (index saved later)
 4219handle%=OPENOUT fname$
 4220ENDPROC
 4221
 4222DEF PROCsave_template(no%,handle%,RETURN offset%)
 4223LOCAL nricons%,i%,dataofs%,ib%
 4224FileIndex%!(Save_IndexOfs%)=offset%
 4225FileIndex%!(Save_IndexOfs%+8)=1
 4226$(FileIndex%+Save_IndexOfs%+12)=$(TemplNames%+28*no%)
 4227WinBlk%!0=TemplHandle%(no%)
 4228SYS "Wimp_GetWindowInfo",,WinBlk%
 4229IF PaneFlag%?no% THEN
 4230  WinBlk%!32=WinBlk%!32 OR (1<<5) : REM restore 'Pane' flag
 4231ENDIF
 4232nricons%=WinBlk%!88
 4233dataofs%=88+32*nricons%
 4234WinBlk%!68=1 : REM reset sprite pointer to Wimp area
 4235PROCsave_translate(WinBlk%+60,WinBlk%+76,dataofs%)
 4236IF nricons%>0 THEN
 4237  FOR i%=0 TO nricons%-1
 4238    ib%=WinBlk%+92+i%*32
 4239    PROCsave_translate(ib%+16,ib%+20,dataofs%)
 4240    IF Save_Unselected% THEN
 4241      ib%!16=ib%!16 AND (NOT(1<<21))
 4242    ENDIF
 4243  NEXT i%
 4244ENDIF
 4245SYS "OS_GBPB",1,handle%,WinBlk%+4,88+32*nricons%,offset% TO ,,,,offset%
 4246SYS "Wimp_GetWindowInfo",,WinBlk%
 4247PROCsave_icon(WinBlk%!(60),WinBlk%+76,handle%,offset%)
 4248IF nricons%>0 THEN
 4249  FOR i%=0 TO nricons%-1
 4250    PROCsave_icon(WinBlk%!(92+i%*32+16),WinBlk%+92+i%*32+20,handle%,offset%)
 4251  NEXT i%
 4252ENDIF
 4253FileIndex%!(Save_IndexOfs%+4)=offset%-FileIndex%!(Save_IndexOfs%)
 4254Save_IndexOfs%+=24
 4255ENDPROC
 4256
 4257REM --- translate data in icon block (indirected pointers + font handles) ---
 4258DEF PROCsave_translate(flagptr%,data%,RETURN dataofs%)
 4259LOCAL flags%,sl%,fhandle%,inthandle%
 4260flags%=flagptr%!0
 4261IF (flags% AND (1<<23))>0 THEN
 4262  REM icon has been deleted - fill with default data
 4263  flagptr%!0=&07800001
 4264  $(data%)="<Deleted>"
 4265ELSE
 4266  REM 1. calculate file offset for indirected icon data
 4267  IF (flags% AND &100)=&100 THEN
 4268    CASE (flags% AND 3) OF
 4269      WHEN 0
 4270        data%!0=dataofs%   : REM default data for non-text,non-sprite icon
 4271        dataofs%+=1        : REM empty string, 1 char is terminator
 4272        data%!4=-1
 4273      WHEN 2
 4274        sl%=LEN($(data%!0))
 4275        data%!0=dataofs%
 4276        dataofs%+=sl%+1
 4277        data%!4=1          : REM reset sprite pointer to Wimp area
 4278      WHEN 1,3
 4279        sl%=LEN($(data%!0))
 4280        data%!0=dataofs%
 4281        dataofs%+=sl%+1
 4282        IF data%!4<>-1 THEN
 4283          sl%=LEN($(data%!4))
 4284          data%!4=dataofs%
 4285          dataofs%+=sl%+1
 4286        ENDIF
 4287    ENDCASE
 4288  ENDIF
 4289  REM 2. translate font handle to internal handle
 4290  IF flags% AND (1<<6) THEN
 4291    fhandle%=flags%>>24
 4292    inthandle%=Fra%?fhandle%
 4293    IF inthandle%=0 THEN
 4294      Save_NrFonts%+=1
 4295      inthandle%=Save_NrFonts%
 4296      Fra%?fhandle%=inthandle%
 4297    ENDIF
 4298    flagptr%!0=(flags% AND &FFFFFF) OR (inthandle%<<24)
 4299  ENDIF
 4300ENDIF
 4301ENDPROC
 4302
 4303REM --- save indirected icon data to file ---
 4304DEF PROCsave_icon(flags%,data%,handle%,RETURN offset%)
 4305LOCAL sl%
 4306ScrapBlk%!0=13 : REM temporary buffer for empty string
 4307IF (flags% AND &800100)=&100 THEN
 4308  IF flags% AND 3 THEN
 4309    sl%=LEN($(data%!0))
 4310    SYS "OS_GBPB",1,handle%,data%!0,sl%+1,offset% TO ,,,,offset%
 4311    IF flags% AND 1 THEN
 4312      IF data%!4<>-1 THEN
 4313        sl%=LEN($(data%!4))
 4314        SYS "OS_GBPB",1,handle%,data%!4,sl%+1,offset% TO ,,,,offset%
 4315      ENDIF
 4316    ENDIF
 4317  ELSE
 4318    REM non-text,non-sprite icon - write empty string
 4319    SYS "OS_GBPB",1,handle%,ScrapBlk%,1,offset% TO ,,,,offset%
 4320  ENDIF
 4321ENDIF
 4322ENDPROC
 4323
 4324DEF PROCsave_finish(handle%,offset%)
 4325LOCAL i%,j%
 4326REM save font data
 4327IF Save_NrFonts%>0 THEN
 4328  FileIndex%!0=offset%
 4329  FOR i%=1 TO Save_NrFonts%
 4330    REM find font that got internal handle i%
 4331    j%=0
 4332    WHILE Fra%?j%<>i%
 4333      j%+=1
 4334    ENDWHILE
 4335    SYS "Font_ReadDefn",j%,FontData%+8 TO ,,FontData%!0,FontData%!4
 4336    SYS "OS_GBPB",1,handle%,FontData%,48,offset% TO ,,,,offset%
 4337  NEXT i%
 4338ENDIF
 4339REM save header + index entries
 4340SYS "OS_GBPB",1,handle%,FileIndex%,Save_IndexOfs%+4,0
 4341CLOSE #handle%
 4342ENDPROC
 4343
 4344REM *** procs for loading and deleting user templates ***
 4345
 4346DEF PROCtempl_add(name$,wblk%,setextent%)
 4347LOCAL no%,nameptr%,spptr%,i%
 4348IF NrTemplates%=MaxTemplates% THEN
 4349  PROCcomplain(FNmsg_lookup0("MTPX"))
 4350ELSE
 4351  no%=NrTemplates%
 4352  PaneFlag%?no%=(wblk%!32) AND (1<<5)
 4353  wblk%!32=(wblk%!32) AND NOT(1<<5)
 4354  SYS "Wimp_CreateWindow",,wblk%+4 TO TemplHandle%(no%)
 4355  NrTemplates%+=1
 4356  ScrapBlk%!0=TemplW%
 4357  ScrapBlk%!4=8+TemplW_IconX%*(no% MOD TemplW_Cols%)
 4358  ScrapBlk%!12=(ScrapBlk%!4)+(TemplW_IconX%-8)-16*(11-LEN(name$))
 4359  ScrapBlk%!16=-8-TemplW_IconY%*(no% DIV TemplW_Cols%)
 4360  ScrapBlk%!8=(ScrapBlk%!16)-(TemplW_IconY%-8)
 4361  ScrapBlk%!20=TemplW_IconFlags%
 4362  nameptr%=TemplNames%+28*no%
 4363  $(nameptr%)=name$
 4364  ScrapBlk%!24=nameptr%
 4365  spptr%=TemplNames%+28*no%+14
 4366  $(spptr%)=FNwindowicon(wblk%!32,0)
 4367  ScrapBlk%!28=spptr%
 4368  ScrapBlk%!32=16
 4369  SYS "Wimp_CreateIcon",,ScrapBlk%
 4370  IF NOT DuplNames% THEN
 4371    i%=0
 4372    WHILE $(TemplNames%+28*i%)<>name$
 4373      i%+=1
 4374    ENDWHILE
 4375    IF i%<no% THEN PROCtempl_delete(i%)
 4376  ENDIF
 4377  IF setextent% THEN PROCsetextent
 4378  PROCseticonstate0(TemplW%,NrTemplates%-1,0,0)
 4379ENDIF
 4380ENDPROC
 4381
 4382DEF PROCtempl_deleteall
 4383LOCAL i%
 4384SYS "Hourglass_On"
 4385IF NrTemplates%>0 THEN
 4386  FOR i%=NrTemplates%-1 TO 0 STEP -1
 4387    PROCtempl_delete(i%)
 4388  NEXT i%
 4389ENDIF
 4390PROCsetmainfname("Templates")
 4391PROCsetchanged(FALSE)
 4392SYS "Hourglass_Off"
 4393ENDPROC
 4394
 4395DEF PROCtempl_delete(no%)
 4396LOCAL i%,j%,wasopen%,oldhandle%
 4397oldhandle%=TemplHandle%(no%)
 4398WinBlk%!0=oldhandle%
 4399SYS "Wimp_GetWindowInfo",,WinBlk%
 4400PROCiconrelease(WinBlk%!60,WinBlk%+76)
 4401IF WinBlk%!88>0 THEN
 4402  FOR i%=0 TO (WinBlk%!88-1)
 4403    PROCiconrelease(WinBlk%!(92+i%*32+16),WinBlk%+92+i%*32+20)
 4404  NEXT i%
 4405ENDIF
 4406SYS "Wimp_DeleteWindow",,WinBlk%
 4407REM update browser window
 4408WinBlk%!0=TemplW%
 4409SYS "Wimp_GetWindowInfo",,WinBlk%
 4410wasopen%=(WinBlk%!32) AND (1<<16)
 4411IF no%<(NrTemplates%-1) THEN
 4412  REM move data for icons after the one that is deleted
 4413  FOR i%=no% TO NrTemplates%-2
 4414    ib%=WinBlk%+92+32*i%
 4415    FOR j%=0 TO 16 STEP 4
 4416      ib%!j%=ib%!(j%+32)
 4417    NEXT j%
 4418    TemplHandle%(i%)=TemplHandle%(i%+1)
 4419    $(TemplNames%+28*i%)=$(TemplNames%+28*(i%+1))
 4420    $(TemplNames%+28*i%+14)=$(TemplNames%+28*(i%+1)+14)
 4421  NEXT i%
 4422ENDIF
 4423WinBlk%!88=WinBlk%!88-1
 4424SYS "Wimp_DeleteWindow",,WinBlk%
 4425SYS "Wimp_CreateWindow",,WinBlk%+4 TO TemplW%
 4426NrTemplates%-=1
 4427PROCsetchanged(NrTemplates%>0)
 4428PROCredefinebrowser(0)
 4429IF wasopen% THEN
 4430  WinBlk%!0=TemplW%
 4431  SYS "Wimp_GetWindowInfo",,WinBlk%
 4432  SYS "Wimp_OpenWindow",,WinBlk%
 4433ENDIF
 4434IF oldhandle%=IcEd_Win% THEN PROCclosewindow(IcEdW%)
 4435IF oldhandle%=WinEd_Win% THEN PROCclosewindow(WinEdW%)
 4436IF oldhandle%=LastMenu_Win% THEN LastMenu_Win%=-1
 4437IF NrTemplates%=0 THEN PROCclosewindow(StatW%)
 4438ENDPROC
 4439
 4440REM --- adapt extent of browser window to number of templates ---
 4441DEF PROCsetextent
 4442LOCAL nrrows%,xsize%,titlesize%
 4443nrrows%=1+((NrTemplates%-1) DIV TemplW_Cols%)
 4444IF nrrows%<2 THEN nrrows%=2
 4445IF NrTemplates%=0 THEN
 4446  xsize%=8+TemplW_IconX%
 4447ELSE
 4448  IF NrTemplates% < TemplW_MaxCol% THEN
 4449    xsize%=8+NrTemplates%*TemplW_IconX%
 4450  ELSE
 4451    xsize%=8+TemplW_MaxCol%*TemplW_IconX%
 4452  ENDIF
 4453ENDIF
 4454titlesize%=128+16*LEN($(TemplTbar%))
 4455IF xsize%<titlesize% THEN xsize%=titlesize%
 4456ScrapBlk%!0=0
 4457ScrapBlk%!4=-8-TemplW_IconY%*nrrows%
 4458ScrapBlk%!8=xsize%
 4459ScrapBlk%!12=0
 4460SYS "Wimp_SetExtent",TemplW%,ScrapBlk%
 4461ENDPROC
 4462
 4463REM --- move icons in browser window to adapt to new window size ---
 4464DEF PROCredefinebrowser(reopen%)
 4465LOCAL wasopen%,i%,ib%,xsize%,ysize%
 4466WinBlk%!0=TemplW%
 4467SYS "Wimp_GetWindowInfo",,WinBlk%
 4468wasopen%=(WinBlk%!32) AND (1<<16)
 4469IF WinBlk%!88>0 THEN
 4470  FOR i%=0 TO (WinBlk%!88-1)
 4471    ib%=WinBlk%+92+32*i%
 4472    xsize%=(TemplW_IconX%-8)-16*(11-LEN($(TemplNames%+i%*28)))
 4473    ysize%=ib%!12-ib%!4
 4474    ib%!0=8+TemplW_IconX%*(i% MOD TemplW_Cols%)
 4475    ib%!8=(ib%!0)+xsize%
 4476    ib%!12=-8-TemplW_IconY%*(i% DIV TemplW_Cols%)
 4477    ib%!4=(ib%!12)-ysize%
 4478  NEXT i%
 4479ENDIF
 4480SYS "Wimp_DeleteWindow",,WinBlk%
 4481SYS "Wimp_CreateWindow",,WinBlk%+4 TO TemplW%
 4482PROCsetextent
 4483IF reopen% AND wasopen% THEN
 4484  WinBlk%!0=TemplW%
 4485  SYS "Wimp_GetWindowInfo",,WinBlk%
 4486  REM adapt scroll offsets if visible area exceeds work area
 4487  IF (WinBlk%!20+(WinBlk%!12-WinBlk%!4))>WinBlk%!52 THEN
 4488    WinBlk%!20=WinBlk%!52-(WinBlk%!12-WinBlk%!4)
 4489    IF WinBlk%!20<0 THEN
 4490      WinBlk%!12=WinBlk%!12+WinBlk%!20
 4491      WinBlk%!20=0
 4492    ENDIF
 4493  ENDIF
 4494  IF (WinBlk%!24-(WinBlk%!16-WinBlk%!8))<WinBlk%!48 THEN
 4495    WinBlk%!24=WinBlk%!48+(WinBlk%!16-WinBlk%!8)
 4496    IF WinBlk%!24>0 THEN
 4497      WinBlk%!8=WinBlk%!8+WinBlk%!24
 4498      WinBlk%!20=0
 4499    ENDIF
 4500  ENDIF
 4501  SYS "Wimp_OpenWindow",,WinBlk%
 4502ENDIF
 4503ENDPROC
 4504
 4505DEF PROCtempl_loadfile(fname$,loadsprites%)
 4506LOCAL i%,nr%,name$,handle%,ip%,indirbuf%,sname$
 4507SYS "Hourglass_On"
 4508FOR i%=0 TO 255
 4509  IF FontUsage%(i%)>0 THEN
 4510    REM font in use - make for extra call to Font_LoseFont at end of proc
 4511    Fra%?i%=1
 4512  ELSE
 4513    Fra%?i%=0
 4514  ENDIF
 4515NEXT i%
 4516IF NrTemplates%=0 THEN
 4517  IF fname$="<Wimp$Scrap>" THEN
 4518    PROCsetmainfname(NewLeafName$)
 4519  ELSE
 4520    PROCsetmainfname(fname$)
 4521  ENDIF
 4522ENDIF
 4523IF loadsprites% AND (FNleafname(fname$)="Templates") THEN
 4524  sname$=FNdirname(fname$)+".Sprites"
 4525  IF FNfileexists(sname$) THEN
 4526    PROCloadusersprites(sname$)
 4527  ENDIF
 4528ENDIF
 4529indirbuf%=FNheap_get(MaxIndirSize%)
 4530IF indirbuf%>0 THEN
 4531  handle%=OPENIN fname$
 4532  IF handle%>0 THEN
 4533    REM read index of template file to check for oversized templates
 4534    SYS "OS_GBPB",3,handle%,FileIndex%,FileIndexSize%,0
 4535    CLOSE #handle%
 4536    SYS "Wimp_OpenTemplate",,fname$
 4537    ip%=FileIndex%+24
 4538    nr%=0
 4539    REPEAT
 4540      IF ip%!0>MaxTemplateSize% THEN
 4541        PROCcomplain(FNmsg_lookup1("TTLB",$(ip%+12)))
 4542      ELSE
 4543        PROCtempl_load(nr%,name$,indirbuf%,MaxIndirSize%)
 4544        IF nr%>0 THEN
 4545          PROCtempl_add(name$,WinBlk%,0)
 4546        ENDIF
 4547      ENDIF
 4548      ip%+=24
 4549    UNTIL (nr%<=0) OR (NrTemplates%=MaxTemplates%)
 4550    SYS "Wimp_CloseTemplate"
 4551    IF fname$="<Wimp$Scrap>" THEN
 4552      SYS "OS_File",6,fname$ : REM delete Wimp$Scrap file after reading
 4553    ENDIF
 4554    PROCheap_release(indirbuf%)
 4555    PROCsetextent
 4556  ENDIF
 4557ENDIF
 4558FOR i%=0 TO 255
 4559  REM neutralise calls of Font_FindFont done by Wimp_LoadTemplate
 4560  WHILE Fra%?i%>1
 4561    SYS "Font_LoseFont",i%
 4562    Fra%?i%-=1
 4563  ENDWHILE
 4564NEXT i%
 4565SYS "Hourglass_Off"
 4566PROCopenwindow(TemplW%,3)
 4567IF IcInfo_Active% THEN PROCopenwindow(IcInfoW%,4)
 4568ENDPROC
 4569
 4570DEF PROCtempl_load(RETURN nr%,RETURN n$,p%,psize%)
 4571LOCAL dx%,dy%,icon%,tb%,ib%
 4572LOCAL ERROR
 4573ON ERROR LOCAL SYS "Wimp_CloseTemplate" : PROCerror(0) : nr%=0 : ENDPROC
 4574n$="*"+STRING$(11,CHR$0) : REM name length must be 12
 4575SYS "Wimp_LoadTemplate",,WinBlk%+4,p%,p%+psize%,Fra%,n$,nr% TO ,,,,,n$,nr%
 4576IF nr%>0 THEN
 4577  REM make sure window origin position is within current screen size
 4578  dx%=0
 4579  dy%=0
 4580  IF WinBlk%!4<0 THEN dx%=-WinBlk%!4
 4581  IF WinBlk%!8<0 THEN dy%=-WinBlk%!8
 4582  IF WinBlk%!12>ScreenSize_X% THEN dx%=ScreenSize_X%-WinBlk%!12
 4583  IF WinBlk%!16>(ScreenSize_Y%-44) THEN dy%=ScreenSize_Y%-44-WinBlk%!16
 4584  WinBlk%!4=WinBlk%!4+dx%
 4585  WinBlk%!8=WinBlk%!8+dy%
 4586  WinBlk%!12=WinBlk%!12+dx%
 4587  WinBlk%!16=WinBlk%!16+dy%
 4588  WinBlk%!68=UserSprites% : REM set sprite area (CBP pointer)
 4589  REM re-allocate indirected data, each field in a separate heap block
 4590  IF WinBlk%!32 AND (1<<31) THEN
 4591    tb%=WinBlk%!32 AND (1<<26)
 4592  ELSE
 4593    tb%=WinBlk%!32 AND (1<<0)
 4594  ENDIF
 4595  IF tb% THEN
 4596    PROCiconrealloc(WinBlk%+60,WinBlk%+76) : REM realloc title bar icon
 4597    PROCicon_setspritearea(WinBlk%!60,WinBlk%+76,UserSprites%)
 4598  ELSE
 4599    REM no title bar: fill data with default
 4600    WinBlk%!60=&3D
 4601    $(WinBlk%+76)="<Untitled>"
 4602  ENDIF
 4603  IF (WinBlk%!88)>0 THEN
 4604    FOR icon%=0 TO (WinBlk%!88)-1
 4605      ib%=WinBlk%+92+icon%*32
 4606      PROCiconrealloc(ib%+16,ib%+20)
 4607      REM set sprite pointers (indirected sprite-only icons)
 4608      PROCicon_setspritearea(ib%!16,ib%+20,UserSprites%)
 4609    NEXT icon%
 4610  ENDIF
 4611ENDIF
 4612ENDPROC
 4613
 4614REM --- sort templates on names (case-insensitive) ---
 4615DEF PROCtempl_sort
 4616LOCAL i%,j%,index%,candidate%,candname$,name$
 4617i%=0 : REM first <i%> templates are sorted
 4618WHILE i%<(NrTemplates%-1)
 4619  REM find template with lowest name
 4620  candidate%=i%
 4621  candname$=FNupcase($(TemplNames%+i%*28))
 4622  FOR j%=i%+1 TO (NrTemplates%-1)
 4623    name$=FNupcase($(TemplNames%+j%*28))
 4624    IF name$<candname$ THEN
 4625      candidate%=j%
 4626      candname$=name$
 4627    ENDIF
 4628  NEXT j%
 4629  REM swap template data
 4630  FOR j%=0 TO (28-4) STEP 4
 4631    SWAP TemplNames%!(i%*28+j%),TemplNames%!(candidate%*28+j%)
 4632  NEXT j%
 4633  SWAP TemplHandle%(i%),TemplHandle%(candidate%)
 4634  SWAP PaneFlag%?i%,PaneFlag%?candidate%
 4635  i%+=1
 4636ENDWHILE
 4637ENDPROC
 4638
 4639REM *** procs for reading and sorting selections ***
 4640
 4641REM --- get list of selected icons and count them ---
 4642DEF PROCsel_get(window%)
 4643SYS "Wimp_WhichIcon",window%,SelBlk%,(1<<21)+(1<<23),1<<21
 4644NrSelected%=0
 4645WHILE SelBlk%!(4*NrSelected%)<>-1
 4646  NrSelected%+=1
 4647ENDWHILE
 4648ENDPROC
 4649
 4650REM --- select all icons ---
 4651DEF PROCsel_all(window%)
 4652LOCAL i%
 4653REM get all icons that are not selected nor deleted
 4654SYS "Wimp_WhichIcon",window%,SelBlk%,(1<<21)+(1<<23),0
 4655i%=0
 4656WHILE SelBlk%!i%<>-1
 4657  PROCselecticon(window%,SelBlk%!i%,1)
 4658  i%+=4
 4659ENDWHILE
 4660ENDPROC
 4661
 4662REM --- unselect all icons (except, maybe, for one icon) ---
 4663DEF PROCsel_clear(window%,except%)
 4664LOCAL i%
 4665SYS "Wimp_WhichIcon",window%,SelBlk%,1<<21,1<<21
 4666i%=0
 4667WHILE SelBlk%!i%<>-1
 4668  IF SelBlk%!i%<>except% THEN PROCselecticon(window%,SelBlk%!i%,0)
 4669  i%+=4
 4670ENDWHILE
 4671NrSelected%=0
 4672ENDPROC
 4673
 4674REM --- sort icon selection (assumes selection present in SelBlk%) ---
 4675DEF PROCsel_sort(window%,key1%,max1%,dir1%,key2%,max2%,dir2%)
 4676REM if key=0 then sort on horizontal coordinates, else vertical
 4677REM if max=0 then sort on minimum coordinates, else maximum
 4678REM if dir=0 then sort in descending order, else ascending
 4679LOCAL i%,j%,index1%,index2%,ib%
 4680LOCAL value1%,value2%,candidate%,bestsofar1%,bestsofar2%,better%
 4681i%=0 : REM first <i%> icons in selection are sorted
 4682IF key1%=0 THEN
 4683  index1%=0
 4684ELSE
 4685  index1%=4
 4686ENDIF
 4687IF max1% THEN index1%+=8
 4688IF key2%=0 THEN
 4689  index2%=0
 4690ELSE
 4691  index2%=4
 4692ENDIF
 4693IF max2% THEN index2%+=8
 4694WinBlk%!0=window%
 4695SYS "Wimp_GetWindowInfo",,WinBlk%
 4696WHILE i%<(NrSelected%-1)
 4697  REM find icon with smallest/highest value for coordinate
 4698  candidate%=i%
 4699  ib%=WinBlk%+92+32*(SelBlk%!(4*i%))
 4700  bestsofar1%=ib%!(index1%)
 4701  bestsofar2%=ib%!(index2%)
 4702  FOR j%=i%+1 TO (NrSelected%-1)
 4703    ib%=WinBlk%+92+32*(SelBlk%!(4*j%))
 4704    value1%=ib%!(index1%)
 4705    value2%=ib%!(index2%)
 4706    IF bestsofar1%=value1% THEN
 4707      REM look at second sort key
 4708      IF dir2% THEN
 4709        better%=(value2%<bestsofar2%)
 4710      ELSE
 4711        better%=(value2%>bestsofar2%)
 4712      ENDIF
 4713    ELSE
 4714      IF dir1% THEN
 4715        better%=(value1%<bestsofar1%) : REM looking for lowest value
 4716      ELSE
 4717        better%=(value1%>bestsofar1%) : REM looking for highest value
 4718      ENDIF
 4719    ENDIF
 4720    IF better% THEN
 4721      candidate%=j%
 4722      bestsofar1%=value1%
 4723      bestsofar2%=value2%
 4724    ENDIF
 4725  NEXT j%
 4726  REM swap icons in selection sequence
 4727  SWAP SelBlk%!(4*candidate%),SelBlk%!(4*i%)
 4728  i%+=1
 4729ENDWHILE
 4730ENDPROC
 4731
 4732REM --- calculate coords of box surrounding selected icons ---
 4733DEF PROCsel_box(window%,RETURN xmin%,RETURN ymin%,RETURN xmax%,RETURN ymax%)
 4734REM assume selection present in SelBlk%
 4735LOCAL i%
 4736ScrapBlk%!0=window%
 4737ScrapBlk%!4=SelBlk%!0
 4738SYS "Wimp_GetIconState",,ScrapBlk%
 4739xmin%=ScrapBlk%!8
 4740ymin%=ScrapBlk%!12
 4741xmax%=ScrapBlk%!16
 4742ymax%=ScrapBlk%!20
 4743FOR i%=0 TO NrSelected%-1
 4744  ScrapBlk%!4=SelBlk%!(4*i%)
 4745  SYS "Wimp_GetIconState",,ScrapBlk%
 4746  IF xmin%>ScrapBlk%!8 THEN xmin%=ScrapBlk%!8
 4747  IF ymin%>ScrapBlk%!12 THEN ymin%=ScrapBlk%!12
 4748  IF xmax%<ScrapBlk%!16 THEN xmax%=ScrapBlk%!16
 4749  IF ymax%<ScrapBlk%!20 THEN ymax%=ScrapBlk%!20
 4750NEXT i%
 4751ENDPROC
 4752
 4753REM *** setup procs ***
 4754
 4755DEF PROCsetup_default
 4756IcInfo_Active%=TRUE
 4757DuplNames%=TRUE
 4758Hatch%=TRUE
 4759SupportInterface%=FALSE
 4760Grid_SizeLock%=TRUE
 4761Grid_SizeX%=2
 4762Grid_SizeY%=4
 4763Grid_PosLock%=FALSE
 4764Grid_PosX%=2
 4765Grid_PosY%=4
 4766Save_Unselected%=FALSE
 4767DeleteOutside%=FALSE
 4768TrapDclick%=TRUE
 4769SupportAEH%=FALSE
 4770ENDPROC
 4771
 4772DEF PROCsetup_load
 4773LOCAL f%
 4774LOCAL ERROR
 4775f%=OPENIN (ApplDir$+".Options")
 4776IF f%=0 THEN
 4777  PROCdialogue(5,"","")
 4778  PROCsetup_default
 4779ELSE
 4780  ON ERROR LOCAL CLOSE #f% : PROCerror(0) : PROCsetup_default : ENDPROC
 4781  INPUT#f%,IcInfo_Active%,DuplNames%,Hatch%,SupportInterface%
 4782  INPUT#f%,Grid_SizeLock%,Grid_SizeX%,Grid_SizeY%
 4783  INPUT#f%,Grid_PosLock%,Grid_PosX%,Grid_PosY%
 4784  INPUT#f%,Save_Unselected%,DeleteOutside%,TrapDclick%,SupportAEH%
 4785  CLOSE #f%
 4786ENDIF
 4787ENDPROC
 4788
 4789DEF PROCsetup_save
 4790LOCAL f%
 4791LOCAL ERROR
 4792f%=OPENOUT (ApplDir$+".Options")
 4793ON ERROR LOCAL IF f%<>0 THEN CLOSE #f% : PROCerror(0) : ENDPROC
 4794PRINT#f%,IcInfo_Active%,DuplNames%,Hatch%,SupportInterface%
 4795PRINT#f%,Grid_SizeLock%,Grid_SizeX%,Grid_SizeY%
 4796PRINT#f%,Grid_PosLock%,Grid_PosX%,Grid_PosY%
 4797PRINT#f%,Save_Unselected%,DeleteOutside%,TrapDclick%,SupportAEH%
 4798CLOSE #f%
 4799ENDPROC
 4800
 4801REM *** procs for statistics window ***
 4802
 4803DEF PROCstat_fillwin
 4804LOCAL type%,wasopen%,ysize%,maxwdef%,totindsize%,i%,wdef%,indsize%,j%,ib%
 4805SYS "Hourglass_On"
 4806PROCsel_get(StatW%)
 4807IF SelBlk%!0=2 THEN
 4808  type%=2 : REM numbers in hexadecimal
 4809ELSE
 4810  type%=1 : REM decimal
 4811ENDIF
 4812WinBlk%!0=StatW%
 4813SYS "Wimp_GetWindowInfo",,WinBlk%
 4814wasopen%=(WinBlk%!32) AND (1<<16)
 4815SYS "Wimp_DeleteWindow",,WinBlk%
 4816WinBlk%!88=15
 4817ysize%=204+NrTemplates%*40 : REM set extent
 4818WinBlk%!8=WinBlk%!16-WinBlk%!24-ysize%
 4819WinBlk%!48=-ysize%
 4820SYS "Wimp_CreateWindow",,WinBlk%+4 TO StatW%
 4821WinBlk%!0=StatW%
 4822PROClinkicontext(25,WinBlk%,5) : REM number of templates
 4823PROClinkicontext(22,WinBlk%,7) : REM largest window definition
 4824PROClinkicontext(23,WinBlk%,9) : REM total size of indirected data
 4825maxwdef%=0
 4826totindsize%=0
 4827FOR i%=0 TO NrTemplates%-1
 4828  WinBlk%!0=TemplHandle%(i%)
 4829  SYS "Wimp_GetWindowInfo",,WinBlk%
 4830  wdef%=88+32*WinBlk%!88
 4831  indsize%=FNstat_calcindirsize(WinBlk%!60,WinBlk%+76)
 4832  IF WinBlk%!88>0 THEN
 4833    FOR j%=0 TO (WinBlk%!88-1)
 4834      ib%=WinBlk%+92+32*j%
 4835      indsize%+=FNstat_calcindirsize(ib%!16,ib%+20)
 4836    NEXT j%
 4837  ENDIF
 4838  PROCstat_createicon(10,$(TemplNames%+i%*28),i%)
 4839  PROCstat_createicon(11,FNstat_num2str(WinBlk%!88,type%),i%)
 4840  PROCstat_createicon(12,FNstat_num2str(wdef%,type%),i%)
 4841  PROCstat_createicon(13,FNstat_num2str(indsize%,type%),i%)
 4842  PROCstat_createicon(14,FNstat_num2str(wdef%+indsize%,type%),i%)
 4843  wdef%+=indsize%
 4844  IF maxwdef%<wdef% THEN maxwdef%=wdef%
 4845  totindsize%+=indsize%
 4846NEXT i%
 4847PROCseticontext(25,STR$(NrTemplates%))
 4848PROCseticontext(22,FNstat_num2str(maxwdef%,type%))
 4849PROCseticontext(23,FNstat_num2str(totindsize%,type%))
 4850IF wasopen% THEN
 4851  PROCopenwindow(StatW%,0)
 4852ELSE
 4853  PROCopenwindow(StatW%,1)
 4854ENDIF
 4855SYS "Hourglass_Off"
 4856ENDPROC
 4857
 4858REM --- calculate size of indirected data needed for an icon ---
 4859DEF FNstat_calcindirsize(flags%,data%)
 4860LOCAL size%
 4861IF (flags% AND &800100)=&100 THEN
 4862  size%=data%!8
 4863  IF (flags% AND 1) AND (data%!4<>-1) THEN
 4864    size%=size%+LEN($(data%!4))+1
 4865  ENDIF
 4866ELSE
 4867  size%=0
 4868ENDIF
 4869=size%
 4870
 4871REM --- create an icon in the stats window ---
 4872DEF PROCstat_createicon(copyfrom%,s$,line%)
 4873ScrapBlk%!0=StatW%
 4874ScrapBlk%!4=copyfrom%
 4875SYS "Wimp_GetIconState",,ScrapBlk%
 4876REM create icon that is identical, except for string, colours and Y coord
 4877ScrapBlk%!12=ScrapBlk%!12-4-40*(line%+1)
 4878ScrapBlk%!20=ScrapBlk%!12+40
 4879ScrapBlk%!24=(ScrapBlk%!24 AND &FFFFFF) OR &18000000
 4880ScrapBlk%!24=ScrapBlk%!24 AND (NOT &100) : REM icon must be not-indirected
 4881$(ScrapBlk%+28)=s$
 4882ScrapBlk%!4=StatW%
 4883SYS "Wimp_CreateIcon",,ScrapBlk%+4
 4884ENDPROC
 4885
 4886REM --- convert a number to a string (hex or decimal) ---
 4887DEF FNstat_num2str(num%,type%)
 4888LOCAL s$
 4889IF type%=1 THEN
 4890  s$=STR$(num%)
 4891ELSE
 4892  s$="&"+STR$~(num%)
 4893ENDIF
 4894=s$
 4895
 4896REM *** procs for handling outline fonts ***
 4897
 4898DEF PROCfont_lose(font%)
 4899FontUsage%(font%)-=1
 4900IF FontUsage%(font%)=0 THEN
 4901  SYS "Font_LoseFont",font%
 4902ENDIF
 4903ENDPROC
 4904
 4905DEF PROCfont_loseall
 4906LOCAL i%,j%
 4907FOR i%=0 TO 255
 4908  IF FontUsage%(i%)<>0 THEN
 4909    SYS "Font_LoseFont",i%
 4910  ENDIF
 4911NEXT i%
 4912ENDPROC
 4913
 4914REM --- get font name and size from a font handle ---
 4915DEF PROCfont_getinfo(fhandle%,RETURN name$,RETURN xsize,RETURN ysize)
 4916LOCAL xsize16%,ysize16%
 4917SYS "Font_ReadDefn",fhandle%,FontData% TO ,,xsize16%,ysize16%
 4918name$=$(FontData%)
 4919xsize=xsize16%/16
 4920ysize=ysize16%/16
 4921ENDPROC
 4922
 4923REM *** procs for creating icons in user templates ***
 4924
 4925REM --- build the 'Create icon' submenu ---
 4926DEF PROCstandardiconmenu
 4927LOCAL i%
 4928REM get list of "name" icons (ESG=31)
 4929SYS "Wimp_WhichIcon",StdIconW%,SelBlk%,31<<16,31<<16
 4930NrStdIcons%=0
 4931WHILE SelBlk%!(4*NrStdIcons%)<>-1
 4932  NrStdIcons%+=1
 4933ENDWHILE
 4934IF NrStdIcons%=0 THEN
 4935  StdIconMenu%=-1
 4936ELSE
 4937  SYS "MenuUtil_New",,"Create icon" TO StdIconMenu%
 4938  ScrapBlk%!0=StdIconW%
 4939  FOR i%=0 TO NrStdIcons%-1
 4940    ScrapBlk%!4=SelBlk%!(4*i%)
 4941    SYS "Wimp_GetIconState",,ScrapBlk%
 4942    SYS "MenuUtil_Add",,ScrapBlk%!28
 4943  NEXT i%
 4944ENDIF
 4945ENDPROC
 4946
 4947DEF PROCcreatestandardicon(name$,window%,xpos%,ypos%)
 4948LOCAL i%,j%,last%,dx%,dy%,handle%
 4949REM scan "name" icons to check which was chosen
 4950SYS "Wimp_WhichIcon",StdIconW%,SelBlk%,31<<16,31<<16
 4951ScrapBlk%!0=StdIconW%
 4952i%=0
 4953REPEAT
 4954  j%=SelBlk%!(4*i%)
 4955  ScrapBlk%!4=j%
 4956  SYS "Wimp_GetIconState",,ScrapBlk%
 4957  i%+=1
 4958UNTIL ($(ScrapBlk%!28)=name$) OR (SelBlk%!(4*i%)=-1)
 4959REM copy all icons until next "name" icon
 4960IF SelBlk%!(4*i%)=-1 THEN
 4961  last%=LastStdIcon%
 4962ELSE
 4963  last%=SelBlk%!(4*i%)-1
 4964ENDIF
 4965j%+=1
 4966ScrapBlk%!0=StdIconW%
 4967ScrapBlk%!4=j%
 4968SYS "Wimp_GetIconState",,ScrapBlk%
 4969dx%=xpos%-ScrapBlk%!8 
 4970dy%=ypos%-ScrapBlk%!12
 4971WHILE j%<=last%
 4972  ScrapBlk%!0=StdIconW%
 4973  ScrapBlk%!4=j%
 4974  SYS "Wimp_GetIconState",,ScrapBlk%
 4975  ScrapBlk%!4=window%
 4976  ScrapBlk%!8=ScrapBlk%!8+dx%
 4977  ScrapBlk%!12=ScrapBlk%!12+dy%
 4978  ScrapBlk%!16=ScrapBlk%!16+dx%
 4979  ScrapBlk%!20=ScrapBlk%!20+dy%
 4980  PROCiconrealloc(ScrapBlk%+24,ScrapBlk%+28)
 4981  handle%=FNcreateicon(ScrapBlk%+4)
 4982  j%+=1
 4983ENDWHILE
 4984ENDPROC
 4985
 4986REM *** procs for calculating & setting the minimum size of an icon ***
 4987
 4988DEF PROCminimizeiconsel(window%,default%,dim%)
 4989LOCAL i%,xsize%,ysize%,handle%
 4990PROCsel_get(window%)
 4991IF (NrSelected%=0) AND (default%>=0) THEN
 4992  SelBlk%!0=default%
 4993  NrSelected%=1
 4994ENDIF
 4995IF NrSelected%>0 THEN
 4996  FOR i%=0 TO NrSelected%-1
 4997    PROCminiconsize(window%,SelBlk%!(4*i%),xsize%,ysize%)
 4998    IconBlk%!0=window%
 4999    IconBlk%!4=SelBlk%!(4*i%)
 5000    SYS "Wimp_GetIconState",,IconBlk%
 5001    IF dim%<>2 THEN IconBlk%!16=IconBlk%!8+xsize%
 5002    IF dim%<>1 THEN IconBlk%!20=IconBlk%!12+ysize%
 5003    handle%=FNredefineicon(window%,SelBlk%!(4*i%),IconBlk%)
 5004  NEXT i%
 5005ENDIF
 5006ENDPROC
 5007
 5008DEF PROCminiconsize(window%,icon%,RETURN minx%,RETURN miny%)
 5009LOCAL sparea%,flags%,data%,text%,sprite%,indir%
 5010LOCAL sminx%,sminy%,tminx%,tminy%,p%,val$,sname$,t$
 5011LOCAL xmin%,ymin%,xmax%,ymax%
 5012LOCAL l$,lspace%,lines%,b$
 5013WinBlk%!0=window%
 5014SYS "Wimp_GetWindowInfo",,WinBlk%
 5015sparea%=WinBlk%!68
 5016ScrapBlk%!0=window%
 5017ScrapBlk%!4=icon%
 5018SYS "Wimp_GetIconState",,ScrapBlk%
 5019flags%=ScrapBlk%!24
 5020data%=ScrapBlk%+28
 5021text%=(flags% AND 1)>0
 5022sprite%=(flags% AND 2)>0
 5023indir%=(flags% AND &100)>0
 5024IF indir% AND text% AND (data%!4<>-1) THEN
 5025  val$=$(data%!4)
 5026ENDIF
 5027IF sprite% THEN
 5028  IF indir% THEN
 5029    IF text% THEN
 5030      REM search validation string for sprite name
 5031      sname$=FNvalidationcommand(val$,"S")
 5032      p%=INSTR(sname$,",")
 5033      IF p%>0 THEN
 5034        sname$=MID$(sname$,2,p%-2)
 5035      ELSE
 5036        sname$=MID$(sname$,2)
 5037      ENDIF
 5038    ELSE
 5039      sname$=$(data%!0)
 5040      sparea%=data%!4
 5041    ENDIF
 5042  ELSE
 5043    sname$=$(data%)
 5044  ENDIF
 5045  IF LEN(sname$)>0 THEN PROCspritesize(sname$,sparea%,sminx%,sminy%)
 5046ENDIF
 5047IF text% THEN
 5048  IF indir% THEN
 5049    t$=$(data%!0)
 5050  ELSE
 5051    t$=$(data%)
 5052  ENDIF
 5053  IF flags% AND (1<<6) THEN
 5054    REM calc size of string printed as outline font
 5055    SYS "Font_SetFont",(flags%>>24)
 5056    SYS "Font_StringBBox",,t$ TO ,xmin%,ymin%,xmax%,ymax%
 5057    SYS "Font_ConverttoOS",,xmax%-xmin%,ymax%-ymin% TO ,tminx%,tminy%
 5058    tminx%+=2*PixToOS_X%
 5059    tminy%+=2*PixToOS_Y%
 5060  ELSE
 5061    tminx%=16*LEN(t$)+4 : REM system font
 5062    tminy%=32
 5063  ENDIF
 5064  l$=FNvalidationcommand(val$,"L")
 5065  IF LEN(l$)>0 THEN
 5066    REM multi-line text - calc Y size, X size fixed
 5067    lspace%=VAL(MID$(l$,2))
 5068    IF lspace%=0 THEN lspace%=40
 5069    lines%=(tminx%-1) DIV (ScrapBlk%!16-ScrapBlk%!8)
 5070    tminx%=ScrapBlk%!16-ScrapBlk%!8
 5071    tminy%=lspace%*(lines%+1)
 5072  ENDIF
 5073  IF LEN(t$)=0 THEN
 5074    tminx%=ScrapBlk%!16-ScrapBlk%!8 : REM empty string - don't change X size
 5075  ENDIF
 5076ENDIF
 5077IF flags% AND (1<<4) THEN
 5078  minx%=sminx%+tminx%
 5079  IF text% AND sprite% THEN minx%+=6
 5080  IF sminy%>tminy% THEN miny%=sminy% ELSE miny%=tminy%
 5081ELSE
 5082  IF sminx%>tminx% THEN minx%=sminx% ELSE minx%=tminx%
 5083  miny%=sminy%+tminy%
 5084ENDIF
 5085IF flags% AND (1<<2) THEN
 5086  REM add space taken by border
 5087  b$=FNvalidationcommand(val$,"R")
 5088  IF LEN(b$)=0 THEN
 5089    minx%+=16 : REM no border command - "flat" border
 5090    miny%+=16
 5091  ELSE
 5092    REM found command for 3-D border
 5093    CASE VAL(MID$(b$,2)) OF
 5094      WHEN 3,4
 5095        minx%+=24
 5096        miny%+=24
 5097      WHEN 6,7
 5098        minx%+=32
 5099        miny%+=32
 5100      OTHERWISE
 5101        minx%+=16
 5102        miny%+=16
 5103    ENDCASE
 5104  ENDIF
 5105ENDIF
 5106IF minx%<16 THEN minx%=16
 5107IF miny%<16 THEN miny%=16
 5108ENDPROC
 5109
 5110REM --- return size of a sprite in Os units ---
 5111DEF PROCspritesize(name$,area%,RETURN xsize%,RETURN ysize%)
 5112LOCAL spmode%,xpixels%,ypixels%
 5113IF area%=1 THEN
 5114  SYS "XWimp_SpriteOp",40,,name$ TO ,,,xpixels%,ypixels%,,spmode%;flg%
 5115ELSE
 5116  SYS "OS_SpriteOp",296,area%,name$ TO ,,,xpixels%,ypixels%,,spmode%;flg%
 5117ENDIF
 5118IF (flg% AND 1) THEN
 5119  xsize%=0
 5120  ysize%=0
 5121ELSE
 5122  xsize%=xpixels%<<FNmodevar(spmode%,4)
 5123  ysize%=ypixels%<<FNmodevar(spmode%,5)
 5124ENDIF
 5125ENDPROC
 5126
 5127REM --- search validation string for a certain command and return it ---
 5128DEF FNvalidationcommand(v$,cmd$)
 5129LOCAL upc$,loc$,p%
 5130upc$=CHR$(ASC(cmd$) AND &DF)
 5131loc$=CHR$(ASC(cmd$) OR &20)
 5132WHILE (LEFT$(v$,1)<>upc$) AND (LEFT$(v$,1)<>loc$) AND (LEN(v$)>0)
 5133  p%=INSTR(v$,";")
 5134  IF (p%>1) AND (MID$(v$,p%-1,1)="\") THEN p%=INSTR(v$,";",p%+1)
 5135  IF p%=0 THEN
 5136    v$=""
 5137  ELSE
 5138    v$=MID$(v$,p%+1)
 5139  ENDIF
 5140ENDWHILE
 5141p%=INSTR(v$,";")
 5142IF p%>0 THEN v$=LEFT$(v$,p%-1)
 5143=v$
 5144
 5145REM *** procs for handling messages in the Messages file ***
 5146
 5147DEF PROCmsg_init
 5148LOCAL fname$,flags%,size%,buf%
 5149fname$=ApplDir$+".Messages"
 5150SYS "MessageTrans_FileInfo",,fname$ TO flags%,,size%
 5151IF flags% AND 1 THEN
 5152  buf%=0
 5153ELSE
 5154  buf%=FNheap_get(size%)
 5155ENDIF
 5156MsgDesc%=FNheap_get(17+LEN(fname$))
 5157$(MsgDesc%+16)=fname$
 5158SYS "MessageTrans_OpenFile",MsgDesc%,MsgDesc%+16,buf%
 5159ENDPROC
 5160
 5161DEF PROCmsg_exit
 5162SYS "MessageTrans_CloseFile",MsgDesc%
 5163MsgDesc%=0
 5164ENDPROC
 5165
 5166DEF FNmsg_lookup0(token$)
 5167LOCAL result%
 5168SYS "MessageTrans_Lookup",MsgDesc%,token$,0 TO ,,result%
 5169=FNstr(result%)
 5170
 5171DEF FNmsg_lookup1(token$,param$)
 5172LOCAL result%
 5173SYS "MessageTrans_Lookup",MsgDesc%,token$,ScrapBlk%,&100,param$ TO ,,result%
 5174=FNstr(result%)
 5175
 5176DEF FNmsg_lookup2(token$,param1$,param2$)
 5177LOCAL result%
 5178SYS "MessageTrans_Lookup",MsgDesc%,token$,ScrapBlk%,&100,param1$,param2$ TO ,,result%
 5179=FNstr(result%)
 5180
 5181REM *** procs for loading and using user-sprites ***
 5182
 5183REM --- load a sprite file and let all templates use the sprites
 5184DEF PROCloadusersprites(fname$)
 5185LOCAL no%
 5186IF UserSprites%<>1 THEN PROCheap_release(UserSprites%)
 5187IF fname$="" THEN
 5188  UserSprites%=1
 5189ELSE
 5190  UserSprites%=FNloadspritefile(fname$)
 5191ENDIF
 5192IF NrTemplates%>0 THEN
 5193  FOR no%=0 TO NrTemplates%-1
 5194    PROCwindow_setspritearea(TemplHandle%(no%),UserSprites%)
 5195  NEXT no%
 5196ENDIF
 5197IF UserSprites%=1 THEN
 5198  SpriteFName$=""
 5199ELSE
 5200  SpriteFName$=fname$
 5201ENDIF
 5202ENDPROC
 5203
 5204DEF FNloadspritefile(fname$)
 5205LOCAL ftype%,fsize%,area%
 5206SYS "OS_File",17,fname$ TO ftype%,,,,fsize%
 5207IF ftype%<>1 THEN
 5208  PROCcomplain(FNmsg_lookup1("NOSF",fname$))
 5209  area%=1
 5210ELSE
 5211  fsize%+=16
 5212  area%=FNheap_get(fsize%)
 5213  IF area%>0 THEN
 5214    area%!0=fsize%
 5215    area%!8=16
 5216    SYS "OS_SpriteOp",256+9,area%
 5217    SYS "OS_SpriteOp",256+10,area%,fname$
 5218  ELSE
 5219    area%=1 : REM couldn't allocate space in heap - reset to Wimp area
 5220  ENDIF
 5221ENDIF
 5222=area%
 5223
 5224DEF PROCwindow_setspritearea(handle%,area%)
 5225LOCAL icon%,ib%
 5226WinBlk%!0=handle%
 5227SYS "Wimp_GetWindowInfo",,WinBlk%
 5228WinBlk%!68=area% : REM CBP pointer
 5229PROCicon_setspritearea(WinBlk%!60,WinBlk%+76,area%)
 5230IF (WinBlk%!88)>0 THEN
 5231  FOR icon%=0 TO (WinBlk%!88)-1
 5232    ib%=WinBlk%+92+icon%*32
 5233    PROCicon_setspritearea(ib%!16,ib%+20,area%)
 5234  NEXT icon%
 5235ENDIF
 5236handle%=FNredefinewindow(WinBlk%,0)
 5237ENDPROC
 5238
 5239DEF PROCicon_setspritearea(flags%,data%,area%)
 5240IF ((flags% AND 3)=2) AND ((flags% AND &100)<>0) THEN
 5241  data%!4=area%
 5242ENDIF
 5243ENDPROC
 5244
"� ><TemplEd$Dir>.Extras.Source
>� This application is FreeWare. (c) 1992,1993 Dick Alstein

Appl$="TemplEd"
Version$="1.24 (12-Sep-93)"

@� The following maximum values can be set to suit your needs
*� (You may need to adapt the WimpSlot)
	7MaxTemplates%=100  : � max number of user templates

AMaxIcons%=200      : � max number of icons in a user template
GMaxIndirSize%=8000 : � space for indirected data (only for loading)


.� *** main program and top-level procs ***
Quit%=�
	�init
� � �error(0)
2PollMask%=(1<<0)+(1<<4)+(1<<5)+(1<<11)+(1<<12)
�
-  ș "Wimp_Poll",PollMask%,Blk% � reason%
  Ȏ reason% �
    � 0
,      È™ "Wimp_GetPointerInfo",,PtrInfo%
1      � (PtrInfo%!8>0) � Mbuttons_Released% �
*        � signal press of mouse button
         Mbuttons_Released%=�
N        �click(PtrInfo%!0,PtrInfo%!4,PtrInfo%!8,PtrInfo%!12,PtrInfo%!16,0)
      �
        � PtrInfo%!8=0 �
"          Mbuttons_Released%=�
          Drag_Type%=-1
"          TimedDrag_Enabled%=�
 
        �
!G          � button still pressed - test if OK to start "timed drag"
"H          � �(PtrInfo%!0-ThisClickX%)+�(PtrInfo%!4-ThisClickY%)>16 �
#@            TimedDrag_Enabled%=� : � moved mouse since click
$          �
%$          � TimedDrag_Enabled% �
&I            � ((�-ThisClickTime%)>DragInterval%) � (PtrInfo%!16>=0) �
'&              È™ "Wimp_DragBox",-1
(D              �starticondrag(PtrInfo%!8,PtrInfo%!12,PtrInfo%!16)
)&              TimedDrag_Enabled%=�
*            �
+          �
,
        �
-      �
.    � 1 : �redraw(Blk%!0)
/    � 2 
0      � (Blk%!0=TemplW%)�
1/        c%=(Blk%!12-Blk%!4) � TemplW_IconX%
2        � c%<1 � c%=1
3         � TemplW_Cols%<>c% �
4          TemplW_Cols%=c%
5!          �redefinebrowser(0)
6          Blk%!0=TemplW%
7
        �
8      �
9$      È™ "Wimp_OpenWindow",,Blk%
:      � Blk%!0=OptionsW% �
;         �openpane(OptPaneW%)
<      �
=    � 3
>$      no%=�whichtemplate(Blk%!0)
?      � no%>=0 �
@        �closetemplate(no%)
A      �
B        � � (� -1) �
C"          �closewindow(Blk%!0)
D
        �
E.        È™ "Wimp_GetPointerInfo",,PtrInfo%
FD        � (Blk%!0=TemplW%)�(PtrInfo%!8=1)�(�MainFName$,".")>0) �
GG          ș "Wimp_StartTask","Filer_OpenDir "+�dirname(MainFName$)
H
        �
I      �
J<    � 6 : �click(Blk%!0,Blk%!4,Blk%!8,Blk%!12,Blk%!16,�)
K7    � 7 : �finishdrag(Blk%!0,Blk%!4,Blk%!8,Blk%!12)
L)    � 8 : �key(Blk%!0,Blk%!4,Blk%!24)
M    � 9 : �menuselect(Blk%)
N     � 17,18 : �receive(Blk%)
O  �
P  � IcInfo_Active% �
Q    �icinf_update
R  �
S � Quit% � (�>=QuitDeadline%)
T�font_loseall
U�registeraeh(�)
V
�msg_exit
WÈ™ "Wimp_CloseDown"
X�
Y
Z� �init
[� cmdstr%,p%,fn$,i%,mask%
\� ErrBlk% &100
]Cș "Wimp_Initialise",200,&4B534154,Appl$ � OSversion%,ThisTask%
^� � �error(1)
_� VarBuf% 256
`'ApplDir$=�readvarval("TemplEd$Dir")
a,�heap_init           : � initialize heap
b/�msg_init            : � load Messages file
c%� lower bounds for Max* variables
d'� MaxTemplates%<4 � MaxTemplates%=4
e!� MaxIcons%<64 � MaxIcons%=64
f/� MaxIndirSize%<&1000 � MaxIndirSize%=&1000
g+� declaration of data blocks and arrays
h� IconBlk% 40
iSelBlkSize%=4*MaxIcons%
jB� SelBlk% SelBlkSize% : � block to hold list of selected icons
k� SelBlk2% SelBlkSize%
lB� ScrapBlk% &100      : � block to hold various temporary data
m<� Blk% &100           : � for data returned by Wimp_Poll
n3� PtrInfo% 20         : � to store pointer info
oE� NumValidStr% 8      : � validation string for entering a number
p$NumValidStr%="A0-9"
qB� FpNumValidStr% 8    : � for entering a floating point number
r$FpNumValidStr%="A0-9."
sE� TemplNames% MaxTemplates%*28 : � to store name and name of icon
tD� TemplHandle%(MaxTemplates%)  : � handles of the user templates
uJ� PaneFlag% MaxTemplates%      : � 'Pane' flags are kept in this array
vINrTemplates%=0                   : � current number of user templates
wKTemplatesOpen%=0                 : � number of templates currently open
x@MaxTemplateSize%=92+32*MaxIcons% : � max size for a template
yHMaxTemplateSize%+=MaxIndirSize%  : � extra space for indirected data
z� WinBlk% MaxTemplateSize%
{NSysIndirSize%=&1800         : � size of indirected data for system windows
|� IndirBlk% SysIndirSize%
}@IndirEnd%=IndirBlk%         : � pointer to first unused byte
~HIndirFree%=SysIndirSize%    : � remaining free space after IndirEnd%
C� IconText%(32)           : � pointers to indirected text icons
�>� IconTextWhdl%(32)       : � corresponding window handles
�<� IconTextIhdl%(32)       : � corresponding icon handles
�I� CselText%(12)           : � pointers to text in colour-select boxes
�>� CselTextWhdl%(12)       : � corresponding window handles
�<� CselTextIhdl%(12)       : � corresponding icon handles
�A� IcButton% 20*16         : � names of button types for icons
�C� WinButton% 20*16        : � names of button types for windows
�� i%=0 � 15
�3  $(IcButton%+20*i%)=�msg_lookup0("ICBT"+�(i%))
�4  $(WinButton%+20*i%)=�msg_lookup0("WNBT"+�(i%))
�� i%
�?� WinEd_Col%(6)      : � colours in the colour-select boxes
�J� InverseColour%(15) : � to display text in colour boxes / colour menu
�� i%=0 � 15
�
  Ȏ i% �
�    � 0,1,2,3,9,12,14
�      InverseColour%(i%)=7
�	    
�      InverseColour%(i%)=0
�  �
�� i%
�7� DragBlk% 40     : � data block for starting drags
�(FileIndexSize%=16+MaxTemplates%*24+4
�E� FileIndex% FileIndexSize% : � contains index of a template file
�@� FontUsage%(256) : � counts number of icons that use a font
�K� Fra% 256        : � font reference array for loading+saving templates
�6� FontData% 64    : � buffer for reading font data
�J� Mouse_Ptt% 16        : � pixel translation table for pointer changes
�!� initialise global variables
�/IcEd_Win%=-1000          : � invalid values
�IcEd_Icon%=-1000
�WinEd_Win%=-1
�5Mbuttons_Released%=� : � to debounce mouse clicks
�?ThisClickTime%=�      : � to store data of last mouse click
�ThisClickX%=-1000
�ThisClickY%=-1000
�ThisClickButton%=0
�ITimedDrag_Enabled%=� : � can I start "timed drag" from current click?
�LDragInterval%=50         : � interval after which "timed drag" can start
�JDclickInterval%=50       : � max time between clicks of a double-click
�HNextIconNr%=0            : � for semi-automatic renumbering of icons
�:LastMenu%=-1             : � handle of last menu shown
�FLastMenu_Win%=-31        : � window above which last menu was made
�4LastMenu_Icon%=-1        : � icon handle of same
�;MainFName$="Templates"   : � save all templates as ....
�@SelFName$="Selection"    : � save template selection as ....
�HSavingSelection%=�   : � was last save dialogue to save a selection?
�BQuitAfterSave%=�     : � quit program after current save proc?
�FQuitDeadline%=0          : � for "delayed" quit, to avoid Wimp bug
�GNewFName$=""             : � name of new template file to be loaded
�BChangesMade%=�       : � have current templates been modified?
�KUserSprites%=1  : � sprites in user templates from Wimp area (at first)
�BSpriteFName$="" : � name of sprite file if not using Wimp area
�CDrag_Type%=-1   : � type of current drag operation (-1 => none)
�JSupportAEH%=� : � is in setup, but must exist before loading templates
�AEHregistered%=�
�� create icon on icon bar
�IconBlk%!0=-1
�IconBlk%!4=0 : IconBlk%!8=0
�#IconBlk%!12=68 : IconBlk%!16=68
�IconBlk%!20=&7000301A
�$(IconBlk%+24)="!templed"
�-ș "Wimp_CreateIcon",,IconBlk% � BarIcon%
�� load system sprites
�4SysSprites%=�loadspritefile(ApplDir$+".Sprites")
�&� initialise font reference arrays
�� i%=0 � 255
�  Fra%?i%=0
�� i%
�?� load system templates and set pointers to indirected data
�1ș "Wimp_OpenTemplate",,ApplDir$+".Templates"
�?InfoW%=�loadtemplate("Info",WinBlk%,IndirEnd%,IndirFree%,1)
�$$(WinBlk%!(92+3*32+20))=Version$
�OTemplW%=�loadtemplate("Templates",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
�DTemplTbar%=WinBlk%!76           : � pointer to text in title bar
�$(TemplTbar%)=MainFName$
�i%=WinBlk%+92
�ITemplW_IconX%=i%!8-i%!0 + 8     : � size of an icon in browser window
� TemplW_IconY%=i%!12-i%!4 + 8
�2TemplW_IconFlags%=i%!16         : � icon flags
�DTemplW_Cols%=(WinBlk%!12-WinBlk%!4) � TemplW_IconX% : � #columns
�%� TemplW_Cols%<1 � TemplW_Cols%=1
�ScrapBlk%!0=TemplW%
�ScrapBlk%!4=0
�Eș "Wimp_DeleteIcon",,ScrapBlk% : � icon is only used to set size
�MIcEdW%=�loadtemplate("IconEdit",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
�IcEdTbar%=WinBlk%!76
�8�linkicontext(0,WinBlk%,23)  : � text in a text icon
�5�linkicontext(1,WinBlk%,24)  : � name of a sprite
�6�linkicontext(2,WinBlk%,25)  : � validation string
�-�linkicontext(3,WinBlk%,26)  : � max size
�5�linkicontext(4,WinBlk%,28)  : � icon button type
�(�linkicontext(5,WinBlk%,31)  : � esg
�.�linkicontext(19,WinBlk%,45) : � font name
�0�linkicontext(20,WinBlk%,48) : � font x size
�0�linkicontext(21,WinBlk%,51) : � font y size
�6�linkcseltext(0,WinBlk%,34)  : � foreground colour
�6�linkcseltext(1,WinBlk%,37)  : � background colour
�PWinEdW%=�loadtemplate("WindowEdit",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
�WinEdTbar%=WinBlk%!76
�7�linkicontext(6,WinBlk%,23)  : � window button type
�<�linkcseltext(2,WinBlk%,27)  : � title foreground colour
�<�linkcseltext(3,WinBlk%,31)  : � title background colour
�@�linkcseltext(4,WinBlk%,35)  : � work area foreground colour
�@�linkcseltext(5,WinBlk%,39)  : � work area background colour
�;�linkcseltext(6,WinBlk%,43)  : � scrollbar inner colour
�;�linkcseltext(7,WinBlk%,47)  : � scrollbar outer colour
�7�linkcseltext(8,WinBlk%,51)  : � input focus colour
�DDefW%=�loadtemplate("DefaultWin",WinBlk%,IndirEnd%,IndirFree%,1)
�BSaveW%=�loadtemplate("SaveBox",WinBlk%,IndirEnd%,IndirFree%,1)
�GFileName%=WinBlk%!(92+1*32+20)  : � pointer to file name in savebox
�EIcInfoW%=�loadtemplate("IconInfo",WinBlk%,IndirEnd%,IndirFree%,1)
�2�linkicontext(7,WinBlk%,6)   : � template name
�0�linkicontext(8,WinBlk%,7)   : � icon number
�9�linkicontext(9,WinBlk%,9)   : � minimum x coordinate
�9�linkicontext(26,WinBlk%,10) : � maximum x coordinate
�9�linkicontext(10,WinBlk%,11) : � minimum y coordinate
�9�linkicontext(27,WinBlk%,8)  : � maximum y coordinate
�.�linkicontext(11,WinBlk%,12) : � icon size
�5�linkicontext(24,WinBlk%,13) : � pointer position
�MWorkW%=�loadtemplate("WorkArea",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
�5�linkicontext(12,WinBlk%,10) : � top left X coord
�5�linkicontext(13,WinBlk%,13) : � top left Y coord
�5�linkicontext(14,WinBlk%,16) : � work area X size
�5�linkicontext(15,WinBlk%,19) : � work area Y size
�/�linkicontext(16,WinBlk%,22) : � min X size
�/�linkicontext(17,WinBlk%,25) : � min Y size
�KAlignW%=�loadtemplate("Align",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
6�selecticon(AlignW%,2,1)     : � set align-left on
/�selecticon(AlignW%,8,1)     : � move icons
OOptionsW%=�loadtemplate("Options",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
OOptPaneW%=�loadtemplate("OptPane",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
9�linkicontext(28,WinBlk%,19) : � iconsize grid X size
9�linkicontext(29,WinBlk%,23) : � iconsize grid Y size
8�linkicontext(30,WinBlk%,28) : � iconpos grid X size
8�linkicontext(31,WinBlk%,32) : � iconpos grid Y size
NSpaceW%=�loadtemplate("Spaceout",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
	;�selecticon(SpaceW%,3,1)    : � set space-vertically on

8�selecticon(SpaceW%,4,1)    : � set to fixed spacing
7�linkicontext(18,WinBlk%,6) : � space between icons
SpaceOut_Space%=4

'�seticontext(18,�(SpaceOut_Space%))
�space_shadeicons
JStatW%=�loadtemplate("Stats",WinBlk%,IndirEnd%,IndirFree%,SysSprites%)
�selecticon(StatW%,1,1)
FStdIconW%=�loadtemplate("StdIcons",WinBlk%,IndirEnd%,IndirFree%,1)
LastStdIcon%=WinBlk%!88-1
CDialW%=�loadtemplate("Dialogue",WinBlk%,IndirEnd%,IndirFree%,1)
Dial_Msg%=WinBlk%!(92+20)
IDial_Button1%=WinBlk%!(92+1*32+20) : � pointer to text in left button
KDial_Button2%=WinBlk%!(92+2*32+20) : � pointer to text in middle button
JDial_Button3%=WinBlk%!(92+3*32+20) : � pointer to text in right button
.� store colours and border flag of buttons
mask%=(1<<2)+(&FF<<24)
3Dial_ButtonCol1%=(WinBlk%!(92+1*32+16)) � mask%
3Dial_ButtonCol2%=(WinBlk%!(92+2*32+16)) � mask%
3Dial_ButtonCol3%=(WinBlk%!(92+3*32+16)) � mask%
È™ "Wimp_CloseTemplate"
� initialise font usage
� i%=0 � 255
   � Fra%?i%>0 �
!=    FontUsage%(i%)=1 : � font is used by system templates
"  �
#    FontUsage%(i%)=0
$  �
%� i%
&�setup_load
',�selecticon(OptPaneW%,13,IcInfo_Active%)
((�selecticon(OptPaneW%,11,DuplNames%)
)$�selecticon(OptPaneW%,12,Hatch%)
*,�selecticon(OptPaneW%,16,Grid_SizeLock%)
+#�seticontext(28,�(Grid_SizeX%))
,#�seticontext(29,�(Grid_SizeY%))
-+�selecticon(OptPaneW%,25,Grid_PosLock%)
."�seticontext(30,�(Grid_PosX%))
/"�seticontext(31,�(Grid_PosY%))
0.�selecticon(OptPaneW%,14,Save_Unselected%)
1,�selecticon(OptPaneW%,15,DeleteOutside%)
2(�selecticon(OptPaneW%,8,TrapDclick%)
3�preparemenus
4(�supportinterface(SupportInterface%)
5AEHregistered%=�
6�supportaeh(SupportAEH%)
7�readscreenvars
8:� get filename that was given as argument with command
9ș "OS_GetEnv" � cmdstr%
:fn$=�str(cmdstr%)
;p%=�fn$,ApplDir$)
<p%=�fn$," ",p%+�(ApplDir$))
=� p%>0 �
>  fn$=�fn$,p%+1)
?  p%=�fn$," ",p%)
@  fn$=�fn$,p%-1)
A  � �(fn$)>0 �
BA    �templ_loadfile(fn$,1) : � found filename - load the file
C    �setmainfname(fn$)
D  �
E�
F  �setextent
G�
H�
I
J� �key(window%,icon%,key%)
KI� i%,waslast%,dx%,dy%,no%,help$,xmin%,ymin%,xmax%,ymax%,xstep%,ystep%
L$� (key%=27) � (Drag_Type%<>-1) �
M  �abortdrag
N�
O  Ȏ window% �
P    � IcEdW%
Q      Ȏ key% �
R0        � &18E,&18A,13 : � down, tab, return
S          � icon%>0 �
T            i%=icon%
U            waslast%=�
V            �
W              � i%=26 �
X                i%=23
Y5                waslast%=� : � caret went "round"
Z              �
[                i%+=1
\              �
]9            � (� �iconshaded(IcEdW%,i%)) � (i%=icon%)
^(            � waslast% � (key%=13) �
_)              �selecticon(IcEdW%,9,1)
`#              �iced_readwin(-1)
a)              �selecticon(IcEdW%,9,0)
b              i%=icon%
c            �
d$            �setcaret(IcEdW%,i%)
e          �
f)        � &18F,&19A : � up, shift+tab
g          � icon%>0 �
h            i%=icon%
i            �
j              � i%=23 �
k                i%=26
l              �
m                i%-=1
n              �
o9            � (� �iconshaded(IcEdW%,i%)) � (i%=icon%)
p$            �setcaret(IcEdW%,i%)
q          �
r        � &181 : � F1
s0          È™ "Wimp_GetPointerInfo",,PtrInfo%
t$          � PtrInfo%!12=IcEdW% �
u            help$=""
v             Ȏ PtrInfo%!16 �
w6              � 14            : help$="Indirected"
x6              � 3,25          : help$="Validation"
y3              � 4,26          : help$="Maxsize"
z2              � 15            : help$="Border"
{2              � 16            : help$="Filled"
|4              � 17            : help$="Hcentred"
}4              � 18            : help$="Vcentred"
~6              � 19            : help$="Rjustified"
5              � 20            : help$="Needshelp"
�7              � 21            : help$="Allowadjust"
�4              � 22            : help$="Halfsize"
�6              � 5,27,28,29    : help$="Buttontype"
�/              � 6,30,31,32    : help$="ESG"
�2              � 39            : help$="Shaded"
�1              � 7,33,34,35    : help$="Fgcol"
�1              � 8,36,37,38    : help$="Bgcol"
�0              � 41            : help$="Font"
�1              � 1             : help$="Flags"
�            �
�            � help$<>"" �
�5              �askhelp("TemplEd.IconInfo_"+help$)
�            �
�          �
�        � &182 : � F2
�%          �selecticon(IcEdW%,9,1)
�          �iced_readwin(-1)
�%          �selecticon(IcEdW%,9,0)
�        � &183 : � F3
�&          �selecticon(IcEdW%,10,1)
�          �iced_readwin(-1)
�&          �selecticon(IcEdW%,10,0)
�"          �closewindow(IcEdW%)
�%          �setcaret(IcEd_Win%,-1)
�!        � &184,27 : � F4, Esc
�&          �selecticon(IcEdW%,11,1)
�"          �closewindow(IcEdW%)
�&          �selecticon(IcEdW%,11,0)
�%          �setcaret(IcEd_Win%,-1)
�
        
�'          ș "Wimp_ProcessKey",key%
�      �
�    � WinEdW%
�      Ȏ key% �
�        � &181     
�0          ș "Wimp_GetPointerInfo",,PtrInfo%
�%          � PtrInfo%!12=WinEdW% �
�            help$=""
�             Ȏ PtrInfo%!16 �
�4              � 4             : help$="Moveable"
�7              � 5             : help$="Auto-redraw"
�3              � 6             : help$="Hotkeys"
�0              � 7             : help$="Pane"
�4              � 8             : help$="Nobounds"
�0              � 9             : help$="GCOL"
�6              � 10            : help$="Backwindow"
�2              � 11,12         : help$="Scroll"
�6              � 1,21,22,23,24 : help$="Buttontype"
�5              � 20            : help$="Newformat"
�            �
�            � help$<>"" �
�4              �askhelp("TemplEd.WinInfo_"+help$)
�            �
�          �
�        � &182,13
�'          �selecticon(WinEdW%,53,1)
�          �wined_readwin
�'          �selecticon(WinEdW%,53,0)
�        � &183
�'          �selecticon(WinEdW%,54,1)
�          �wined_readwin
�'          �selecticon(WinEdW%,54,0)
�#          �closewindow(WinEdW%)
�&          �setcaret(WinEd_Win%,-1)
�        � &184,27
�'          �selecticon(WinEdW%,55,1)
�#          �closewindow(WinEdW%)
�'          �selecticon(WinEdW%,55,0)
�&          �setcaret(WinEd_Win%,-1)
�
        
�'          ș "Wimp_ProcessKey",key%
�      �
�    � SaveW%
�      Ȏ key% �
�        � 13
�%          �selecticon(SaveW%,0,1)
�"          � SavingSelection% �
�&            SelFName$=$(FileName%)
�)            �savetemplates(SelFName$)
�          �
�+            �setmainfname($(FileName%))
�*            �savetemplates(MainFName$)
�          �
�%          �selecticon(SaveW%,0,0)
�&          ș "Wimp_CreateMenu",,-1
�        � 27
�&          ș "Wimp_CreateMenu",,-1
�
        
�'          ș "Wimp_ProcessKey",key%
�      �
�    � WorkW%
�      Ȏ key% �
�        � &18E,&18A,13
�          � icon%=25 �
�            � key%=13 �
�*              �selecticon(WorkW%,30,1)
�              �setworkarea
�*              �selecticon(WorkW%,30,0)
�*              ș "Wimp_CreateMenu",,-1
�            �
�&              �setcaret(WorkW%,10)
�            �
�          �
�)            �setcaret(WorkW%,icon%+3)
�          �
�        � &18F,&19A
�          � icon%=10 �
�$            �setcaret(WorkW%,25)
�          �
�)            �setcaret(WorkW%,icon%-3)
�          �
�        � 27
�&          ș "Wimp_CreateMenu",,-1
�
        
�'          ș "Wimp_ProcessKey",key%
�      �
�    � SpaceW%
�      � key%=13 �
�$        �selecticon(SpaceW%,9,1)
�&        �spaceicons(LastMenu_Win%)
�$        �selecticon(SpaceW%,9,0)
�$        ș "Wimp_CreateMenu",,-1
�      �
�%        ș "Wimp_ProcessKey",key%
�      �
�	    
�      Ȏ Drag_Type% �
�        � 0,1,5,6
          dx%=0
          dy%=0
          Ȏ key% �
(            � &18C : dx%=-PixToOS_X%
'            � &18D : dx%=PixToOS_X%
(            � &18E : dy%=-PixToOS_Y%
'            � &18F : dy%=PixToOS_Y%
*            � &19C : dx%=-4*PixToOS_X%
)            � &19D : dx%=4*PixToOS_X%
	*            � &19E : dy%=-4*PixToOS_Y%

)            � &19F : dy%=4*PixToOS_Y%
-             : È™ "Wimp_ProcessKey",key%
          �

0          È™ "Wimp_GetPointerInfo",,PtrInfo%
4          ȗ � (PtrInfo%!0)+dx%,(PtrInfo%!4)+dy%

        
)          no%=�whichtemplate(window%)
          � no%<>-1 �
            Ȏ key% �
@              � 1        : �sel_all(window%)          : � ^A
              � 3
                dummy%=-1
C                �copyiconsel(window%,dummy%,0)           : � ^C
              � 4
                dummy%=-1
C                �copyiconsel(window%,dummy%,2)           : � ^D
@              � 5       : �iced_start(window%,-1)     : � ^E
              � 10
C                �sel_get(window%)                        : � ^J
&                � NrSelected%>=2 �
+                  LastMenu_Win%=window%
'                  LastMenu_Icon%=-1
 8                  È™ "Wimp_GetPointerInfo",,PtrInfo%
!O                  È™ "Wimp_CreateMenu",,AlignW%,PtrInfo%!0-80,PtrInfo%!4+80
"                �
#              � 11
$C                �sel_get(window%)                        : � ^K
%&                � NrSelected%>=2 �
&+                  LastMenu_Win%=window%
''                  LastMenu_Icon%=-1
(8                  È™ "Wimp_GetPointerInfo",,PtrInfo%
)O                  È™ "Wimp_CreateMenu",,SpaceW%,PtrInfo%!0-80,PtrInfo%!4+80
*                �
+              � 12
,                dummy%=-1
-C                �copyiconsel(window%,dummy%,3)           : � ^L
.D              � 17,&1A2 : �closetemplate(no%)         : � ^Q,^F2
/              � 18
0                dummy%=-1
1C                �copyiconsel(window%,dummy%,4)           : � ^R
2@              � 20      : �iced_start(window%,-4)     : � ^T
3              � 21
4                dummy%=-1
5C                �copyiconsel(window%,dummy%,1)           : � ^U
6@              � 23      : �wined_fillwin(window%)     : � ^W
7@              � 24      : �deleteiconsel(window%,-1)  : � ^X
8@              � 26      : �sel_clear(window%,-1)      : � ^Z
9;              � &18C,&18D,&18E,&18F,&19C,&19D,&19E,&19F
:%                �sel_get(window%)
;%                � NrSelected%>0 �
<?                  �sel_box(window%,xmin%,ymin%,xmax%,ymax%)
='                  � Grid_PosLock% �
>)                    xstep%=Grid_PosX%
?)                    ystep%=Grid_PosY%
@                  �
A*                    � Grid_SizeLock% �
B,                      xstep%=Grid_SizeX%
C,                      ystep%=Grid_SizeY%
D                    �
E+                      xstep%=PixToOS_X%
F+                      ystep%=PixToOS_Y%
G                    �
H                  �
I&                  Ȏ (key% � &F) �
J*                    � &C : dx%=-xstep%
K)                    � &D : dx%=xstep%
L*                    � &E : dy%=-ystep%
M)                    � &F : dy%=ystep%
N                  �
O$                  � key% � &10 �
P!                    dx%=dx%*4
Q!                    dy%=dy%*4
R                  �
S                   xmin%+=dx%
T                   xmax%+=dx%
U                   ymin%+=dy%
V                   ymax%+=dy%
WM                  �moveresize(window%,-1,window%,xmin%,ymin%,xmax%,ymax%)
X                �
Y2                  : È™ "Wimp_ProcessKey",key%
Z            �
[          �
\)            È™ "Wimp_ProcessKey",key%
]          �
^      �
_  �
`�
a�
b
c7� �loadtemplate(name$,buf%,� indir%,� free%,spptr%)
d� oldindir%,handle%
e� �
f-� � � ș "Wimp_CloseTemplate" : �error(1)
goldindir%=indir%
hname$=name$+�12,�0)
iNș "Wimp_LoadTemplate",,buf%+4,indir%,indir%+free%,Fra%,name$,0 � ,,indir%
jfree%-=(indir%-oldindir%)
kbuf%!68=spptr%
l� buf%!88>0 �
m  � i%=0 � buf%!88
n    f%=buf%!(92+i%*32+16)
o    � (f% � &103)=&102 �
p#      buf%!(92+i%*32+24)=spptr%
q	    �
r
  � i%
s�
t,ș "Wimp_CreateWindow",,buf%+4 � handle%
ubuf%!0=handle%
v=handle%
w
x� �menuselect(selection%)
yB� adjust%,selinfo%,itemnr%,item%,item$,parentitem%,parentitem$
z&� cmd$,i%,j%,minx%,miny%,size,dir%
{Aș "MenuUtil_Decode",LastMenu%,selection% � ,adjust%,selinfo%
|itemnr%=selinfo%!0
}item%=selinfo%!8
~item$=�str(selinfo%!12)
parentitem%=selinfo%!24
�4� parentitem%<>0 � parentitem$=�str(selinfo%!28)
�Ȏ LastMenu% �
�  � MainMenu%
�    Ȏ item% �
�      � item_options%
�$        �openwindow(OptionsW%,2)
�      � item_stats%
�        �stat_fillwin
�      � item_sprview%
�$        cmd$="Run "+SpriteFName$
�2        � OSversion%>=300 � cmd$="Filer_"+cmd$
�$        ș "Wimp_StartTask",cmd$
�      � item_sprreload%
�*        �loadusersprites(SpriteFName$)
�      � item_sprreset%
�         �loadusersprites("")
�      � item_quit%
�        � ChangesMade% �
�           �dialogue(0,"","")
�
        �
�          �prequit(0)
�
        �
�	    �
�  � TemplMenu%
�    Ȏ item% �
�      � item_templname%
�        Ȏ parentitem% �
�!          � item_createtempl%
�            � �(item$)>0 �
�!              WinBlk%!0=DefW%
�2              ș "Wimp_GetWindowInfo",,WinBlk%
�J              $(WinBlk%+76)=item$ : � title bar equal to template name
�              WinBlk%!88=0
�-              �templ_add(item$,WinBlk%,1)
�/              �opentemplate(NrTemplates%-1)
�               �setchanged(�)
�            �
�!          � item_renametempl%
�            � �(item$)>0 �
�              j%=0
�0              � check if name already exists
�F              ȕ (j%<NrTemplates%) � ($(TemplNames%+28*j%)<>item$)
�                j%+=1
�              �
�4              � (j%=NrTemplates%) � DuplNames% �
�                 i%=SelBlk%!0
�.                $(TemplNames%+28*i%)=item$
�&                IconBlk%!0=TemplW%
�!                IconBlk%!4=i%
�4                ș "Wimp_GetIconState",,IconBlk%
�O                IconBlk%!16=(IconBlk%!8)+(TemplW_IconX%-8)-16*(11-�(item$))
�=                dummy%=�redefineicon(TemplW%,i%,IconBlk%)
�"                �setchanged(�)
�              �
�3                �complain(�msg_lookup0("TAEX"))
�              �
�            �
�          � item_copytempl%
�            � �(item$)>0 �
�#              �sel_get(TemplW%)
�3              WinBlk%!0=TemplHandle%(SelBlk%!0)
�2              ș "Wimp_GetWindowInfo",,WinBlk%
�0              � PaneFlag%?(SelBlk%!(4*i%)) �
�G                WinBlk%!32=WinBlk%!32 � (1<<5) : � copy 'Pane' flag
�              �
�5              �iconrealloc(WinBlk%+60,WinBlk%+76)
�"              � WinBlk%!88>0 �
�)                � i%=0 � WinBlk%!88-1
�K                  �iconrealloc(WinBlk%+92+32*i%+16,WinBlk%+92+32*i%+20)
�                � i%
�              �
�-              �templ_add(item$,WinBlk%,1)
�/              �opentemplate(NrTemplates%-1)
�               �setchanged(�)
�            �
�
        �
�      � item_opentempl%
�        �sel_get(TemplW%)
�'        � i%=NrSelected%-1 � 0 � -1
�+          �opentemplate(SelBlk%!(4*i%))
�        � i%
�      � item_closetempl%
�        �sel_get(TemplW%)
�'        � i%=NrSelected%-1 � 0 � -1
�,          �closetemplate(SelBlk%!(4*i%))
�        � i%
�      � item_deletetempl%
�        ș "Hourglass_On"
�        �sel_get(TemplW%)
�'        � i%=NrSelected%-1 � 0 � -1
�+          �templ_delete(SelBlk%!(4*i%))
�        � i%
�"        �sel_clear(TemplW%,-1)
�!        LastMenu_Win%=TemplW%
�        LastMenu_Icon%=-1
�        ș "Hourglass_Off"
�      � item_selalltempl%
�        �sel_all(TemplW%)
�      � item_clearseltempl%
�"        �sel_clear(TemplW%,-1)
�      � item_deleteall%
�        � ChangesMade% �
�           �dialogue(1,"","")
�
        �
�          �templ_deleteall
�#          LastMenu_Win%=TemplW%
�          LastMenu_Icon%=-1
�
        �
�      � item_sorttempl%
�"        �sel_clear(TemplW%,-1)
�        �templ_sort
�        �redefinebrowser(�)
�!        LastMenu_Win%=TemplW%
�        LastMenu_Icon%=-1
�      � item_save%
�        SavingSelection%=�
�&        �savetemplates(MainFName$)
�	    �
�6    � TemplMenu_Deselect% � �sel_clear(TemplW%,-1)
�  � UserMenu%
�    Ȏ item% �
�E      � item_copyicon%,item_up%,item_down%,item_left%,item_right%
�        Ȏ item% �
�'          � item_copyicon% : dir%=0
�'          � item_up%       : dir%=1
�'          � item_down%     : dir%=2
�'          � item_left%     : dir%=3
�'          � item_right%    : dir%=4

        �
;        �copyiconsel(LastMenu_Win%,LastMenu_Icon%,dir%)
+      � item_iconnr%,item_renumbericon%
7        � item%=item_iconnr% � NextIconNr%=�(item$)
#        �sel_get(LastMenu_Win%)
        Ȏ NrSelected% �
          � 0
;            �renumbericon(LastMenu_Win%,LastMenu_Icon%)
*            LastMenu_Icon%=NextIconNr%
	          � 1

6            �renumbericon(LastMenu_Win%,SelBlk%!0)
          
/            �renumbericonsel(LastMenu_Win%)


        �
      � item_deleteicon%
8        �deleteiconsel(LastMenu_Win%,LastMenu_Icon%)
      � item_editicon%
5        �iced_start(LastMenu_Win%,LastMenu_Icon%)
      � item_minsize%
<        �minimizeiconsel(LastMenu_Win%,LastMenu_Icon%,0)
      � item_centericon%
:        �centericonsel(LastMenu_Win%,LastMenu_Icon%,0)
      � item_samesize%
<        �samesizeiconsel(LastMenu_Win%,LastMenu_Icon%,0)
,      � item_both%,item_xdim%,item_ydim%
        Ȏ parentitem% �
          � item_minsize%
F            �minimizeiconsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)
           � item_centericon%
D            �centericonsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)
          � item_samesize%
F            �samesizeiconsel(LastMenu_Win%,LastMenu_Icon%,itemnr%)
 
        �
!      � item_selallicons%
"#        �sel_all(LastMenu_Win%)
#      � item_clearselicons%
$(        �sel_clear(LastMenu_Win%,-1)
%      � item_editwindow%
&)        �wined_fillwin(LastMenu_Win%)
'      � item_edittitle%
()        �iced_start(LastMenu_Win%,-4)
)      � item_tidyicons%
*3        LastMenu_Win%=�tidyicons(LastMenu_Win%)
+      � item_centerwin%
,(        �openwindow(LastMenu_Win%,1)
-      � item_wimparea%
.2        �window_setspritearea(LastMenu_Win%,1)
/      � item_customarea%
0=        �window_setspritearea(LastMenu_Win%,UserSprites%)
1      � item_closewin%
29        �closetemplate(�whichtemplate(LastMenu_Win%))
3      
4I        � (item%=item_createicon%) � (parentitem%=item_createicon%) �
51          � item%=item_createicon% � item$=""
66          � convert screen coords to window coords
7'          ScrapBlk%!0=LastMenu_Win%
81          È™ "Wimp_GetWindowState",,ScrapBlk%
9:          minx%=LastMenu_X%-(ScrapBlk%!4-ScrapBlk%!20)
:;          miny%=LastMenu_Y%-(ScrapBlk%!16-ScrapBlk%!24)
;B          �createstandardicon(item$,LastMenu_Win%,minx%,miny%)
<
        �
=	    �
>  � IcButtonMenu%
?    IcEd_Button%=itemnr%
@4    �seticontext(4,$(IcButton%+20*IcEd_Button%))
A  � WinButtonMenu%
B    WinEd_Button%=itemnr%
C6    �seticontext(6,$(WinButton%+20*WinEd_Button%))
D  � EsgMenu%
E    IcEd_Esg%=�(�item$,2))
F$    �seticontext(5,�(IcEd_Esg%))
G  � ColourMenu%
H    � item$="None" �
I      j%=255
J	    �
K      j%=�(item$)
L	    �
M    ÈŽ LastMenu_Win% �
N      � IcEdW%
O        Ȏ LastMenu_Icon% �
P          � 34
Q            IcEd_Fgcol%=j%
R#            �setcolourbox(0,j%)
S          � 37
T            IcEd_Bgcol%=j%
U#            �setcolourbox(1,j%)
V
        �
W      � WinEdW%
X&        i%=(LastMenu_Icon%-27) � 4
Y        WinEd_Col%(i%)=j%
Z"        �setcolourbox(2+i%,j%)
[	    �
\  � FontMenu%
]    � �(parentitem$)>0 �
^      � item$="(Regular)" �
_"        IcEd_Font$=parentitem$
`      �
a,        IcEd_Font$=parentitem$+"."+item$
b      �
c%      �seticontext(19,IcEd_Font$)
d	    �
e  � FontSizemenu%
f    size=�(item$)
g    � size>0 �
h      � LastMenu_Icon%=48 �
i        IcEd_Xsize=size
j.        �seticontext(20,��(IcEd_Xsize),4))
k(        � �iconselected(IcEdW%,53) �
l#          IcEd_Ysize=IcEd_Xsize
m0          �seticontext(21,��(IcEd_Ysize),4))
n
        �
o      �
p        IcEd_Ysize=size
q.        �seticontext(21,��(IcEd_Ysize),4))
r      �
s	    �
t  � Updatemenu%
u    Ȏ item% �
v1      � item_updbt%   : �iced_readwin(&F<<12)
w2      � item_updesg%  : �iced_readwin(&1F<<16)
x:      � item_updfg%   : �iced_readwin((&F<<24)+(1<<6))
y:      � item_updbg%   : �iced_readwin((&F<<28)+(1<<6))
z;      � item_updfont% : �iced_readwin((&FF<<24)+(1<<6))
{7      � item_updrest% : �iced_readwin(&EFC+(1<<22))
|/      � item_updbo%:  : �iced_readwin(1<<2)
}/      � item_updfi%:  : �iced_readwin(1<<5)
~/      � item_updhc%:  : �iced_readwin(1<<3)
/      � item_updvc%:  : �iced_readwin(1<<4)
�/      � item_updrj%:  : �iced_readwin(1<<9)
�/      � item_updnh%:  : �iced_readwin(1<<7)
�0      � item_updaa%:  : �iced_readwin(1<<10)
�0      � item_updhs%:  : �iced_readwin(1<<11)
�0      � item_updsh%:  : �iced_readwin(1<<22)
�	    �
�    � LastMenu_Icon%=10 �
�      �closewindow(IcEdW%)
�!      �setcaret(IcEd_Win%,-1)
�      adjust%=�
�	    �
��
�� adjust% �
�G  �createmenu(LastMenu_X%,LastMenu_Y%,LastMenu_Win%,LastMenu_Icon%)
��
�  LastMenu%=-1
��
��
�
�4� �editaction(xpos%,ypos%,button%,window%,icon%)
�� key%,dclick%
�
key%=0
�
dclick%=�
�-� (� -1) � key%+=1 : � bit 0 -> Shift key
�,� (� -2) � key%+=2 : � bit 1 -> Ctrl key
�+� (� -3) � key%+=4 : � bit 2 -> Alt key
�+TimedDrag_Enabled%=(key%=0)�(icon%>=-1)
�� button%>256 �
�@  button%=button%>>8 : � clicked on icon with button type 10
��
�
Ȏ key% �
�"  � 0 : � mouse button, no key
�    � button%>0 �
�4      dclick%=(�-ThisClickTime%)<DclickInterval%
�6      dclick%=dclick% � (ThisClickButton%=button%)
�J      dclick%=dclick% � (�(ThisClickX%-xpos%)+�(ThisClickY%-ypos%))<32
�      ThisClickTime%=�
�      ThisClickX%=xpos%
�      ThisClickY%=ypos%
�"      ThisClickButton%=button%
�	    �
�    Ȏ button% �
�      � 1,4
�        Ȏ icon% �
�          � -4
�7            � dclick% � TrapDclick% � (button%=4) �
�,              �iced_start(window%,icon%)
�            �
�          � -1
�4            � button%=4 � �sel_clear(window%,-1)
�7            � dclick% � TrapDclick% � (button%=4) �
�)              �wined_fillwin(window%)
�            �
�&              �dragselect(button%)
�'              �setcaret(window%,-1)
�            �
�          
�            � icon%>=0 �
�              � button%=1 �
�-                � toggle "selected" state
�'                ScrapBlk%!0=window%
�%                ScrapBlk%!4=icon%
�5                ș "Wimp_GetIconState",,ScrapBlk%
�2                Ȏ ((ScrapBlk%!24)>>12) � 15 �
�M                  � 4,9      : � selecting useless for these button types
�;                  � 5,7,8,11 : � selecting done by wimp
�<                   �seticonstate(window%,icon%,1<<21,0)
�                �
�              �
�(                � "exclusive" select
�-                �sel_clear(window%,icon%)
�6                � � �iconselected(window%,icon%) �
�2                  �selecticon(window%,icon%,1)
�                �
�              �
�9              � dclick% � TrapDclick% � (button%=4) �
�.                �iced_start(window%,icon%)
�              �
�(                �dragselect(button%)
�)                �setcaret(window%,-1)
�              �
�            �
�
        �
�	    �
�"  � 1 : � shift + mouse button
�    Ȏ button% �
�      � 1,4
�!        �setcaret(window%,-1)
�1        �starticondrag(button%,window%,icon%)
�
      � 2
�&        �iced_start(window%,icon%)
�	    �
�!  � 2 : � ctrl + mouse button
�    Ȏ button% �
�
      � 1
�!        �setcaret(window%,-1)
�'        �startwindowresize(window%)
�
      � 2
�        � icon%=-4 �
�(          �iced_start(window%,icon%)
�
        �
�%          �wined_fillwin(window%)
�
        �
�
      � 4
�!        �setcaret(window%,-1)
�%        �startwindowmove(window%)
�	    �
�   � 4 : � alt + mouse button
�    Ȏ button% �
�
      � 1
�        � icon%>=0 �
�*          �renumbericon(window%,icon%)
�.          � NextIconNr%>0 � NextIconNr%-=1
�
        �
�
      � 4
�        � icon%>=0 �
�*          �renumbericon(window%,icon%)
�          NextIconNr%+=1
�
        �
�	    �
�  
�+    � (button%>0) � SupportInterface% �
�&      � make Interface invert icon
�      ScrapBlk%!8=button%
�      ScrapBlk%!12=window%
�      ScrapBlk%!16=icon%
�)      ș "Wimp_BorderIcon",,ScrapBlk%
�      � back to normal
      ScrapBlk%!8=0
      ScrapBlk%!12=window%
      ScrapBlk%!16=icon%
)      È™ "Wimp_BorderIcon",,ScrapBlk%
	    �
%    � (button%>0) � SupportAEH% �
      ScrapBlk%!8=button%
      ScrapBlk%!12=window%
      ScrapBlk%!16=icon%
	(      È™ "AEH_RedrawIcon",,ScrapBlk%

       È™ "AEH_ReleaseIcon",0
	    �
�

�

:� �click(xpos%,ypos%,button%,window%,icon%,wimpclick%)
� no%,key%
"Mbuttons_Released%=(button%=0)
TimedDrag_Enabled%=�
no%=�whichtemplate(window%)
� button%=2 �
>  � "steal" clicks with Menu if Shift, Ctrl or Alt pressed
   ș "OS_Byte",121,0 � ,key%
  � key%>=3 �
=    � wimpclick% � �createmenu(xpos%,ypos%,window%,icon%)
  �
A    � no%>=0 � �editaction(xpos%,ypos%,button%,window%,icon%)
  �
�
  � no%>=0 �
6    �editaction(xpos%,ypos%,button%,window%,icon%)
  �
 D    � wimpclick% � �iconclick(xpos%,ypos%,button%,window%,icon%)
!  �
"�
#�
$
%3� �iconclick(xpos%,ypos%,button%,window%,icon%)
&7� select%,menu%,adjust%,i%,j%,xsize%,ysize%,up%,lo%
'select%=(button%=4)
(menu%=(button%=2)
)adjust%=(button%=1)
*Ȏ window% �
+
  � -2
,    � select% �
-       �openwindow(TemplW%,3)
.4      � IcInfo_Active% � �openwindow(IcInfoW%,4)
/	    �
0  � IcEdW%
16    �iced_click(xpos%,ypos%,select%,adjust%,icon%)
2  � WinEdW%
37    �wined_click(xpos%,ypos%,select%,adjust%,icon%)
4  � StatW%
5    �stat_fillwin
6  � TemplW%
7,    � (select% � adjust%) � (icon%>=0) �
8)      ScrapBlk%!0=TemplHandle%(icon%)
9-      È™ "Wimp_GetWindowState",,ScrapBlk%
:$      � ScrapBlk%!32 � (1<<16) �
;!        �closetemplate(icon%)
<      �
=         �opentemplate(icon%)
>      �
?&      �selecticon(TemplW%,icon%,0)
@	    �
A     � select% � (icon%=-1) �
B       �sel_clear(TemplW%,-1)
C	    �
D'    � (button%=16) � (button%=64) �
E!      �dragselect(button%>>4)
F	    �
G  � SaveW%
H    Ȏ icon% �
I
      � 0
J         � SavingSelection% �
K$          SelFName$=$(FileName%)
L'          �savetemplates(SelFName$)
M
        �
N)          �setmainfname($(FileName%))
O(          �savetemplates(MainFName$)
P
        �
Q$        È™ "Wimp_CreateMenu",,-1
R
      � 2
S         � (button%>>4) � 5 �
T"          � SavingSelection% �
U&            SelFName$=$(FileName%)
V          �
W+            �setmainfname($(FileName%))
X          �
Y          �startsavedrag
Z
        �
[	    �
\  � AlignW%
]    Ȏ icon% �
^      � 10
_&        �alignicons(LastMenu_Win%)
`4        � (� adjust%) � ș "Wimp_CreateMenu",,-1
a      
b        �align_shadeicons
c	    �
d  � SpaceW%
e    Ȏ icon% �
f      � 5,7
g/        SpaceOut_Space%=�($(IconText%(18)))
h%        up%=(adjust% � (icon%=7))
i:        � �changevar(SpaceOut_Space%,4,up%,-512,512) �
j1          �seticontext(18,�(SpaceOut_Space%))
k"          �setcaret(SpaceW%,6)
l
        �
m     � 4,8
n        �space_shadeicons
o(        � icon%=8 � �setcaret(-1,-1)
p
      � 9
q&        �spaceicons(LastMenu_Win%)
r4        � (� adjust%) � ș "Wimp_CreateMenu",,-1
s	    �
t  � WorkW%
u    � icon%<=26 �
v+      � (icon%>=9) � ((icon% � 3)<>1) �
w"        � click on arrow icons
x)        up%=((icon% � 3)=2) � adjust%
y        i%=(icon%-9) � 3
z%        j%=�($(IconText%(12+i%)))
{        � i%<2 �
|          lo%=-10000
}
        �
~7          lo%=0 : � "size" field, can't be negative

        �
�.        � �changevar(j%,4,up%,lo%,10000) �
�'          �seticontext(12+i%,�(j%))
�'          �setcaret(WorkW%,3*i%+10)
�
        �
�      �
�    �                 
�!      WinBlk%!0=LastMenu_Win%
�+      ș "Wimp_GetWindowState",,WinBlk%
�      Ȏ icon% �
�        � 27,28
�?          xsize%=WinBlk%!12-WinBlk%!4+WinBlk%!20-WinBlk%!44
�?          ysize%=WinBlk%!16-WinBlk%!8-WinBlk%!24+WinBlk%!56
�          � icon%=27 �
�.            �seticontext(12,�(WinBlk%!44))
�.            �seticontext(13,�(WinBlk%!56))
�*            �seticontext(14,�(xsize%))
�*            �seticontext(15,�(ysize%))
�$            �setcaret(WorkW%,16)
�          �
�*            �seticontext(16,�(xsize%))
�*            �seticontext(17,�(ysize%))
�$            �setcaret(WorkW%,22)
�          �
�        � 29
�"          �seticontext(12,"0")
�"          �seticontext(13,"0")
�%          �seticontext(14,"1236")
�$          �seticontext(15,"936")
�"          �seticontext(16,"0")
�"          �seticontext(17,"0")
�"          �setcaret(WorkW%,16)
�        � 30
�          �setworkarea
�6          � (� adjust%) � ș "Wimp_CreateMenu",,-1
�
        
�      �
�	    �
�  � OptPaneW%
�    Ȏ icon% �
�*      � 8  : TrapDclick%=� TrapDclick%
�7      � 9  : �supportinterface(� SupportInterface%)
�+      � 10 : �supportaeh(� SupportAEH%)
�(      � 11 : DuplNames%=� DuplNames%
�      � 12
�        Hatch%=� Hatch%
�        �redrawall
�      � 13
�+        IcInfo_Active%=� IcInfo_Active%
�        � IcInfo_Active% �
�%          �openwindow(IcInfoW%,4)
�
        �
�$          �closewindow(IcInfoW%)
�
        �
�4      � 14 : Save_Unselected%=� Save_Unselected%
�0      � 15 : DeleteOutside%=� DeleteOutside%
�0      � 16 : Grid_SizeLock%=� Grid_SizeLock%
�      � 18,20
�&        up%=(adjust% � (icon%=20))
�D        � �changevar(Grid_SizeX%,PixToOS_X%,up%,PixToOS_X%,64) �
�-          �seticontext(28,�(Grid_SizeX%))
�
        �
�      � 22,24
�&        up%=(adjust% � (icon%=24))
�D        � �changevar(Grid_SizeY%,PixToOS_Y%,up%,PixToOS_Y%,64) �
�-          �seticontext(29,�(Grid_SizeY%))
�
        �
�.      � 25 : Grid_PosLock%=� Grid_PosLock%
�      � 27,29
�&        up%=(adjust% � (icon%=29))
�C        � �changevar(Grid_PosX%,PixToOS_X%,up%,PixToOS_X%,64) �
�,          �seticontext(30,�(Grid_PosX%))
�
        �
�      � 31,33
�&        up%=(adjust% � (icon%=33))
�C        � �changevar(Grid_PosY%,PixToOS_Y%,up%,PixToOS_Y%,64) �
�,          �seticontext(31,�(Grid_PosY%))
�
        �
�	    �
�  � OptionsW%
�    Ȏ icon% �
�
      � 0
�        �setup_save
�#        �closewindow(OptionsW%)
�
      � 1
�#        �closewindow(OptionsW%)
�	    �
�  � DialW%
�     ș "Wimp_CreateMenu",,-1
�    ÈŽ LastDialogue% �
�
      � 0
�,        � program quit with changes made
�        Ȏ icon% �
�          � 1
�2            ș "Wimp_GetPointerInfo",,PtrInfo%
�'            $(FileName%)=MainFName$
�"            SavingSelection%=�
�             QuitAfterSave%=�
�I            ș "Wimp_CreateMenu",,SaveW%,PtrInfo%!0-126,PtrInfo%!4+56
�          � 2
�            �prequit(1)
�
        �
�
      � 1
�*        � delete all with changes made
�(        � icon%=1 � �templ_deleteall
�
      � 2
�-        � load new file with changes made
�        � icon%=1 �
�          �templ_deleteall
�*          �templ_loadfile(NewFName$,1)
�&          �setmainfname(NewFName$)
�
        �
�
      � 8
�1        � exit from desktop with changes made
�        Ȏ icon% �
�          � 1
�             �templ_deleteall
�A            � resume prequit procedure (code copied from PRM)
�5            ș "Wimp_GetCaretPosition",,ScrapBlk%
�!            ScrapBlk%!24=&1FC
�@            ș "Wimp_SendMessage",8,ScrapBlk%,PreQuitSender%
�
        �
�	    �
��
��
�
�5� �wined_click(xpos%,ypos%,select%,adjust%,icon%)
�� up%,i%,gcol%
�Ȏ icon% �

  � 53
    �wined_readwin

  � 54
    �wined_readwin
    �closewindow(WinEdW%)
     �setcaret(WinEd_Win%,-1)

  � 55
    �closewindow(WinEdW%)
     �setcaret(WinEd_Win%,-1)
	
  � 13

'    � � �iconselected(WinEdW%,20) �
;      �selecticon(WinEdW%,14,�iconselected(WinEdW%,13))
	    �

  � 14
'    � � �iconselected(WinEdW%,20) �
;      �selecticon(WinEdW%,13,�iconselected(WinEdW%,14))
	    �
  � 15,17,19,20
     �wined_shadeicons(icon%)
  � 23,27,31,35,39,43,47,51
.    �createmenu(xpos%,ypos%,WinEdW%,icon%)

  � 22,24
"    up%=(adjust% � (icon%=24))
0    � �changevar(WinEd_Button%,1,up%,0,15) �
8      �seticontext(6,$(WinButton%+20*WinEd_Button%))
	    �

  � 56
    WinEd_Col%(0)=7
    WinEd_Col%(1)=2
    WinEd_Col%(2)=7
    WinEd_Col%(3)=1
    WinEd_Col%(4)=3
     WinEd_Col%(5)=1
!    WinEd_Col%(6)=12
"    � i%=0 � 6
#,      �setcolourbox(2+i%,WinEd_Col%(i%))
$    � i%
%  
&7    � (icon%>=26) � (icon%<=52) � ((icon% � 2)=0) �
''      up%=((icon% � 4)=0) � adjust%
(      i%=(icon%-26) � 4
)(      gcol%=�iconselected(WinEdW%,9)
*;      �changecolourbox(2+i%,WinEd_Col%(i%),1,up%,gcol%)
+	    �
,�
-�
.
/4� �iced_click(xpos%,ypos%,select%,adjust%,icon%)
0� up%,l%
1Ȏ icon% �
2	  � 4
3.    � adjust% � �iconselected(IcEdW%,14) �
4/      � minimize number in 'Max size' field
5&      � �iconselected(IcEdW%,12) �
6#          l%=�($(IconText%(0)))
7      �
8(        � �iconselected(IcEdW%,13) �
9#          l%=�($(IconText%(1)))
:
        �
;      �
<!      �seticontext(3,�(l%+1))
=	    �
>	  � 9
?    �iced_readwin(-1)
@
  � 10
A    �iced_readwin(-1)
B    �closewindow(IcEdW%)
C    �setcaret(IcEd_Win%,-1)
D
  � 11
E    �closewindow(IcEdW%)
F    �setcaret(IcEd_Win%,-1)
G  � 12,13,14,41,53
H    �iced_shadeicons(icon%)
I  � 28,31,34,37,45,46,48,51
J-    �createmenu(xpos%,ypos%,IcEdW%,icon%)
K
  � 27,29
L"    up%=(adjust% � (icon%=29))
M/    � �changevar(IcEd_Button%,1,up%,0,15) �
N6      �seticontext(4,$(IcButton%+20*IcEd_Button%))
O	    �
P
  � 30,32
Q"    up%=(adjust% � (icon%=32))
R,    � �changevar(IcEd_Esg%,1,up%,0,31) �
S&      �seticontext(5,�(IcEd_Esg%))
T	    �
U
  � 33,35
V"    up%=(adjust% � (icon%=35))
W/    �changecolourbox(0,IcEd_Fgcol%,1,up%,0)
X
  � 36,38
Y"    up%=(adjust% � (icon%=38))
Z/    �changecolourbox(1,IcEd_Bgcol%,1,up%,0)
[
  � 47,49
\;    � (adjust% � (icon%=47)) � (select% � (icon%=49)) �
]      � IcEd_Xsize<998 �
^        IcEd_Xsize+=2
_.        �seticontext(20,��(IcEd_Xsize),4))
`(        � �iconselected(IcEdW%,53) �
a#          IcEd_Ysize=IcEd_Xsize
b0          �seticontext(21,��(IcEd_Ysize),4))
c
        �
d      �
e	    �
f      � IcEd_Xsize>2 �
g        IcEd_Xsize-=2
h.        �seticontext(20,��(IcEd_Xsize),4))
i(        � �iconselected(IcEdW%,53) �
j#          IcEd_Ysize=IcEd_Xsize
k0          �seticontext(21,��(IcEd_Ysize),4))
l
        �
m      �
n	    �
o
  � 50,52
p;    � (adjust% � (icon%=50)) � (select% � (icon%=52)) �
q      � IcEd_Ysize<998 �
r        IcEd_Ysize+=2
s.        �seticontext(21,��(IcEd_Ysize),4))
t      �
u	    �
v      � IcEd_Ysize>2 �
w        IcEd_Ysize-=2
x.        �seticontext(21,��(IcEd_Ysize),4))
y      �
z	    �
{�
|�
}
~� �receive(buf%)
H� sender%,ref%,code%,ackcode%,acktype%,fname$,ftype%,icon%,no%,boot$
�sender%=buf%!4
�ref%=buf%!8
�code%=buf%!16
�Cackcode%=0 : � sort of message to acknowledge this message with
�/acktype%=17 : � message type of acknowledge
�� sender% <> ThisTask% �
�  Ȏ code% �
�    � 0
�      � 'quit' message
�      �prequit(0)
�    � 1
�      � data save
�      � buf%!40=&FEC �
�>        � other app saves file to TemplEd (via Wimp$Scrap)
�&        NewLeafName$=�str(buf%+44)
�%        $(buf%+44)="<Wimp$Scrap>"
�1        buf%!36=-1 : � saved file is "unsafe"
�        ackcode%=2
�      �
�    � 2
�      � data save ack
�      fname$=�str(buf%+44)
�      � SavingSelection% �
�        SelFName$=fname$
�%        �savetemplates(SelFName$)
�      �
�8        � (buf%!36<>-1) � (fname$<>"<Wimp$Scrap>") �
�#          �setmainfname(fname$)
�
        �
�"        �savetemplates(fname$)
�      �
�3      ș "OS_File",17,fname$ � ftype%,,,,fsize%
�      � ftype%=1 �
�        ackcode%=3
�        buf%!36=fsize%
�      �
�    � 3
�      � data load
�!      NewFName$=�str(buf%+44)
�      Ȏ buf%!40 �
�        � &FEC
�          ÈŽ buf%!20 �
�            � TemplW%
�-              �setchanged(NrTemplates%>0)
�.              �templ_loadfile(NewFName$,0)
�              ackcode%=4
�            � -2
�&              � buf%!24=BarIcon% �
�$                � ChangesMade% �
�(                  �dialogue(2,"","")
�                �
�&                  �templ_deleteall
�2                  �templ_loadfile(NewFName$,1)
�                �
�              �
�              ackcode%=4
�          �
�        � &FF9
�3          � (buf%!20=-2) � (buf%!24=BarIcon%) �
�+            �loadusersprites(NewFName$)
�            ackcode%=4
�          �
�        � &2000
�2          NewFName$=�str(buf%+44)+".Templates"
�H          � �fileexists(NewFName$)�(buf%!20=-2)�(buf%!24=BarIcon%) �
�             � ChangesMade% �
�$              �dialogue(2,"","")
�            �
�"              �templ_deleteall
�.              �templ_loadfile(NewFName$,1)
�            �
�            ackcode%=4
�          �
�      �
�    � 5
�"      � double-click on a file
�!      NewFName$=�str(buf%+44)
�      Ȏ buf%!40 �
�        � &FEC
�           � NrTemplates%=0 �
�,            �templ_loadfile(NewFName$,1)
�            ackcode%=4
�          �
�      �
�    � 8
�      � desktop exit
�      � ChangesMade% �
�        ackcode%=8
�        acktype%=19
�"        PreQuitSender%=sender%
�        �dialogue(8,"","")
�      �
�    � 10
�#      � desktop save (RiscOS 3)
�5      boot$="Run "+�readvarval("TemplEd$Dir")+�10
�/      ș "OS_GBPB",2,buf%!20,boot$,�(boot$)
�    � &502
�*      � request from !Help application
�%      no%=�whichtemplate(buf%!32)
�      icon%=buf%!36
�$      � (no%>=0) � (icon%>=-1) �
�+        $(buf%+20)=�iconhelp(no%,icon%)
�        ackcode%=&503
�      �
�    � &400C0
�!      � about to open submenu
�      Ȏ LastMenu% �
�        � TemplMenu%
�+          � set filename in save window
�          � buf%!36=-1 �
�'            $(FileName%)=MainFName$
�"            SavingSelection%=�
�          �
�&            $(FileName%)=SelFName$
�"            SavingSelection%=�
�          �
�          �sel_get(TemplW%)
�0          � (buf%!36=-1) � (NrSelected%=0) �
�)            � template name to create
�5            ș "MenuUtil_Text",item_templname%,""
�          �
�1            � template name to copy or rename
�P            ș "MenuUtil_Text",item_templname%,$(TemplNames%+28*(SelBlk%!0))
�          �
�        � UserMenu%
�-          � fill icons in workarea window
�%          WinBlk%!0=LastMenu_Win%
�.          ș "Wimp_GetWindowInfo",,WinBlk%
,          $(IconText%(12))=�(WinBlk%!44)
,          $(IconText%(13))=�(WinBlk%!56)
7          $(IconText%(14))=�(WinBlk%!52-WinBlk%!44)
7          $(IconText%(15))=�(WinBlk%!56-WinBlk%!48)
6          $(IconText%(16))=�((WinBlk%!72) � &FFFF)
2          $(IconText%(17))=�((WinBlk%!72)>>16)
      �
:      È™ "Wimp_CreateSubMenu",,buf%!20,buf%!24,buf%!28
    � &400C1
	      � mode change

      �readscreenvars
=      � TemplW_MaxCol%<TemplW_Cols% � �redefinebrowser(�)
    � &400C9

1      � menu removed with no menu item chosen
"      � LastMenu%=TemplMenu% �
:        � TemplMenu_Deselect% � �sel_clear(TemplW%,-1)
      �
  �
  � ackcode%<>0 �
    buf%!0=256
    buf%!12=ref%
    buf%!16=ackcode%
-    È™ "Wimp_SendMessage",17,buf%,sender%
  �
�
�

� �redraw(handle%)
� more%,win0x%,win0y%,dx%
)� xstart%,height%,xcorr%,ycorr%,x%,y%

dx%=48
Blk%!0=handle%
 (ș "Wimp_RedrawWindow",,Blk% � more%
!win0x%=Blk%!4-Blk%!20
"win0y%=Blk%!16-Blk%!24
#È• more%
$  � Hatch% �
%    height%=Blk%!40-Blk%!32
&    xstart%=Blk%!28-height%
'%    xcorr%=(xstart%-win0x%) � dx%
(%    ycorr%=(win0y%-Blk%!32) � dx%
)4    � x%=xstart%-(xcorr%+ycorr%) � Blk%!36 � dx%
*      � x%,Blk%!32
+      � 1,height%,height%
,    � x%
-%    ycorr%=(win0y%-Blk%!40) � dx%
.4    � x%=xstart%-(xcorr%-ycorr%) � Blk%!36 � dx%
/      � x%,Blk%!40
0      � 1,height%,-height%
1    � x%
2  �
3  � SupportInterface% �
4$    È™ "Wimp_BorderWindow",,Blk%
5  �
6  � SupportAEH% �
7#    È™ "AEH_RedrawWindow",,Blk%
8  �
9*  ș "Wimp_GetRectangle",,Blk% � more%
:�
;�
<
=.� *** procs for the window-edit window ***
>
?� �wined_fillwin(window%)
@� no%,flags%,i%
AWinEd_Win%=window%
BWinBlk%!0=WinEd_Win%
Cno%=�whichtemplate(window%)
D$È™ "Wimp_GetWindowInfo",,WinBlk%
Eflags%=WinBlk%!32
F"WinEd_Button%=(WinBlk%!64)>>12
G� i%=0 � 6
H&  WinEd_Col%(i%)=(WinBlk%?(36+i%))
I� i%
J*�selecticon(WinEdW%,4,flags% � (1<<1))
K*�selecticon(WinEdW%,5,flags% � (1<<4))
L+�selecticon(WinEdW%,6,flags% � (1<<12))
M(�selecticon(WinEdW%,7,PaneFlag%?no%)
N*�selecticon(WinEdW%,8,flags% � (1<<6))
O+�selecticon(WinEdW%,9,flags% � (1<<10))
P,�selecticon(WinEdW%,10,flags% � (1<<11))
Q+�selecticon(WinEdW%,11,flags% � (1<<8))
R+�selecticon(WinEdW%,12,flags% � (1<<9))
S,�selecticon(WinEdW%,20,flags% � (1<<31))
T� i%=0 � 6
U6  �selecticon(WinEdW%,13+i%,flags% � (1<<(24+i%)))
V� i%
W� (flags% � (1<<31))=0 �
X1  �selecticon(WinEdW%,14,(flags% � (1<<7))=0)
Y1  �selecticon(WinEdW%,13,(flags% � (1<<7))=0)
Z-  �selecticon(WinEdW%,15,flags% � (1<<0))
[-  �selecticon(WinEdW%,17,flags% � (1<<2))
\-  �selecticon(WinEdW%,19,flags% � (1<<3))
]�
^O�settitlebar(WinEdW%,WinEdTbar%,�msg_lookup1("EDTP",$(TemplNames%+28*no%)))
_2�seticontext(6,$(WinButton%+20*WinEd_Button%))
`� i%=0 � 6
a(  �setcolourbox(2+i%,WinEd_Col%(i%))
b� i%
c�wined_shadeicons(-1)
d�openwindow(WinEdW%,0)
e�setcaret(WinEdW%,-1)
f�
g
h#� �wined_shadeicons(clickedon%)
i"� newformat%,titlebar%,scroll%
j(newformat%=�iconselected(WinEdW%,20)
k'titlebar%=�iconselected(WinEdW%,15)
lAscroll%=�iconselected(WinEdW%,17) � �iconselected(WinEdW%,19)
m)� (clickedon%=-1) � (clickedon%=20) �
n)  �shadeicon(WinEdW%,16,� newformat%)
o�
p)� (clickedon%=-1) � (clickedon%=15) �
q(  �shadeicon(WinEdW%,13,� titlebar%)
r(  �shadeicon(WinEdW%,14,� titlebar%)
s(  �shadeicon(WinEdW%,16,� titlebar%)
t�
u� (clickedon%<>15) �
v5  �shadeicon(WinEdW%,18,newformat% � (� scroll%))
w�
x�
y
z� �wined_readwin
{� flags%,no%,i%
|WinBlk%!0=WinEd_Win%
}$È™ "Wimp_GetWindowInfo",,WinBlk%
~!flags%=(WinBlk%!32)�(&1F<<16)
0� �iconselected(WinEdW%,15) � flags%+=(1<<0)
�/� �iconselected(WinEdW%,4) � flags%+=(1<<1)
�0� �iconselected(WinEdW%,17) � flags%+=(1<<2)
�0� �iconselected(WinEdW%,19) � flags%+=(1<<3)
�/� �iconselected(WinEdW%,5) � flags%+=(1<<4)
�"no%=�whichtemplate(WinEd_Win%)
� � �iconselected(WinEdW%,7) �
�  PaneFlag%?no%=1<<5
��
�  PaneFlag%?no%=0
��
�/� �iconselected(WinEdW%,8) � flags%+=(1<<6)
�2� � �iconselected(WinEdW%,14) � flags%+=(1<<7)
�0� �iconselected(WinEdW%,11) � flags%+=(1<<8)
�0� �iconselected(WinEdW%,12) � flags%+=(1<<9)
�0� �iconselected(WinEdW%,9) � flags%+=(1<<10)
�1� �iconselected(WinEdW%,10) � flags%+=(1<<11)
�0� �iconselected(WinEdW%,6) � flags%+=(1<<12)
�� i%=0 � 7
�;  � �iconselected(WinEdW%,13+i%) � flags%+=(1<<(24+i%))
�� i%
�WinBlk%!32=flags%
� WinBlk%!64=WinEd_Button%<<12
�� i%=0 � 6
�$  WinBlk%?(36+i%)=WinEd_Col%(i%)
�� i%
�)WinEd_Win%=�redefinewindow(WinBlk%,1)
��
�
�,� *** procs for the icon-edit window ***
�
� � �iced_start(window%,icon%)
�� icon%=-4 �
�  �iced_fillwin(window%,-4)
��
�  �sel_get(window%)
�  � NrSelected%>0 �
�     � NrSelected%=1 �
�*      �iced_fillwin(window%,SelBlk%!0)
�
     �
�$       �iced_fillwin(window%,-1)
�
     �
�  �
�    � (icon%>=0) �
�&      �iced_fillwin(window%,icon%)
�	    �
�  �
��
��
�
�"� �iced_fillwin(window%,icon%)
�@� no%,flags%,data%,arg$,title$,text%,sprite%,indir%,caretto%
�� t$,v$,m$,s$
�IcEd_Win%=window%
�IcEd_Icon%=icon%
�no%=�whichtemplate(window%)
�WinBlk%!0=IcEd_Win%
�$ș "Wimp_GetWindowInfo",,WinBlk%
�Ȏ icon% �
�&  � -4  : � editing title bar icon
�?    flags%=(WinBlk%!60) � &FFF : � mask out irrelevant bits
�    flags%=flags% � &14
�    � (flags% � (1<<6))=0 �
�;      � copy fg and bg colour flags from window colours
�J      flags%=(flags% � &FFF) � ((WinBlk%?36)<<24) � ((WinBlk%?37)<<28)
�	    �
�    data%=WinBlk%+76
�"    arg$+=�msg_lookup0("TBAR")
�>  � -1  : � editing selection (read flags from first icon)
�    �sel_get(IcEd_Win%)
�-    flags%=WinBlk%!(92+32*(SelBlk%!0)+16)
�*    data%=WinBlk%+92+32*(SelBlk%!0)+20
�!    arg$+=�msg_lookup0("SEL")
�   : � editing single icon
�,    flags%=WinBlk%!(92+32*IcEd_Icon%+16)
�)    data%=WinBlk%+92+32*IcEd_Icon%+20
�+    arg$+=�msg_lookup1("ICNR",�(icon%))
��
�:title$=�msg_lookup2("EDIC",$(TemplNames%+28*no%),arg$)
�text%=(flags% � 1)>0
�sprite%=(flags% � 2)>0
�indir%=(flags% � &100)>0
�
� text% �
�  � indir% �
�    t$=$(data%!0)
�    m$=�(data%!8)
�%    � data%!4<>-1 � v$=$(data%!4)
�  �
�    t$=$(data%)
�  �
��
�� sprite% � (� text%) �
�  � indir% �
�    s$=$(data%!0)
�    m$=�(data%!8)
�  �
�    s$=$(data%)
�  �
��
�"IcEd_Button%=(flags%>>12) � 15
�IcEd_Esg%=(flags%>>16) � 31
�� (flags% � (1<<6)) �
�  IcEd_Fgcol%=7
�  IcEd_Bgcol%=0
�H  �font_getinfo((flags%>>24) � 255,IcEd_Font$,IcEd_Xsize,IcEd_Ysize)
��
�#  IcEd_Fgcol%=(flags%>>24) � 15
�#  IcEd_Bgcol%=(flags%>>28) � 15
�"  IcEd_Font$="Homerton.Medium"
�  IcEd_Xsize=12
�  IcEd_Ysize=12
��
�)�settitlebar(IcEdW%,IcEdTbar%,title$)
� �selecticon(IcEdW%,12,text%)
�"�selecticon(IcEdW%,13,sprite%)
�!�selecticon(IcEdW%,14,indir%)
��seticontext(0,t$)
��seticontext(1,s$)
��seticontext(2,v$)
��seticontext(3,m$)
�*�selecticon(IcEdW%,15,flags% � (1<<2))
�*�selecticon(IcEdW%,17,flags% � (1<<3))
�*�selecticon(IcEdW%,18,flags% � (1<<4))
�*�selecticon(IcEdW%,16,flags% � (1<<5))
�*�selecticon(IcEdW%,41,flags% � (1<<6))
�*�selecticon(IcEdW%,20,flags% � (1<<7))
�*�selecticon(IcEdW%,19,flags% � (1<<9))
�+�selecticon(IcEdW%,21,flags% � (1<<10))
�+�selecticon(IcEdW%,22,flags% � (1<<11))
+�selecticon(IcEdW%,39,flags% � (1<<22))
0�seticontext(4,$(IcButton%+20*IcEd_Button%))
 �seticontext(5,�(IcEd_Esg%))
 �setcolourbox(0,IcEd_Fgcol%)
 �setcolourbox(1,IcEd_Bgcol%)
�seticontext(19,IcEd_Font$)
&�seticontext(20,��(IcEd_Xsize),4))
&�seticontext(21,��(IcEd_Ysize),4))
0�selecticon(IcEdW%,53,IcEd_Xsize=IcEd_Ysize)
	� i%=12 � 14

)  �shadeicon(IcEdW%,i%,IcEd_Icon%=-1)
� i%
� IcEd_Icon%=-1 �

  � i%=23 � 26
    �shadeicon(IcEdW%,i%,1)

  � i%
�
'�shadeicon(IcEdW%,15,IcEd_Icon%=-4)
'�shadeicon(IcEdW%,16,IcEd_Icon%=-4)
'�shadeicon(IcEdW%,20,IcEd_Icon%=-4)
'�shadeicon(IcEdW%,21,IcEd_Icon%=-4)
� i%=27 � 32
)  �shadeicon(IcEdW%,i%,IcEd_Icon%=-4)
� i%
'�shadeicon(IcEdW%,39,IcEd_Icon%=-4)
�iced_shadeicons(-1)
�openwindow(IcEdW%,0)
caretto%=-1
� IcEd_Icon%<>-1 �
  � indir% � caretto%=25
  � sprite% � caretto%=24
  � text% � caretto%=23
 �
!�setcaret(IcEdW%,caretto%)
"�
#
$"� �iced_shadeicons(clickedon%)
%� t%,s%,i%,f%,lockaspect%
&� IcEd_Icon%<>-1 �
',  � (clickedon%=-1) � (clickedon%<=14) �
(#    t%=�iconselected(IcEdW%,12)
)#    s%=�iconselected(IcEdW%,13)
*#    i%=�iconselected(IcEdW%,14)
+"    �shadeicon(IcEdW%,23,� t%)
,0    �shadeicon(IcEdW%,24,(� s%) � (t% � i%))
-(    �shadeicon(IcEdW%,25,�(t% � i%))
."    �shadeicon(IcEdW%,26,� i%)
/  �
0�
1f%=�iconselected(IcEdW%,41)
2(lockaspect%=�iconselected(IcEdW%,53)
3)� (clickedon%=-1) � (clickedon%=41) �
4  � i%=33 � 38
5     �shadeicon(IcEdW%,i%,f%)
6
  � i%
7  � i%=45 � 49
8"    �shadeicon(IcEdW%,i%,� f%)
9
  � i%
:   �shadeicon(IcEdW%,53,� f%)
;�
<;� (clickedon%=-1) � (clickedon%=41) � (clickedon%=53) �
=  � i%=50 � 52
>2    �shadeicon(IcEdW%,i%,(� f%) � lockaspect%)
?
  � i%
@�
A)È™ "Wimp_GetCaretPosition",,ScrapBlk%
B,� �iconshaded(ScrapBlk%!0,ScrapBlk%!4) �
C:  �setcaret(IcEdW%,-1) : � move caret from shaded icon
D�
E�
F
G� �iced_readwin(mask%)
H0� flags%,flagptr%,data%,ib%,cbp%,xsize,ysize
I � xsize16%,ysize16%,fhandle%
J!� i%,t%,s%,deflen%,maxlen%,p%
KWinBlk%!0=IcEd_Win%
L$È™ "Wimp_GetWindowInfo",,WinBlk%
MȎ IcEd_Icon% �
N&  � -4  : � editing title bar icon
O    flagptr%=WinBlk%+60
P    data%=WinBlk%+76
Q>  � -1  : � editing selection (read flags from first icon)
R    �sel_get(IcEd_Win%)
S-    flagptr%=WinBlk%+92+32*(SelBlk%!0)+16
T*    data%=WinBlk%+92+32*(SelBlk%!0)+20
U   : � editing single icon
V    � IcEd_Icon%>=0 �
W.      flagptr%=WinBlk%+92+32*IcEd_Icon%+16
X+      data%=WinBlk%+92+32*IcEd_Icon%+20
Y&      ib%=WinBlk%+92+32*IcEd_Icon%
Z	    �
[�
\cbp%=WinBlk%!68
]=� construct new flags, but do not change "selected" state
^!flags%=(flagptr%!0) � (1<<21)
_/� �iconselected(IcEdW%,15) � flags%+=(1<<2)
`/� �iconselected(IcEdW%,16) � flags%+=(1<<5)
a/� �iconselected(IcEdW%,17) � flags%+=(1<<3)
b/� �iconselected(IcEdW%,18) � flags%+=(1<<4)
c/� �iconselected(IcEdW%,19) � flags%+=(1<<9)
d/� �iconselected(IcEdW%,20) � flags%+=(1<<7)
e0� �iconselected(IcEdW%,21) � flags%+=(1<<10)
f0� �iconselected(IcEdW%,22) � flags%+=(1<<11)
g0� �iconselected(IcEdW%,39) � flags%+=(1<<22)
hflags%+=(IcEd_Button%<<12)
iflags%+=(IcEd_Esg%<<16)
j � �iconselected(IcEdW%,41) �
k  flags%+=(1<<6)
l  xsize16%=�(IcEd_Xsize*16)
m  ysize16%=�(IcEd_Ysize*16)
n$  � xsize16%<=0 � xsize16%=12*16
o$  � ysize16%<=0 � ysize16%=12*16
pH  ș "Font_FindFont",,IconText%(19),xsize16%,ysize16%,0,0 � fhandle%
q   � FontUsage%(fhandle%)>0 �
r?    ș "Font_LoseFont",fhandle% : � font was already in use
s  �
t  FontUsage%(fhandle%)+=1
u  flags%+=(fhandle%<<24)
v�
w  flags%+=(IcEd_Fgcol%<<24)
x  flags%+=(IcEd_Bgcol%<<28)
y�
z'� (IcEd_Icon%>=0)�(IcEd_Icon%=-4) �
{$  �iconrelease(flagptr%!0,data%)
|!  t%=�iconselected(IcEdW%,12)
}!  s%=�iconselected(IcEdW%,13)
~!  i%=�iconselected(IcEdW%,14)
  � s% � (� t%) �
�=    deflen%=�($(IconText%(1)))+1 : � default maximum size
�  �
�$    deflen%=�($(IconText%(0)))+1
�  �
�  � i% �
�"    maxlen%=�($(IconText%(3)))
�  �
�    maxlen%=12
�  �
�  � maxlen%<deflen% �
�N    maxlen%=deflen%                : � increase max size if text is longer
�"    �seticontext(3,�(maxlen%))
�  �
�  � (� i%) � (deflen%>12) �
�E    �selecticon(IcEdW%,14,1)    : � make indirected if > 12 chars
�A    �seticontext(2,"")          : � default validation string
�    �iced_shadeicons(14)
�    i%=�
�  �
�  � t% � flags%+=(1<<0)
�  � s% � flags%+=(1<<1)
�  � i% � flags%+=(1<<8)
�  � i% �
�    � s% � (� t%) �
�      data%!0=IconText%(1)
�D      data%!4=cbp% : � window CBP as default sprite area pointer
�	    �
�    � t% �
�      data%!0=IconText%(0)
�"      � �($(IconText%(2)))>0 �
�         data%!4=IconText%(2)
�      �
�2        data%!4=-1 : � empty validation string
�      �
�	    �
�    data%!8=maxlen%
�  �
�    � t% �
�"      $(data%)=$(IconText%(0))
�	    �
�      � s% �
�$        $(data%)=$(IconText%(1))
�      �
�	    �
�  �
�  flagptr%!0=flags%
�"  �iconrealloc(flagptr%,data%)
��
�Ȏ IcEd_Icon% �
�
  � -4
�    WinBlk%?36=IcEd_Fgcol%
�    WinBlk%?37=IcEd_Bgcol%
�,    IcEd_Win%=�redefinewindow(WinBlk%,1)
�
  � -1
�A    � do not change text, sprite and indir flags of selection
�    mask%=mask% � (� &103)
�    � NrSelected%>0 �
�       � i%=0 � NrSelected%-1
�H        �seticonstate(IcEd_Win%,SelBlk%!(4*i%),flags% � mask%,mask%)
�      � i%
�	    �
�      �dialogue(9,"","")
�	    �
�  
�    � IcEd_Icon%>=0 �
�>      IcEd_Icon%=�redefineicon(IcEd_Win%,IcEd_Icon%,ib%-8)
�	    �
�      �dialogue(4,"","")
�	    �
��
� � �iconselected(IcEdW%,41) �
�A  � font count was increased earlier when finding font handle
�  �font_lose(fhandle%)
��
��setchanged(�)
��
�
�� *** menu procs ***
�
�'� �menu_add(text$,submenu%,genmsg%)
�
� handle%
�&ș "MenuUtil_Add",,text$ � handle%
�;� submenu%<>-1 � ș "MenuUtil_SubMenu",handle%,submenu%
�/� genmsg% � ș "MenuUtil_Warning",handle%,1
�=handle%
�
�*� �menu_addwritable(maxlen%,validstr%)
�
� handle%
�#ș "MenuUtil_Add",,"" � handle%
�/ș "MenuUtil_Writable",,1,maxlen%,validstr%
�=handle%
�
�� �preparemenus
�� i%
�"ș "MenuUtil_Initialise",010,0
�/ș "MenuUtil_New",,"Sprites" � SpritesMenu%
�-item_sprview%=�menu_add("View/Edit",-1,0)
�-item_sprreload%=�menu_add("Re-load",-1,0)
�*item_sprreset%=�menu_add("Reset",-1,0)
�� --- iconbar menu
�(ș "MenuUtil_New",,Appl$ � MainMenu%
�)item_info%=�menu_add("Info",InfoW%,0)
�.item_options%=�menu_add("Options...",-1,0)
�/item_stats%=�menu_add("Statistics...",-1,0)
�Bitem_customsprites%=�menu_add("Custom sprites",SpritesMenu%,0)
�%item_quit%=�menu_add("Quit",-1,0)
�� --- template-name menu
�5ș "MenuUtil_New",,"   Name:   " � TemplNamemenu%
�+item_templname%=�menu_addwritable(12,0)
�� --- template submenu
�)ș "MenuUtil_New",,"" � TemplSubmenu%
�6item_copytempl%=�menu_add("Copy",TemplNamemenu%,1)
�:item_renametempl%=�menu_add("Rename",TemplNamemenu%,1)
�.item_deletetempl%=�menu_add("Delete",-1,0)
�.item_savetempl%=�menu_add("Save",SaveW%,1)
�*item_opentempl%=�menu_add("Open",-1,0)
�,item_closetempl%=�menu_add("Close",-1,0)
�� --- template menu
�)ș "MenuUtil_New",,Appl$ � TemplMenu%
�:item_createtempl%=�menu_add("Create",TemplNamemenu%,1)
�0item_template%=�menu_add("",TemplSubmenu%,0)
�2item_selalltempl%=�menu_add("Select all",-1,0)
�9item_clearseltempl%=�menu_add("Clear selection",-1,0)
�0item_deleteall%=�menu_add("Delete all",-1,0)
�4item_sorttempl%=�menu_add("Sort templates",-1,0)
�)item_save%=�menu_add("Save",SaveW%,1)
�)� --- direction menu for icon copying
�(ș "MenuUtil_New",,"Copy" � DirMenu%
'item_up%=�menu_add("Up    ^U",-1,0)
)item_down%=�menu_add("Down  ^D",-1,0)
)item_left%=�menu_add("Left  ^L",-1,0)
*item_right%=�menu_add("Right ^R",-1,0)
#� --- menu for icon renumbering
+ș "MenuUtil_New",,"No.:" � IconNrmenu%
2item_iconnr%=�menu_addwritable(4,NumValidStr%)
� --- "dimension" menu
.ș "MenuUtil_New",,"Dim." � DimensionMenu%
	%item_both%=�menu_add("Both",-1,0)

"item_xdim%=�menu_add("X",-1,0)
"item_ydim%=�menu_add("Y",-1,0)
� --- user-template submenu

(ș "MenuUtil_New",,"" � UserSubmenu%
7item_copyicon%=�menu_add("Copy      ^C",DirMenu%,0)
:item_renumbericon%=�menu_add("Renumber",IconNrmenu%,0)
3item_deleteicon%=�menu_add("Delete    ^X",-1,0)
1item_editicon%=�menu_add("Edit...   ^E",-1,0)
È™ "MenuUtil_Dots",,1
3item_align%=�menu_add("Align     ^J",AlignW%,0)
6item_spaceout%=�menu_add("Space out ^K",SpaceW%,0)
9item_minsize%=�menu_add("Min. size",DimensionMenu%,0)
9item_centericon%=�menu_add("Center",DimensionMenu%,0)
:item_samesize%=�menu_add("Same size",DimensionMenu%,0)
� --- sprite area menu
8ș "MenuUtil_New",,"Sprites from" � SpriteAreaMenu% 
.item_wimparea%=�menu_add("Wimp area",-1,0)
2item_customarea%=�menu_add("Custom area",-1,0)
� --- "Misc" submenu
)ș "MenuUtil_New",,"Misc" � MiscMenu%
6item_centerwin%=�menu_add("Center to screen",-1,0)
?item_spritearea%=�menu_add("Sprite area",SpriteAreaMenu%,0)
 0item_tidyicons%=�menu_add("Tidy icons",-1,0)
!� --- user-template menu
"�standardiconmenu
#+ș "MenuUtil_New",,"Window" � UserMenu%
$� NrStdIcons%=0 �
%4  item_createicon%=�menu_add("Create icon",-1,0)
&�
'>  item_createicon%=�menu_add("Create icon",StdIconMenu%,0)
(�
)+item_icon%=�menu_add("",UserSubmenu%,0)
*;item_selallicons%=�menu_add("Select all       ^A",-1,0)
+=item_clearselicons%=�menu_add("Clear selection  ^Z",-1,0)
,,È™ "MenuUtil_Dots",item_clearselicons%,1
-2item_workarea%=�menu_add("Work area",WorkW%,1)
.:item_editwindow%=�menu_add("Edit window...   ^W",-1,0)
/9item_edittitle%=�menu_add("Edit title...    ^T",-1,0)
0,item_misc%=�menu_add("Misc",MiscMenu%,0)
18item_closewin%=�menu_add("Close window     ^Q",-1,0)
2%� --- menu with icon button-types
34ș "MenuUtil_New",,"Button type" � IcButtonMenu%
4� i%=0 � 15
5/  dummy%=�menu_add($(IcButton%+20*i%),-1,0)
6� i%
7'� --- menu with window button-types
85ș "MenuUtil_New",,"Button type" � WinButtonMenu%
9� i%=0 � 15
:0  dummy%=�menu_add($(WinButton%+20*i%),-1,0)
;� i%
<7� --- actual ESG menu is built when Menu is clicked
=EsgMenu%=0
>:� --- actual colour menu is built when Menu is clicked
?ColourMenu%=0
@� --- font menu
A
�fontmenu
B� --- font size menu
C-ș "MenuUtil_New",,"Size" � FontSizemenu%
DÈ™ "MenuUtil_Add",,"10pt"
EÈ™ "MenuUtil_Add",,"12pt"
FÈ™ "MenuUtil_Add",,"16pt"
GÈ™ "MenuUtil_Add",,"20pt"
HÈ™ "MenuUtil_Add",,"24pt"
IÈ™ "MenuUtil_Add",,"36pt"
J6item_fontsize%=�menu_addwritable(5,FpNumValidStr%)
K"� --- "partial update" submenu
L/ș "MenuUtil_New",,"Other" � UpdateSubmenu%
M(item_updbo%=�menu_add("Border",-1,0)
N(item_updfi%=�menu_add("Filled",-1,0)
O*item_updhc%=�menu_add("H centre",-1,0)
P*item_updvc%=�menu_add("V centre",-1,0)
Q-item_updrj%=�menu_add("R justified",-1,0)
R,item_updnh%=�menu_add("Needs help",-1,0)
S.item_updaa%=�menu_add("Allow adjust",-1,0)
T+item_updhs%=�menu_add("Half size",-1,0)
U(item_updsh%=�menu_add("Shaded",-1,0)
V� --- "partial update" menu
W-ș "MenuUtil_New",,"Update" � Updatemenu%
X-item_updbt%=�menu_add("Button type",-1,0)
Y&item_updesg%=�menu_add("ESG",-1,0)
Z(item_updfg%=�menu_add("Fg col",-1,0)
[(item_updbg%=�menu_add("Bg col",-1,0)
\(item_updfont%=�menu_add("Font",-1,0)
];item_updrest%=�menu_add("Other flags",UpdateSubmenu%,0)
^�
_
`� �mainmenu
a1È™ "MenuUtil_Fade",item_stats%,NrTemplates%=0
b9È™ "MenuUtil_Fade",item_customsprites%,UserSprites%=1
c�
d
e*� �templatemenu(� xpos%,� ypos%,icon%)
f� t$
g�sel_get(TemplW%)
h$� (NrSelected%=0) � (icon%>=0) �
i"  �selecticon(TemplW%,icon%,1)
j  SelBlk%!0=icon%
k  NrSelected%=1
lD  TemplMenu_Deselect%=�  : � deselect icon when menu is removed?
m�
n  TemplMenu_Deselect%=�
o�
p	t$=""
q� NrSelected%>1 �
r  t$="Selection"
s�
t  � NrSelected%=1 �
u(    t$=$(TemplNames%+28*(SelBlk%!0))
v  �
w�
x'È™ "MenuUtil_Text",TemplSubmenu%,t$
y5È™ "MenuUtil_Fade",item_copytempl%,NrSelected%<>1
z7È™ "MenuUtil_Fade",item_renametempl%,NrSelected%<>1
{SelFName$=t$
|� NrSelected%>1 �
}3  È™ "MenuUtil_Text",item_template%,"Selection"
~�
;  È™ "MenuUtil_Text",item_template%,"Template '"+t$+"'"
��
�-ș "MenuUtil_Fade",item_template%,�(t$)=0
�7ș "MenuUtil_Fade",item_selalltempl%,NrTemplates%=0
�8ș "MenuUtil_Fade",item_clearseltempl%,NrSelected%=0
�5ș "MenuUtil_Fade",item_deleteall%,NrTemplates%=0
�5ș "MenuUtil_Fade",item_sorttempl%,NrTemplates%=0
�0ș "MenuUtil_Fade",item_save%,NrTemplates%=0
�QuitAfterSave%=�
�
xpos%-=64
�� NrSelected%=0 �
�  ypos%+=22
��
�  ypos%+=66
��
��
�
�.� �usermenu(� xpos%,� ypos%,window%,icon%)
�� t$,st$
��sel_get(window%)
�$� (NrSelected%=0) � (icon%>=0) �
�  SelBlk%!0=icon%
�  NrSelected%=1
��
�Ȏ NrSelected% �
�	  � 0
�    t$="No icon"
�    st$=t$
�	  � 1
�     t$="Icon #"+�(SelBlk%!0)
�    st$=t$
�  
�    t$="Selection"
�#    st$=�(NrSelected%)+" icons"
��
�'ș "MenuUtil_Text",UserSubmenu%,st$
�7ș "MenuUtil_Fade",item_renumbericon%,NrSelected%=0
�0ș "MenuUtil_Fade",item_align%,NrSelected%<2
�3ș "MenuUtil_Fade",item_spaceout%,NrSelected%<2
�2ș "MenuUtil_Text",item_iconnr%,�(NextIconNr%)
�3ș "MenuUtil_Fade",item_samesize%,NrSelected%<2
�WinBlk%!0=window%
�$ș "Wimp_GetWindowInfo",,WinBlk%
�� WinBlk%!68=1 �
�.  ș "MenuUtil_TickOnly",SpriteAreaMenu%,0
��
�.  ș "MenuUtil_TickOnly",SpriteAreaMenu%,1
��
�$ș "MenuUtil_Text",item_icon%,t$
�/ș "MenuUtil_Fade",item_icon%,NrSelected%=0
�5ș "MenuUtil_Fade",item_selallicons%,WinBlk%!88=0
�8ș "MenuUtil_Fade",item_clearselicons%,NrSelected%=0
�3ș "MenuUtil_Fade",item_tidyicons%,WinBlk%!88=0
�6ș "MenuUtil_Fade",item_spritearea%,UserSprites%=1
�
xpos%-=64
�� NrSelected%=0 �
�  ypos%+=22
��
�  ypos%+=66
��
��
�
�$� �icbuttonmenu(� xpos%,� ypos%)
�5ș "MenuUtil_TickOnly",IcButtonMenu%,IcEd_Button%
�
xpos%+=16
�ypos%+=22+IcEd_Button%*44
��
�
�%� �winbuttonmenu(� xpos%,� ypos%)
�7ș "MenuUtil_TickOnly",WinButtonMenu%,WinEd_Button%
�
xpos%+=16
�ypos%+=22+WinEd_Button%*44
��
�
�� �esgmenu(� xpos%,� ypos%)
�3� EsgMenu%<>0 � ș "MenuUtil_Delete",EsgMenu%,�
�� SupportAEH% �
�)  ș "MenuUtil_New",,"ESG" � EsgMenu%
�.  dummy%=�menu_addwritable(3,NumValidStr%)
�&  ș "MenuUtil_Text",,�(IcEd_Esg%)
�*  dummy%=�menu_add("16 (Action)",-1,0)
�2  dummy%=�menu_add("18 (Default action)",-1,0)
�,  dummy%=�menu_add("19 (Writable)",-1,0)
�+  dummy%=�menu_add("20 (Display)",-1,0)
�-  dummy%=�menu_add("21 (Group box)",-1,0)
�0  dummy%=�menu_add("24 (24bit colour)",-1,0)
�*  dummy%=�menu_add("25 (Slider)",-1,0)
�  ypos%+=22
��
�)  ș "MenuUtil_New",,"ESG" � EsgMenu%
�  � i%=0 � 15
�$    dummy%=�menu_add(�(i%),-1,0)
�
  � i%
�  ypos%+=22
�  � IcEd_Esg%<=15 �
�1    ș "MenuUtil_TickOnly",EsgMenu%,IcEd_Esg%
�    ypos%+=IcEd_Esg%*44
�  �
��
�
xpos%+=16
��
�
�0� �colourmenu(� xpos%,� ypos%,window%,icon%)
�*� i%,flags%,current%,bigrange%,transp%
�9� ColourMenu%<>0 � ș "MenuUtil_Delete",ColourMenu%,�
�Ȏ window% �
�  � IcEdW%
�    Ȏ icon% �
�%      � 34 : current%=IcEd_Fgcol%
�%      � 37 : current%=IcEd_Bgcol%
�	    �
�    bigrange%=�
�    transp%=�
�  � WinEdW%
�*    bigrange%=�iconselected(WinEdW%,9)
�%    transp%=(icon%=27)�(icon%=39)
�)    current%=WinEd_Col%((icon%-27)�4)
��
�� bigrange% �
�;  � colour menu for colour numbers 0-255 (GCOL colours)
�,  ș "MenuUtil_New",,"Col" � ColourMenu%
�.  dummy%=�menu_addwritable(4,NumValidStr%)
�%  ș "MenuUtil_Text",,�(current%)
�  � transp% �
�!    ș "MenuUtil_Add",,"None"
�(    ș "MenuUtil_Tick",,current%=255
�  �
��
�+  � colour menu for colour numbers 0-15
	,  ș "MenuUtil_New",,"Col" � ColourMenu%
	  � i%=0 � 15
	     ș "MenuUtil_Add",,�(i%)
	4    È™ "MenuUtil_Colours",,InverseColour%(i%),i%
	
  � i%
	  � transp% �
	    È™ "MenuUtil_Dots",,1
	!    È™ "MenuUtil_Add",,"None"
	  �
		  � current%=255 �
	
-    È™ "MenuUtil_TickOnly",ColourMenu%,16
	  �
	3    È™ "MenuUtil_TickOnly",ColourMenu%,current%
	
  �
	�
	
xpos%+=16
	
ypos%+=22
	� (� bigrange%) �
	  � current%=255 �
	    ypos%+=16*44+22
	  �
	    ypos%+=current%*44
	  �
	�
	�
	
	� �fontmenu
	/� next%,font$,fam$,style$,p%,submenu%,item%
	)ș "MenuUtil_New",,"Font" � FontMenu%
	fam$=""
	next%=0
	�
	   f$=�40," ")
	!7  ș "Font_ListFonts",,FontData%,next%,-1 � ,,next%
	"  � next%<>-1 �
	#    f$=$(FontData%)
	$    p%=�f$,".")
	%    � p%>0 �
	&      style$=�f$,p%+1)
	'      f$=�f$,p%-1)
	(	    �
	)      style$="(Regular)"
	*	    �
	+$    � (f$<>fam$) � (next%<>-1) �
	,      � new font family
	-      fam$=f$
	.2      ș "MenuUtil_Add",FontMenu%,fam$ � item%
	/,      ș "MenuUtil_New",,fam$ � submenu%
	0.      È™ "MenuUtil_SubMenu",item%,submenu%
	1	    �
	2)    È™ "MenuUtil_Add",submenu%,style$
	3  �
	4� next%=-1
	5�
	6
	72� �fontsizemenu(� xpos%,� ypos%,window%,icon%)
	8� icon%=48 �
	99  ș "MenuUtil_Text",item_fontsize%,��(IcEd_Xsize),5)
	:�
	;9  ș "MenuUtil_Text",item_fontsize%,��(IcEd_Ysize),5)
	<�
	=ypos%+=7*44
	>�
	?
	@0� �updatemenu(� xpos%,� ypos%,window%,icon%)
	A� font%
	B"font%=�iconselected(IcEdW%,41)
	C(È™ "MenuUtil_Fade",item_updfg%,font%
	D(È™ "MenuUtil_Fade",item_updbg%,font%
	E,ș "MenuUtil_Fade",item_updfont%,� font%
	F
ypos%+=22
	G�
	H
	I,� �createmenu(xpos%,ypos%,window%,icon%)
	JLastMenu_X%=xpos%
	KLastMenu_Y%=ypos%
	LLastMenu_Win%=window%
	MLastMenu_Icon%=icon%
	NLastMenu%=-1
	OȎ window% �
	P
  � -2
	Q    �mainmenu
	R    LastMenu%=MainMenu%
	S  � TemplW%
	T(    �templatemenu(xpos%,ypos%,icon%)
	U    LastMenu%=TemplMenu%
	V  � IcEdW%
	W    Ȏ icon% �
	X      � 9,10
	Y        � IcEd_Icon%=-1 �
	Z4          �updatemenu(xpos%,ypos%,window%,icon%)
	[#          LastMenu%=Updatemenu%
	\
        �
	]      � 28
	^&        �icbuttonmenu(xpos%,ypos%)
	_#        LastMenu%=IcButtonMenu%
	`      � 31
	a!        �esgmenu(xpos%,ypos%)
	b        LastMenu%=EsgMenu%
	c      � 34,37
	d2        �colourmenu(xpos%,ypos%,window%,icon%)
	e!        LastMenu%=ColourMenu%
	f      � 45,46
	g        xpos%+=16
	h        ypos%+=22
	i        LastMenu%=FontMenu%
	j      � 48,51
	k4        �fontsizemenu(xpos%,ypos%,window%,icon%)
	l#        LastMenu%=FontSizemenu%
	m	    �
	n  � WinEdW%
	o    Ȏ icon% �
	p      � 23
	q'        �winbuttonmenu(xpos%,ypos%)
	r$        LastMenu%=WinButtonMenu%
	s       � 27,31,35,39,43,47,51
	t2        �colourmenu(xpos%,ypos%,window%,icon%)
	u!        LastMenu%=ColourMenu%
	v	    �
	w  
	x&    � �whichtemplate(window%)>=0 �
	y.      �usermenu(xpos%,ypos%,window%,icon%)
	z      LastMenu%=UserMenu%
	{	    �
	|�
	}� LastMenu%<>-1 �
	~  ScrapBlk%!0=xpos%
	  ScrapBlk%!4=ypos%
	�  ScrapBlk%!12=window%
	�,  ș "MenuUtil_Show",LastMenu%,ScrapBlk%
	��
	��
	�
	�7� *** drag procs; for moving and resizing icons ***
	�
	�*� �finishdrag(xmin%,ymin%,xmax%,ymax%)
	�&� win0x%,win0y%,i%,iconblk%,inbox%
	�H�setmouseshape(0)                  : � restore default pointer shape
	�"� xmin%>xmax% � Ȕ xmin%,xmax%
	�"� ymin%>ymax% � Ȕ ymin%,ymax%
	�&ș "Wimp_GetPointerInfo",,PtrInfo%
	�Ȏ Drag_Type% �
	�%  � 0,1 : � move / resize icon(s)
	�*    � �whichtemplate(PtrInfo%!12)>=0 �
	�      WinBlk%!0=PtrInfo%!12
	�*      ș "Wimp_GetWindowInfo",,WinBlk%
	�%      win0x%=WinBlk%!4-WinBlk%!20
	�&      win0y%=WinBlk%!16-WinBlk%!24
	�I      xmin%-=win0x% : � translate from screen coords to window coords
	�      ymin%-=win0y%
	�      xmax%-=win0x%
	�      ymax%-=win0y%
	�O      �moveresize(Drag_Win%,Drag_Icon%,PtrInfo%!12,xmin%,ymin%,xmax%,ymax%)
	�	    �
	�-      � DeleteOutside% � (Drag_Type%=0) �
	�D        � moved icons outside window - delete them if option set
	�"        � i%=0 � NrSelected%-1
	�5          �deleteicon(oldwin%,SelBlk%!(4*i%),1,1)
	�        � i%
	�      �
	�	    �
	�6  � 2,3 : � drag-select icons (with Select/Adjust)
	�    WinBlk%!0=Drag_Win%
	�(    ș "Wimp_GetWindowInfo",,WinBlk%
	�#    win0x%=WinBlk%!4-WinBlk%!20
	�$    win0y%=WinBlk%!16-WinBlk%!24
	�    xmin%-=win0x%
	�    xmax%-=win0x%
	�    ymin%-=win0y%
	�    ymax%-=win0y%
	�>    � (WinBlk%!88>0) � ((xmax%-xmin%)+(ymax%-ymin%)>=32) �
	�      � i%=0 � WinBlk%!88-1
	�%        iconblk%=WinBlk%+92+i%*32
	�;        inbox%=(iconblk%!0<xmax%) � (iconblk%!8>=xmin%)
	�E        inbox%=inbox% � (iconblk%!4<ymax%) � (iconblk%!12>=ymin%)
	�)        � inbox% � (i%<>Drag_Icon%) �
	�          � Drag_Type%=2 �
	�+            �selecticon(Drag_Win%,i%,1)
	�          �
	�3            �seticonstate(Drag_Win%,i%,1<<21,0)
	�          �
	�
        �
	�      � i%
	�	    �
	�   � 4 : � drag from save-box
	�.    � DragASprite% � ș "DragASprite_Stop"
	�    Blk%!0=60
	�    Blk%!12=0
	�    Blk%!16=1
	�    Blk%!20=PtrInfo%!12
	�    Blk%!24=PtrInfo%!16
	�    Blk%!28=PtrInfo%!0
	�    Blk%!32=PtrInfo%!4
	�K    Blk%!36=20+112*NrTemplates% : � this is a low estimate of file size
	�    Blk%!40=&FEC
	�    � SavingSelection% �
	�)      $(Blk%+44)=�leafname(SelFName$)
	�	    �
	�*      $(Blk%+44)=�leafname(MainFName$)
	�	    �
	�=    ș "Wimp_SendMessage",17,Blk%,PtrInfo%!12,PtrInfo%!16
	�  � 5,6
	�8    � window move/resize - do nothing, no drag event
	��
	�Drag_Type%=-1
	��
	�
	�2� �initdrag(type%,window%,icon%,box0x%,box0y%)
	�� b%
	�Lș "OS_Byte",161,&1C � ,,b% : � read "dragasprite" bit in CMOS RAM (RO3)
	�DragASprite%=(b% � 2)<>0
	� � DragASprite% � (type%=4) �
	�D  ș "DragASprite_Start",&A1,1,"file_fec",DragBlk%+8,DragBlk%+24
	��
	�"  ș "Wimp_DragBox",1,DragBlk%
	��
	�=Drag_Type%=type%   : � is not the same as Wimp drag type!
	�Drag_Win%=window%
	�Drag_Icon%=icon%
	�DDrag_Box0x%=box0x% : � window coords of bottomleft corner of box
	�Drag_Box0y%=box0y%
	�,Drag_BoxSizex%=�(DragBlk%!16-DragBlk%!8)
	�-Drag_BoxSizey%=�(DragBlk%!20-DragBlk%!12)
	�&ș "Wimp_GetPointerInfo",,PtrInfo%
	�Drag_Ptrx%=PtrInfo%!0
	�Drag_Ptry%=PtrInfo%!4
	��
	�
	�� �abortdrag
	� � DragASprite% � (type%=4) �
	�  ș "DragASprite_Stop"
	��
	�  ș "Wimp_DragBox",,-1
	��
	�@�setmouseshape(0)          : � restore default pointer shape
	�Drag_Type%=-1
	��
	�
	�� �startwindowmove(window%)
	�DragBlk%!0=window%
	�DragBlk%!4=1
	��initdrag(5,-1,-1,0,0)
	��
	�
	�!� �startwindowresize(window%)
	�DragBlk%!0=window%
	�DragBlk%!4=2
	��initdrag(6,-1,-1,0,0)
	��
	�
	�+� �starticondrag(button%,window%,icon%)
	�Ȏ button% �
	�
  � 1,256
	�    �sel_get(window%)
	�    � NrSelected%>0 �
	�&      �starticonresize(window%,-1)
	    �
6      � icon%>=0 � �starticonresize(window%,icon%)
	    �
  � 4,1024
    �sel_get(window%)
    � NrSelected%>0 �
$      �starticonmove(window%,-1)
	    �
4      � icon%>=0 � �starticonmove(window%,icon%)
		    �

�
�


#� �starticonmove(window%,icon%)
+� win0x%,win0y%,xmin%,xmax%,ymin%,ymax%
WinBlk%!0=window%
%È™ "Wimp_GetWindowState",,WinBlk%
win0x%=WinBlk%!4-WinBlk%!20
 win0y%=WinBlk%!16-WinBlk%!24
� icon%>=0 �
6  SelBlk%!0=icon% : � simulate selection of 1 icon
  NrSelected%=1
�
  �sel_get(window%)
�
-�sel_box(window%,xmin%,ymin%,xmax%,ymax%)
&È™ "Wimp_GetPointerInfo",,PtrInfo%
DragBlk%!4=5
DragBlk%!8=xmin%+win0x%
DragBlk%!12=ymin%+win0y%
DragBlk%!16=xmax%+win0x%
DragBlk%!20=ymax%+win0y%
 %DragBlk%!24=DragBlk%!8-PtrInfo%!0
!&DragBlk%!28=DragBlk%!12-PtrInfo%!4
"4DragBlk%!32=ScreenSize_X%+DragBlk%!16-PtrInfo%!0
#4DragBlk%!36=ScreenSize_Y%+DragBlk%!20-PtrInfo%!4
$*�initdrag(0,window%,icon%,xmin%,ymin%)
%�setmouseshape(1)
&�
'
(%� �starticonresize(window%,icon%)
)%� ibxmin%,ibxmax%,ibymin%,ibymax%
*%� pbxmin%,pbxmax%,pbymin%,pbymax%
+� a,b,c
,+� ibsizex%,ibsizey%,minsizex%,minsizey%
-� shape%
.+� win0x%,win0y%,xmin%,xmax%,ymin%,ymax%
/WinBlk%!0=window%
0%È™ "Wimp_GetWindowState",,WinBlk%
1win0x%=WinBlk%!4-WinBlk%!20
2 win0y%=WinBlk%!16-WinBlk%!24
3� icon%>=0 �
46  SelBlk%!0=icon% : � simulate selection of 1 icon
5  NrSelected%=1
6�
7  �sel_get(window%)
8�
9-�sel_box(window%,xmin%,ymin%,xmax%,ymax%)
:Fibxmin%=win0x%+xmin% : � for initial box, convert to screen coords
;ibymin%=win0y%+ymin%
<ibxmax%=win0x%+xmax%
=ibymax%=win0y%+ymax%
>ibsizex%=xmax%-xmin%
?ibsizey%=ymax%-ymin%
@3� at first, set parent box equal to initial box
Apbxmin%=ibxmin%
Bpbymin%=ibymin%
Cpbxmax%=ibxmax%
Dpbymax%=ibymax%
EC� fixed minimum size of drag box (very difficult to calculate!)
Fminsizex%=32
Gminsizey%=32
H-� minsizex%>ibsizex% � minsizex%=ibsizex%
I-� minsizey%>ibsizey% � minsizey%=ibsizey%
J&� get position of window on screen
KWinBlk%!0=window%
L%È™ "Wimp_GetWindowState",,WinBlk%
MD� determine which side to drag - test mouse position relative to
N� diagonals of box
O2� diagonal 1 (bottomleft-topright) y = a*x + b
P3� diagonal 2 (topleft-bottomright) y = -a*x + c
Qa=ibsizey%/ibsizex%
Rb=ibymin%-a*ibxmin%
Sc=ibymax%+a*ibxmin%
T&È™ "Wimp_GetPointerInfo",,PtrInfo%
U%� PtrInfo%!4>(a*(PtrInfo%!0)+b) �
V  � above diagonal 1
W(  � PtrInfo%!4>(-a*(PtrInfo%!0)+c) �
X*    � above diagonal 2 - drag top side
Y:    � WinBlk%!16>ibymax% � pbymax%=WinBlk%!16-ibsizey%
Z    pbymin%+=minsizey%
[    shape%=2
\?    Ȕ ibymin%,ibymax% : � top side of box must be "rubber"
]  �
^+    � below diagonal 2 - drag left side
_8    � WinBlk%!4<ibxmin% � pbxmin%=WinBlk%!4+ibsizex%
`    pbxmax%-=minsizex%
a    shape%=5
b@    Ȕ ibxmin%,ibxmax% : � left side of box must be "rubber"
c  �
d�
e  � below diagonal 1
f(  � PtrInfo%!4>(-a*(PtrInfo%!0)+c) �
g,    � above diagonal 2 - drag right side
h1    � pbxmax%<WinBlk%!12 � pbxmax%=WinBlk%!12
i#    pbxmin%-=ibsizex%-minsizex%
j    shape%=3
k  �
l-    � below diagonal 2 - drag bottom side
m/    � pbymin%>WinBlk%!8 � pbymin%=WinBlk%!8
n#    pbymax%+=ibsizey%-minsizey%
o    shape%=4
p  �
q�
rDragBlk%!4=6
sDragBlk%!8=ibxmin%
tDragBlk%!12=ibymin%
uDragBlk%!16=ibxmax%
vDragBlk%!20=ibymax%
wDragBlk%!24=pbxmin%
xDragBlk%!28=pbymin%
yDragBlk%!32=pbxmax%
zDragBlk%!36=pbymax%
{*�initdrag(1,window%,icon%,xmin%,ymin%)
|�setmouseshape(shape%)
}�
~
� �dragselect(button%)
�� Drag_Type%<0 �
�(  ș "Wimp_GetPointerInfo",,PtrInfo%
�  DragBlk%!4=6
�  DragBlk%!8=PtrInfo%!0
�  DragBlk%!12=PtrInfo%!4
�  DragBlk%!16=PtrInfo%!0
�  DragBlk%!20=PtrInfo%!4
�  WinBlk%!0=PtrInfo%!12
�'  ș "Wimp_GetWindowState",,WinBlk%
�  DragBlk%!24=WinBlk%!4
�  DragBlk%!28=WinBlk%!8
�  DragBlk%!32=WinBlk%!12
�  DragBlk%!36=WinBlk%!16
�  � button%=1 �
�E    �initdrag(3,PtrInfo%!12,PtrInfo%!16,0,0) : � drag with Adjust
�  �
�E    �initdrag(2,PtrInfo%!12,PtrInfo%!16,0,0) : � drag with Select
�  �
��
��
�
�� �startsavedrag
�� win0x%,win0y%
�WinBlk%!0=SaveW%
�%ș "Wimp_GetWindowState",,WinBlk%
�win0x%=WinBlk%!4-WinBlk%!20
� win0y%=WinBlk%!16-WinBlk%!24
�ScrapBlk%!0=SaveW%
�ScrapBlk%!4=2
�%ș "Wimp_GetIconState",,ScrapBlk%
�DragBlk%!4=5
�!DragBlk%!8=ScrapBlk%!8+win0x%
�#DragBlk%!12=ScrapBlk%!12+win0y%
�#DragBlk%!16=ScrapBlk%!16+win0x%
�#DragBlk%!20=ScrapBlk%!20+win0y%
�&ș "Wimp_GetPointerInfo",,PtrInfo%
�%DragBlk%!24=DragBlk%!8-PtrInfo%!0
�&DragBlk%!28=DragBlk%!12-PtrInfo%!4
�4DragBlk%!32=ScreenSize_X%+DragBlk%!16-PtrInfo%!0
�4DragBlk%!36=ScreenSize_Y%+DragBlk%!20-PtrInfo%!4
��initdrag(4,SaveW%,-1,0,0)
��
�
�>� --- move or resize icons, based on new coords of box ---
�@� �moveresize(oldwin%,icon%,newwin%,xmin%,ymin%,xmax%,ymax%)
�)� oldxmin%,oldymin%,oldxmax%,oldymax%
�� xscale,yscale,new%,i%
�� icon%>=0 �
�6  SelBlk%!0=icon% : � simulate selection of 1 icon
�  NrSelected%=1
��
�  �sel_get(oldwin%)
��
�9�sel_box(oldwin%,oldxmin%,oldymin%,oldxmax%,oldymax%)
�4� calculate scaling factors (will be 1 for move)
�,xscale=(xmax%-xmin%)/(oldxmax%-oldxmin%)
�,yscale=(ymax%-ymin%)/(oldymax%-oldymin%)
�� i%=0 � NrSelected%-1
�  IconBlk%!0=Drag_Win%
�  IconBlk%!4=SelBlk%!(4*i%)
�&  ș "Wimp_GetIconState",,IconBlk%
�:  IconBlk%!8=xmin%+�((IconBlk%!8-oldxmin%)*xscale+0.5)
�<  IconBlk%!12=ymin%+�((IconBlk%!12-oldymin%)*yscale+0.5)
�<  IconBlk%!16=xmin%+�((IconBlk%!16-oldxmin%)*xscale+0.5)
�<  IconBlk%!20=ymin%+�((IconBlk%!20-oldymin%)*yscale+0.5)
�  � oldwin%=newwin% �
�&    � move / resize in same window
�;    new%=�redefineicon(oldwin%,SelBlk%!(4*i%),IconBlk%)
�  �
�1    � move to other other window = copy icons
�    IconBlk%!4=newwin%
�F    �iconrealloc(IconBlk%+24,IconBlk%+28) : � copy indirected data
�$    new%=�createicon(IconBlk%+4)
�  �
�� i%
��
�
�5� *** procs for dialogue and reporting errors ***
�
�� �errbox(err$,boxes%)
�ErrBlk%!0=0
�$(ErrBlk%+4)=err$+�0
�8ș "Wimp_ReportError",ErrBlk%,boxes%,Appl$ � ,click%
�=(click%=1)
�
�� �error(forcequit%)
�
� button%
�� �
�!� � � ș "Wimp_CloseDown" : �
�ș "Hourglass_Smash"
�� forcequit% �
�  button%=2
��
�  button%=3
��
�2� (� �errbox(�$+" (line "+�(�)+")",button%)) �
�  ș "Wimp_CloseDown"
�  �
��
��
�
�� �complain(msg$)
�� dummy%
�dummy%=�errbox(msg$,17)
��
�
� � �dialogue(no%,arg1$,arg2$)
�� b1$,b2$,b3$,mask%
�
b1$=""
�
b2$=""
�
b3$=""
�Ȏ no% �
�	  � 0
�'    $Dial_Msg%=�msg_lookup0("MOD0")
�     b1$=�msg_lookup0("SAVE")
�     b2$=�msg_lookup0("DCRD")
�     b3$=�msg_lookup0("CANC")
�	  � 1
�'    $Dial_Msg%=�msg_lookup0("MOD0")
�     b1$=�msg_lookup0("DALL")
�     b3$=�msg_lookup0("CANC")
�	  � 2
�'    $Dial_Msg%=�msg_lookup0("MOD0")
�     b1$=�msg_lookup0("LNEW")
�     b3$=�msg_lookup0("CANC")
�	  � 3
�-    $Dial_Msg%=�msg_lookup1("NORM",arg1$)
�    b2$=�msg_lookup0("OK")
	  � 4
'    $Dial_Msg%=�msg_lookup0("NUPD")
    b2$=�msg_lookup0("OK")
	  � 5
'    $Dial_Msg%=�msg_lookup0("NSTF")
    b2$=�msg_lookup0("OK")
	  � 6
'    $Dial_Msg%=�msg_lookup0("NOCH")
    b2$=�msg_lookup0("OK")
		  � 7

3    $Dial_Msg%=�msg_lookup2("TIDY",arg1$,arg2$)
    b2$=�msg_lookup0("OK")
	  � 8

'    $Dial_Msg%=�msg_lookup0("MOD0")
     b1$=�msg_lookup0("DCRD")
     b3$=�msg_lookup0("CANC")
	  � 9
'    $Dial_Msg%=�msg_lookup0("NSEL")
    b2$=�msg_lookup0("OK")
�
$Dial_Button1%=b1$
$Dial_Button2%=b2$
$Dial_Button3%=b3$
mask%=(1<<2)+(&FF<<24)
� �(b1$)=0 �
!  � grey colour -> invisible%
,  �seticonstate0(DialW%,1,&11<<24,mask%)
�
5  �seticonstate0(DialW%,1,Dial_ButtonCol1%,mask%)
�
� �(b2$)=0 �
,  �seticonstate0(DialW%,2,&11<<24,mask%)
 �
!5  �seticonstate0(DialW%,2,Dial_ButtonCol2%,mask%)
"�
#� �(b3$)=0 �
$,  �seticonstate0(DialW%,3,&11<<24,mask%)
%�
&5  �seticonstate0(DialW%,3,Dial_ButtonCol3%,mask%)
'�
(ScrapBlk%!0=DialW%
)'È™ "Wimp_GetWindowState",,ScrapBlk%
*9È™ "Wimp_CreateMenu",,DialW%,ScrapBlk%!4,ScrapBlk%!16
+LastDialogue%=no%
,�
-
.� *** heap procs ***
/
0� �heap_init
1>Heap%=� : � heap starts just after end of allocated memory
2&ș "OS_ReadMemMapInfo" � PageSize%
3E� enlarge wimpslot (1 page) and create private heap in new memory
4SlotSize%=Heap%-&8000
59ș "Wimp_SlotSize",SlotSize%+PageSize%,-1 � SlotSize%
6HeapEnd%=SlotSize%+&8000
78� HeapEnd%<=Heap% � � 0,"Can't claim space for heap"
8(È™ "OS_Heap",0,Heap%,,HeapEnd%-Heap%
9�
:
;� �heap_get(size%)
<(� maxfree%,nrpages%,oldheapend%,ptr%
=%ș "OS_Heap",1,Heap% � ,,maxfree%
>� size%>maxfree% �
?J  � largest free block is too small - try to enlarge wimpslot and heap
@C  nrpages%=1+(size% � PageSize%) : � required # pages of memory
AD  ș "Wimp_SlotSize",SlotSize%+nrpages%*PageSize%,-1 � SlotSize%
B  oldheapend%=HeapEnd%
C  HeapEnd%=SlotSize%+&8000
D0  È™ "OS_Heap",5,Heap%,,HeapEnd%-oldheapend%
EB  ș "OS_Heap",1,Heap% � ,,maxfree% : � do we have enough now?
F�
G� size%>maxfree% �
H%  �complain(�msg_lookup0("NOHP"))
I
  ptr%=-1
J�
K*  ș "OS_Heap",2,Heap%,,size% � ,,ptr%
L�
M	=ptr%
N
O� �heap_release(ptr%)
P� maxfree%,nrpages%,flg%
QÈ™ "OS_Heap",3,Heap%,ptr%
R%ș "OS_Heap",1,Heap% � ,,maxfree%
S� maxfree%>PageSize% �
TA  � more than 1 page free - try to shrink heap (page by page)
U,  nrpages%=0 : � # pages of memory freed
V  �
W1    ș "XOS_Heap",5,Heap%,,-PageSize% � ;flg%
X    � (flg% � 1)=0 �
Y      nrpages%+=1
Z	    �
[  � (flg% � 1)<>0
\  � nrpages%>0 �
]4    � successfully shrunk heap - shrink WimpSlot
^F    ș "Wimp_SlotSize",SlotSize%-nrpages%*PageSize%,-1 � SlotSize%
_     HeapEnd%=SlotSize%+&8000
`  �
a5  È™ "OS_Heap",5,Heap%,,(HeapEnd%-Heap%)-Heap%!12
b�
c�
d
e6� *** service procs; interface with SWIs, etc. ***
f
gM� --- change a variable with given difference, but keep inside bounds ---
h-� �changevar(� var%,diff%,up%,low%,high%)
i
� oldval%
joldval%=var%
k� up% �
l  var%+=diff%
m�
n  var%-=diff%
o�
p� var%>high% � var%=high%
q� var%<low% � var%=low%
r� return TRUE if changed
s=(oldval%<>var%) 
t
u� �readvarval(var$)
v
� len%
w2ș "OS_ReadVarVal",var$,VarBuf%,256,0 � ,,len%
xVarBuf%?len%=13
y=$(VarBuf%)
z
{>� --- return name of icon to display in browser window ---
| � �windowicon(wflags%,open%)
}$� sname$,tbar%,hscroll%,vscroll%
~� wflags% � (1<<31) �
!  tbar%=(wflags% � (1<<26))>0
�$  hscroll%=(wflags% � (1<<30))>0
�$  vscroll%=(wflags% � (1<<28))>0
��
�   tbar%=(wflags% � (1<<0))>0
�#  hscroll%=(wflags% � (1<<3))>0
�#  vscroll%=(wflags% � (1<<2))>0
��
�sname$="Swin_"
�� tbar% � sname$+="t"
�� hscroll% � sname$+="h"
�� vscroll% � sname$+="v"
�� open% � sname$+="o"
�=sname$
�
�� �modevar(mode%,v%)
�
� val%
�.ș "OS_ReadModeVariable",mode%,v% � ,,val%
�	=val%
�
�� �readscreenvars
�#� xeig%,yeig%,xpixels%,ypixels%
�xeig%=�modevar(-1,4)
�yeig%=�modevar(-1,5)
�xpixels%=�modevar(-1,11)
�ypixels%=�modevar(-1,12)
�9PixToOS_X%=1<<xeig% : � # OS units that 1 pixel takes
�PixToOS_Y%=1<<yeig%
�EScreenSize_X%=(xpixels%+1)*PixToOS_X% : � screen size in OS units
�)ScreenSize_Y%=(ypixels%+1)*PixToOS_Y%
�8� grid size must be multiple of # OS units per pixel
�� Grid_SizeX%<PixToOS_X% �
�  Grid_SizeX%=PixToOS_X%
��
�-  Grid_SizeX%-=(Grid_SizeX% � PixToOS_X%)
��
�� Grid_SizeY%<PixToOS_Y% �
�  Grid_SizeY%=PixToOS_Y%
��
�-  Grid_SizeY%-=(Grid_SizeY% � PixToOS_Y%)
��
�#�seticontext(28,�(Grid_SizeX%))
�#�seticontext(29,�(Grid_SizeY%))
�� Grid_PosX%<PixToOS_X% �
�  Grid_PosX%=PixToOS_X%
��
�+  Grid_PosX%-=(Grid_PosX% � PixToOS_X%)
��
�� Grid_PosY%<PixToOS_Y% �
�  Grid_PosY%=PixToOS_Y%
��
�+  Grid_PosY%-=(Grid_PosY% � PixToOS_Y%)
��
�"�seticontext(30,�(Grid_PosX%))
�"�seticontext(31,�(Grid_PosY%))
�6TemplW_MaxCol%=(ScreenSize_X%-100) � TemplW_IconX%
��
�
�� �setcaret(window%,icon%)
�� l%
�� icon%>=0 �
�  ScrapBlk%!0=window%
�  ScrapBlk%!4=icon%
�'  ș "Wimp_GetIconState",,ScrapBlk%
�  l%=�($(ScrapBlk%!28))
�6  ș "Wimp_SetCaretPosition",window%,icon%,,,-1,l%
��
�  � invisible caret
�5  ș "Wimp_SetCaretPosition",window%,-1,0,0,1<<25
��
��
�
�� �setmouseshape(i%)
�� n$,xoff%,yoff%
�Ȏ i% �
�#  � 0 : � default pointer shape
�    n$="ptr_default"
�    xoff%=0
�    yoff%=0
�+  � 1 : � hand pointer for moving icons
�    n$="ptr_hand"
�    xoff%=7
�    yoff%=6
�;  � 2 : � pointer for resizing icons, dragging top side
�    n$="ptr_sizet"
�    xoff%=7
�    yoff%=6
�=  � 3 : � pointer for resizing icons, dragging right side
�    n$="ptr_sizer"
�    xoff%=5
�    yoff%=5
�>  � 4 : � pointer for resizing icons, dragging bottom side
�    n$="ptr_sizeb"
�    xoff%=7
�    yoff%=4
�<  � 5 : � pointer for resizing icons, dragging left side
�    n$="ptr_sizel"
�    xoff%=10
�    yoff%=5
��
�Mouse_Ptt%!0=&03020100
�� i%=0 �
�;  ș "Wimp_SpriteOp",36,,n$,&2,xoff%,yoff%,0,Mouse_Ptt%
��
�I  ș "OS_SpriteOp",&100+36,SysSprites%,n$,&2,xoff%,yoff%,0,Mouse_Ptt%
��
�MouseShape%=i%
��
�
�F� --- re-allocate indirected icon data and increase font count ---
�"� �iconrealloc(flagptr%,data%)
�� flags%,s$,s%,len%
�flags%=flagptr%!0
�� (flags% � &800100)=&100 �
�  s$=�str(data%!0)
�?  len%=data%!8              : � don't allocate actual size!
�A  � len%>256 � len%=256 : � Basic can't handle longer strings
�  s%=�heap_get(len%)
�  � s%>0 �
�    $(s%)=�s$,len%-1)
�    data%!0=s%
�(    � (flags% � 1) � (data%!4<>-1) �
�)      � re-allocate validation string
�      s$=�str(data%!4)
�      s%=�heap_get(�s$+1)
�      � s%>0 �
�        $(s%)=s$
�        data%!4=s%
�      �
        data%!4=-1
      �
	    �
  �
G    � allocation failed - make non-indirected and store first chars
*    flagptr%!0=flagptr%!0 � (� (1<<8))
    $data%=�s$,11)
  �
�
	� (flags% � &800040)=&40 �

!  FontUsage%((flags%)>>24)+=1
�
�


B� --- release indirected icon data and decrease font count ---
 � �iconrelease(flags%,data%)
� (flags% � &800100)=&100 �
  �heap_release(data%!0)
(  � (flags% � 1) � (data%!(4)<>-1) �
#    � release validation string
    �heap_release(data%!4)
  �
�
� (flags% � &800040)=&40 �
  �font_lose(flags%>>24)
�
�

� --- open a window ---
+�       pos% = 0 -> at current position
*�              1 -> centered to screen
4�              2 -> centered unless already open
 =�              3 -> in topleft corner unless already open
!>�              4 -> in topright corner unless already open
"� �openwindow(handle%,pos%)
#� notopen%,cx%,cy%,dx%,dy%
$ScrapBlk%!0=handle%
%'È™ "Wimp_GetWindowState",,ScrapBlk%
&)notopen%=((ScrapBlk%!32 � (1<<16))=0)
'	dx%=0
(	dy%=0
)
Ȏ pos% �
*  � 1,2
+    � (pos%=1) � notopen% �
,#      � center window to screen
-      cx%=ScreenSize_X% � 2
.      cy%=ScreenSize_Y% � 2
/0      dx%=cx%-(ScrapBlk%!12+ScrapBlk%!4) � 2
00      dy%=cy%-(ScrapBlk%!16+ScrapBlk%!8) � 2
1	    �
2	  � 3
3    � notopen% �
4      dx%=-ScrapBlk%!4
5(      dy%=ScreenSize_Y%-ScrapBlk%!16
6	    �
7	  � 4
8    � notopen% �
9(      dx%=ScreenSize_X%-ScrapBlk%!12
:(      dy%=ScreenSize_Y%-ScrapBlk%!16
;	    �
<�
=ScrapBlk%!4=ScrapBlk%!4+dx%
>ScrapBlk%!8=ScrapBlk%!8+dy%
?!ScrapBlk%!12=ScrapBlk%!12+dx%
@!ScrapBlk%!16=ScrapBlk%!16+dy%
AScrapBlk%!28=-1
B#È™ "Wimp_OpenWindow",,ScrapBlk%
C.� handle%=OptionsW% � �openpane(OptPaneW%)
D�
E
F� �closewindow(handle%)
G� i%
HScrapBlk%!0=handle%
I$È™ "Wimp_CloseWindow",,ScrapBlk%
JȎ handle% �
K  � TemplW%
L    ScrapBlk%!0=IcInfoW%
M(    È™ "Wimp_CloseWindow",,ScrapBlk%
N    � NrTemplates%>0 �
O!      � i%=0 � NrTemplates%-1
P        �closetemplate(i%)
Q      � i%
R	    �
S  � OptionsW%
T    ScrapBlk%!0=OptPaneW%
U(    È™ "Wimp_CloseWindow",,ScrapBlk%
V�
W�
X
Y� �openpane(handle%)
Z� behind%,x%,y%
[Ȏ handle% �
\  � OptPaneW%
]    ScrapBlk%!0=OptionsW%
^@    x%=16  : � distance from topleft corner of parent window
_    y%=-16
`�
a'È™ "Wimp_GetWindowState",,ScrapBlk%
bx%+=ScrapBlk%!4
cy%+=ScrapBlk%!16
dbehind%=ScrapBlk%!28
eScrapBlk%!0=handle%
f'È™ "Wimp_GetWindowState",,ScrapBlk%
g.ScrapBlk%!12=x%+(ScrapBlk%!12-ScrapBlk%!4)
h-ScrapBlk%!8=y%-(ScrapBlk%!16-ScrapBlk%!8)
iScrapBlk%!4=x%
jScrapBlk%!16=y%
kScrapBlk%!28=behind%
l#È™ "Wimp_OpenWindow",,ScrapBlk%
m�
n
o� �opentemplate(no%)
p� no%>=0 �
q#  ScrapBlk%!0=TemplHandle%(no%)
r)  È™ "Wimp_GetWindowState",,ScrapBlk%
s$  � (ScrapBlk%!32 � (1<<16))=0 �
t    ScrapBlk%!28=-1
u'    È™ "Wimp_OpenWindow",,ScrapBlk%
v<    $(TemplNames%+28*no%+14)=�windowicon(ScrapBlk%!32,1)
w'    �seticonstate0(TemplW%,no%,0,0)
x8    � TemplatesOpen%=0 � PollMask%=PollMask% � (� 1)
y    TemplatesOpen%+=1
z'    �setcaret(TemplHandle%(no%),-1)
{  �
|�
}�
~
� �closetemplate(no%)
�� no%>=0 �
�#  ScrapBlk%!0=TemplHandle%(no%)
�)  ș "Wimp_GetWindowState",,ScrapBlk%
�$  � (ScrapBlk%!32 � (1<<16))>0 �
�(    ș "Wimp_CloseWindow",,ScrapBlk%
�+    ș "Wimp_GetWindowState",,ScrapBlk%
�<    $(TemplNames%+28*no%+14)=�windowicon(ScrapBlk%!32,0)
�'    �seticonstate0(TemplW%,no%,0,0)
�<    � TemplHandle%(no%)=IcEd_Win% � �closewindow(IcEdW%)
�>    � TemplHandle%(no%)=WinEd_Win% � �closewindow(WinEdW%)
�    TemplatesOpen%-=1
�4    � TemplatesOpen%=0 � PollMask%=PollMask% � 1
�  �
��
��
�
�)� --- convert string to uppercase ---
�� �upcase(s$)
�� i%
�� i%=1 � �(s$)
�  a%=�(�s$,i%,1))
�  � (a%>=97)�(a%<=122) �
�    �s$,i%,1)=�(a%-32)
�  �
�� i%
�=s$
�
�1� --- split off leaf name from a filename ---
�� �leafname(f$)
�� p%,q%
�q%=0
��
�
  p%=q%+1
�  q%=�f$,".",p%)
�
� q%=0
�=�f$,p%)
�
�6� --- split off directory name from a filename ---
�� �dirname(f$)
�� p%,q%
�p%=1
��
� q%=�f$,".",p%)
� � q% > 0 � p%=q%+1
�
� q%=0
�=�f$,p%-2)
�
�D� --- get the control-terminated string at the given address ---
�� �str(s%)
�� i%,n$
�i%=0
�ȕ (s%?i%>=32) � (i%<255)
�  n$+=�(s%?i%)
�  i%+=1
��
�=n$
�
�� �fileexists(f$)
�� type%
�type%=0
�� �(f$)>0 �
�   ș "OS_File",17,f$ � type%
��
�=(type%=1)
�
�1� --- set icon state in a template window ---
�,� �seticonstate(window%,icon%,eor%,clr%)
�� oldflags%,newflags%
�ScrapBlk%!0=window%
�ScrapBlk%!4=icon%
�%� check if font usage is changing
�%ș "Wimp_GetIconState",,ScrapBlk%
�oldflags%=ScrapBlk%!24
�)newflags%=(oldflags% � � clr%) � eor%
�!� (newflags% � &800040)=&40 �
�"  FontUsage%(newflags%>>24)+=1
��
�!� (oldflags% � &800040)=&40 �
�  �font_lose(oldflags%>>24)
��
�ScrapBlk%!8=eor%
�ScrapBlk%!12=clr%
�� SupportAEH% �
�% ș "AEH_SetIconState",,ScrapBlk%
��
�& ș "Wimp_SetIconState",,ScrapBlk%
��
��
�
�<� --- set icon state in one of TemplEd's own windows ---
�-� �seticonstate0(window%,icon%,eor%,clr%)
�� oldflags%,newflags%
�ScrapBlk%!0=window%
�ScrapBlk%!4=icon%
�ScrapBlk%!8=eor%
�ScrapBlk%!12=clr%
�%ș "Wimp_SetIconState",,ScrapBlk%
��
�
�#� �selecticon(window%,icon%,f%)
�� oldflag%
�ScrapBlk%!0=window%
�ScrapBlk%!4=icon%
�%ș "Wimp_GetIconState",,ScrapBlk%
�%oldflag%=(ScrapBlk%!24) � (1<<21)
�
� f% �
�  ScrapBlk%!8=1<<21
��
�  ScrapBlk%!8=0
��
�ScrapBlk%!12=1<<21
�� oldflag%<>ScrapBlk%!8 �
�  � only set when changing
�  � SupportAEH% �
�'   ș "AEH_SetIconState",,ScrapBlk%
�  �
�(   ș "Wimp_SetIconState",,ScrapBlk%
�  �
��
��
�
�"� �iconselected(window%,icon%)
�ScrapBlk%!0=window%
�ScrapBlk%!4=icon%
�%ș "Wimp_GetIconState",,ScrapBlk%
�#=((ScrapBlk%!24) � (1<<21)) > 0
�
�"� �shadeicon(window%,icon%,f%)

� oldflag%

ScrapBlk%!0=window%

ScrapBlk%!4=icon%

%È™ "Wimp_GetIconState",,ScrapBlk%

%oldflag%=(ScrapBlk%!24) � (1<<22)


� f% �

  ScrapBlk%!8=(1<<22)

�

  ScrapBlk%!8=0

	�

ScrapBlk%!12=1<<22

� oldflag%<>ScrapBlk%!8 �

  � only set when changing


  � SupportAEH% �

'   È™ "AEH_SetIconState",,ScrapBlk%

  �

(   È™ "Wimp_SetIconState",,ScrapBlk%

  �

�

�



 � �iconshaded(window%,icon%)

ScrapBlk%!0=window%

ScrapBlk%!4=icon%

%È™ "Wimp_GetIconState",,ScrapBlk%

#=((ScrapBlk%!24) � (1<<22)) > 0



P� --- store pointer to indirected text icon (for use in PROCseticontext) ---

'� �linkicontext(index%,wbuf%,icon%)

,IconText%(index%)=wbuf%!(92+icon%*32+20)

!IconTextWhdl%(index%)=wbuf%!0

IconTextIhdl%(index%)=icon%

 �

!

" � �seticontext(index%,text$)

#$(IconText%(index%))=text$

$C�seticonstate0(IconTextWhdl%(index%),IconTextIhdl%(index%),0,0)

%�

&

'8� --- store pointer to text of colour-select-box ---

('� �linkcseltext(index%,wbuf%,icon%)

),CselText%(index%)=wbuf%!(92+icon%*32+20)

*!CselTextWhdl%(index%)=wbuf%!0

+CselTextIhdl%(index%)=icon%

,�

-

.4� --- set colour number in colour-select-box ---

/#� �setcolourbox(index%,colour%)

0� c$,boxcol%

1c$=�(colour%)

2� colour%=&FF � c$="--"

3$(CselText%(index%))=c$

4boxcol%=&07

5� colour%<16 �

62  boxcol%=(colour%<<4)+InverseColour%(colour%)

7�

8boxcol%=boxcol%<<24

9O�seticonstate0(CselTextWhdl%(index%),CselTextIhdl%(index%),boxcol%,&FF<<24)

:�

;

<"� --- change colour number ---

=<� �changecolourbox(index%,� colour%,diff%,up%,bigrange%)

>� newcolour%

?� up% �

@  newcolour%=colour%+diff%

A�

B  newcolour%=colour%-diff%

C�

D:� (newcolour% � &FF)=255 � newcolour%=newcolour%+diff%

E� bigrange% �

FE  newcolour%=newcolour% � &FF        : � colours range from 0-255

G�

HB  � newcolour%<0 � newcolour%=0    : � colours range from 0-15

I%  � newcolour%>&F � newcolour%=&F

J�

K� newcolour%<>colour% �

L  colour%=newcolour%

M#  �setcolourbox(index%,colour%)

N�

O�

P

QH� --- find number of template corresponding with a window handle ---

R� �whichtemplate(handle%)

S� i%

Ti%=0

U6ȕ (TemplHandle%(i%)<>handle%) � (i%<NrTemplates%)

V  i%+=1

W�

XK� i%=NrTemplates% � i%=-1 : � handle does not belong to template window

Y=i%

Z

[+� �settitlebar(handle%,textptr%,title$)

\� xmax%,ymax%

]$(textptr%)=title$

^ScrapBlk%!0=handle%

_)È™ "Wimp_GetWindowOutline",,ScrapBlk%

`xmax%=ScrapBlk%!12

aymax%=ScrapBlk%!16

b'È™ "Wimp_GetWindowState",,ScrapBlk%

c � (ScrapBlk%!32 � (1<<16)) �

dC  È™ "Wimp_ForceRedraw",-1,ScrapBlk%!4,ScrapBlk%!16,xmax%,ymax%

e�

f�

g

h3� --- delete all selected icons in a window ---

i&� �deleteiconsel(window%,default%)

j� i%

k�sel_get(window%)

l� NrSelected%>0 �

m  � i%=0 � NrSelected%-1

n/    �deleteicon(window%,SelBlk%!(4*i%),1,1)

o
  � i%

p�

q5  � nothing selected - delete icon no. <default%>

r7  � default%>=0 � �deleteicon(window%,default%,1,1)

s�

tNrSelected%=0

u�

v

w2� �deleteicon(win%,icon%,release%,adjustvars%)

xScrapBlk%!0=win%

yScrapBlk%!4=icon%

z%È™ "Wimp_GetIconState",,ScrapBlk%

{� release% �

|-  �iconrelease(ScrapBlk%!24,ScrapBlk%+28)

}�

~#È™ "Wimp_DeleteIcon",,ScrapBlk%

]È™ "Wimp_ForceRedraw",win%,ScrapBlk%!8-20,ScrapBlk%!12-20,ScrapBlk%!16+20,ScrapBlk%!20+20

�� adjustvars% �

�/  � (win%=IcEd_Win%) � (icon%=IcEd_Icon%) �

�    IcEd_Icon%=-1000

�  �

�7  � (win%=LastMenu_Win%) � (icon%=LastMenu_Icon%) �

�    LastMenu_Icon%=-1

�  �

��

��setchanged(�)

��

�

�� �createicon(blk%)

�)� dxmin%,dymin%,dxmax%,dymax%,handle%

�� Grid_PosLock% �

�)  dxmin%=�griddiff(blk%!4,Grid_PosX%)

�)  dymin%=�griddiff(blk%!8,Grid_PosY%)

�  blk%!4=blk%!4-dxmin%

�  blk%!8=blk%!8-dymin%

�  blk%!12=blk%!12-dxmin%

�  blk%!16=blk%!16-dymin%

��

�� Grid_SizeLock% �

�*  dxmin%=�griddiff(blk%!4,Grid_SizeX%)

�*  dymin%=�griddiff(blk%!8,Grid_SizeY%)

�+  dxmax%=�griddiff(blk%!12,Grid_SizeX%)

�+  dymax%=�griddiff(blk%!16,Grid_SizeY%)

��

�J  dxmin%=�griddiff(blk%!4,PixToOS_X%): � round coords to screen pixels

�)  dymin%=�griddiff(blk%!8,PixToOS_Y%)

�*  dxmax%=�griddiff(blk%!12,PixToOS_X%)

�*  dymax%=�griddiff(blk%!16,PixToOS_Y%)

��

�blk%!4=blk%!4-dxmin%

�blk%!8=blk%!8-dymin%

�blk%!12=blk%!12-dxmax%

�blk%!16=blk%!16-dymax%

�(ș "Wimp_CreateIcon",,blk% � handle%

�Jș "Wimp_ForceRedraw",blk%!0,blk%!4-12,blk%!8-12,blk%!12+12,blk%!16+12

�9� handle%>MaxIcons% � �complain(�msg_lookup0("MICX"))

��setchanged(�)

�=handle%

�

�7� --- calculate distance from nearest gridpoint ---

�� �griddiff(c%,gridsize%)

�� diff%

�diff%=c% � gridsize%

�� c%<0 �

�2  � (-diff%)>(gridsize%>>1) � diff%+=gridsize%

��

�/  � diff%>(gridsize%>>1) � diff%-=gridsize%

��

�
=diff%

�

�1� --- copy all selected icons in a window ---

�(� �copyiconsel(window%,� icon%,dir%)

�0� i%,xmin%,ymin%,xmax%,ymax%,dx%,dy%,handle%

��sel_get(window%)

�$� (NrSelected%=0) � (icon%>=0) �

�  SelBlk%!0=icon%

�  NrSelected%=1

��

�-�sel_box(window%,xmin%,ymin%,xmax%,ymax%)

�
Ȏ dir% �

�J  � 0 : dx%=16 : dy%=-16        : � fixed distance (a bit lower+right)

�/  � 1 : dx%=0 : dy%=ymax%-ymin% : � copy up

�1  � 2 : dx%=0 : dy%=ymin%-ymax% : � copy down

�1  � 3 : dx%=xmin%-xmax% : dy%=0 : � copy left

�2  � 4 : dx%=xmax%-xmin% : dy%=0 : � copy right

��

�� NrSelected%>0 �

�  � i%=0 � NrSelected%-1

�    � copy icon

�    ScrapBlk%!0=window%

�"    ScrapBlk%!4=SelBlk%!(4*i%)

�)    ș "Wimp_GetIconState",,ScrapBlk%

�    ScrapBlk%!4=window%

�#    ScrapBlk%!8=ScrapBlk%!8+dx%

�%    ScrapBlk%!12=ScrapBlk%!12+dy%

�%    ScrapBlk%!16=ScrapBlk%!16+dx%

�%    ScrapBlk%!20=ScrapBlk%!20+dy%

�H    �iconrealloc(ScrapBlk%+24,ScrapBlk%+28) : � copy indirected data

�(    handle%=�createicon(ScrapBlk%+4)

�5    � deselect originals - copies remain selected

�-    �selecticon(window%,SelBlk%!(4*i%),0)

�
  � i%

�   � icon%>=0 � icon%=handle%

�  �sel_get(window%)

��

��

�

�4� --- replace window definition with new one ---

�(� �redefinewindow(wbuf%,setchanged%)

�(� oldhandle%,no%,wasopen%,newhandle%

�oldhandle%=wbuf%!0

�"no%=�whichtemplate(oldhandle%)

�ScrapBlk%!0=oldhandle%

�'ș "Wimp_GetWindowState",,ScrapBlk%

�%wasopen%=(ScrapBlk%!32) � (1<<16)

�!ș "Wimp_DeleteWindow",,wbuf%

�0ș "Wimp_CreateWindow",,wbuf%+4 � newhandle%

�wbuf%!0=newhandle%

�� no%<>-1 �

�"  TemplHandle%(no%)=newhandle%

��

�� oldhandle%=IcEd_Win% �

�  IcEd_Win%=newhandle%

�  � IcEd_Icon%>=0 �

�3    IcEd_Icon%=-1000 : � invalidate icon handle

�  �

��

�3� oldhandle%=WinEd_Win% � WinEd_Win%=newhandle%

� � oldhandle%=LastMenu_Win% �

�  LastMenu_Win%=newhandle%

�  LastMenu_Icon%=-1

��

�� wasopen% �

�!  ș "Wimp_OpenWindow",,wbuf%

��

�;$(TemplNames%+28*no%+14)=�windowicon(wbuf%!32,wasopen%)

�#�seticonstate0(TemplW%,no%,0,0)

�"� setchanged% � �setchanged(�)

�=newhandle%

�

�2� --- replace icon definition with new one ---

�'� �redefineicon(window%,icon%,blk%)

�� newicon%

�"�deleteicon(window%,icon%,0,0)

�K� new icon data must start at blk%+8 (as returned by Wimp_GetIconState)
blk%!4=window%
 newicon%=�createicon(blk%+4)
0� (window%=IcEd_Win%) � (icon%=IcEd_Icon%) �
  IcEd_Icon%=newicon%
�
8� (window%=LastMenu_Win%) � (icon%=LastMenu_Icon%) �
  LastMenu_Icon%=newicon%
�

=newicon%
	

B� --- renumber an icon; new number is equal to NextIconNr% ---
$� �renumbericon(� window%,icon%)
� i%,ip1%,ip2%,temp%

WinBlk%!0=window%
$È™ "Wimp_GetWindowInfo",,WinBlk%
,� icon%>=WinBlk%!88 � icon%=WinBlk%!88-1
8� NextIconNr%>=WinBlk%!88 � NextIconNr%=WinBlk%!88-1
ip1%=WinBlk%+92+icon%*32
"ip2%=WinBlk%+92+NextIconNr%*32
0� swap icon data blocks in window definition
� i%=0 � 28 � 4
  temp%=ip1%!i%
  ip1%!i%=ip2%!i%
  ip2%!i%=temp%
� i%
&window%=�redefinewindow(WinBlk%,1)
�

G� --- renumber selected icons, ordering based on topleft coords ---
!� �renumbericonsel(� window%)
� i%,j%,f%,l%
�sel_get(window%)
 "�sel_sort(window%,1,1,0,0,0,1)
!>È™ "Wimp_WhichIcon",window%,SelBlk2%,(1<<21)+(1<<23),1<<21
"WinBlk%!0=window%
#$È™ "Wimp_GetWindowInfo",,WinBlk%
$Bf%=NextIconNr%               : � first number of new numbering
%0l%=NextIconNr%+NrSelected%-1 : � last number
&� l%>=WinBlk%!88 �
'K  l%=WinBlk%!88-1            : � make sure new numbers are within range
(  f%=l%-(NrSelected%-1)
)�
*j%=0
+� i%=0 � NrSelected%-1
,:  � replace icon with i%-th icon from sorted selection
-8  �replaceicon(WinBlk%,f%+i%,window%,SelBlk%!(4*i%))
.(  � � �iconselected(window%,f%+i%) �
/M    � data of unselected icon overwritten - find new number for this icon
08    ȕ (SelBlk2%!(4*j%)>=f%) � (SelBlk2%!(4*j%)<=l%)
1      j%+=1
2	    �
3;    �replaceicon(WinBlk%,SelBlk2%!(4*j%),window%,f%+i%)
4
    j%+=1
5  �
6� i%
7&window%=�redefinewindow(WinBlk%,1)
8NextIconNr%=l%+1
9�
:
;=� --- set selected icons to same size as topleft icon ---
<-� �samesizeiconsel(window%,default%,dim%)
=� i%,xsize%,ysize%,handle%
>�sel_get(window%)
?'� (NrSelected%=0) � (default%>=0) �
@  SelBlk%!0=default%
A  NrSelected%=1
B�
C� NrSelected%>0 �
D$  �sel_sort(window%,1,1,0,0,0,1)
E  IconBlk%!0=window%
F  IconBlk%!4=SelBlk%!0
G&  È™ "Wimp_GetIconState",,IconBlk%
H#  xsize%=IconBlk%!16-IconBlk%!8
I$  ysize%=IconBlk%!20-IconBlk%!12
J  � i%=0 � NrSelected%-1
K    IconBlk%!0=window%
L!    IconBlk%!4=SelBlk%!(4*i%)
M(    È™ "Wimp_GetIconState",,IconBlk%
N1    � dim%<>2 � IconBlk%!16=IconBlk%!8+xsize%
O2    � dim%<>1 � IconBlk%!20=IconBlk%!12+ysize%
P>    handle%=�redefineicon(window%,SelBlk%!(4*i%),IconBlk%)
Q
  � i%
R�
S�
T
UI� --- in wbuf%, replace data for icon ic1% with data of icon ic2% ---
V+� �replaceicon(wbuf%,ic1%,window%,ic2%)
W� ib%,temp1%,temp2%
Xib%=wbuf%+92+32*ic1%
Y?temp1%=ib%!(-8) : � save 2 words just before the icon block
Ztemp2%=ib%!(-4)
[ib%!(-8)=window%
\ib%!(-4)=ic2%
]9ș "Wimp_GetIconState",,ib%-8 : � get icon data block
^+ib%!(-8)=temp1% : � restore the 2 words
_ib%!(-4)=temp2%
`�
a
b1� --- update contents of icon info window ---
c� �icinf_update
d5� no%,t$,i$,xmin$,xmax$,ymin$,ymax$,s$,mx%,my%,m$
e+� showicondata%,xmin%,xmax%,ymin%,ymax%
f&È™ "Wimp_GetPointerInfo",,PtrInfo%
g#no%=�whichtemplate(PtrInfo%!12)
h	t$=""
i	i$=""
jxmin$=""
kxmax$=""
lymin$=""
mymax$=""
n	s$=""
o	m$=""
pshowicondata%=�
q� (no%>=0) �
r  t$=$(TemplNames%+28*no%)
s  � PtrInfo%!16>=-1 �
t    ScrapBlk%!0=PtrInfo%!12
u+    È™ "Wimp_GetWindowState",,ScrapBlk%
v1    mx%=PtrInfo%!0-(ScrapBlk%!4-ScrapBlk%!20)
w2    my%=PtrInfo%!4-(ScrapBlk%!16-ScrapBlk%!24)
x    m$=�(mx%)+","+�(my%)
y    Ȏ Drag_Type% �
z
      � 0
{K        � moving/resizing icon(s) - show current coordinates of dragbox
|        i$="..."
}-        xmin%=mx%-(Drag_Ptrx%-DragBlk%!8)
~.        ymin%=my%-(Drag_Ptry%-DragBlk%!12)
&        xmax%=xmin%+Drag_BoxSizex%
�&        ymax%=ymin%+Drag_BoxSizey%
�        showicondata%=�
�
      � 1
�D        � resizing icon(s) - show current coordinates of dragbox
�        i$="..."
�        xmin%=Drag_Box0x%
�        ymin%=Drag_Box0y%
�&        xmax%=xmin%+Drag_BoxSizex%
�&        ymax%=ymin%+Drag_BoxSizey%
�        Ȏ MouseShape% �
�2          � 2 : ymax%+=(PtrInfo%!4-Drag_Ptry%)
�2          � 3 : xmax%+=(PtrInfo%!0-Drag_Ptrx%)
�2          � 4 : ymin%+=(PtrInfo%!4-Drag_Ptry%)
�2          � 5 : xmin%+=(PtrInfo%!0-Drag_Ptrx%)
�
        �
�        showicondata%=�
�      
�-        � show data of icon under pointer
�        � PtrInfo%!16>=0 �
�          i$=�(PtrInfo%!16)
�%          ScrapBlk%!0=PtrInfo%!12
�%          ScrapBlk%!4=PtrInfo%!16
�/          ș "Wimp_GetIconState",,ScrapBlk%
�          xmin%=ScrapBlk%!8
�           xmax%=ScrapBlk%!16
�           ymin%=ScrapBlk%!12
�           ymax%=ScrapBlk%!20
�          showicondata%=�
�
        �
�	    �
�    � showicondata% �
�      xmin$=�(xmin%)
�      xmax$=�(xmax%)
�      ymin$=�(ymin%)
�      ymax$=�(ymax%)
�.      s$=�(xmax%-xmin%)+"x"+�(ymax%-ymin%)
�	    �
�  �
��
�.� t$<>$(IconText%(7)) � �seticontext(7,t$)
�.� i$<>$(IconText%(8)) � �seticontext(8,i$)
�4� xmin$<>$(IconText%(9)) � �seticontext(9,xmin$)
�6� xmax$<>$(IconText%(26)) � �seticontext(26,xmax$)
�6� ymin$<>$(IconText%(10)) � �seticontext(10,ymin$)
�6� ymax$<>$(IconText%(27)) � �seticontext(27,ymax$)
�0� s$<>$(IconText%(11)) � �seticontext(11,s$)
�0� m$<>$(IconText%(24)) � �seticontext(24,m$)
��
�
�� �alignicons(window%)
�-� move%,imask%,type%,i%,anchorx%,anchory%
�!� dx1%,dx2%,dy1%,dy2%,handle%
�"move%=�iconselected(AlignW%,8)
�imask%=(31<<16)+(1<<21)
�>ș "Wimp_WhichIcon",AlignW%,SelBlk%,imask%,(1<<16)+(1<<21)
�type%=SelBlk%!0
��sel_get(window%)
�� NrSelected%>1 �
�  Ȏ type% �
�.    � 2,3 : �sel_sort(window%,0,0,1,0,1,1)
�.    � 4   : �sel_sort(window%,0,1,0,0,1,1)
�.    � 5,6 : �sel_sort(window%,1,1,0,1,0,0)
�.    � 7   : �sel_sort(window%,1,0,1,1,1,1)
�  �
�  IconBlk%!0=window%
�  IconBlk%!4=SelBlk%!0
�&  ș "Wimp_GetIconState",,IconBlk%
�  Ȏ type% �
�    � 2
�E      anchorx%=IconBlk%!8                                : � left
�    � 3
�G      anchorx%=IconBlk%!8+(IconBlk%!16-IconBlk%!8)�2   : � h centre
�    � 4
�F      anchorx%=IconBlk%!16                               : � right
�    � 5
�D      anchory%=IconBlk%!20                               : � top
�    � 6
�G      anchory%=IconBlk%!12+(IconBlk%!20-IconBlk%!12)�2 : � v centre
�    � 7
�G      anchory%=IconBlk%!12                               : � bottom
�  �
�  � i%=1 � NrSelected%-1
�    IconBlk%!0=window%
�!    IconBlk%!4=SelBlk%!(4*i%)
�(    ș "Wimp_GetIconState",,IconBlk%
�    dx1%=0
�    dx2%=0
�    dy1%=0
�    dy2%=0
�    Ȏ type% �
�
      � 2
�$        dx1%=anchorx%-IconBlk%!8
�        � move% � dx2%=dx1%
�
      � 3
�A        dx1%=anchorx%-(IconBlk%!8+(IconBlk%!16-IconBlk%!8)�2)
�        � move% � dx2%=dx1%
�
      � 4
�%        dx2%=anchorx%-IconBlk%!16
�        � move% � dx1%=dx2%
�
      � 5
�%        dy2%=anchory%-IconBlk%!20
�        � move% � dy1%=dy2%
�
      � 6
�C        dy1%=anchory%-(IconBlk%!12+(IconBlk%!20-IconBlk%!12)�2)
�        � move% � dy2%=dy1%
�
      � 7
�%        dy1%=anchory%-IconBlk%!12
�        � move% � dy2%=dy1%
�	    �
�"    IconBlk%!8=IconBlk%!8+dx1%
�$    IconBlk%!12=IconBlk%!12+dy1%
�$    IconBlk%!16=IconBlk%!16+dx2%
�$    IconBlk%!20=IconBlk%!20+dy2%
�=    � IconBlk%!16<=IconBlk%!8 � IconBlk%!16=IconBlk%!8+32
�?    � IconBlk%!20<=IconBlk%!12 � IconBlk%!20=IconBlk%!12+32
�>    handle%=�redefineicon(window%,SelBlk%!(4*i%),IconBlk%)
�
  � i%
��
��
�
�9� --- shade the appropriate icons in the Align window
�� �align_shadeicons
�<� �iconselected(AlignW%,3) �  �iconselected(AlignW%,6) �
�  �shadeicon(AlignW%,9,1)
��
�  �shadeicon(AlignW%,9,0)
��
�2�shadeicon(AlignW%,3,�iconselected(AlignW%,9))
2�shadeicon(AlignW%,6,�iconselected(AlignW%,9))
�

� �spaceicons(window%)
B� imask%,type%,i%,distance%,space%,ib%,anchor%,dx%,dy%,handle%
'SpaceOut_Space%=�($(IconText%(18)))
Oimask%=(31<<16)+(1<<21) : � check if spacing must be horizontal or vertical
>È™ "Wimp_WhichIcon",SpaceW%,SelBlk%,imask%,(1<<16)+(1<<21)
Btype%=SelBlk%!0 : � type%=2 => horizontal, type%=3 => vertical
	�sel_get(window%)

� NrSelected%>1 �
  � type%=2 �
&    �sel_sort(window%,0,0,1,0,1,0)

  �
&    �sel_sort(window%,1,0,1,1,1,0)
  �
"  � �iconselected(SpaceW%,4) �
!    distance%=SpaceOut_Space%
  �
,    � calc available space between icons
    WinBlk%!0=window%
(    È™ "Wimp_GetWindowInfo",,WinBlk%
.    � start with space between outer icons
    � type%=2 �
>      space%=WinBlk%!(92+32*(SelBlk%!(4*(NrSelected%-1))))
/      space%-=WinBlk%!(92+32*(SelBlk%!0)+8)
	    �
@      space%=WinBlk%!(92+32*(SelBlk%!(4*(NrSelected%-1)))+4)
0      space%-=WinBlk%!(92+32*(SelBlk%!0)+12)
	    �
.    � subtract sizes of intermediate icons
    � NrSelected%>2 �
 "      � i%=1 � (NrSelected%-2)
!.        ib%=WinBlk%+92+32*(SelBlk%!(4*i%))
"        � type%=2 �
##          space%-=(ib%!8-ib%!0)
$
        �
%$          space%-=(ib%!12-ib%!4)
&
        �
'      � i%
(	    �
)*    distance%=space% � (NrSelected%-1)
*  �
+  IconBlk%!0=window%
,  IconBlk%!4=SelBlk%!0
-&  È™ "Wimp_GetIconState",,IconBlk%
.  Ȏ type% �
/!    � 2 : anchor%=IconBlk%!16
0!    � 3 : anchor%=IconBlk%!20
1  �
2  � i%=1 � NrSelected%-1
3    anchor%+=distance%
4    IconBlk%!0=window%
5!    IconBlk%!4=SelBlk%!(4*i%)
6(    È™ "Wimp_GetIconState",,IconBlk%
7
    dx%=0
8
    dy%=0
9    Ȏ type% �
:&      � 2 : dx%=anchor%-IconBlk%!8
;'      � 3 : dy%=anchor%-IconBlk%!12
<	    �
=!    IconBlk%!8=IconBlk%!8+dx%
>#    IconBlk%!12=IconBlk%!12+dy%
?#    IconBlk%!16=IconBlk%!16+dx%
@#    IconBlk%!20=IconBlk%!20+dy%
A    Ȏ type% �
B#      � 2 : anchor%=IconBlk%!16
C#      � 3 : anchor%=IconBlk%!20
D	    �
E>    handle%=�redefineicon(window%,SelBlk%!(4*i%),IconBlk%)
F
  � i%
G�
H�
I
J� �space_shadeicons
K� useavail%,i%
L&useavail%=�iconselected(SpaceW%,8)
M� i%=5 � 7
N&  �shadeicon(SpaceW%,i%,useavail%)
O� i%
P�
Q
R� �tidyicons(window%)
SD� changed1%,changed2%,ib1%,ib2%,end%,nricons%,dx%,dy%,i%,handle%
TWinBlk%!0=window%
U$È™ "Wimp_GetWindowInfo",,WinBlk%
Vchanged1%=0
Wchanged2%=0
X� WinBlk%!88>0 �
Y  ib1%=WinBlk%+92
Z  ib2%=ib1%
[  end%=ib1%+32*(WinBlk%!88)
\  nricons%=0
]  È• ib1%<end%
^!    � ((ib1%!16)�(1<<23))=0 �
_5      � test if icon position is within work area
`      dx%=0
a      dy%=0
b5      � ib1%!0<WinBlk%!44 � dx%=WinBlk%!44-ib1%!0
c5      � ib1%!4<WinBlk%!48 � dy%=WinBlk%!48-ib1%!4
d5      � ib1%!8>WinBlk%!52 � dx%=WinBlk%!52-ib1%!8
e7      � ib1%!12>WinBlk%!56 � dy%=WinBlk%!56-ib1%!12
f      ib1%!0=ib1%!0+dx%
g      ib1%!4=ib1%!4+dy%
h      ib1%!8=ib1%!8+dx%
i      ib1%!12=ib1%!12+dy%
j#      � move block of icon data
k      � i%=0 � 28 � 4
l        ib2%!i%=ib1%!i%
m      � i%
n      ib2%+=32
o      nricons%+=1
p,      � (dx%<>0)�(dy%<>0) � changed2%+=1
q	    �
r#      � don't copy deleted icon
s      changed1%+=1
t	    �
u    ib1%+=32
v  �
w%  � (changed1%=0)�(changed2%=0) �
x    �dialogue(6,"","")
y  �
z    WinBlk%!88=nricons%
{*    handle%=�redefinewindow(WinBlk%,1)
|.    �dialogue(7,�(changed1%),�(changed2%))
}  �
~�
=handle%
�
�� �setworkarea
�3� xtopleft%,ytopleft%,xsize%,ysize%,xmin%,ymin%
�WinBlk%!0=LastMenu_Win%
�$ș "Wimp_GetWindowInfo",,WinBlk%
�!xtopleft%=�($(IconText%(12)))
�!ytopleft%=�($(IconText%(13)))
�xsize%=�($(IconText%(14)))
�ysize%=�($(IconText%(15)))
�%xmin%=�($(IconText%(16))) � &FFFF
�%ymin%=�($(IconText%(17))) � &FFFF
�!� (xsize%<32) � (ysize%<32) �
�%  �complain(�msg_lookup0("IWAS"))
��
�  � xmin%>xsize% �
�    xmin%=xsize%
�!    �seticontext(16,�(xmin%))
�  �
�  � ymin%>ysize% �
�    ymin%=ysize%
�!    �seticontext(17,�(ymin%))
�  �
�  WinBlk%!44=xtopleft%
�!  WinBlk%!48=ytopleft%-ysize%
�!  WinBlk%!52=xtopleft%+xsize%
�  WinBlk%!56=ytopleft%
�"  WinBlk%!72=(ymin%<<16)+xmin%
�.  LastMenu_Win%=�redefinewindow(WinBlk%,1)
��
��
�
�+� �centericonsel(window%,default%,dim%)
�>� xmin%,ymin%,xmax%,ymax%,xfree%,yfree%,dx%,dy%,i%,handle%
��sel_get(window%)
�'� (NrSelected%=0) � (default%>=0) �
�  SelBlk%!0=default%
�  NrSelected%=1
��
�� NrSelected%>0 �
�/  �sel_box(window%,xmin%,ymin%,xmax%,ymax%)
�  ScrapBlk%!0=window%
�)  ș "Wimp_GetWindowState",,ScrapBlk%
�5  xfree%=(ScrapBlk%!12-ScrapBlk%!4)-(xmax%-xmin%)
�)  dx%=ScrapBlk%!20+(xfree% � 2)-xmin%
�5  yfree%=(ScrapBlk%!16-ScrapBlk%!8)-(ymax%-ymin%)
�)  dy%=ScrapBlk%!24-(yfree% � 2)-ymax%
�  � dim%=2 � dx%=0
�  � dim%=1 � dy%=0
�  � i%=0 � NrSelected%-1
�    IconBlk%!0=window%
�!    IconBlk%!4=SelBlk%!(4*i%)
�(    ș "Wimp_GetIconState",,IconBlk%
�!    IconBlk%!8=IconBlk%!8+dx%
�#    IconBlk%!12=IconBlk%!12+dy%
�#    IconBlk%!16=IconBlk%!16+dx%
�#    IconBlk%!20=IconBlk%!20+dy%
�>    handle%=�redefineicon(window%,SelBlk%!(4*i%),IconBlk%)
�
  � i%
��
��
�
� � �supportinterface(switch%)
�
� flg%
�old%=SupportInterface%
�SupportInterface%=switch%
�� switch% �
�3  ș "XOS_Module",18,"InterfaceManager" � ;flg%
�  � (flg% � 1) �
�    SupportInterface%=�
�#    �dialogue(3,"Interface","")
�  �
�    �supportaeh(�)
�  �
��
�.�selecticon(OptPaneW%,9,SupportInterface%)
�*� SupportInterface%<>old% � �redrawall
��
�
�� �supportaeh(switch%)
�� old%,flg%
�old%=SupportAEH%
�SupportAEH%=switch%
�� switch% �
�,  ș "XOS_Module",18,"AEHModule" � ;flg%
�  � (flg% � 1) �
�    SupportAEH%=�
�    �dialogue(3,"AEH","")
�  �
�    �supportinterface(�)
�  �
��
�)�selecticon(OptPaneW%,10,SupportAEH%)
��registeraeh(SupportAEH%)
�$� SupportAEH%<>old% � �redrawall
��
�
�� �registeraeh(switch%)
�� old%,flg%
�� switch% �
�  � � AEHregistered% �
�$    ș "XAEH_Register",1 � ;flg%
�&    AEHregistered%=((flg% � 1)<>0)
�  �
��
�  � AEHregistered% �
�    ș "XAEH_Register",-1
�    AEHregistered%=�
�  �
��
��
�
�;� --- force the redraw of all open template windows ---
�� �redrawall
�� i%
�� NrTemplates%>0 �
�  � i%=0 � (NrTemplates%-1)
�    Blk%!0=TemplHandle%(i%)
�&    ș "Wimp_GetWindowState",,Blk%
�    � (Blk%!32 � (1<<16)) �
�@      ș "Wimp_ForceRedraw",-1,Blk%!4,Blk%!8,Blk%!12,Blk%!16
�	    �
�
  � i%
��
��
�
�� �setmainfname(fn$)
�MainFName$=fn$
�� ChangesMade% � fn$+=" *"
(�settitlebar(TemplW%,TemplTbar%,fn$)
�

+� --- set the 'changes made' status ---
� �setchanged(switch%)
� title$
� ChangesMade%<>switch% �
  � switch% �
!    title$=$(TemplTbar%)+" *"
	  �

1    title$=�$(TemplTbar%),�($(TemplTbar%))-2)
  �
-  �settitlebar(TemplW%,TemplTbar%,title$)

  ChangesMade%=switch%
�
�

5� --- build string with info to send to !Help ---
� �iconhelp(no%,icon%)
� help$,p%
,help$="Template '"+$(TemplNames%+28*no%)
� icon%>=0 �
&  help$+="', Icon #"+�(icon%)+"|M"
#  ScrapBlk%!0=TemplHandle%(no%)
  ScrapBlk%!4=icon%
'  È™ "Wimp_GetIconState",,ScrapBlk%
  flags%=ScrapBlk%!24
  Ȏ (flags% � 3) �
+    � 0 : help$+="Non-text, non-sprite"
    � 1 : help$+="Text"
    � 2 : help$+="Sprite"
$    � 3 : help$+="Text + Sprite"
   �
!  help$+=" icon, "
"  � (flags% � &100) �
#=    help$+="Indirected (max. size "+�(ScrapBlk%!36)+")|M"
$    � (flags% � 1) �
%      � ScrapBlk%!32=-1 �
&)        help$+="No validation string"
'      �
(=        help$+="Validation string: '"+$(ScrapBlk%!32)+"'"
)      �
*	    �
+  �
,"    help$+="Non-indirected|M "
-  �
.B  help$+="|MButton type: '"+$(IcButton%+20*((flags%>>12)� &F))
/,  help$+="', ESG: "+�((flags%>>16)� &1F)
0  � OSversion%>=300 �
1J    � replace "\" with "\\", else !Help (RiscOS 3) thinks it's a token
2    p%=�help$,"\")
3    È• p%<>0
4+      help$=�help$,p%)+"\"+�help$,p%+1)
5      p%=�help$,"\",p%+2)
6	    �
7  �
8�
9!  WinBlk%!0=TemplHandle%(no%)
:&  È™ "Wimp_GetWindowInfo",,WinBlk%
;3  help$+="', Window background|MButton type: '"
<:  help$+=$(WinButton%+20*(((WinBlk%!64)>>12)� &F))+"'"
=�
>
=help$
?
@/� --- schedule the closedown of TemplEd ---
A� �prequit(delayed%)
BPollMask%=PollMask% �(� 1)
CQuit%=�
D� delayed% �
E:  � delayed quit is a workaround for bug in RiscOS 3.1
F  QuitDeadline%=�+60  
G�
H  QuitDeadline%=�
I�
J�
K
LD� --- send help-request to StrongHelp, for help on a subject ---
M� �askhelp(string$)
NBlk%!0=256
O
Blk%!12=0
PBlk%!16=&43B00
Q&$(Blk%+20)="Help_Word "+string$+�0
R#È™ "Wimp_SendMessage",17,Blk%,0
S�
T
U(� *** procs for saving templates ***
V
W� �savetemplates(fname$)
X� handle%,offset%,no%
Y� �
Z3� (�fname$,".")=0) � (fname$<>"<Wimp$Scrap>") �
[%  �complain(�msg_lookup0("ISLF"))
\�
]  È™ "Hourglass_On"
^5  �save_init(fname$,NrTemplates%,handle%,offset%)
_&  � � � � #handle% : �error(0) : �
`  � no%=0 � NrTemplates%-1
a?    � (� SavingSelection%) � (�iconselected(TemplW%,no%)) �
b-      �save_template(no%,handle%,offset%)
c	    �
d  � no%
e#  �save_finish(handle%,offset%)
f!  È™ "OS_File",18,fname$,&FEC
g  È™ "Hourglass_Off"
h*  � fname$=MainFName$ � �setchanged(�)
i�
jÈ™ "Wimp_CreateMenu",,-1
k"� QuitAfterSave% � �prequit(1)
l�
m
n5� �save_init(fname$,nrtempl%,� handle%,� offset%)
o� i%
pSave_IndexOfs%=16
q� i%=0 � FileIndexSize%-1
r  FileIndex%?i%=0
s� i%
tH� set up translation table for font handles -> internal font handles
u� i%=0 � 255
v  Fra%?i%=0
w� i%
xSave_NrFonts%=0
y2FileIndex%!0=-1          : � no fonts (so far)
zLoffset%=16+nrtempl%*24+4 : � skip first part of file (index saved later)
{handle%=� fname$
|�
}
~+� �save_template(no%,handle%,� offset%)
� nricons%,i%,dataofs%,ib%
�'FileIndex%!(Save_IndexOfs%)=offset%
�#FileIndex%!(Save_IndexOfs%+8)=1
�9$(FileIndex%+Save_IndexOfs%+12)=$(TemplNames%+28*no%)
�WinBlk%!0=TemplHandle%(no%)
�$ș "Wimp_GetWindowInfo",,WinBlk%
�� PaneFlag%?no% �
�<  WinBlk%!32=WinBlk%!32 � (1<<5) : � restore 'Pane' flag
��
�nricons%=WinBlk%!88
�dataofs%=88+32*nricons%
�6WinBlk%!68=1 : � reset sprite pointer to Wimp area
�3�save_translate(WinBlk%+60,WinBlk%+76,dataofs%)
�� nricons%>0 �
�  � i%=0 � nricons%-1
�    ib%=WinBlk%+92+i%*32
�/    �save_translate(ib%+16,ib%+20,dataofs%)
�    � Save_Unselected% �
�$      ib%!16=ib%!16 � (�(1<<21))
�	    �
�
  � i%
��
�Iș "OS_GBPB",1,handle%,WinBlk%+4,88+32*nricons%,offset% � ,,,,offset%
�$ș "Wimp_GetWindowInfo",,WinBlk%
�7�save_icon(WinBlk%!(60),WinBlk%+76,handle%,offset%)
�� nricons%>0 �
�  � i%=0 � nricons%-1
�M    �save_icon(WinBlk%!(92+i%*32+16),WinBlk%+92+i%*32+20,handle%,offset%)
�
  � i%
��
�EFileIndex%!(Save_IndexOfs%+4)=offset%-FileIndex%!(Save_IndexOfs%)
�Save_IndexOfs%+=24
��
�
�O� --- translate data in icon block (indirected pointers + font handles) ---
�0� �save_translate(flagptr%,data%,� dataofs%)
�$� flags%,sl%,fhandle%,inthandle%
�flags%=flagptr%!0
�� (flags% � (1<<23))>0 �
�6  � icon has been deleted - fill with default data
�  flagptr%!0=&07800001
�  $(data%)="<Deleted>"
��
�9  � 1. calculate file offset for indirected icon data
�  � (flags% � &100)=&100 �
�    Ȏ (flags% � 3) �
�
      � 0
�L        data%!0=dataofs%   : � default data for non-text,non-sprite icon
�E        dataofs%+=1        : � empty string, 1 char is terminator
�        data%!4=-1
�
      � 2
�        sl%=�($(data%!0))
�        data%!0=dataofs%
�        dataofs%+=sl%+1
�D        data%!4=1          : � reset sprite pointer to Wimp area
�      � 1,3
�        sl%=�($(data%!0))
�        data%!0=dataofs%
�        dataofs%+=sl%+1
�        � data%!4<>-1 �
�          sl%=�($(data%!4))
�          data%!4=dataofs%
�          dataofs%+=sl%+1
�
        �
�	    �
�  �
�3  � 2. translate font handle to internal handle
�  � flags% � (1<<6) �
�    fhandle%=flags%>>24
�     inthandle%=Fra%?fhandle%
�    � inthandle%=0 �
�      Save_NrFonts%+=1
�"      inthandle%=Save_NrFonts%
�"      Fra%?fhandle%=inthandle%
�	    �
�8    flagptr%!0=(flags% � &FFFFFF) � (inthandle%<<24)
�  �
��
��
�
�/� --- save indirected icon data to file ---
�0� �save_icon(flags%,data%,handle%,� offset%)
�	� sl%
�8ScrapBlk%!0=13 : � temporary buffer for empty string
�� (flags% � &800100)=&100 �
�  � flags% � 3 �
�    sl%=�($(data%!0))
�B    ș "OS_GBPB",1,handle%,data%!0,sl%+1,offset% � ,,,,offset%
�    � flags% � 1 �
�      � data%!4<>-1 �
�        sl%=�($(data%!4))
�F        ș "OS_GBPB",1,handle%,data%!4,sl%+1,offset% � ,,,,offset%
�      �
�	    �
�  �
�7    � non-text,non-sprite icon - write empty string
�@    ș "OS_GBPB",1,handle%,ScrapBlk%,1,offset% � ,,,,offset%
�  �
��
��
�
�#� �save_finish(handle%,offset%)
�� i%,j%
�� save font data
�� Save_NrFonts%>0 �
�  FileIndex%!0=offset%
�  � i%=1 � Save_NrFonts%
�/    � find font that got internal handle i%
�    j%=0
�    ȕ Fra%?j%<>i%
�      j%+=1
�	    �
�E    ș "Font_ReadDefn",j%,FontData%+8 � ,,FontData%!0,FontData%!4
�A    ș "OS_GBPB",1,handle%,FontData%,48,offset% � ,,,,offset%
�
  � i%
��
�!� save header + index entries
�8ș "OS_GBPB",1,handle%,FileIndex%,Save_IndexOfs%+4,0
�� #handle%
��
�
�;� *** procs for loading and deleting user templates ***
�
�(� �templ_add(name$,wblk%,setextent%)
�� no%,nameptr%,spptr%,i%
�"� NrTemplates%=MaxTemplates% �
�%  �complain(�msg_lookup0("MTPX"))
��
�  no%=NrTemplates%
'  PaneFlag%?no%=(wblk%!32) � (1<<5)
#  wblk%!32=(wblk%!32) � �(1<<5)
9  ș "Wimp_CreateWindow",,wblk%+4 � TemplHandle%(no%)
  NrTemplates%+=1
  ScrapBlk%!0=TemplW%
6  ScrapBlk%!4=8+TemplW_IconX%*(no% � TemplW_Cols%)
C  ScrapBlk%!12=(ScrapBlk%!4)+(TemplW_IconX%-8)-16*(11-�(name$))
8  ScrapBlk%!16=-8-TemplW_IconY%*(no% � TemplW_Cols%)
2  ScrapBlk%!8=(ScrapBlk%!16)-(TemplW_IconY%-8)
	$  ScrapBlk%!20=TemplW_IconFlags%

!  nameptr%=TemplNames%+28*no%
  $(nameptr%)=name$
  ScrapBlk%!24=nameptr%

"  spptr%=TemplNames%+28*no%+14
'  $(spptr%)=�windowicon(wblk%!32,0)
  ScrapBlk%!28=spptr%
  ScrapBlk%!32=16
%  È™ "Wimp_CreateIcon",,ScrapBlk%
  � � DuplNames% �
    i%=0
&    È• $(TemplNames%+28*i%)<>name$
      i%+=1
	    �
$    � i%<no% � �templ_delete(i%)
  �
  � setextent% � �setextent
0  �seticonstate0(TemplW%,NrTemplates%-1,0,0)
�
�

� �templ_deleteall
� i%
 È™ "Hourglass_On"
!� NrTemplates%>0 �
""  � i%=NrTemplates%-1 � 0 � -1
#    �templ_delete(i%)
$
  � i%
%�
&�setmainfname("Templates")
'�setchanged(�)
(È™ "Hourglass_Off"
)�
*
+� �templ_delete(no%)
,� i%,j%,wasopen%,oldhandle%
- oldhandle%=TemplHandle%(no%)
.WinBlk%!0=oldhandle%
/$È™ "Wimp_GetWindowInfo",,WinBlk%
0'�iconrelease(WinBlk%!60,WinBlk%+76)
1� WinBlk%!88>0 �
2  � i%=0 � (WinBlk%!88-1)
3?    �iconrelease(WinBlk%!(92+i%*32+16),WinBlk%+92+i%*32+20)
4
  � i%
5�
6#È™ "Wimp_DeleteWindow",,WinBlk%
7� update browser window
8WinBlk%!0=TemplW%
9$È™ "Wimp_GetWindowInfo",,WinBlk%
:#wasopen%=(WinBlk%!32) � (1<<16)
;� no%<(NrTemplates%-1) �
<9  � move data for icons after the one that is deleted
=  � i%=no% � NrTemplates%-2
>    ib%=WinBlk%+92+32*i%
?    � j%=0 � 16 � 4
@      ib%!j%=ib%!(j%+32)
A    � j%
B+    TemplHandle%(i%)=TemplHandle%(i%+1)
C5    $(TemplNames%+28*i%)=$(TemplNames%+28*(i%+1))
D;    $(TemplNames%+28*i%+14)=$(TemplNames%+28*(i%+1)+14)
E
  � i%
F�
GWinBlk%!88=WinBlk%!88-1
H#È™ "Wimp_DeleteWindow",,WinBlk%
I/ș "Wimp_CreateWindow",,WinBlk%+4 � TemplW%
JNrTemplates%-=1
K�setchanged(NrTemplates%>0)
L�redefinebrowser(0)
M� wasopen% �
N  WinBlk%!0=TemplW%
O&  È™ "Wimp_GetWindowInfo",,WinBlk%
P#  È™ "Wimp_OpenWindow",,WinBlk%
Q�
R1� oldhandle%=IcEd_Win% � �closewindow(IcEdW%)
S3� oldhandle%=WinEd_Win% � �closewindow(WinEdW%)
T1� oldhandle%=LastMenu_Win% � LastMenu_Win%=-1
U+� NrTemplates%=0 � �closewindow(StatW%)
V�
W
XC� --- adapt extent of browser window to number of templates ---
Y� �setextent
Z� nrrows%,xsize%,titlesize%
[/nrrows%=1+((NrTemplates%-1) � TemplW_Cols%)
\� nrrows%<2 � nrrows%=2
]� NrTemplates%=0 �
^  xsize%=8+TemplW_IconX%
_�
`'  � NrTemplates% < TemplW_MaxCol% �
a+    xsize%=8+NrTemplates%*TemplW_IconX%
b  �
c-    xsize%=8+TemplW_MaxCol%*TemplW_IconX%
d  �
e�
f&titlesize%=128+16*�($(TemplTbar%))
g+� xsize%<titlesize% � xsize%=titlesize%
hScrapBlk%!0=0
i(ScrapBlk%!4=-8-TemplW_IconY%*nrrows%
jScrapBlk%!8=xsize%
kScrapBlk%!12=0
l)È™ "Wimp_SetExtent",TemplW%,ScrapBlk%
m�
n
oF� --- move icons in browser window to adapt to new window size ---
p� �redefinebrowser(reopen%)
q#� wasopen%,i%,ib%,xsize%,ysize%
rWinBlk%!0=TemplW%
s$È™ "Wimp_GetWindowInfo",,WinBlk%
t#wasopen%=(WinBlk%!32) � (1<<16)
u� WinBlk%!88>0 �
v  � i%=0 � (WinBlk%!88-1)
w    ib%=WinBlk%+92+32*i%
x@    xsize%=(TemplW_IconX%-8)-16*(11-�($(TemplNames%+i%*28)))
y    ysize%=ib%!12-ib%!4
z1    ib%!0=8+TemplW_IconX%*(i% � TemplW_Cols%)
{    ib%!8=(ib%!0)+xsize%
|3    ib%!12=-8-TemplW_IconY%*(i% � TemplW_Cols%)
}    ib%!4=(ib%!12)-ysize%
~
  � i%
�
�#ș "Wimp_DeleteWindow",,WinBlk%
�/ș "Wimp_CreateWindow",,WinBlk%+4 � TemplW%
��setextent
�� reopen% � wasopen% �
�  WinBlk%!0=TemplW%
�&  ș "Wimp_GetWindowInfo",,WinBlk%
�>  � adapt scroll offsets if visible area exceeds work area
�8  � (WinBlk%!20+(WinBlk%!12-WinBlk%!4))>WinBlk%!52 �
�4    WinBlk%!20=WinBlk%!52-(WinBlk%!12-WinBlk%!4)
�    � WinBlk%!20<0 �
�*      WinBlk%!12=WinBlk%!12+WinBlk%!20
�      WinBlk%!20=0
�	    �
�  �
�8  � (WinBlk%!24-(WinBlk%!16-WinBlk%!8))<WinBlk%!48 �
�4    WinBlk%!24=WinBlk%!48+(WinBlk%!16-WinBlk%!8)
�    � WinBlk%!24>0 �
�(      WinBlk%!8=WinBlk%!8+WinBlk%!24
�      WinBlk%!20=0
�	    �
�  �
�#  ș "Wimp_OpenWindow",,WinBlk%
��
��
�
�*� �templ_loadfile(fname$,loadsprites%)
�/� i%,nr%,name$,handle%,ip%,indirbuf%,sname$
�ș "Hourglass_On"
�� i%=0 � 255
�  � FontUsage%(i%)>0 �
�K    � font in use - make for extra call to Font_LoseFont at end of proc
�    Fra%?i%=1
�  �
�    Fra%?i%=0
�  �
�� i%
�� NrTemplates%=0 �
�  � fname$="<Wimp$Scrap>" �
�#    �setmainfname(NewLeafName$)
�  �
�    �setmainfname(fname$)
�  �
��
�6� loadsprites% � (�leafname(fname$)="Templates") �
�(  sname$=�dirname(fname$)+".Sprites"
�  � �fileexists(sname$) �
�     �loadusersprites(sname$)
�  �
��
�&indirbuf%=�heap_get(MaxIndirSize%)
�� indirbuf%>0 �
�  handle%=� fname$
�  � handle%>0 �
�F    � read index of template file to check for oversized templates
�:    ș "OS_GBPB",3,handle%,FileIndex%,FileIndexSize%,0
�    � #handle%
�&    ș "Wimp_OpenTemplate",,fname$
�    ip%=FileIndex%+24
�
    nr%=0
�	    �
�$      � ip%!0>MaxTemplateSize% �
�5        �complain(�msg_lookup1("TTLB",$(ip%+12)))
�      �
�:        �templ_load(nr%,name$,indirbuf%,MaxIndirSize%)
�        � nr%>0 �
�)          �templ_add(name$,WinBlk%,0)
�
        �
�      �
�      ip%+=24
�1    � (nr%<=0) � (NrTemplates%=MaxTemplates%)
�    ș "Wimp_CloseTemplate"
�!    � fname$="<Wimp$Scrap>" �
�H      ș "OS_File",6,fname$ : � delete Wimp$Scrap file after reading
�	    �
�     �heap_release(indirbuf%)
�    �setextent
�  �
��
�� i%=0 � 255
�C  � neutralise calls of Font_FindFont done by Wimp_LoadTemplate
�  ȕ Fra%?i%>1
�    ș "Font_LoseFont",i%
�    Fra%?i%-=1
�  �
�� i%
�ș "Hourglass_Off"
��openwindow(TemplW%,3)
�.� IcInfo_Active% � �openwindow(IcInfoW%,4)
��
�
�'� �templ_load(� nr%,� n$,p%,psize%)
�� dx%,dy%,icon%,tb%,ib%
�� �
�9� � � ș "Wimp_CloseTemplate" : �error(0) : nr%=0 : �
�-n$="*"+�11,�0) : � name length must be 12
�Lș "Wimp_LoadTemplate",,WinBlk%+4,p%,p%+psize%,Fra%,n$,nr% � ,,,,,n$,nr%
�
� nr%>0 �
�F  � make sure window origin position is within current screen size
�  dx%=0
�  dy%=0
�$  � WinBlk%!4<0 � dx%=-WinBlk%!4
�$  � WinBlk%!8<0 � dy%=-WinBlk%!8
�?  � WinBlk%!12>ScreenSize_X% � dx%=ScreenSize_X%-WinBlk%!12
�G  � WinBlk%!16>(ScreenSize_Y%-44) � dy%=ScreenSize_Y%-44-WinBlk%!16
�  WinBlk%!4=WinBlk%!4+dx%
�  WinBlk%!8=WinBlk%!8+dy%
�  WinBlk%!12=WinBlk%!12+dx%
�  WinBlk%!16=WinBlk%!16+dy%
�?  WinBlk%!68=UserSprites% : � set sprite area (CBP pointer)
�H  � re-allocate indirected data, each field in a separate heap block
�  � WinBlk%!32 � (1<<31) �
�     tb%=WinBlk%!32 � (1<<26)
�  �
�    tb%=WinBlk%!32 � (1<<0)
�  �
�
  � tb% �
�F    �iconrealloc(WinBlk%+60,WinBlk%+76) : � realloc title bar icon
�?    �icon_setspritearea(WinBlk%!60,WinBlk%+76,UserSprites%)
�  �
�.    � no title bar: fill data with default
�    WinBlk%!60=&3D
�"    $(WinBlk%+76)="<Untitled>"
�  �
�  � (WinBlk%!88)>0 �
�"    � icon%=0 � (WinBlk%!88)-1
�!      ib%=WinBlk%+92+icon%*32
�%      �iconrealloc(ib%+16,ib%+20)
�>      � set sprite pointers (indirected sprite-only icons)
9      �icon_setspritearea(ib%!16,ib%+20,UserSprites%)
    � icon%
  �
�
�

8� --- sort templates on names (case-insensitive) ---
� �templ_sort
-� i%,j%,index%,candidate%,candname$,name$
	,i%=0 : � first <i%> templates are sorted

È• i%<(NrTemplates%-1)
&  � find template with lowest name
  candidate%=i%

-  candname$=�upcase($(TemplNames%+i%*28))
"  � j%=i%+1 � (NrTemplates%-1)
+    name$=�upcase($(TemplNames%+j%*28))
    � name$<candname$ �
      candidate%=j%
      candname$=name$
	    �

  � j%
  � swap template data
  � j%=0 � (28-4) � 4
@    È” TemplNames%!(i%*28+j%),TemplNames%!(candidate%*28+j%)

  � j%
2  È” TemplHandle%(i%),TemplHandle%(candidate%)
*  È” PaneFlag%?i%,PaneFlag%?candidate%
  i%+=1
�
�

6� *** procs for reading and sorting selections ***
 
!7� --- get list of selected icons and count them ---
"� �sel_get(window%)
#=È™ "Wimp_WhichIcon",window%,SelBlk%,(1<<21)+(1<<23),1<<21
$NrSelected%=0
%"È• SelBlk%!(4*NrSelected%)<>-1
&  NrSelected%+=1
'�
(�
)
*� --- select all icons ---
+� �sel_all(window%)
,� i%
-5� get all icons that are not selected nor deleted
.9È™ "Wimp_WhichIcon",window%,SelBlk%,(1<<21)+(1<<23),0
/i%=0
0È• SelBlk%!i%<>-1
1'  �selecticon(window%,SelBlk%!i%,1)
2  i%+=4
3�
4�
5
6>� --- unselect all icons (except, maybe, for one icon) ---
7!� �sel_clear(window%,except%)
8� i%
93È™ "Wimp_WhichIcon",window%,SelBlk%,1<<21,1<<21
:i%=0
;È• SelBlk%!i%<>-1
<?  � SelBlk%!i%<>except% � �selecticon(window%,SelBlk%!i%,0)
=  i%+=4
>�
?NrSelected%=0
@�
A
BH� --- sort icon selection (assumes selection present in SelBlk%) ---
C<� �sel_sort(window%,key1%,max1%,dir1%,key2%,max2%,dir2%)
DA� if key=0 then sort on horizontal coordinates, else vertical
E=� if max=0 then sort on minimum coordinates, else maximum
F<� if dir=0 then sort in descending order, else ascending
G� i%,j%,index1%,index2%,ib%
H@� value1%,value2%,candidate%,bestsofar1%,bestsofar2%,better%
I5i%=0 : � first <i%> icons in selection are sorted
J� key1%=0 �
K  index1%=0
L�
M  index1%=4
N�
O� max1% � index1%+=8
P� key2%=0 �
Q  index2%=0
R�
S  index2%=4
T�
U� max2% � index2%+=8
VWinBlk%!0=window%
W$È™ "Wimp_GetWindowInfo",,WinBlk%
XÈ• i%<(NrSelected%-1)
Y<  � find icon with smallest/highest value for coordinate
Z  candidate%=i%
[(  ib%=WinBlk%+92+32*(SelBlk%!(4*i%))
\  bestsofar1%=ib%!(index1%)
]  bestsofar2%=ib%!(index2%)
^!  � j%=i%+1 � (NrSelected%-1)
_*    ib%=WinBlk%+92+32*(SelBlk%!(4*j%))
`    value1%=ib%!(index1%)
a    value2%=ib%!(index2%)
b    � bestsofar1%=value1% �
c#      � look at second sort key
d      � dir2% �
e)        better%=(value2%<bestsofar2%)
f      �
g)        better%=(value2%>bestsofar2%)
h      �
i	    �
j      � dir1% �
kF        better%=(value1%<bestsofar1%) : � looking for lowest value
l      �
mG        better%=(value1%>bestsofar1%) : � looking for highest value
n      �
o	    �
p    � better% �
q      candidate%=j%
r      bestsofar1%=value1%
s      bestsofar2%=value2%
t	    �
u
  � j%
v(  � swap icons in selection sequence
w.  È” SelBlk%!(4*candidate%),SelBlk%!(4*i%)
x  i%+=1
y�
z�
{
|@� --- calculate coords of box surrounding selected icons ---
}7� �sel_box(window%,� xmin%,� ymin%,� xmax%,� ymax%)
~)� assume selection present in SelBlk%
� i%
�ScrapBlk%!0=window%
�ScrapBlk%!4=SelBlk%!0
�%ș "Wimp_GetIconState",,ScrapBlk%
�xmin%=ScrapBlk%!8
�ymin%=ScrapBlk%!12
�xmax%=ScrapBlk%!16
�ymax%=ScrapBlk%!20
�� i%=0 � NrSelected%-1
�   ScrapBlk%!4=SelBlk%!(4*i%)
�'  ș "Wimp_GetIconState",,ScrapBlk%
�-  � xmin%>ScrapBlk%!8 � xmin%=ScrapBlk%!8
�/  � ymin%>ScrapBlk%!12 � ymin%=ScrapBlk%!12
�/  � xmax%<ScrapBlk%!16 � xmax%=ScrapBlk%!16
�/  � ymax%<ScrapBlk%!20 � ymax%=ScrapBlk%!20
�� i%
��
�
�� *** setup procs ***
�
�� �setup_default
�IcInfo_Active%=�
�DuplNames%=�
�Hatch%=�
�SupportInterface%=�
�Grid_SizeLock%=�
�Grid_SizeX%=2
�Grid_SizeY%=4
�Grid_PosLock%=�
�Grid_PosX%=2
�Grid_PosY%=4
�Save_Unselected%=�
�DeleteOutside%=�
�TrapDclick%=�
�SupportAEH%=�
��
�
�� �setup_load
�� f%
�� �
�f%=� (ApplDir$+".Options")
�� f%=0 �
�  �dialogue(5,"","")
�  �setup_default
��
�2  � � � � #f% : �error(0) : �setup_default : �
�=  �#f%,IcInfo_Active%,DuplNames%,Hatch%,SupportInterface%
�1  �#f%,Grid_SizeLock%,Grid_SizeX%,Grid_SizeY%
�.  �#f%,Grid_PosLock%,Grid_PosX%,Grid_PosY%
�B  �#f%,Save_Unselected%,DeleteOutside%,TrapDclick%,SupportAEH%
�  � #f%
��
��
�
�� �setup_save
�� f%
�� �
�f%=� (ApplDir$+".Options")
�)� � � � f%<>0 � � #f% : �error(0) : �
�;�#f%,IcInfo_Active%,DuplNames%,Hatch%,SupportInterface%
�/�#f%,Grid_SizeLock%,Grid_SizeX%,Grid_SizeY%
�,�#f%,Grid_PosLock%,Grid_PosX%,Grid_PosY%
�@�#f%,Save_Unselected%,DeleteOutside%,TrapDclick%,SupportAEH%
�	� #f%
��
�
�)� *** procs for statistics window ***
�
�� �stat_fillwin
�I� type%,wasopen%,ysize%,maxwdef%,totindsize%,i%,wdef%,indsize%,j%,ib%
�ș "Hourglass_On"
��sel_get(StatW%)
�� SelBlk%!0=2 �
�(  type%=2 : � numbers in hexadecimal
��
�  type%=1 : � decimal
��
�WinBlk%!0=StatW%
�$ș "Wimp_GetWindowInfo",,WinBlk%
�#wasopen%=(WinBlk%!32) � (1<<16)
�#ș "Wimp_DeleteWindow",,WinBlk%
�WinBlk%!88=15
�-ysize%=204+NrTemplates%*40 : � set extent
�*WinBlk%!8=WinBlk%!16-WinBlk%!24-ysize%
�WinBlk%!48=-ysize%
�.ș "Wimp_CreateWindow",,WinBlk%+4 � StatW%
�WinBlk%!0=StatW%
�7�linkicontext(25,WinBlk%,5) : � number of templates
�=�linkicontext(22,WinBlk%,7) : � largest window definition
�A�linkicontext(23,WinBlk%,9) : � total size of indirected data
�maxwdef%=0
�totindsize%=0
�� i%=0 � NrTemplates%-1
�   WinBlk%!0=TemplHandle%(i%)
�&  ș "Wimp_GetWindowInfo",,WinBlk%
�  wdef%=88+32*WinBlk%!88
�9  indsize%=�stat_calcindirsize(WinBlk%!60,WinBlk%+76)
�  � WinBlk%!88>0 �
�    � j%=0 � (WinBlk%!88-1)
�      ib%=WinBlk%+92+32*j%
�6      indsize%+=�stat_calcindirsize(ib%!16,ib%+20)
�    � j%
�  �
�2  �stat_createicon(10,$(TemplNames%+i%*28),i%)
�=  �stat_createicon(11,�stat_num2str(WinBlk%!88,type%),i%)
�8  �stat_createicon(12,�stat_num2str(wdef%,type%),i%)
�;  �stat_createicon(13,�stat_num2str(indsize%,type%),i%)
�A  �stat_createicon(14,�stat_num2str(wdef%+indsize%,type%),i%)
�  wdef%+=indsize%
�'  � maxwdef%<wdef% � maxwdef%=wdef%
�  totindsize%+=indsize%
�� i%
�$�seticontext(25,�(NrTemplates%))
�2�seticontext(22,�stat_num2str(maxwdef%,type%))
�5�seticontext(23,�stat_num2str(totindsize%,type%))
�� wasopen% �
�  �openwindow(StatW%,0)
��
�  �openwindow(StatW%,1)
��
�ș "Hourglass_Off"
��
�
�B� --- calculate size of indirected data needed for an icon ---
�'� �stat_calcindirsize(flags%,data%)
�� size%
�� (flags% � &800100)=&100 �
�  size%=data%!8
�&  � (flags% � 1) � (data%!4<>-1) �
#    size%=size%+�($(data%!4))+1
  �
�

  size%=0
�

=size%

0� --- create an icon in the stats window ---
*� �stat_createicon(copyfrom%,s$,line%)
	ScrapBlk%!0=StatW%

ScrapBlk%!4=copyfrom%
%È™ "Wimp_GetIconState",,ScrapBlk%
K� create icon that is identical, except for string, colours and Y coord

,ScrapBlk%!12=ScrapBlk%!12-4-40*(line%+1)
 ScrapBlk%!20=ScrapBlk%!12+40
5ScrapBlk%!24=(ScrapBlk%!24 � &FFFFFF) � &18000000
HScrapBlk%!24=ScrapBlk%!24 � (� &100) : � icon must be not-indirected
$(ScrapBlk%+28)=s$
ScrapBlk%!4=StatW%
%È™ "Wimp_CreateIcon",,ScrapBlk%+4
�

;� --- convert a number to a string (hex or decimal) ---
� �stat_num2str(num%,type%)
� s$
� type%=1 �
  s$=�(num%)
�
  s$="&"+�~(num%)
�
=s$

 .� *** procs for handling outline fonts ***
!
"� �font_lose(font%)
#FontUsage%(font%)-=1
$� FontUsage%(font%)=0 �
%  È™ "Font_LoseFont",font%
&�
'�
(
)� �font_loseall
*� i%,j%
+� i%=0 � 255
,  � FontUsage%(i%)<>0 �
-    È™ "Font_LoseFont",i%
.  �
/� i%
0�
1
27� --- get font name and size from a font handle ---
35� �font_getinfo(fhandle%,� name$,� xsize,� ysize)
4� xsize16%,ysize16%
5?ș "Font_ReadDefn",fhandle%,FontData% � ,,xsize16%,ysize16%
6name$=$(FontData%)
7xsize=xsize16%/16
8ysize=ysize16%/16
9�
:
;8� *** procs for creating icons in user templates ***
<
=-� --- build the 'Create icon' submenu ---
>� �standardiconmenu
?� i%
@'� get list of "name" icons (ESG=31)
A7È™ "Wimp_WhichIcon",StdIconW%,SelBlk%,31<<16,31<<16
BNrStdIcons%=0
C"È• SelBlk%!(4*NrStdIcons%)<>-1
D  NrStdIcons%+=1
E�
F� NrStdIcons%=0 �
G  StdIconMenu%=-1
H�
I5  ș "MenuUtil_New",,"Create icon" � StdIconMenu%
J  ScrapBlk%!0=StdIconW%
K  � i%=0 � NrStdIcons%-1
L"    ScrapBlk%!4=SelBlk%!(4*i%)
M)    È™ "Wimp_GetIconState",,ScrapBlk%
N'    È™ "MenuUtil_Add",,ScrapBlk%!28
O
  � i%
P�
Q�
R
S4� �createstandardicon(name$,window%,xpos%,ypos%)
T!� i%,j%,last%,dx%,dy%,handle%
U1� scan "name" icons to check which was chosen
V7È™ "Wimp_WhichIcon",StdIconW%,SelBlk%,31<<16,31<<16
WScrapBlk%!0=StdIconW%
Xi%=0
Y�
Z  j%=SelBlk%!(4*i%)
[  ScrapBlk%!4=j%
\'  È™ "Wimp_GetIconState",,ScrapBlk%
]  i%+=1
^3� ($(ScrapBlk%!28)=name$) � (SelBlk%!(4*i%)=-1)
_+� copy all icons until next "name" icon
`� SelBlk%!(4*i%)=-1 �
a  last%=LastStdIcon%
b�
c  last%=SelBlk%!(4*i%)-1
d�
e	j%+=1
fScrapBlk%!0=StdIconW%
gScrapBlk%!4=j%
h%È™ "Wimp_GetIconState",,ScrapBlk%
idx%=xpos%-ScrapBlk%!8 
jdy%=ypos%-ScrapBlk%!12
kȕ j%<=last%
l  ScrapBlk%!0=StdIconW%
m  ScrapBlk%!4=j%
n'  È™ "Wimp_GetIconState",,ScrapBlk%
o  ScrapBlk%!4=window%
p!  ScrapBlk%!8=ScrapBlk%!8+dx%
q#  ScrapBlk%!12=ScrapBlk%!12+dy%
r#  ScrapBlk%!16=ScrapBlk%!16+dx%
s#  ScrapBlk%!20=ScrapBlk%!20+dy%
t-  �iconrealloc(ScrapBlk%+24,ScrapBlk%+28)
u&  handle%=�createicon(ScrapBlk%+4)
v  j%+=1
w�
x�
y
zI� *** procs for calculating & setting the minimum size of an icon ***
{
|-� �minimizeiconsel(window%,default%,dim%)
}� i%,xsize%,ysize%,handle%
~�sel_get(window%)
'� (NrSelected%=0) � (default%>=0) �
�  SelBlk%!0=default%
�  NrSelected%=1
��
�� NrSelected%>0 �
�  � i%=0 � NrSelected%-1
�:    �miniconsize(window%,SelBlk%!(4*i%),xsize%,ysize%)
�    IconBlk%!0=window%
�!    IconBlk%!4=SelBlk%!(4*i%)
�(    ș "Wimp_GetIconState",,IconBlk%
�1    � dim%<>2 � IconBlk%!16=IconBlk%!8+xsize%
�2    � dim%<>1 � IconBlk%!20=IconBlk%!12+ysize%
�>    handle%=�redefineicon(window%,SelBlk%!(4*i%),IconBlk%)
�
  � i%
��
��
�
�1� �miniconsize(window%,icon%,� minx%,� miny%)
�/� sparea%,flags%,data%,text%,sprite%,indir%
�3� sminx%,sminy%,tminx%,tminy%,p%,val$,sname$,t$
�� xmin%,ymin%,xmax%,ymax%
�� l$,lspace%,lines%,b$
�WinBlk%!0=window%
�$ș "Wimp_GetWindowInfo",,WinBlk%
�sparea%=WinBlk%!68
�ScrapBlk%!0=window%
�ScrapBlk%!4=icon%
�%ș "Wimp_GetIconState",,ScrapBlk%
�flags%=ScrapBlk%!24
�data%=ScrapBlk%+28
�text%=(flags% � 1)>0
�sprite%=(flags% � 2)>0
�indir%=(flags% � &100)>0
�&� indir% � text% � (data%!4<>-1) �
�  val$=$(data%!4)
��
�� sprite% �
�  � indir% �
�    � text% �
�4      � search validation string for sprite name
�-      sname$=�validationcommand(val$,"S")
�      p%=�sname$,",")
�      � p%>0 �
�"        sname$=�sname$,2,p%-2)
�      �
�        sname$=�sname$,2)
�      �
�	    �
�      sname$=$(data%!0)
�      sparea%=data%!4
�	    �
�  �
�    sname$=$(data%)
�  �
�?  � �(sname$)>0 � �spritesize(sname$,sparea%,sminx%,sminy%)
��
�
� text% �
�  � indir% �
�    t$=$(data%!0)
�  �
�    t$=$(data%)
�  �
�  � flags% � (1<<6) �
�5    � calc size of string printed as outline font
�&    ș "Font_SetFont",(flags%>>24)
�;    ș "Font_StringBBox",,t$ � ,xmin%,ymin%,xmax%,ymax%
�G    ș "Font_ConverttoOS",,xmax%-xmin%,ymax%-ymin% � ,tminx%,tminy%
�    tminx%+=2*PixToOS_X%
�    tminy%+=2*PixToOS_Y%
�  �
�)    tminx%=16*�(t$)+4 : � system font
�    tminy%=32
�  �
�%  l$=�validationcommand(val$,"L")
�  � �(l$)>0 �
�5    � multi-line text - calc Y size, X size fixed
�    lspace%=�(�l$,2))
�     � lspace%=0 � lspace%=40
�6    lines%=(tminx%-1) � (ScrapBlk%!16-ScrapBlk%!8)
�'    tminx%=ScrapBlk%!16-ScrapBlk%!8
�!    tminy%=lspace%*(lines%+1)
�  �
�  � �(t$)=0 �
�N    tminx%=ScrapBlk%!16-ScrapBlk%!8 : � empty string - don't change X size
�  �
��
�� flags% � (1<<4) �
�  minx%=sminx%+tminx%
�"  � text% � sprite% � minx%+=6
�3  � sminy%>tminy% � miny%=sminy% � miny%=tminy%
��
�3  � sminx%>tminx% � minx%=sminx% � minx%=tminx%
�  miny%=sminy%+tminy%
��
�� flags% � (1<<2) �
�!  � add space taken by border
�%  b$=�validationcommand(val$,"R")
�  � �(b$)=0 �
�7    minx%+=16 : � no border command - "flat" border
�    miny%+=16
�  �
�&    � found command for 3-D border
�    Ȏ �(�b$,2)) �
�      � 3,4
�        minx%+=24
�        miny%+=24
�      � 6,7
�        minx%+=32
�        miny%+=32
�      
�        minx%+=16
�        miny%+=16
�	    �
�  �
��
�� minx%<16 � minx%=16
�� miny%<16 � miny%=16
��
�
�1� --- return size of a sprite in Os units ---
�0� �spritesize(name$,area%,� xsize%,� ysize%)
�� spmode%,xpixels%,ypixels%
�� area%=1 �
�H  ș "XWimp_SpriteOp",40,,name$ � ,,,xpixels%,ypixels%,,spmode%;flg%
��
�K  ș "OS_SpriteOp",296,area%,name$ � ,,,xpixels%,ypixels%,,spmode%;flg%
��
�� (flg% � 1) �
�  xsize%=0
  ysize%=0
�
*  xsize%=xpixels%<<�modevar(spmode%,4)
*  ysize%=ypixels%<<�modevar(spmode%,5)
�
�

J� --- search validation string for a certain command and return it ---
!� �validationcommand(v$,cmd$)
	� upc$,loc$,p%

upc$=�(�(cmd$) � &DF)
loc$=�(�(cmd$) � &20)
2ȕ (�v$,1)<>upc$) � (�v$,1)<>loc$) � (�(v$)>0)

  p%=�v$,";")
5  � (p%>1) � (�v$,p%-1,1)="\") � p%=�v$,";",p%+1)
  � p%=0 �

    v$=""
  �
    v$=�v$,p%+1)
  �
�
p%=�v$,";")
� p%>0 � v$=�v$,p%-1)
=v$

>� *** procs for handling messages in the Messages file ***

� �msg_init
� fname$,flags%,size%,buf%
fname$=ApplDir$+".Messages"
6ș "MessageTrans_FileInfo",,fname$ � flags%,,size%
� flags% � 1 �
   buf%=0
!�
"  buf%=�heap_get(size%)
#�
$$MsgDesc%=�heap_get(17+�(fname$))
%$(MsgDesc%+16)=fname$
&8È™ "MessageTrans_OpenFile",MsgDesc%,MsgDesc%+16,buf%
'�
(
)� �msg_exit
*(È™ "MessageTrans_CloseFile",MsgDesc%
+MsgDesc%=0
,�
-
.� �msg_lookup0(token$)
/
� result%
0:ș "MessageTrans_Lookup",MsgDesc%,token$,0 � ,,result%
1=�str(result%)
2
3!� �msg_lookup1(token$,param$)
4
� result%
5Nș "MessageTrans_Lookup",MsgDesc%,token$,ScrapBlk%,&100,param$ � ,,result%
6=�str(result%)
7
8*� �msg_lookup2(token$,param1$,param2$)
9
� result%
:Wș "MessageTrans_Lookup",MsgDesc%,token$,ScrapBlk%,&100,param1$,param2$ � ,,result%
;=�str(result%)
<
=6� *** procs for loading and using user-sprites ***
>
?B� --- load a sprite file and let all templates use the sprites
@� �loadusersprites(fname$)
A	� no%
B3� UserSprites%<>1 � �heap_release(UserSprites%)
C� fname$="" �
D  UserSprites%=1
E�
F*  UserSprites%=�loadspritefile(fname$)
G�
H� NrTemplates%>0 �
I  � no%=0 � NrTemplates%-1
J=    �window_setspritearea(TemplHandle%(no%),UserSprites%)
K  � no%
L�
M� UserSprites%=1 �
N  SpriteFName$=""
O�
P  SpriteFName$=fname$
Q�
R�
S
T� �loadspritefile(fname$)
U� ftype%,fsize%,area%
V-ș "OS_File",17,fname$ � ftype%,,,,fsize%
W� ftype%<>1 �
X,  �complain(�msg_lookup1("NOSF",fname$))
Y
  area%=1
Z�
[  fsize%+=16
\  area%=�heap_get(fsize%)
]  � area%>0 �
^    area%!0=fsize%
_    area%!8=16
`$    È™ "OS_SpriteOp",256+9,area%
a,    È™ "OS_SpriteOp",256+10,area%,fname$
b  �
cH    area%=1 : � couldn't allocate space in heap - reset to Wimp area
d  �
e�
f
=area%
g
h*� �window_setspritearea(handle%,area%)
i� icon%,ib%
jWinBlk%!0=handle%
k$È™ "Wimp_GetWindowInfo",,WinBlk%
l$WinBlk%!68=area% : � CBP pointer
m4�icon_setspritearea(WinBlk%!60,WinBlk%+76,area%)
n� (WinBlk%!88)>0 �
o   � icon%=0 � (WinBlk%!88)-1
p    ib%=WinBlk%+92+icon%*32
q0    �icon_setspritearea(ib%!16,ib%+20,area%)
r
  � icon%
s�
t&handle%=�redefinewindow(WinBlk%,0)
u�
v
w-� �icon_setspritearea(flags%,data%,area%)
x/� ((flags% � 3)=2) � ((flags% � &100)<>0) �
y  data%!4=area%
z�
{�
|
�
00000000  0d 00 01 22 f4 20 3e 3c  54 65 6d 70 6c 45 64 24  |...". ><TemplEd$|
00000010  44 69 72 3e 2e 45 78 74  72 61 73 2e 53 6f 75 72  |Dir>.Extras.Sour|
00000020  63 65 0d 00 02 3e f4 20  54 68 69 73 20 61 70 70  |ce...>. This app|
00000030  6c 69 63 61 74 69 6f 6e  20 69 73 20 46 72 65 65  |lication is Free|
00000040  57 61 72 65 2e 20 28 63  29 20 31 39 39 32 2c 31  |Ware. (c) 1992,1|
00000050  39 39 33 20 44 69 63 6b  20 41 6c 73 74 65 69 6e  |993 Dick Alstein|
00000060  0d 00 03 04 0d 00 04 13  41 70 70 6c 24 3d 22 54  |........Appl$="T|
00000070  65 6d 70 6c 45 64 22 0d  00 05 1f 56 65 72 73 69  |emplEd"....Versi|
00000080  6f 6e 24 3d 22 31 2e 32  34 20 28 31 32 2d 53 65  |on$="1.24 (12-Se|
00000090  70 2d 39 33 29 22 0d 00  06 04 0d 00 07 40 f4 20  |p-93)".......@. |
000000a0  54 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 6d 61  |The following ma|
000000b0  78 69 6d 75 6d 20 76 61  6c 75 65 73 20 63 61 6e  |ximum values can|
000000c0  20 62 65 20 73 65 74 20  74 6f 20 73 75 69 74 20  | be set to suit |
000000d0  79 6f 75 72 20 6e 65 65  64 73 0d 00 08 2a f4 20  |your needs...*. |
000000e0  28 59 6f 75 20 6d 61 79  20 6e 65 65 64 20 74 6f  |(You may need to|
000000f0  20 61 64 61 70 74 20 74  68 65 20 57 69 6d 70 53  | adapt the WimpS|
00000100  6c 6f 74 29 0d 00 09 37  4d 61 78 54 65 6d 70 6c  |lot)...7MaxTempl|
00000110  61 74 65 73 25 3d 31 30  30 20 20 3a 20 f4 20 6d  |ates%=100  : . m|
00000120  61 78 20 6e 75 6d 62 65  72 20 6f 66 20 75 73 65  |ax number of use|
00000130  72 20 74 65 6d 70 6c 61  74 65 73 0d 00 0a 41 4d  |r templates...AM|
00000140  61 78 49 63 6f 6e 73 25  3d 32 30 30 20 20 20 20  |axIcons%=200    |
00000150  20 20 3a 20 f4 20 6d 61  78 20 6e 75 6d 62 65 72  |  : . max number|
00000160  20 6f 66 20 69 63 6f 6e  73 20 69 6e 20 61 20 75  | of icons in a u|
00000170  73 65 72 20 74 65 6d 70  6c 61 74 65 0d 00 0b 47  |ser template...G|
00000180  4d 61 78 49 6e 64 69 72  53 69 7a 65 25 3d 38 30  |MaxIndirSize%=80|
00000190  30 30 20 3a 20 f4 20 73  70 61 63 65 20 66 6f 72  |00 : . space for|
000001a0  20 69 6e 64 69 72 65 63  74 65 64 20 64 61 74 61  | indirected data|
000001b0  20 28 6f 6e 6c 79 20 66  6f 72 20 6c 6f 61 64 69  | (only for loadi|
000001c0  6e 67 29 0d 00 0c 04 0d  00 0d 2e f4 20 2a 2a 2a  |ng)......... ***|
000001d0  20 6d 61 69 6e 20 70 72  6f 67 72 61 6d 20 61 6e  | main program an|
000001e0  64 20 74 6f 70 2d 6c 65  76 65 6c 20 70 72 6f 63  |d top-level proc|
000001f0  73 20 2a 2a 2a 0d 00 0e  0b 51 75 69 74 25 3d a3  |s ***....Quit%=.|
00000200  0d 00 0f 09 f2 69 6e 69  74 0d 00 10 11 ee 20 85  |.....init..... .|
00000210  20 f2 65 72 72 6f 72 28  30 29 0d 00 11 32 50 6f  | .error(0)...2Po|
00000220  6c 6c 4d 61 73 6b 25 3d  28 31 3c 3c 30 29 2b 28  |llMask%=(1<<0)+(|
00000230  31 3c 3c 34 29 2b 28 31  3c 3c 35 29 2b 28 31 3c  |1<<4)+(1<<5)+(1<|
00000240  3c 31 31 29 2b 28 31 3c  3c 31 32 29 0d 00 12 05  |<11)+(1<<12)....|
00000250  f5 0d 00 13 2d 20 20 c8  99 20 22 57 69 6d 70 5f  |....-  .. "Wimp_|
00000260  50 6f 6c 6c 22 2c 50 6f  6c 6c 4d 61 73 6b 25 2c  |Poll",PollMask%,|
00000270  42 6c 6b 25 20 b8 20 72  65 61 73 6f 6e 25 0d 00  |Blk% . reason%..|
00000280  14 12 20 20 c8 8e 20 72  65 61 73 6f 6e 25 20 ca  |..  .. reason% .|
00000290  0d 00 15 0b 20 20 20 20  c9 20 30 0d 00 16 2c 20  |....    . 0..., |
000002a0  20 20 20 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |     .. "Wimp_Ge|
000002b0  74 50 6f 69 6e 74 65 72  49 6e 66 6f 22 2c 2c 50  |tPointerInfo",,P|
000002c0  74 72 49 6e 66 6f 25 0d  00 17 31 20 20 20 20 20  |trInfo%...1     |
000002d0  20 e7 20 28 50 74 72 49  6e 66 6f 25 21 38 3e 30  | . (PtrInfo%!8>0|
000002e0  29 20 80 20 4d 62 75 74  74 6f 6e 73 5f 52 65 6c  |) . Mbuttons_Rel|
000002f0  65 61 73 65 64 25 20 8c  0d 00 18 2a 20 20 20 20  |eased% ....*    |
00000300  20 20 20 20 f4 20 73 69  67 6e 61 6c 20 70 72 65  |    . signal pre|
00000310  73 73 20 6f 66 20 6d 6f  75 73 65 20 62 75 74 74  |ss of mouse butt|
00000320  6f 6e 0d 00 19 20 20 20  20 20 20 20 20 20 4d 62  |on...         Mb|
00000330  75 74 74 6f 6e 73 5f 52  65 6c 65 61 73 65 64 25  |uttons_Released%|
00000340  3d a3 0d 00 1a 4e 20 20  20 20 20 20 20 20 f2 63  |=....N        .c|
00000350  6c 69 63 6b 28 50 74 72  49 6e 66 6f 25 21 30 2c  |lick(PtrInfo%!0,|
00000360  50 74 72 49 6e 66 6f 25  21 34 2c 50 74 72 49 6e  |PtrInfo%!4,PtrIn|
00000370  66 6f 25 21 38 2c 50 74  72 49 6e 66 6f 25 21 31  |fo%!8,PtrInfo%!1|
00000380  32 2c 50 74 72 49 6e 66  6f 25 21 31 36 2c 30 29  |2,PtrInfo%!16,0)|
00000390  0d 00 1b 0b 20 20 20 20  20 20 cc 0d 00 1c 1c 20  |....      ..... |
000003a0  20 20 20 20 20 20 20 e7  20 50 74 72 49 6e 66 6f  |       . PtrInfo|
000003b0  25 21 38 3d 30 20 8c 0d  00 1d 22 20 20 20 20 20  |%!8=0 ...."     |
000003c0  20 20 20 20 20 4d 62 75  74 74 6f 6e 73 5f 52 65  |     Mbuttons_Re|
000003d0  6c 65 61 73 65 64 25 3d  b9 0d 00 1e 1b 20 20 20  |leased%=.....   |
000003e0  20 20 20 20 20 20 20 44  72 61 67 5f 54 79 70 65  |       Drag_Type|
000003f0  25 3d 2d 31 0d 00 1f 22  20 20 20 20 20 20 20 20  |%=-1..."        |
00000400  20 20 54 69 6d 65 64 44  72 61 67 5f 45 6e 61 62  |  TimedDrag_Enab|
00000410  6c 65 64 25 3d a3 0d 00  20 0d 20 20 20 20 20 20  |led%=... .      |
00000420  20 20 cc 0d 00 21 47 20  20 20 20 20 20 20 20 20  |  ...!G         |
00000430  20 f4 20 62 75 74 74 6f  6e 20 73 74 69 6c 6c 20  | . button still |
00000440  70 72 65 73 73 65 64 20  2d 20 74 65 73 74 20 69  |pressed - test i|
00000450  66 20 4f 4b 20 74 6f 20  73 74 61 72 74 20 22 74  |f OK to start "t|
00000460  69 6d 65 64 20 64 72 61  67 22 0d 00 22 48 20 20  |imed drag".."H  |
00000470  20 20 20 20 20 20 20 20  e7 20 94 28 50 74 72 49  |        . .(PtrI|
00000480  6e 66 6f 25 21 30 2d 54  68 69 73 43 6c 69 63 6b  |nfo%!0-ThisClick|
00000490  58 25 29 2b 94 28 50 74  72 49 6e 66 6f 25 21 34  |X%)+.(PtrInfo%!4|
000004a0  2d 54 68 69 73 43 6c 69  63 6b 59 25 29 3e 31 36  |-ThisClickY%)>16|
000004b0  20 8c 0d 00 23 40 20 20  20 20 20 20 20 20 20 20  | ...#@          |
000004c0  20 20 54 69 6d 65 64 44  72 61 67 5f 45 6e 61 62  |  TimedDrag_Enab|
000004d0  6c 65 64 25 3d a3 20 3a  20 f4 20 6d 6f 76 65 64  |led%=. : . moved|
000004e0  20 6d 6f 75 73 65 20 73  69 6e 63 65 20 63 6c 69  | mouse since cli|
000004f0  63 6b 0d 00 24 0f 20 20  20 20 20 20 20 20 20 20  |ck..$.          |
00000500  cd 0d 00 25 24 20 20 20  20 20 20 20 20 20 20 e7  |...%$          .|
00000510  20 54 69 6d 65 64 44 72  61 67 5f 45 6e 61 62 6c  | TimedDrag_Enabl|
00000520  65 64 25 20 8c 0d 00 26  49 20 20 20 20 20 20 20  |ed% ...&I       |
00000530  20 20 20 20 20 e7 20 28  28 91 2d 54 68 69 73 43  |     . ((.-ThisC|
00000540  6c 69 63 6b 54 69 6d 65  25 29 3e 44 72 61 67 49  |lickTime%)>DragI|
00000550  6e 74 65 72 76 61 6c 25  29 20 80 20 28 50 74 72  |nterval%) . (Ptr|
00000560  49 6e 66 6f 25 21 31 36  3e 3d 30 29 20 8c 0d 00  |Info%!16>=0) ...|
00000570  27 26 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |'&              |
00000580  c8 99 20 22 57 69 6d 70  5f 44 72 61 67 42 6f 78  |.. "Wimp_DragBox|
00000590  22 2c 2d 31 0d 00 28 44  20 20 20 20 20 20 20 20  |",-1..(D        |
000005a0  20 20 20 20 20 20 f2 73  74 61 72 74 69 63 6f 6e  |      .starticon|
000005b0  64 72 61 67 28 50 74 72  49 6e 66 6f 25 21 38 2c  |drag(PtrInfo%!8,|
000005c0  50 74 72 49 6e 66 6f 25  21 31 32 2c 50 74 72 49  |PtrInfo%!12,PtrI|
000005d0  6e 66 6f 25 21 31 36 29  0d 00 29 26 20 20 20 20  |nfo%!16)..)&    |
000005e0  20 20 20 20 20 20 20 20  20 20 54 69 6d 65 64 44  |          TimedD|
000005f0  72 61 67 5f 45 6e 61 62  6c 65 64 25 3d a3 0d 00  |rag_Enabled%=...|
00000600  2a 11 20 20 20 20 20 20  20 20 20 20 20 20 cd 0d  |*.            ..|
00000610  00 2b 0f 20 20 20 20 20  20 20 20 20 20 cd 0d 00  |.+.          ...|
00000620  2c 0d 20 20 20 20 20 20  20 20 cd 0d 00 2d 0b 20  |,.        ...-. |
00000630  20 20 20 20 20 cd 0d 00  2e 1d 20 20 20 20 c9 20  |     .....    . |
00000640  31 20 3a 20 f2 72 65 64  72 61 77 28 42 6c 6b 25  |1 : .redraw(Blk%|
00000650  21 30 29 0d 00 2f 0c 20  20 20 20 c9 20 32 20 0d  |!0)../.    . 2 .|
00000660  00 30 1d 20 20 20 20 20  20 e7 20 28 42 6c 6b 25  |.0.      . (Blk%|
00000670  21 30 3d 54 65 6d 70 6c  57 25 29 8c 0d 00 31 2f  |!0=TemplW%)...1/|
00000680  20 20 20 20 20 20 20 20  63 25 3d 28 42 6c 6b 25  |        c%=(Blk%|
00000690  21 31 32 2d 42 6c 6b 25  21 34 29 20 81 20 54 65  |!12-Blk%!4) . Te|
000006a0  6d 70 6c 57 5f 49 63 6f  6e 58 25 0d 00 32 19 20  |mplW_IconX%..2. |
000006b0  20 20 20 20 20 20 20 e7  20 63 25 3c 31 20 8c 20  |       . c%<1 . |
000006c0  63 25 3d 31 0d 00 33 20  20 20 20 20 20 20 20 20  |c%=1..3         |
000006d0  e7 20 54 65 6d 70 6c 57  5f 43 6f 6c 73 25 3c 3e  |. TemplW_Cols%<>|
000006e0  63 25 20 8c 0d 00 34 1d  20 20 20 20 20 20 20 20  |c% ...4.        |
000006f0  20 20 54 65 6d 70 6c 57  5f 43 6f 6c 73 25 3d 63  |  TemplW_Cols%=c|
00000700  25 0d 00 35 21 20 20 20  20 20 20 20 20 20 20 f2  |%..5!          .|
00000710  72 65 64 65 66 69 6e 65  62 72 6f 77 73 65 72 28  |redefinebrowser(|
00000720  30 29 0d 00 36 1c 20 20  20 20 20 20 20 20 20 20  |0)..6.          |
00000730  42 6c 6b 25 21 30 3d 54  65 6d 70 6c 57 25 0d 00  |Blk%!0=TemplW%..|
00000740  37 0d 20 20 20 20 20 20  20 20 cd 0d 00 38 0b 20  |7.        ...8. |
00000750  20 20 20 20 20 cd 0d 00  39 24 20 20 20 20 20 20  |     ...9$      |
00000760  c8 99 20 22 57 69 6d 70  5f 4f 70 65 6e 57 69 6e  |.. "Wimp_OpenWin|
00000770  64 6f 77 22 2c 2c 42 6c  6b 25 0d 00 3a 1e 20 20  |dow",,Blk%..:.  |
00000780  20 20 20 20 e7 20 42 6c  6b 25 21 30 3d 4f 70 74  |    . Blk%!0=Opt|
00000790  69 6f 6e 73 57 25 20 8c  0d 00 3b 20 20 20 20 20  |ionsW% ...;     |
000007a0  20 20 20 20 f2 6f 70 65  6e 70 61 6e 65 28 4f 70  |    .openpane(Op|
000007b0  74 50 61 6e 65 57 25 29  0d 00 3c 0b 20 20 20 20  |tPaneW%)..<.    |
000007c0  20 20 cd 0d 00 3d 0b 20  20 20 20 c9 20 33 0d 00  |  ...=.    . 3..|
000007d0  3e 24 20 20 20 20 20 20  6e 6f 25 3d a4 77 68 69  |>$      no%=.whi|
000007e0  63 68 74 65 6d 70 6c 61  74 65 28 42 6c 6b 25 21  |chtemplate(Blk%!|
000007f0  30 29 0d 00 3f 14 20 20  20 20 20 20 e7 20 6e 6f  |0)..?.      . no|
00000800  25 3e 3d 30 20 8c 0d 00  40 1f 20 20 20 20 20 20  |%>=0 ...@.      |
00000810  20 20 f2 63 6c 6f 73 65  74 65 6d 70 6c 61 74 65  |  .closetemplate|
00000820  28 6e 6f 25 29 0d 00 41  0b 20 20 20 20 20 20 cc  |(no%)..A.      .|
00000830  0d 00 42 18 20 20 20 20  20 20 20 20 e7 20 ac 20  |..B.        . . |
00000840  28 a6 20 2d 31 29 20 8c  0d 00 43 22 20 20 20 20  |(. -1) ...C"    |
00000850  20 20 20 20 20 20 f2 63  6c 6f 73 65 77 69 6e 64  |      .closewind|
00000860  6f 77 28 42 6c 6b 25 21  30 29 0d 00 44 0d 20 20  |ow(Blk%!0)..D.  |
00000870  20 20 20 20 20 20 cd 0d  00 45 2e 20 20 20 20 20  |      ...E.     |
00000880  20 20 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 50  |   .. "Wimp_GetP|
00000890  6f 69 6e 74 65 72 49 6e  66 6f 22 2c 2c 50 74 72  |ointerInfo",,Ptr|
000008a0  49 6e 66 6f 25 0d 00 46  44 20 20 20 20 20 20 20  |Info%..FD       |
000008b0  20 e7 20 28 42 6c 6b 25  21 30 3d 54 65 6d 70 6c  | . (Blk%!0=Templ|
000008c0  57 25 29 80 28 50 74 72  49 6e 66 6f 25 21 38 3d  |W%).(PtrInfo%!8=|
000008d0  31 29 80 28 a7 4d 61 69  6e 46 4e 61 6d 65 24 2c  |1).(.MainFName$,|
000008e0  22 2e 22 29 3e 30 29 20  8c 0d 00 47 47 20 20 20  |".")>0) ...GG   |
000008f0  20 20 20 20 20 20 20 c8  99 20 22 57 69 6d 70 5f  |       .. "Wimp_|
00000900  53 74 61 72 74 54 61 73  6b 22 2c 22 46 69 6c 65  |StartTask","File|
00000910  72 5f 4f 70 65 6e 44 69  72 20 22 2b a4 64 69 72  |r_OpenDir "+.dir|
00000920  6e 61 6d 65 28 4d 61 69  6e 46 4e 61 6d 65 24 29  |name(MainFName$)|
00000930  0d 00 48 0d 20 20 20 20  20 20 20 20 cd 0d 00 49  |..H.        ...I|
00000940  0b 20 20 20 20 20 20 cd  0d 00 4a 3c 20 20 20 20  |.      ...J<    |
00000950  c9 20 36 20 3a 20 f2 63  6c 69 63 6b 28 42 6c 6b  |. 6 : .click(Blk|
00000960  25 21 30 2c 42 6c 6b 25  21 34 2c 42 6c 6b 25 21  |%!0,Blk%!4,Blk%!|
00000970  38 2c 42 6c 6b 25 21 31  32 2c 42 6c 6b 25 21 31  |8,Blk%!12,Blk%!1|
00000980  36 2c b9 29 0d 00 4b 37  20 20 20 20 c9 20 37 20  |6,.)..K7    . 7 |
00000990  3a 20 f2 66 69 6e 69 73  68 64 72 61 67 28 42 6c  |: .finishdrag(Bl|
000009a0  6b 25 21 30 2c 42 6c 6b  25 21 34 2c 42 6c 6b 25  |k%!0,Blk%!4,Blk%|
000009b0  21 38 2c 42 6c 6b 25 21  31 32 29 0d 00 4c 29 20  |!8,Blk%!12)..L) |
000009c0  20 20 20 c9 20 38 20 3a  20 f2 6b 65 79 28 42 6c  |   . 8 : .key(Bl|
000009d0  6b 25 21 30 2c 42 6c 6b  25 21 34 2c 42 6c 6b 25  |k%!0,Blk%!4,Blk%|
000009e0  21 32 34 29 0d 00 4d 1f  20 20 20 20 c9 20 39 20  |!24)..M.    . 9 |
000009f0  3a 20 f2 6d 65 6e 75 73  65 6c 65 63 74 28 42 6c  |: .menuselect(Bl|
00000a00  6b 25 29 0d 00 4e 20 20  20 20 20 c9 20 31 37 2c  |k%)..N     . 17,|
00000a10  31 38 20 3a 20 f2 72 65  63 65 69 76 65 28 42 6c  |18 : .receive(Bl|
00000a20  6b 25 29 0d 00 4f 07 20  20 cb 0d 00 50 18 20 20  |k%)..O.  ...P.  |
00000a30  e7 20 49 63 49 6e 66 6f  5f 41 63 74 69 76 65 25  |. IcInfo_Active%|
00000a40  20 8c 0d 00 51 15 20 20  20 20 f2 69 63 69 6e 66  | ...Q.    .icinf|
00000a50  5f 75 70 64 61 74 65 0d  00 52 07 20 20 cd 0d 00  |_update..R.  ...|
00000a60  53 20 fd 20 51 75 69 74  25 20 80 20 28 91 3e 3d  |S . Quit% . (.>=|
00000a70  51 75 69 74 44 65 61 64  6c 69 6e 65 25 29 0d 00  |QuitDeadline%)..|
00000a80  54 11 f2 66 6f 6e 74 5f  6c 6f 73 65 61 6c 6c 0d  |T..font_loseall.|
00000a90  00 55 13 f2 72 65 67 69  73 74 65 72 61 65 68 28  |.U..registeraeh(|
00000aa0  a3 29 0d 00 56 0d f2 6d  73 67 5f 65 78 69 74 0d  |.)..V..msg_exit.|
00000ab0  00 57 17 c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |.W... "Wimp_Clos|
00000ac0  65 44 6f 77 6e 22 0d 00  58 05 e0 0d 00 59 04 0d  |eDown"..X....Y..|
00000ad0  00 5a 0b dd 20 f2 69 6e  69 74 0d 00 5b 1d ea 20  |.Z.. .init..[.. |
00000ae0  63 6d 64 73 74 72 25 2c  70 25 2c 66 6e 24 2c 69  |cmdstr%,p%,fn$,i|
00000af0  25 2c 6d 61 73 6b 25 0d  00 5c 12 de 20 45 72 72  |%,mask%..\.. Err|
00000b00  42 6c 6b 25 20 26 31 30  30 0d 00 5d 43 c8 99 20  |Blk% &100..]C.. |
00000b10  22 57 69 6d 70 5f 49 6e  69 74 69 61 6c 69 73 65  |"Wimp_Initialise|
00000b20  22 2c 32 30 30 2c 26 34  42 35 33 34 31 35 34 2c  |",200,&4B534154,|
00000b30  41 70 70 6c 24 20 b8 20  4f 53 76 65 72 73 69 6f  |Appl$ . OSversio|
00000b40  6e 25 2c 54 68 69 73 54  61 73 6b 25 0d 00 5e 11  |n%,ThisTask%..^.|
00000b50  ee 20 85 20 f2 65 72 72  6f 72 28 31 29 0d 00 5f  |. . .error(1).._|
00000b60  11 de 20 56 61 72 42 75  66 25 20 32 35 36 0d 00  |.. VarBuf% 256..|
00000b70  60 27 41 70 70 6c 44 69  72 24 3d a4 72 65 61 64  |`'ApplDir$=.read|
00000b80  76 61 72 76 61 6c 28 22  54 65 6d 70 6c 45 64 24  |varval("TemplEd$|
00000b90  44 69 72 22 29 0d 00 61  2c f2 68 65 61 70 5f 69  |Dir")..a,.heap_i|
00000ba0  6e 69 74 20 20 20 20 20  20 20 20 20 20 20 3a 20  |nit           : |
00000bb0  f4 20 69 6e 69 74 69 61  6c 69 7a 65 20 68 65 61  |. initialize hea|
00000bc0  70 0d 00 62 2f f2 6d 73  67 5f 69 6e 69 74 20 20  |p..b/.msg_init  |
00000bd0  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 6c 6f  |          : . lo|
00000be0  61 64 20 4d 65 73 73 61  67 65 73 20 66 69 6c 65  |ad Messages file|
00000bf0  0d 00 63 25 f4 20 6c 6f  77 65 72 20 62 6f 75 6e  |..c%. lower boun|
00000c00  64 73 20 66 6f 72 20 4d  61 78 2a 20 76 61 72 69  |ds for Max* vari|
00000c10  61 62 6c 65 73 0d 00 64  27 e7 20 4d 61 78 54 65  |ables..d'. MaxTe|
00000c20  6d 70 6c 61 74 65 73 25  3c 34 20 8c 20 4d 61 78  |mplates%<4 . Max|
00000c30  54 65 6d 70 6c 61 74 65  73 25 3d 34 0d 00 65 21  |Templates%=4..e!|
00000c40  e7 20 4d 61 78 49 63 6f  6e 73 25 3c 36 34 20 8c  |. MaxIcons%<64 .|
00000c50  20 4d 61 78 49 63 6f 6e  73 25 3d 36 34 0d 00 66  | MaxIcons%=64..f|
00000c60  2f e7 20 4d 61 78 49 6e  64 69 72 53 69 7a 65 25  |/. MaxIndirSize%|
00000c70  3c 26 31 30 30 30 20 8c  20 4d 61 78 49 6e 64 69  |<&1000 . MaxIndi|
00000c80  72 53 69 7a 65 25 3d 26  31 30 30 30 0d 00 67 2b  |rSize%=&1000..g+|
00000c90  f4 20 64 65 63 6c 61 72  61 74 69 6f 6e 20 6f 66  |. declaration of|
00000ca0  20 64 61 74 61 20 62 6c  6f 63 6b 73 20 61 6e 64  | data blocks and|
00000cb0  20 61 72 72 61 79 73 0d  00 68 11 de 20 49 63 6f  | arrays..h.. Ico|
00000cc0  6e 42 6c 6b 25 20 34 30  0d 00 69 1b 53 65 6c 42  |nBlk% 40..i.SelB|
00000cd0  6c 6b 53 69 7a 65 25 3d  34 2a 4d 61 78 49 63 6f  |lkSize%=4*MaxIco|
00000ce0  6e 73 25 0d 00 6a 42 de  20 53 65 6c 42 6c 6b 25  |ns%..jB. SelBlk%|
00000cf0  20 53 65 6c 42 6c 6b 53  69 7a 65 25 20 3a 20 f4  | SelBlkSize% : .|
00000d00  20 62 6c 6f 63 6b 20 74  6f 20 68 6f 6c 64 20 6c  | block to hold l|
00000d10  69 73 74 20 6f 66 20 73  65 6c 65 63 74 65 64 20  |ist of selected |
00000d20  69 63 6f 6e 73 0d 00 6b  1a de 20 53 65 6c 42 6c  |icons..k.. SelBl|
00000d30  6b 32 25 20 53 65 6c 42  6c 6b 53 69 7a 65 25 0d  |k2% SelBlkSize%.|
00000d40  00 6c 42 de 20 53 63 72  61 70 42 6c 6b 25 20 26  |.lB. ScrapBlk% &|
00000d50  31 30 30 20 20 20 20 20  20 3a 20 f4 20 62 6c 6f  |100      : . blo|
00000d60  63 6b 20 74 6f 20 68 6f  6c 64 20 76 61 72 69 6f  |ck to hold vario|
00000d70  75 73 20 74 65 6d 70 6f  72 61 72 79 20 64 61 74  |us temporary dat|
00000d80  61 0d 00 6d 3c de 20 42  6c 6b 25 20 26 31 30 30  |a..m<. Blk% &100|
00000d90  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 66  |           : . f|
00000da0  6f 72 20 64 61 74 61 20  72 65 74 75 72 6e 65 64  |or data returned|
00000db0  20 62 79 20 57 69 6d 70  5f 50 6f 6c 6c 0d 00 6e  | by Wimp_Poll..n|
00000dc0  33 de 20 50 74 72 49 6e  66 6f 25 20 32 30 20 20  |3. PtrInfo% 20  |
00000dd0  20 20 20 20 20 20 20 3a  20 f4 20 74 6f 20 73 74  |       : . to st|
00000de0  6f 72 65 20 70 6f 69 6e  74 65 72 20 69 6e 66 6f  |ore pointer info|
00000df0  0d 00 6f 45 de 20 4e 75  6d 56 61 6c 69 64 53 74  |..oE. NumValidSt|
00000e00  72 25 20 38 20 20 20 20  20 20 3a 20 f4 20 76 61  |r% 8      : . va|
00000e10  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 20  |lidation string |
00000e20  66 6f 72 20 65 6e 74 65  72 69 6e 67 20 61 20 6e  |for entering a n|
00000e30  75 6d 62 65 72 0d 00 70  18 24 4e 75 6d 56 61 6c  |umber..p.$NumVal|
00000e40  69 64 53 74 72 25 3d 22  41 30 2d 39 22 0d 00 71  |idStr%="A0-9"..q|
00000e50  42 de 20 46 70 4e 75 6d  56 61 6c 69 64 53 74 72  |B. FpNumValidStr|
00000e60  25 20 38 20 20 20 20 3a  20 f4 20 66 6f 72 20 65  |% 8    : . for e|
00000e70  6e 74 65 72 69 6e 67 20  61 20 66 6c 6f 61 74 69  |ntering a floati|
00000e80  6e 67 20 70 6f 69 6e 74  20 6e 75 6d 62 65 72 0d  |ng point number.|
00000e90  00 72 1b 24 46 70 4e 75  6d 56 61 6c 69 64 53 74  |.r.$FpNumValidSt|
00000ea0  72 25 3d 22 41 30 2d 39  2e 22 0d 00 73 45 de 20  |r%="A0-9."..sE. |
00000eb0  54 65 6d 70 6c 4e 61 6d  65 73 25 20 4d 61 78 54  |TemplNames% MaxT|
00000ec0  65 6d 70 6c 61 74 65 73  25 2a 32 38 20 3a 20 f4  |emplates%*28 : .|
00000ed0  20 74 6f 20 73 74 6f 72  65 20 6e 61 6d 65 20 61  | to store name a|
00000ee0  6e 64 20 6e 61 6d 65 20  6f 66 20 69 63 6f 6e 0d  |nd name of icon.|
00000ef0  00 74 44 de 20 54 65 6d  70 6c 48 61 6e 64 6c 65  |.tD. TemplHandle|
00000f00  25 28 4d 61 78 54 65 6d  70 6c 61 74 65 73 25 29  |%(MaxTemplates%)|
00000f10  20 20 3a 20 f4 20 68 61  6e 64 6c 65 73 20 6f 66  |  : . handles of|
00000f20  20 74 68 65 20 75 73 65  72 20 74 65 6d 70 6c 61  | the user templa|
00000f30  74 65 73 0d 00 75 4a de  20 50 61 6e 65 46 6c 61  |tes..uJ. PaneFla|
00000f40  67 25 20 4d 61 78 54 65  6d 70 6c 61 74 65 73 25  |g% MaxTemplates%|
00000f50  20 20 20 20 20 20 3a 20  f4 20 27 50 61 6e 65 27  |      : . 'Pane'|
00000f60  20 66 6c 61 67 73 20 61  72 65 20 6b 65 70 74 20  | flags are kept |
00000f70  69 6e 20 74 68 69 73 20  61 72 72 61 79 0d 00 76  |in this array..v|
00000f80  49 4e 72 54 65 6d 70 6c  61 74 65 73 25 3d 30 20  |INrTemplates%=0 |
00000f90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000fa0  20 20 3a 20 f4 20 63 75  72 72 65 6e 74 20 6e 75  |  : . current nu|
00000fb0  6d 62 65 72 20 6f 66 20  75 73 65 72 20 74 65 6d  |mber of user tem|
00000fc0  70 6c 61 74 65 73 0d 00  77 4b 54 65 6d 70 6c 61  |plates..wKTempla|
00000fd0  74 65 73 4f 70 65 6e 25  3d 30 20 20 20 20 20 20  |tesOpen%=0      |
00000fe0  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 6e  |           : . n|
00000ff0  75 6d 62 65 72 20 6f 66  20 74 65 6d 70 6c 61 74  |umber of templat|
00001000  65 73 20 63 75 72 72 65  6e 74 6c 79 20 6f 70 65  |es currently ope|
00001010  6e 0d 00 78 40 4d 61 78  54 65 6d 70 6c 61 74 65  |n..x@MaxTemplate|
00001020  53 69 7a 65 25 3d 39 32  2b 33 32 2a 4d 61 78 49  |Size%=92+32*MaxI|
00001030  63 6f 6e 73 25 20 3a 20  f4 20 6d 61 78 20 73 69  |cons% : . max si|
00001040  7a 65 20 66 6f 72 20 61  20 74 65 6d 70 6c 61 74  |ze for a templat|
00001050  65 0d 00 79 48 4d 61 78  54 65 6d 70 6c 61 74 65  |e..yHMaxTemplate|
00001060  53 69 7a 65 25 2b 3d 4d  61 78 49 6e 64 69 72 53  |Size%+=MaxIndirS|
00001070  69 7a 65 25 20 20 3a 20  f4 20 65 78 74 72 61 20  |ize%  : . extra |
00001080  73 70 61 63 65 20 66 6f  72 20 69 6e 64 69 72 65  |space for indire|
00001090  63 74 65 64 20 64 61 74  61 0d 00 7a 1e de 20 57  |cted data..z.. W|
000010a0  69 6e 42 6c 6b 25 20 4d  61 78 54 65 6d 70 6c 61  |inBlk% MaxTempla|
000010b0  74 65 53 69 7a 65 25 0d  00 7b 4e 53 79 73 49 6e  |teSize%..{NSysIn|
000010c0  64 69 72 53 69 7a 65 25  3d 26 31 38 30 30 20 20  |dirSize%=&1800  |
000010d0  20 20 20 20 20 20 20 3a  20 f4 20 73 69 7a 65 20  |       : . size |
000010e0  6f 66 20 69 6e 64 69 72  65 63 74 65 64 20 64 61  |of indirected da|
000010f0  74 61 20 66 6f 72 20 73  79 73 74 65 6d 20 77 69  |ta for system wi|
00001100  6e 64 6f 77 73 0d 00 7c  1d de 20 49 6e 64 69 72  |ndows..|.. Indir|
00001110  42 6c 6b 25 20 53 79 73  49 6e 64 69 72 53 69 7a  |Blk% SysIndirSiz|
00001120  65 25 0d 00 7d 40 49 6e  64 69 72 45 6e 64 25 3d  |e%..}@IndirEnd%=|
00001130  49 6e 64 69 72 42 6c 6b  25 20 20 20 20 20 20 20  |IndirBlk%       |
00001140  20 20 3a 20 f4 20 70 6f  69 6e 74 65 72 20 74 6f  |  : . pointer to|
00001150  20 66 69 72 73 74 20 75  6e 75 73 65 64 20 62 79  | first unused by|
00001160  74 65 0d 00 7e 48 49 6e  64 69 72 46 72 65 65 25  |te..~HIndirFree%|
00001170  3d 53 79 73 49 6e 64 69  72 53 69 7a 65 25 20 20  |=SysIndirSize%  |
00001180  20 20 3a 20 f4 20 72 65  6d 61 69 6e 69 6e 67 20  |  : . remaining |
00001190  66 72 65 65 20 73 70 61  63 65 20 61 66 74 65 72  |free space after|
000011a0  20 49 6e 64 69 72 45 6e  64 25 0d 00 7f 43 de 20  | IndirEnd%...C. |
000011b0  49 63 6f 6e 54 65 78 74  25 28 33 32 29 20 20 20  |IconText%(32)   |
000011c0  20 20 20 20 20 20 20 20  3a 20 f4 20 70 6f 69 6e  |        : . poin|
000011d0  74 65 72 73 20 74 6f 20  69 6e 64 69 72 65 63 74  |ters to indirect|
000011e0  65 64 20 74 65 78 74 20  69 63 6f 6e 73 0d 00 80  |ed text icons...|
000011f0  3e de 20 49 63 6f 6e 54  65 78 74 57 68 64 6c 25  |>. IconTextWhdl%|
00001200  28 33 32 29 20 20 20 20  20 20 20 3a 20 f4 20 63  |(32)       : . c|
00001210  6f 72 72 65 73 70 6f 6e  64 69 6e 67 20 77 69 6e  |orresponding win|
00001220  64 6f 77 20 68 61 6e 64  6c 65 73 0d 00 81 3c de  |dow handles...<.|
00001230  20 49 63 6f 6e 54 65 78  74 49 68 64 6c 25 28 33  | IconTextIhdl%(3|
00001240  32 29 20 20 20 20 20 20  20 3a 20 f4 20 63 6f 72  |2)       : . cor|
00001250  72 65 73 70 6f 6e 64 69  6e 67 20 69 63 6f 6e 20  |responding icon |
00001260  68 61 6e 64 6c 65 73 0d  00 82 49 de 20 43 73 65  |handles...I. Cse|
00001270  6c 54 65 78 74 25 28 31  32 29 20 20 20 20 20 20  |lText%(12)      |
00001280  20 20 20 20 20 3a 20 f4  20 70 6f 69 6e 74 65 72  |     : . pointer|
00001290  73 20 74 6f 20 74 65 78  74 20 69 6e 20 63 6f 6c  |s to text in col|
000012a0  6f 75 72 2d 73 65 6c 65  63 74 20 62 6f 78 65 73  |our-select boxes|
000012b0  0d 00 83 3e de 20 43 73  65 6c 54 65 78 74 57 68  |...>. CselTextWh|
000012c0  64 6c 25 28 31 32 29 20  20 20 20 20 20 20 3a 20  |dl%(12)       : |
000012d0  f4 20 63 6f 72 72 65 73  70 6f 6e 64 69 6e 67 20  |. corresponding |
000012e0  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 73 0d 00  |window handles..|
000012f0  84 3c de 20 43 73 65 6c  54 65 78 74 49 68 64 6c  |.<. CselTextIhdl|
00001300  25 28 31 32 29 20 20 20  20 20 20 20 3a 20 f4 20  |%(12)       : . |
00001310  63 6f 72 72 65 73 70 6f  6e 64 69 6e 67 20 69 63  |corresponding ic|
00001320  6f 6e 20 68 61 6e 64 6c  65 73 0d 00 85 41 de 20  |on handles...A. |
00001330  49 63 42 75 74 74 6f 6e  25 20 32 30 2a 31 36 20  |IcButton% 20*16 |
00001340  20 20 20 20 20 20 20 20  3a 20 f4 20 6e 61 6d 65  |        : . name|
00001350  73 20 6f 66 20 62 75 74  74 6f 6e 20 74 79 70 65  |s of button type|
00001360  73 20 66 6f 72 20 69 63  6f 6e 73 0d 00 86 43 de  |s for icons...C.|
00001370  20 57 69 6e 42 75 74 74  6f 6e 25 20 32 30 2a 31  | WinButton% 20*1|
00001380  36 20 20 20 20 20 20 20  20 3a 20 f4 20 6e 61 6d  |6        : . nam|
00001390  65 73 20 6f 66 20 62 75  74 74 6f 6e 20 74 79 70  |es of button typ|
000013a0  65 73 20 66 6f 72 20 77  69 6e 64 6f 77 73 0d 00  |es for windows..|
000013b0  87 0f e3 20 69 25 3d 30  20 b8 20 31 35 0d 00 88  |... i%=0 . 15...|
000013c0  33 20 20 24 28 49 63 42  75 74 74 6f 6e 25 2b 32  |3  $(IcButton%+2|
000013d0  30 2a 69 25 29 3d a4 6d  73 67 5f 6c 6f 6f 6b 75  |0*i%)=.msg_looku|
000013e0  70 30 28 22 49 43 42 54  22 2b c3 28 69 25 29 29  |p0("ICBT"+.(i%))|
000013f0  0d 00 89 34 20 20 24 28  57 69 6e 42 75 74 74 6f  |...4  $(WinButto|
00001400  6e 25 2b 32 30 2a 69 25  29 3d a4 6d 73 67 5f 6c  |n%+20*i%)=.msg_l|
00001410  6f 6f 6b 75 70 30 28 22  57 4e 42 54 22 2b c3 28  |ookup0("WNBT"+.(|
00001420  69 25 29 29 0d 00 8a 08  ed 20 69 25 0d 00 8b 3f  |i%))..... i%...?|
00001430  de 20 57 69 6e 45 64 5f  43 6f 6c 25 28 36 29 20  |. WinEd_Col%(6) |
00001440  20 20 20 20 20 3a 20 f4  20 63 6f 6c 6f 75 72 73  |     : . colours|
00001450  20 69 6e 20 74 68 65 20  63 6f 6c 6f 75 72 2d 73  | in the colour-s|
00001460  65 6c 65 63 74 20 62 6f  78 65 73 0d 00 8c 4a de  |elect boxes...J.|
00001470  20 49 6e 76 65 72 73 65  43 6f 6c 6f 75 72 25 28  | InverseColour%(|
00001480  31 35 29 20 3a 20 f4 20  74 6f 20 64 69 73 70 6c  |15) : . to displ|
00001490  61 79 20 74 65 78 74 20  69 6e 20 63 6f 6c 6f 75  |ay text in colou|
000014a0  72 20 62 6f 78 65 73 20  2f 20 63 6f 6c 6f 75 72  |r boxes / colour|
000014b0  20 6d 65 6e 75 0d 00 8d  0f e3 20 69 25 3d 30 20  | menu..... i%=0 |
000014c0  b8 20 31 35 0d 00 8e 0d  20 20 c8 8e 20 69 25 20  |. 15....  .. i% |
000014d0  ca 0d 00 8f 19 20 20 20  20 c9 20 30 2c 31 2c 32  |.....    . 0,1,2|
000014e0  2c 33 2c 39 2c 31 32 2c  31 34 0d 00 90 1e 20 20  |,3,9,12,14....  |
000014f0  20 20 20 20 49 6e 76 65  72 73 65 43 6f 6c 6f 75  |    InverseColou|
00001500  72 25 28 69 25 29 3d 37  0d 00 91 09 20 20 20 20  |r%(i%)=7....    |
00001510  7f 0d 00 92 1e 20 20 20  20 20 20 49 6e 76 65 72  |.....      Inver|
00001520  73 65 43 6f 6c 6f 75 72  25 28 69 25 29 3d 30 0d  |seColour%(i%)=0.|
00001530  00 93 07 20 20 cb 0d 00  94 08 ed 20 69 25 0d 00  |...  ...... i%..|
00001540  95 37 de 20 44 72 61 67  42 6c 6b 25 20 34 30 20  |.7. DragBlk% 40 |
00001550  20 20 20 20 3a 20 f4 20  64 61 74 61 20 62 6c 6f  |    : . data blo|
00001560  63 6b 20 66 6f 72 20 73  74 61 72 74 69 6e 67 20  |ck for starting |
00001570  64 72 61 67 73 0d 00 96  28 46 69 6c 65 49 6e 64  |drags...(FileInd|
00001580  65 78 53 69 7a 65 25 3d  31 36 2b 4d 61 78 54 65  |exSize%=16+MaxTe|
00001590  6d 70 6c 61 74 65 73 25  2a 32 34 2b 34 0d 00 97  |mplates%*24+4...|
000015a0  45 de 20 46 69 6c 65 49  6e 64 65 78 25 20 46 69  |E. FileIndex% Fi|
000015b0  6c 65 49 6e 64 65 78 53  69 7a 65 25 20 3a 20 f4  |leIndexSize% : .|
000015c0  20 63 6f 6e 74 61 69 6e  73 20 69 6e 64 65 78 20  | contains index |
000015d0  6f 66 20 61 20 74 65 6d  70 6c 61 74 65 20 66 69  |of a template fi|
000015e0  6c 65 0d 00 98 40 de 20  46 6f 6e 74 55 73 61 67  |le...@. FontUsag|
000015f0  65 25 28 32 35 36 29 20  3a 20 f4 20 63 6f 75 6e  |e%(256) : . coun|
00001600  74 73 20 6e 75 6d 62 65  72 20 6f 66 20 69 63 6f  |ts number of ico|
00001610  6e 73 20 74 68 61 74 20  75 73 65 20 61 20 66 6f  |ns that use a fo|
00001620  6e 74 0d 00 99 4b de 20  46 72 61 25 20 32 35 36  |nt...K. Fra% 256|
00001630  20 20 20 20 20 20 20 20  3a 20 f4 20 66 6f 6e 74  |        : . font|
00001640  20 72 65 66 65 72 65 6e  63 65 20 61 72 72 61 79  | reference array|
00001650  20 66 6f 72 20 6c 6f 61  64 69 6e 67 2b 73 61 76  | for loading+sav|
00001660  69 6e 67 20 74 65 6d 70  6c 61 74 65 73 0d 00 9a  |ing templates...|
00001670  36 de 20 46 6f 6e 74 44  61 74 61 25 20 36 34 20  |6. FontData% 64 |
00001680  20 20 20 3a 20 f4 20 62  75 66 66 65 72 20 66 6f  |   : . buffer fo|
00001690  72 20 72 65 61 64 69 6e  67 20 66 6f 6e 74 20 64  |r reading font d|
000016a0  61 74 61 0d 00 9b 4a de  20 4d 6f 75 73 65 5f 50  |ata...J. Mouse_P|
000016b0  74 74 25 20 31 36 20 20  20 20 20 20 20 20 3a 20  |tt% 16        : |
000016c0  f4 20 70 69 78 65 6c 20  74 72 61 6e 73 6c 61 74  |. pixel translat|
000016d0  69 6f 6e 20 74 61 62 6c  65 20 66 6f 72 20 70 6f  |ion table for po|
000016e0  69 6e 74 65 72 20 63 68  61 6e 67 65 73 0d 00 9c  |inter changes...|
000016f0  21 f4 20 69 6e 69 74 69  61 6c 69 73 65 20 67 6c  |!. initialise gl|
00001700  6f 62 61 6c 20 76 61 72  69 61 62 6c 65 73 0d 00  |obal variables..|
00001710  9d 2f 49 63 45 64 5f 57  69 6e 25 3d 2d 31 30 30  |./IcEd_Win%=-100|
00001720  30 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 69  |0          : . i|
00001730  6e 76 61 6c 69 64 20 76  61 6c 75 65 73 0d 00 9e  |nvalid values...|
00001740  14 49 63 45 64 5f 49 63  6f 6e 25 3d 2d 31 30 30  |.IcEd_Icon%=-100|
00001750  30 0d 00 9f 11 57 69 6e  45 64 5f 57 69 6e 25 3d  |0....WinEd_Win%=|
00001760  2d 31 0d 00 a0 35 4d 62  75 74 74 6f 6e 73 5f 52  |-1...5Mbuttons_R|
00001770  65 6c 65 61 73 65 64 25  3d a3 20 3a 20 f4 20 74  |eleased%=. : . t|
00001780  6f 20 64 65 62 6f 75 6e  63 65 20 6d 6f 75 73 65  |o debounce mouse|
00001790  20 63 6c 69 63 6b 73 0d  00 a1 3f 54 68 69 73 43  | clicks...?ThisC|
000017a0  6c 69 63 6b 54 69 6d 65  25 3d 91 20 20 20 20 20  |lickTime%=.     |
000017b0  20 3a 20 f4 20 74 6f 20  73 74 6f 72 65 20 64 61  | : . to store da|
000017c0  74 61 20 6f 66 20 6c 61  73 74 20 6d 6f 75 73 65  |ta of last mouse|
000017d0  20 63 6c 69 63 6b 0d 00  a2 15 54 68 69 73 43 6c  | click....ThisCl|
000017e0  69 63 6b 58 25 3d 2d 31  30 30 30 0d 00 a3 15 54  |ickX%=-1000....T|
000017f0  68 69 73 43 6c 69 63 6b  59 25 3d 2d 31 30 30 30  |hisClickY%=-1000|
00001800  0d 00 a4 16 54 68 69 73  43 6c 69 63 6b 42 75 74  |....ThisClickBut|
00001810  74 6f 6e 25 3d 30 0d 00  a5 49 54 69 6d 65 64 44  |ton%=0...ITimedD|
00001820  72 61 67 5f 45 6e 61 62  6c 65 64 25 3d a3 20 3a  |rag_Enabled%=. :|
00001830  20 f4 20 63 61 6e 20 49  20 73 74 61 72 74 20 22  | . can I start "|
00001840  74 69 6d 65 64 20 64 72  61 67 22 20 66 72 6f 6d  |timed drag" from|
00001850  20 63 75 72 72 65 6e 74  20 63 6c 69 63 6b 3f 0d  | current click?.|
00001860  00 a6 4c 44 72 61 67 49  6e 74 65 72 76 61 6c 25  |..LDragInterval%|
00001870  3d 35 30 20 20 20 20 20  20 20 20 20 3a 20 f4 20  |=50         : . |
00001880  69 6e 74 65 72 76 61 6c  20 61 66 74 65 72 20 77  |interval after w|
00001890  68 69 63 68 20 22 74 69  6d 65 64 20 64 72 61 67  |hich "timed drag|
000018a0  22 20 63 61 6e 20 73 74  61 72 74 0d 00 a7 4a 44  |" can start...JD|
000018b0  63 6c 69 63 6b 49 6e 74  65 72 76 61 6c 25 3d 35  |clickInterval%=5|
000018c0  30 20 20 20 20 20 20 20  3a 20 f4 20 6d 61 78 20  |0       : . max |
000018d0  74 69 6d 65 20 62 65 74  77 65 65 6e 20 63 6c 69  |time between cli|
000018e0  63 6b 73 20 6f 66 20 61  20 64 6f 75 62 6c 65 2d  |cks of a double-|
000018f0  63 6c 69 63 6b 0d 00 a8  48 4e 65 78 74 49 63 6f  |click...HNextIco|
00001900  6e 4e 72 25 3d 30 20 20  20 20 20 20 20 20 20 20  |nNr%=0          |
00001910  20 20 3a 20 f4 20 66 6f  72 20 73 65 6d 69 2d 61  |  : . for semi-a|
00001920  75 74 6f 6d 61 74 69 63  20 72 65 6e 75 6d 62 65  |utomatic renumbe|
00001930  72 69 6e 67 20 6f 66 20  69 63 6f 6e 73 0d 00 a9  |ring of icons...|
00001940  3a 4c 61 73 74 4d 65 6e  75 25 3d 2d 31 20 20 20  |:LastMenu%=-1   |
00001950  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 68 61  |          : . ha|
00001960  6e 64 6c 65 20 6f 66 20  6c 61 73 74 20 6d 65 6e  |ndle of last men|
00001970  75 20 73 68 6f 77 6e 0d  00 aa 46 4c 61 73 74 4d  |u shown...FLastM|
00001980  65 6e 75 5f 57 69 6e 25  3d 2d 33 31 20 20 20 20  |enu_Win%=-31    |
00001990  20 20 20 20 3a 20 f4 20  77 69 6e 64 6f 77 20 61  |    : . window a|
000019a0  62 6f 76 65 20 77 68 69  63 68 20 6c 61 73 74 20  |bove which last |
000019b0  6d 65 6e 75 20 77 61 73  20 6d 61 64 65 0d 00 ab  |menu was made...|
000019c0  34 4c 61 73 74 4d 65 6e  75 5f 49 63 6f 6e 25 3d  |4LastMenu_Icon%=|
000019d0  2d 31 20 20 20 20 20 20  20 20 3a 20 f4 20 69 63  |-1        : . ic|
000019e0  6f 6e 20 68 61 6e 64 6c  65 20 6f 66 20 73 61 6d  |on handle of sam|
000019f0  65 0d 00 ac 3b 4d 61 69  6e 46 4e 61 6d 65 24 3d  |e...;MainFName$=|
00001a00  22 54 65 6d 70 6c 61 74  65 73 22 20 20 20 3a 20  |"Templates"   : |
00001a10  f4 20 73 61 76 65 20 61  6c 6c 20 74 65 6d 70 6c  |. save all templ|
00001a20  61 74 65 73 20 61 73 20  2e 2e 2e 2e 0d 00 ad 40  |ates as .......@|
00001a30  53 65 6c 46 4e 61 6d 65  24 3d 22 53 65 6c 65 63  |SelFName$="Selec|
00001a40  74 69 6f 6e 22 20 20 20  20 3a 20 f4 20 73 61 76  |tion"    : . sav|
00001a50  65 20 74 65 6d 70 6c 61  74 65 20 73 65 6c 65 63  |e template selec|
00001a60  74 69 6f 6e 20 61 73 20  2e 2e 2e 2e 0d 00 ae 48  |tion as .......H|
00001a70  53 61 76 69 6e 67 53 65  6c 65 63 74 69 6f 6e 25  |SavingSelection%|
00001a80  3d a3 20 20 20 3a 20 f4  20 77 61 73 20 6c 61 73  |=.   : . was las|
00001a90  74 20 73 61 76 65 20 64  69 61 6c 6f 67 75 65 20  |t save dialogue |
00001aa0  74 6f 20 73 61 76 65 20  61 20 73 65 6c 65 63 74  |to save a select|
00001ab0  69 6f 6e 3f 0d 00 af 42  51 75 69 74 41 66 74 65  |ion?...BQuitAfte|
00001ac0  72 53 61 76 65 25 3d a3  20 20 20 20 20 3a 20 f4  |rSave%=.     : .|
00001ad0  20 71 75 69 74 20 70 72  6f 67 72 61 6d 20 61 66  | quit program af|
00001ae0  74 65 72 20 63 75 72 72  65 6e 74 20 73 61 76 65  |ter current save|
00001af0  20 70 72 6f 63 3f 0d 00  b0 46 51 75 69 74 44 65  | proc?...FQuitDe|
00001b00  61 64 6c 69 6e 65 25 3d  30 20 20 20 20 20 20 20  |adline%=0       |
00001b10  20 20 20 3a 20 f4 20 66  6f 72 20 22 64 65 6c 61  |   : . for "dela|
00001b20  79 65 64 22 20 71 75 69  74 2c 20 74 6f 20 61 76  |yed" quit, to av|
00001b30  6f 69 64 20 57 69 6d 70  20 62 75 67 0d 00 b1 47  |oid Wimp bug...G|
00001b40  4e 65 77 46 4e 61 6d 65  24 3d 22 22 20 20 20 20  |NewFName$=""    |
00001b50  20 20 20 20 20 20 20 20  20 3a 20 f4 20 6e 61 6d  |         : . nam|
00001b60  65 20 6f 66 20 6e 65 77  20 74 65 6d 70 6c 61 74  |e of new templat|
00001b70  65 20 66 69 6c 65 20 74  6f 20 62 65 20 6c 6f 61  |e file to be loa|
00001b80  64 65 64 0d 00 b2 42 43  68 61 6e 67 65 73 4d 61  |ded...BChangesMa|
00001b90  64 65 25 3d a3 20 20 20  20 20 20 20 3a 20 f4 20  |de%=.       : . |
00001ba0  68 61 76 65 20 63 75 72  72 65 6e 74 20 74 65 6d  |have current tem|
00001bb0  70 6c 61 74 65 73 20 62  65 65 6e 20 6d 6f 64 69  |plates been modi|
00001bc0  66 69 65 64 3f 0d 00 b3  4b 55 73 65 72 53 70 72  |fied?...KUserSpr|
00001bd0  69 74 65 73 25 3d 31 20  20 3a 20 f4 20 73 70 72  |ites%=1  : . spr|
00001be0  69 74 65 73 20 69 6e 20  75 73 65 72 20 74 65 6d  |ites in user tem|
00001bf0  70 6c 61 74 65 73 20 66  72 6f 6d 20 57 69 6d 70  |plates from Wimp|
00001c00  20 61 72 65 61 20 28 61  74 20 66 69 72 73 74 29  | area (at first)|
00001c10  0d 00 b4 42 53 70 72 69  74 65 46 4e 61 6d 65 24  |...BSpriteFName$|
00001c20  3d 22 22 20 3a 20 f4 20  6e 61 6d 65 20 6f 66 20  |="" : . name of |
00001c30  73 70 72 69 74 65 20 66  69 6c 65 20 69 66 20 6e  |sprite file if n|
00001c40  6f 74 20 75 73 69 6e 67  20 57 69 6d 70 20 61 72  |ot using Wimp ar|
00001c50  65 61 0d 00 b5 43 44 72  61 67 5f 54 79 70 65 25  |ea...CDrag_Type%|
00001c60  3d 2d 31 20 20 20 3a 20  f4 20 74 79 70 65 20 6f  |=-1   : . type o|
00001c70  66 20 63 75 72 72 65 6e  74 20 64 72 61 67 20 6f  |f current drag o|
00001c80  70 65 72 61 74 69 6f 6e  20 28 2d 31 20 3d 3e 20  |peration (-1 => |
00001c90  6e 6f 6e 65 29 0d 00 b6  4a 53 75 70 70 6f 72 74  |none)...JSupport|
00001ca0  41 45 48 25 3d a3 20 3a  20 f4 20 69 73 20 69 6e  |AEH%=. : . is in|
00001cb0  20 73 65 74 75 70 2c 20  62 75 74 20 6d 75 73 74  | setup, but must|
00001cc0  20 65 78 69 73 74 20 62  65 66 6f 72 65 20 6c 6f  | exist before lo|
00001cd0  61 64 69 6e 67 20 74 65  6d 70 6c 61 74 65 73 0d  |ading templates.|
00001ce0  00 b7 14 41 45 48 72 65  67 69 73 74 65 72 65 64  |...AEHregistered|
00001cf0  25 3d a3 0d 00 b8 1d f4  20 63 72 65 61 74 65 20  |%=...... create |
00001d00  69 63 6f 6e 20 6f 6e 20  69 63 6f 6e 20 62 61 72  |icon on icon bar|
00001d10  0d 00 b9 11 49 63 6f 6e  42 6c 6b 25 21 30 3d 2d  |....IconBlk%!0=-|
00001d20  31 0d 00 ba 1f 49 63 6f  6e 42 6c 6b 25 21 34 3d  |1....IconBlk%!4=|
00001d30  30 20 3a 20 49 63 6f 6e  42 6c 6b 25 21 38 3d 30  |0 : IconBlk%!8=0|
00001d40  0d 00 bb 23 49 63 6f 6e  42 6c 6b 25 21 31 32 3d  |...#IconBlk%!12=|
00001d50  36 38 20 3a 20 49 63 6f  6e 42 6c 6b 25 21 31 36  |68 : IconBlk%!16|
00001d60  3d 36 38 0d 00 bc 19 49  63 6f 6e 42 6c 6b 25 21  |=68....IconBlk%!|
00001d70  32 30 3d 26 37 30 30 30  33 30 31 41 0d 00 bd 1d  |20=&7000301A....|
00001d80  24 28 49 63 6f 6e 42 6c  6b 25 2b 32 34 29 3d 22  |$(IconBlk%+24)="|
00001d90  21 74 65 6d 70 6c 65 64  22 0d 00 be 2d c8 99 20  |!templed"...-.. |
00001da0  22 57 69 6d 70 5f 43 72  65 61 74 65 49 63 6f 6e  |"Wimp_CreateIcon|
00001db0  22 2c 2c 49 63 6f 6e 42  6c 6b 25 20 b8 20 42 61  |",,IconBlk% . Ba|
00001dc0  72 49 63 6f 6e 25 0d 00  bf 19 f4 20 6c 6f 61 64  |rIcon%..... load|
00001dd0  20 73 79 73 74 65 6d 20  73 70 72 69 74 65 73 0d  | system sprites.|
00001de0  00 c0 34 53 79 73 53 70  72 69 74 65 73 25 3d a4  |..4SysSprites%=.|
00001df0  6c 6f 61 64 73 70 72 69  74 65 66 69 6c 65 28 41  |loadspritefile(A|
00001e00  70 70 6c 44 69 72 24 2b  22 2e 53 70 72 69 74 65  |pplDir$+".Sprite|
00001e10  73 22 29 0d 00 c1 26 f4  20 69 6e 69 74 69 61 6c  |s")...&. initial|
00001e20  69 73 65 20 66 6f 6e 74  20 72 65 66 65 72 65 6e  |ise font referen|
00001e30  63 65 20 61 72 72 61 79  73 0d 00 c2 10 e3 20 69  |ce arrays..... i|
00001e40  25 3d 30 20 b8 20 32 35  35 0d 00 c3 0f 20 20 46  |%=0 . 255....  F|
00001e50  72 61 25 3f 69 25 3d 30  0d 00 c4 08 ed 20 69 25  |ra%?i%=0..... i%|
00001e60  0d 00 c5 3f f4 20 6c 6f  61 64 20 73 79 73 74 65  |...?. load syste|
00001e70  6d 20 74 65 6d 70 6c 61  74 65 73 20 61 6e 64 20  |m templates and |
00001e80  73 65 74 20 70 6f 69 6e  74 65 72 73 20 74 6f 20  |set pointers to |
00001e90  69 6e 64 69 72 65 63 74  65 64 20 64 61 74 61 0d  |indirected data.|
00001ea0  00 c6 31 c8 99 20 22 57  69 6d 70 5f 4f 70 65 6e  |..1.. "Wimp_Open|
00001eb0  54 65 6d 70 6c 61 74 65  22 2c 2c 41 70 70 6c 44  |Template",,ApplD|
00001ec0  69 72 24 2b 22 2e 54 65  6d 70 6c 61 74 65 73 22  |ir$+".Templates"|
00001ed0  0d 00 c7 3f 49 6e 66 6f  57 25 3d a4 6c 6f 61 64  |...?InfoW%=.load|
00001ee0  74 65 6d 70 6c 61 74 65  28 22 49 6e 66 6f 22 2c  |template("Info",|
00001ef0  57 69 6e 42 6c 6b 25 2c  49 6e 64 69 72 45 6e 64  |WinBlk%,IndirEnd|
00001f00  25 2c 49 6e 64 69 72 46  72 65 65 25 2c 31 29 0d  |%,IndirFree%,1).|
00001f10  00 c8 24 24 28 57 69 6e  42 6c 6b 25 21 28 39 32  |..$$(WinBlk%!(92|
00001f20  2b 33 2a 33 32 2b 32 30  29 29 3d 56 65 72 73 69  |+3*32+20))=Versi|
00001f30  6f 6e 24 0d 00 c9 4f 54  65 6d 70 6c 57 25 3d a4  |on$...OTemplW%=.|
00001f40  6c 6f 61 64 74 65 6d 70  6c 61 74 65 28 22 54 65  |loadtemplate("Te|
00001f50  6d 70 6c 61 74 65 73 22  2c 57 69 6e 42 6c 6b 25  |mplates",WinBlk%|
00001f60  2c 49 6e 64 69 72 45 6e  64 25 2c 49 6e 64 69 72  |,IndirEnd%,Indir|
00001f70  46 72 65 65 25 2c 53 79  73 53 70 72 69 74 65 73  |Free%,SysSprites|
00001f80  25 29 0d 00 ca 44 54 65  6d 70 6c 54 62 61 72 25  |%)...DTemplTbar%|
00001f90  3d 57 69 6e 42 6c 6b 25  21 37 36 20 20 20 20 20  |=WinBlk%!76     |
00001fa0  20 20 20 20 20 20 3a 20  f4 20 70 6f 69 6e 74 65  |      : . pointe|
00001fb0  72 20 74 6f 20 74 65 78  74 20 69 6e 20 74 69 74  |r to text in tit|
00001fc0  6c 65 20 62 61 72 0d 00  cb 1c 24 28 54 65 6d 70  |le bar....$(Temp|
00001fd0  6c 54 62 61 72 25 29 3d  4d 61 69 6e 46 4e 61 6d  |lTbar%)=MainFNam|
00001fe0  65 24 0d 00 cc 11 69 25  3d 57 69 6e 42 6c 6b 25  |e$....i%=WinBlk%|
00001ff0  2b 39 32 0d 00 cd 49 54  65 6d 70 6c 57 5f 49 63  |+92...ITemplW_Ic|
00002000  6f 6e 58 25 3d 69 25 21  38 2d 69 25 21 30 20 2b  |onX%=i%!8-i%!0 +|
00002010  20 38 20 20 20 20 20 3a  20 f4 20 73 69 7a 65 20  | 8     : . size |
00002020  6f 66 20 61 6e 20 69 63  6f 6e 20 69 6e 20 62 72  |of an icon in br|
00002030  6f 77 73 65 72 20 77 69  6e 64 6f 77 0d 00 ce 20  |owser window... |
00002040  54 65 6d 70 6c 57 5f 49  63 6f 6e 59 25 3d 69 25  |TemplW_IconY%=i%|
00002050  21 31 32 2d 69 25 21 34  20 2b 20 38 0d 00 cf 32  |!12-i%!4 + 8...2|
00002060  54 65 6d 70 6c 57 5f 49  63 6f 6e 46 6c 61 67 73  |TemplW_IconFlags|
00002070  25 3d 69 25 21 31 36 20  20 20 20 20 20 20 20 20  |%=i%!16         |
00002080  3a 20 f4 20 69 63 6f 6e  20 66 6c 61 67 73 0d 00  |: . icon flags..|
00002090  d0 44 54 65 6d 70 6c 57  5f 43 6f 6c 73 25 3d 28  |.DTemplW_Cols%=(|
000020a0  57 69 6e 42 6c 6b 25 21  31 32 2d 57 69 6e 42 6c  |WinBlk%!12-WinBl|
000020b0  6b 25 21 34 29 20 81 20  54 65 6d 70 6c 57 5f 49  |k%!4) . TemplW_I|
000020c0  63 6f 6e 58 25 20 3a 20  f4 20 23 63 6f 6c 75 6d  |conX% : . #colum|
000020d0  6e 73 0d 00 d1 25 e7 20  54 65 6d 70 6c 57 5f 43  |ns...%. TemplW_C|
000020e0  6f 6c 73 25 3c 31 20 8c  20 54 65 6d 70 6c 57 5f  |ols%<1 . TemplW_|
000020f0  43 6f 6c 73 25 3d 31 0d  00 d2 17 53 63 72 61 70  |Cols%=1....Scrap|
00002100  42 6c 6b 25 21 30 3d 54  65 6d 70 6c 57 25 0d 00  |Blk%!0=TemplW%..|
00002110  d3 11 53 63 72 61 70 42  6c 6b 25 21 34 3d 30 0d  |..ScrapBlk%!4=0.|
00002120  00 d4 45 c8 99 20 22 57  69 6d 70 5f 44 65 6c 65  |..E.. "Wimp_Dele|
00002130  74 65 49 63 6f 6e 22 2c  2c 53 63 72 61 70 42 6c  |teIcon",,ScrapBl|
00002140  6b 25 20 3a 20 f4 20 69  63 6f 6e 20 69 73 20 6f  |k% : . icon is o|
00002150  6e 6c 79 20 75 73 65 64  20 74 6f 20 73 65 74 20  |nly used to set |
00002160  73 69 7a 65 0d 00 d5 4d  49 63 45 64 57 25 3d a4  |size...MIcEdW%=.|
00002170  6c 6f 61 64 74 65 6d 70  6c 61 74 65 28 22 49 63  |loadtemplate("Ic|
00002180  6f 6e 45 64 69 74 22 2c  57 69 6e 42 6c 6b 25 2c  |onEdit",WinBlk%,|
00002190  49 6e 64 69 72 45 6e 64  25 2c 49 6e 64 69 72 46  |IndirEnd%,IndirF|
000021a0  72 65 65 25 2c 53 79 73  53 70 72 69 74 65 73 25  |ree%,SysSprites%|
000021b0  29 0d 00 d6 18 49 63 45  64 54 62 61 72 25 3d 57  |)....IcEdTbar%=W|
000021c0  69 6e 42 6c 6b 25 21 37  36 0d 00 d7 38 f2 6c 69  |inBlk%!76...8.li|
000021d0  6e 6b 69 63 6f 6e 74 65  78 74 28 30 2c 57 69 6e  |nkicontext(0,Win|
000021e0  42 6c 6b 25 2c 32 33 29  20 20 3a 20 f4 20 74 65  |Blk%,23)  : . te|
000021f0  78 74 20 69 6e 20 61 20  74 65 78 74 20 69 63 6f  |xt in a text ico|
00002200  6e 0d 00 d8 35 f2 6c 69  6e 6b 69 63 6f 6e 74 65  |n...5.linkiconte|
00002210  78 74 28 31 2c 57 69 6e  42 6c 6b 25 2c 32 34 29  |xt(1,WinBlk%,24)|
00002220  20 20 3a 20 f4 20 6e 61  6d 65 20 6f 66 20 61 20  |  : . name of a |
00002230  73 70 72 69 74 65 0d 00  d9 36 f2 6c 69 6e 6b 69  |sprite...6.linki|
00002240  63 6f 6e 74 65 78 74 28  32 2c 57 69 6e 42 6c 6b  |context(2,WinBlk|
00002250  25 2c 32 35 29 20 20 3a  20 f4 20 76 61 6c 69 64  |%,25)  : . valid|
00002260  61 74 69 6f 6e 20 73 74  72 69 6e 67 0d 00 da 2d  |ation string...-|
00002270  f2 6c 69 6e 6b 69 63 6f  6e 74 65 78 74 28 33 2c  |.linkicontext(3,|
00002280  57 69 6e 42 6c 6b 25 2c  32 36 29 20 20 3a 20 f4  |WinBlk%,26)  : .|
00002290  20 6d 61 78 20 73 69 7a  65 0d 00 db 35 f2 6c 69  | max size...5.li|
000022a0  6e 6b 69 63 6f 6e 74 65  78 74 28 34 2c 57 69 6e  |nkicontext(4,Win|
000022b0  42 6c 6b 25 2c 32 38 29  20 20 3a 20 f4 20 69 63  |Blk%,28)  : . ic|
000022c0  6f 6e 20 62 75 74 74 6f  6e 20 74 79 70 65 0d 00  |on button type..|
000022d0  dc 28 f2 6c 69 6e 6b 69  63 6f 6e 74 65 78 74 28  |.(.linkicontext(|
000022e0  35 2c 57 69 6e 42 6c 6b  25 2c 33 31 29 20 20 3a  |5,WinBlk%,31)  :|
000022f0  20 f4 20 65 73 67 0d 00  dd 2e f2 6c 69 6e 6b 69  | . esg.....linki|
00002300  63 6f 6e 74 65 78 74 28  31 39 2c 57 69 6e 42 6c  |context(19,WinBl|
00002310  6b 25 2c 34 35 29 20 3a  20 f4 20 66 6f 6e 74 20  |k%,45) : . font |
00002320  6e 61 6d 65 0d 00 de 30  f2 6c 69 6e 6b 69 63 6f  |name...0.linkico|
00002330  6e 74 65 78 74 28 32 30  2c 57 69 6e 42 6c 6b 25  |ntext(20,WinBlk%|
00002340  2c 34 38 29 20 3a 20 f4  20 66 6f 6e 74 20 78 20  |,48) : . font x |
00002350  73 69 7a 65 0d 00 df 30  f2 6c 69 6e 6b 69 63 6f  |size...0.linkico|
00002360  6e 74 65 78 74 28 32 31  2c 57 69 6e 42 6c 6b 25  |ntext(21,WinBlk%|
00002370  2c 35 31 29 20 3a 20 f4  20 66 6f 6e 74 20 79 20  |,51) : . font y |
00002380  73 69 7a 65 0d 00 e0 36  f2 6c 69 6e 6b 63 73 65  |size...6.linkcse|
00002390  6c 74 65 78 74 28 30 2c  57 69 6e 42 6c 6b 25 2c  |ltext(0,WinBlk%,|
000023a0  33 34 29 20 20 3a 20 f4  20 66 6f 72 65 67 72 6f  |34)  : . foregro|
000023b0  75 6e 64 20 63 6f 6c 6f  75 72 0d 00 e1 36 f2 6c  |und colour...6.l|
000023c0  69 6e 6b 63 73 65 6c 74  65 78 74 28 31 2c 57 69  |inkcseltext(1,Wi|
000023d0  6e 42 6c 6b 25 2c 33 37  29 20 20 3a 20 f4 20 62  |nBlk%,37)  : . b|
000023e0  61 63 6b 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |ackground colour|
000023f0  0d 00 e2 50 57 69 6e 45  64 57 25 3d a4 6c 6f 61  |...PWinEdW%=.loa|
00002400  64 74 65 6d 70 6c 61 74  65 28 22 57 69 6e 64 6f  |dtemplate("Windo|
00002410  77 45 64 69 74 22 2c 57  69 6e 42 6c 6b 25 2c 49  |wEdit",WinBlk%,I|
00002420  6e 64 69 72 45 6e 64 25  2c 49 6e 64 69 72 46 72  |ndirEnd%,IndirFr|
00002430  65 65 25 2c 53 79 73 53  70 72 69 74 65 73 25 29  |ee%,SysSprites%)|
00002440  0d 00 e3 19 57 69 6e 45  64 54 62 61 72 25 3d 57  |....WinEdTbar%=W|
00002450  69 6e 42 6c 6b 25 21 37  36 0d 00 e4 37 f2 6c 69  |inBlk%!76...7.li|
00002460  6e 6b 69 63 6f 6e 74 65  78 74 28 36 2c 57 69 6e  |nkicontext(6,Win|
00002470  42 6c 6b 25 2c 32 33 29  20 20 3a 20 f4 20 77 69  |Blk%,23)  : . wi|
00002480  6e 64 6f 77 20 62 75 74  74 6f 6e 20 74 79 70 65  |ndow button type|
00002490  0d 00 e5 3c f2 6c 69 6e  6b 63 73 65 6c 74 65 78  |...<.linkcseltex|
000024a0  74 28 32 2c 57 69 6e 42  6c 6b 25 2c 32 37 29 20  |t(2,WinBlk%,27) |
000024b0  20 3a 20 f4 20 74 69 74  6c 65 20 66 6f 72 65 67  | : . title foreg|
000024c0  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 0d 00 e6 3c  |round colour...<|
000024d0  f2 6c 69 6e 6b 63 73 65  6c 74 65 78 74 28 33 2c  |.linkcseltext(3,|
000024e0  57 69 6e 42 6c 6b 25 2c  33 31 29 20 20 3a 20 f4  |WinBlk%,31)  : .|
000024f0  20 74 69 74 6c 65 20 62  61 63 6b 67 72 6f 75 6e  | title backgroun|
00002500  64 20 63 6f 6c 6f 75 72  0d 00 e7 40 f2 6c 69 6e  |d colour...@.lin|
00002510  6b 63 73 65 6c 74 65 78  74 28 34 2c 57 69 6e 42  |kcseltext(4,WinB|
00002520  6c 6b 25 2c 33 35 29 20  20 3a 20 f4 20 77 6f 72  |lk%,35)  : . wor|
00002530  6b 20 61 72 65 61 20 66  6f 72 65 67 72 6f 75 6e  |k area foregroun|
00002540  64 20 63 6f 6c 6f 75 72  0d 00 e8 40 f2 6c 69 6e  |d colour...@.lin|
00002550  6b 63 73 65 6c 74 65 78  74 28 35 2c 57 69 6e 42  |kcseltext(5,WinB|
00002560  6c 6b 25 2c 33 39 29 20  20 3a 20 f4 20 77 6f 72  |lk%,39)  : . wor|
00002570  6b 20 61 72 65 61 20 62  61 63 6b 67 72 6f 75 6e  |k area backgroun|
00002580  64 20 63 6f 6c 6f 75 72  0d 00 e9 3b f2 6c 69 6e  |d colour...;.lin|
00002590  6b 63 73 65 6c 74 65 78  74 28 36 2c 57 69 6e 42  |kcseltext(6,WinB|
000025a0  6c 6b 25 2c 34 33 29 20  20 3a 20 f4 20 73 63 72  |lk%,43)  : . scr|
000025b0  6f 6c 6c 62 61 72 20 69  6e 6e 65 72 20 63 6f 6c  |ollbar inner col|
000025c0  6f 75 72 0d 00 ea 3b f2  6c 69 6e 6b 63 73 65 6c  |our...;.linkcsel|
000025d0  74 65 78 74 28 37 2c 57  69 6e 42 6c 6b 25 2c 34  |text(7,WinBlk%,4|
000025e0  37 29 20 20 3a 20 f4 20  73 63 72 6f 6c 6c 62 61  |7)  : . scrollba|
000025f0  72 20 6f 75 74 65 72 20  63 6f 6c 6f 75 72 0d 00  |r outer colour..|
00002600  eb 37 f2 6c 69 6e 6b 63  73 65 6c 74 65 78 74 28  |.7.linkcseltext(|
00002610  38 2c 57 69 6e 42 6c 6b  25 2c 35 31 29 20 20 3a  |8,WinBlk%,51)  :|
00002620  20 f4 20 69 6e 70 75 74  20 66 6f 63 75 73 20 63  | . input focus c|
00002630  6f 6c 6f 75 72 0d 00 ec  44 44 65 66 57 25 3d a4  |olour...DDefW%=.|
00002640  6c 6f 61 64 74 65 6d 70  6c 61 74 65 28 22 44 65  |loadtemplate("De|
00002650  66 61 75 6c 74 57 69 6e  22 2c 57 69 6e 42 6c 6b  |faultWin",WinBlk|
00002660  25 2c 49 6e 64 69 72 45  6e 64 25 2c 49 6e 64 69  |%,IndirEnd%,Indi|
00002670  72 46 72 65 65 25 2c 31  29 0d 00 ed 42 53 61 76  |rFree%,1)...BSav|
00002680  65 57 25 3d a4 6c 6f 61  64 74 65 6d 70 6c 61 74  |eW%=.loadtemplat|
00002690  65 28 22 53 61 76 65 42  6f 78 22 2c 57 69 6e 42  |e("SaveBox",WinB|
000026a0  6c 6b 25 2c 49 6e 64 69  72 45 6e 64 25 2c 49 6e  |lk%,IndirEnd%,In|
000026b0  64 69 72 46 72 65 65 25  2c 31 29 0d 00 ee 47 46  |dirFree%,1)...GF|
000026c0  69 6c 65 4e 61 6d 65 25  3d 57 69 6e 42 6c 6b 25  |ileName%=WinBlk%|
000026d0  21 28 39 32 2b 31 2a 33  32 2b 32 30 29 20 20 3a  |!(92+1*32+20)  :|
000026e0  20 f4 20 70 6f 69 6e 74  65 72 20 74 6f 20 66 69  | . pointer to fi|
000026f0  6c 65 20 6e 61 6d 65 20  69 6e 20 73 61 76 65 62  |le name in saveb|
00002700  6f 78 0d 00 ef 45 49 63  49 6e 66 6f 57 25 3d a4  |ox...EIcInfoW%=.|
00002710  6c 6f 61 64 74 65 6d 70  6c 61 74 65 28 22 49 63  |loadtemplate("Ic|
00002720  6f 6e 49 6e 66 6f 22 2c  57 69 6e 42 6c 6b 25 2c  |onInfo",WinBlk%,|
00002730  49 6e 64 69 72 45 6e 64  25 2c 49 6e 64 69 72 46  |IndirEnd%,IndirF|
00002740  72 65 65 25 2c 31 29 0d  00 f0 32 f2 6c 69 6e 6b  |ree%,1)...2.link|
00002750  69 63 6f 6e 74 65 78 74  28 37 2c 57 69 6e 42 6c  |icontext(7,WinBl|
00002760  6b 25 2c 36 29 20 20 20  3a 20 f4 20 74 65 6d 70  |k%,6)   : . temp|
00002770  6c 61 74 65 20 6e 61 6d  65 0d 00 f1 30 f2 6c 69  |late name...0.li|
00002780  6e 6b 69 63 6f 6e 74 65  78 74 28 38 2c 57 69 6e  |nkicontext(8,Win|
00002790  42 6c 6b 25 2c 37 29 20  20 20 3a 20 f4 20 69 63  |Blk%,7)   : . ic|
000027a0  6f 6e 20 6e 75 6d 62 65  72 0d 00 f2 39 f2 6c 69  |on number...9.li|
000027b0  6e 6b 69 63 6f 6e 74 65  78 74 28 39 2c 57 69 6e  |nkicontext(9,Win|
000027c0  42 6c 6b 25 2c 39 29 20  20 20 3a 20 f4 20 6d 69  |Blk%,9)   : . mi|
000027d0  6e 69 6d 75 6d 20 78 20  63 6f 6f 72 64 69 6e 61  |nimum x coordina|
000027e0  74 65 0d 00 f3 39 f2 6c  69 6e 6b 69 63 6f 6e 74  |te...9.linkicont|
000027f0  65 78 74 28 32 36 2c 57  69 6e 42 6c 6b 25 2c 31  |ext(26,WinBlk%,1|
00002800  30 29 20 3a 20 f4 20 6d  61 78 69 6d 75 6d 20 78  |0) : . maximum x|
00002810  20 63 6f 6f 72 64 69 6e  61 74 65 0d 00 f4 39 f2  | coordinate...9.|
00002820  6c 69 6e 6b 69 63 6f 6e  74 65 78 74 28 31 30 2c  |linkicontext(10,|
00002830  57 69 6e 42 6c 6b 25 2c  31 31 29 20 3a 20 f4 20  |WinBlk%,11) : . |
00002840  6d 69 6e 69 6d 75 6d 20  79 20 63 6f 6f 72 64 69  |minimum y coordi|
00002850  6e 61 74 65 0d 00 f5 39  f2 6c 69 6e 6b 69 63 6f  |nate...9.linkico|
00002860  6e 74 65 78 74 28 32 37  2c 57 69 6e 42 6c 6b 25  |ntext(27,WinBlk%|
00002870  2c 38 29 20 20 3a 20 f4  20 6d 61 78 69 6d 75 6d  |,8)  : . maximum|
00002880  20 79 20 63 6f 6f 72 64  69 6e 61 74 65 0d 00 f6  | y coordinate...|
00002890  2e f2 6c 69 6e 6b 69 63  6f 6e 74 65 78 74 28 31  |..linkicontext(1|
000028a0  31 2c 57 69 6e 42 6c 6b  25 2c 31 32 29 20 3a 20  |1,WinBlk%,12) : |
000028b0  f4 20 69 63 6f 6e 20 73  69 7a 65 0d 00 f7 35 f2  |. icon size...5.|
000028c0  6c 69 6e 6b 69 63 6f 6e  74 65 78 74 28 32 34 2c  |linkicontext(24,|
000028d0  57 69 6e 42 6c 6b 25 2c  31 33 29 20 3a 20 f4 20  |WinBlk%,13) : . |
000028e0  70 6f 69 6e 74 65 72 20  70 6f 73 69 74 69 6f 6e  |pointer position|
000028f0  0d 00 f8 4d 57 6f 72 6b  57 25 3d a4 6c 6f 61 64  |...MWorkW%=.load|
00002900  74 65 6d 70 6c 61 74 65  28 22 57 6f 72 6b 41 72  |template("WorkAr|
00002910  65 61 22 2c 57 69 6e 42  6c 6b 25 2c 49 6e 64 69  |ea",WinBlk%,Indi|
00002920  72 45 6e 64 25 2c 49 6e  64 69 72 46 72 65 65 25  |rEnd%,IndirFree%|
00002930  2c 53 79 73 53 70 72 69  74 65 73 25 29 0d 00 f9  |,SysSprites%)...|
00002940  35 f2 6c 69 6e 6b 69 63  6f 6e 74 65 78 74 28 31  |5.linkicontext(1|
00002950  32 2c 57 69 6e 42 6c 6b  25 2c 31 30 29 20 3a 20  |2,WinBlk%,10) : |
00002960  f4 20 74 6f 70 20 6c 65  66 74 20 58 20 63 6f 6f  |. top left X coo|
00002970  72 64 0d 00 fa 35 f2 6c  69 6e 6b 69 63 6f 6e 74  |rd...5.linkicont|
00002980  65 78 74 28 31 33 2c 57  69 6e 42 6c 6b 25 2c 31  |ext(13,WinBlk%,1|
00002990  33 29 20 3a 20 f4 20 74  6f 70 20 6c 65 66 74 20  |3) : . top left |
000029a0  59 20 63 6f 6f 72 64 0d  00 fb 35 f2 6c 69 6e 6b  |Y coord...5.link|
000029b0  69 63 6f 6e 74 65 78 74  28 31 34 2c 57 69 6e 42  |icontext(14,WinB|
000029c0  6c 6b 25 2c 31 36 29 20  3a 20 f4 20 77 6f 72 6b  |lk%,16) : . work|
000029d0  20 61 72 65 61 20 58 20  73 69 7a 65 0d 00 fc 35  | area X size...5|
000029e0  f2 6c 69 6e 6b 69 63 6f  6e 74 65 78 74 28 31 35  |.linkicontext(15|
000029f0  2c 57 69 6e 42 6c 6b 25  2c 31 39 29 20 3a 20 f4  |,WinBlk%,19) : .|
00002a00  20 77 6f 72 6b 20 61 72  65 61 20 59 20 73 69 7a  | work area Y siz|
00002a10  65 0d 00 fd 2f f2 6c 69  6e 6b 69 63 6f 6e 74 65  |e.../.linkiconte|
00002a20  78 74 28 31 36 2c 57 69  6e 42 6c 6b 25 2c 32 32  |xt(16,WinBlk%,22|
00002a30  29 20 3a 20 f4 20 6d 69  6e 20 58 20 73 69 7a 65  |) : . min X size|
00002a40  0d 00 fe 2f f2 6c 69 6e  6b 69 63 6f 6e 74 65 78  |.../.linkicontex|
00002a50  74 28 31 37 2c 57 69 6e  42 6c 6b 25 2c 32 35 29  |t(17,WinBlk%,25)|
00002a60  20 3a 20 f4 20 6d 69 6e  20 59 20 73 69 7a 65 0d  | : . min Y size.|
00002a70  00 ff 4b 41 6c 69 67 6e  57 25 3d a4 6c 6f 61 64  |..KAlignW%=.load|
00002a80  74 65 6d 70 6c 61 74 65  28 22 41 6c 69 67 6e 22  |template("Align"|
00002a90  2c 57 69 6e 42 6c 6b 25  2c 49 6e 64 69 72 45 6e  |,WinBlk%,IndirEn|
00002aa0  64 25 2c 49 6e 64 69 72  46 72 65 65 25 2c 53 79  |d%,IndirFree%,Sy|
00002ab0  73 53 70 72 69 74 65 73  25 29 0d 01 00 36 f2 73  |sSprites%)...6.s|
00002ac0  65 6c 65 63 74 69 63 6f  6e 28 41 6c 69 67 6e 57  |electicon(AlignW|
00002ad0  25 2c 32 2c 31 29 20 20  20 20 20 3a 20 f4 20 73  |%,2,1)     : . s|
00002ae0  65 74 20 61 6c 69 67 6e  2d 6c 65 66 74 20 6f 6e  |et align-left on|
00002af0  0d 01 01 2f f2 73 65 6c  65 63 74 69 63 6f 6e 28  |.../.selecticon(|
00002b00  41 6c 69 67 6e 57 25 2c  38 2c 31 29 20 20 20 20  |AlignW%,8,1)    |
00002b10  20 3a 20 f4 20 6d 6f 76  65 20 69 63 6f 6e 73 0d  | : . move icons.|
00002b20  01 02 4f 4f 70 74 69 6f  6e 73 57 25 3d a4 6c 6f  |..OOptionsW%=.lo|
00002b30  61 64 74 65 6d 70 6c 61  74 65 28 22 4f 70 74 69  |adtemplate("Opti|
00002b40  6f 6e 73 22 2c 57 69 6e  42 6c 6b 25 2c 49 6e 64  |ons",WinBlk%,Ind|
00002b50  69 72 45 6e 64 25 2c 49  6e 64 69 72 46 72 65 65  |irEnd%,IndirFree|
00002b60  25 2c 53 79 73 53 70 72  69 74 65 73 25 29 0d 01  |%,SysSprites%)..|
00002b70  03 4f 4f 70 74 50 61 6e  65 57 25 3d a4 6c 6f 61  |.OOptPaneW%=.loa|
00002b80  64 74 65 6d 70 6c 61 74  65 28 22 4f 70 74 50 61  |dtemplate("OptPa|
00002b90  6e 65 22 2c 57 69 6e 42  6c 6b 25 2c 49 6e 64 69  |ne",WinBlk%,Indi|
00002ba0  72 45 6e 64 25 2c 49 6e  64 69 72 46 72 65 65 25  |rEnd%,IndirFree%|
00002bb0  2c 53 79 73 53 70 72 69  74 65 73 25 29 0d 01 04  |,SysSprites%)...|
00002bc0  39 f2 6c 69 6e 6b 69 63  6f 6e 74 65 78 74 28 32  |9.linkicontext(2|
00002bd0  38 2c 57 69 6e 42 6c 6b  25 2c 31 39 29 20 3a 20  |8,WinBlk%,19) : |
00002be0  f4 20 69 63 6f 6e 73 69  7a 65 20 67 72 69 64 20  |. iconsize grid |
00002bf0  58 20 73 69 7a 65 0d 01  05 39 f2 6c 69 6e 6b 69  |X size...9.linki|
00002c00  63 6f 6e 74 65 78 74 28  32 39 2c 57 69 6e 42 6c  |context(29,WinBl|
00002c10  6b 25 2c 32 33 29 20 3a  20 f4 20 69 63 6f 6e 73  |k%,23) : . icons|
00002c20  69 7a 65 20 67 72 69 64  20 59 20 73 69 7a 65 0d  |ize grid Y size.|
00002c30  01 06 38 f2 6c 69 6e 6b  69 63 6f 6e 74 65 78 74  |..8.linkicontext|
00002c40  28 33 30 2c 57 69 6e 42  6c 6b 25 2c 32 38 29 20  |(30,WinBlk%,28) |
00002c50  3a 20 f4 20 69 63 6f 6e  70 6f 73 20 67 72 69 64  |: . iconpos grid|
00002c60  20 58 20 73 69 7a 65 0d  01 07 38 f2 6c 69 6e 6b  | X size...8.link|
00002c70  69 63 6f 6e 74 65 78 74  28 33 31 2c 57 69 6e 42  |icontext(31,WinB|
00002c80  6c 6b 25 2c 33 32 29 20  3a 20 f4 20 69 63 6f 6e  |lk%,32) : . icon|
00002c90  70 6f 73 20 67 72 69 64  20 59 20 73 69 7a 65 0d  |pos grid Y size.|
00002ca0  01 08 4e 53 70 61 63 65  57 25 3d a4 6c 6f 61 64  |..NSpaceW%=.load|
00002cb0  74 65 6d 70 6c 61 74 65  28 22 53 70 61 63 65 6f  |template("Spaceo|
00002cc0  75 74 22 2c 57 69 6e 42  6c 6b 25 2c 49 6e 64 69  |ut",WinBlk%,Indi|
00002cd0  72 45 6e 64 25 2c 49 6e  64 69 72 46 72 65 65 25  |rEnd%,IndirFree%|
00002ce0  2c 53 79 73 53 70 72 69  74 65 73 25 29 0d 01 09  |,SysSprites%)...|
00002cf0  3b f2 73 65 6c 65 63 74  69 63 6f 6e 28 53 70 61  |;.selecticon(Spa|
00002d00  63 65 57 25 2c 33 2c 31  29 20 20 20 20 3a 20 f4  |ceW%,3,1)    : .|
00002d10  20 73 65 74 20 73 70 61  63 65 2d 76 65 72 74 69  | set space-verti|
00002d20  63 61 6c 6c 79 20 6f 6e  0d 01 0a 38 f2 73 65 6c  |cally on...8.sel|
00002d30  65 63 74 69 63 6f 6e 28  53 70 61 63 65 57 25 2c  |ecticon(SpaceW%,|
00002d40  34 2c 31 29 20 20 20 20  3a 20 f4 20 73 65 74 20  |4,1)    : . set |
00002d50  74 6f 20 66 69 78 65 64  20 73 70 61 63 69 6e 67  |to fixed spacing|
00002d60  0d 01 0b 37 f2 6c 69 6e  6b 69 63 6f 6e 74 65 78  |...7.linkicontex|
00002d70  74 28 31 38 2c 57 69 6e  42 6c 6b 25 2c 36 29 20  |t(18,WinBlk%,6) |
00002d80  3a 20 f4 20 73 70 61 63  65 20 62 65 74 77 65 65  |: . space betwee|
00002d90  6e 20 69 63 6f 6e 73 0d  01 0c 15 53 70 61 63 65  |n icons....Space|
00002da0  4f 75 74 5f 53 70 61 63  65 25 3d 34 0d 01 0d 27  |Out_Space%=4...'|
00002db0  f2 73 65 74 69 63 6f 6e  74 65 78 74 28 31 38 2c  |.seticontext(18,|
00002dc0  c3 28 53 70 61 63 65 4f  75 74 5f 53 70 61 63 65  |.(SpaceOut_Space|
00002dd0  25 29 29 0d 01 0e 15 f2  73 70 61 63 65 5f 73 68  |%)).....space_sh|
00002de0  61 64 65 69 63 6f 6e 73  0d 01 0f 4a 53 74 61 74  |adeicons...JStat|
00002df0  57 25 3d a4 6c 6f 61 64  74 65 6d 70 6c 61 74 65  |W%=.loadtemplate|
00002e00  28 22 53 74 61 74 73 22  2c 57 69 6e 42 6c 6b 25  |("Stats",WinBlk%|
00002e10  2c 49 6e 64 69 72 45 6e  64 25 2c 49 6e 64 69 72  |,IndirEnd%,Indir|
00002e20  46 72 65 65 25 2c 53 79  73 53 70 72 69 74 65 73  |Free%,SysSprites|
00002e30  25 29 0d 01 10 1b f2 73  65 6c 65 63 74 69 63 6f  |%).....selectico|
00002e40  6e 28 53 74 61 74 57 25  2c 31 2c 31 29 0d 01 11  |n(StatW%,1,1)...|
00002e50  46 53 74 64 49 63 6f 6e  57 25 3d a4 6c 6f 61 64  |FStdIconW%=.load|
00002e60  74 65 6d 70 6c 61 74 65  28 22 53 74 64 49 63 6f  |template("StdIco|
00002e70  6e 73 22 2c 57 69 6e 42  6c 6b 25 2c 49 6e 64 69  |ns",WinBlk%,Indi|
00002e80  72 45 6e 64 25 2c 49 6e  64 69 72 46 72 65 65 25  |rEnd%,IndirFree%|
00002e90  2c 31 29 0d 01 12 1d 4c  61 73 74 53 74 64 49 63  |,1)....LastStdIc|
00002ea0  6f 6e 25 3d 57 69 6e 42  6c 6b 25 21 38 38 2d 31  |on%=WinBlk%!88-1|
00002eb0  0d 01 13 43 44 69 61 6c  57 25 3d a4 6c 6f 61 64  |...CDialW%=.load|
00002ec0  74 65 6d 70 6c 61 74 65  28 22 44 69 61 6c 6f 67  |template("Dialog|
00002ed0  75 65 22 2c 57 69 6e 42  6c 6b 25 2c 49 6e 64 69  |ue",WinBlk%,Indi|
00002ee0  72 45 6e 64 25 2c 49 6e  64 69 72 46 72 65 65 25  |rEnd%,IndirFree%|
00002ef0  2c 31 29 0d 01 14 1d 44  69 61 6c 5f 4d 73 67 25  |,1)....Dial_Msg%|
00002f00  3d 57 69 6e 42 6c 6b 25  21 28 39 32 2b 32 30 29  |=WinBlk%!(92+20)|
00002f10  0d 01 15 49 44 69 61 6c  5f 42 75 74 74 6f 6e 31  |...IDial_Button1|
00002f20  25 3d 57 69 6e 42 6c 6b  25 21 28 39 32 2b 31 2a  |%=WinBlk%!(92+1*|
00002f30  33 32 2b 32 30 29 20 3a  20 f4 20 70 6f 69 6e 74  |32+20) : . point|
00002f40  65 72 20 74 6f 20 74 65  78 74 20 69 6e 20 6c 65  |er to text in le|
00002f50  66 74 20 62 75 74 74 6f  6e 0d 01 16 4b 44 69 61  |ft button...KDia|
00002f60  6c 5f 42 75 74 74 6f 6e  32 25 3d 57 69 6e 42 6c  |l_Button2%=WinBl|
00002f70  6b 25 21 28 39 32 2b 32  2a 33 32 2b 32 30 29 20  |k%!(92+2*32+20) |
00002f80  3a 20 f4 20 70 6f 69 6e  74 65 72 20 74 6f 20 74  |: . pointer to t|
00002f90  65 78 74 20 69 6e 20 6d  69 64 64 6c 65 20 62 75  |ext in middle bu|
00002fa0  74 74 6f 6e 0d 01 17 4a  44 69 61 6c 5f 42 75 74  |tton...JDial_But|
00002fb0  74 6f 6e 33 25 3d 57 69  6e 42 6c 6b 25 21 28 39  |ton3%=WinBlk%!(9|
00002fc0  32 2b 33 2a 33 32 2b 32  30 29 20 3a 20 f4 20 70  |2+3*32+20) : . p|
00002fd0  6f 69 6e 74 65 72 20 74  6f 20 74 65 78 74 20 69  |ointer to text i|
00002fe0  6e 20 72 69 67 68 74 20  62 75 74 74 6f 6e 0d 01  |n right button..|
00002ff0  18 2e f4 20 73 74 6f 72  65 20 63 6f 6c 6f 75 72  |... store colour|
00003000  73 20 61 6e 64 20 62 6f  72 64 65 72 20 66 6c 61  |s and border fla|
00003010  67 20 6f 66 20 62 75 74  74 6f 6e 73 0d 01 19 1a  |g of buttons....|
00003020  6d 61 73 6b 25 3d 28 31  3c 3c 32 29 2b 28 26 46  |mask%=(1<<2)+(&F|
00003030  46 3c 3c 32 34 29 0d 01  1a 33 44 69 61 6c 5f 42  |F<<24)...3Dial_B|
00003040  75 74 74 6f 6e 43 6f 6c  31 25 3d 28 57 69 6e 42  |uttonCol1%=(WinB|
00003050  6c 6b 25 21 28 39 32 2b  31 2a 33 32 2b 31 36 29  |lk%!(92+1*32+16)|
00003060  29 20 80 20 6d 61 73 6b  25 0d 01 1b 33 44 69 61  |) . mask%...3Dia|
00003070  6c 5f 42 75 74 74 6f 6e  43 6f 6c 32 25 3d 28 57  |l_ButtonCol2%=(W|
00003080  69 6e 42 6c 6b 25 21 28  39 32 2b 32 2a 33 32 2b  |inBlk%!(92+2*32+|
00003090  31 36 29 29 20 80 20 6d  61 73 6b 25 0d 01 1c 33  |16)) . mask%...3|
000030a0  44 69 61 6c 5f 42 75 74  74 6f 6e 43 6f 6c 33 25  |Dial_ButtonCol3%|
000030b0  3d 28 57 69 6e 42 6c 6b  25 21 28 39 32 2b 33 2a  |=(WinBlk%!(92+3*|
000030c0  33 32 2b 31 36 29 29 20  80 20 6d 61 73 6b 25 0d  |32+16)) . mask%.|
000030d0  01 1d 1b c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |..... "Wimp_Clos|
000030e0  65 54 65 6d 70 6c 61 74  65 22 0d 01 1e 1b f4 20  |eTemplate"..... |
000030f0  69 6e 69 74 69 61 6c 69  73 65 20 66 6f 6e 74 20  |initialise font |
00003100  75 73 61 67 65 0d 01 1f  10 e3 20 69 25 3d 30 20  |usage..... i%=0 |
00003110  b8 20 32 35 35 0d 01 20  13 20 20 e7 20 46 72 61  |. 255.. .  . Fra|
00003120  25 3f 69 25 3e 30 20 8c  0d 01 21 3d 20 20 20 20  |%?i%>0 ...!=    |
00003130  46 6f 6e 74 55 73 61 67  65 25 28 69 25 29 3d 31  |FontUsage%(i%)=1|
00003140  20 3a 20 f4 20 66 6f 6e  74 20 69 73 20 75 73 65  | : . font is use|
00003150  64 20 62 79 20 73 79 73  74 65 6d 20 74 65 6d 70  |d by system temp|
00003160  6c 61 74 65 73 0d 01 22  07 20 20 cc 0d 01 23 18  |lates..".  ...#.|
00003170  20 20 20 20 46 6f 6e 74  55 73 61 67 65 25 28 69  |    FontUsage%(i|
00003180  25 29 3d 30 0d 01 24 07  20 20 cd 0d 01 25 08 ed  |%)=0..$.  ...%..|
00003190  20 69 25 0d 01 26 0f f2  73 65 74 75 70 5f 6c 6f  | i%..&..setup_lo|
000031a0  61 64 0d 01 27 2c f2 73  65 6c 65 63 74 69 63 6f  |ad..',.selectico|
000031b0  6e 28 4f 70 74 50 61 6e  65 57 25 2c 31 33 2c 49  |n(OptPaneW%,13,I|
000031c0  63 49 6e 66 6f 5f 41 63  74 69 76 65 25 29 0d 01  |cInfo_Active%)..|
000031d0  28 28 f2 73 65 6c 65 63  74 69 63 6f 6e 28 4f 70  |((.selecticon(Op|
000031e0  74 50 61 6e 65 57 25 2c  31 31 2c 44 75 70 6c 4e  |tPaneW%,11,DuplN|
000031f0  61 6d 65 73 25 29 0d 01  29 24 f2 73 65 6c 65 63  |ames%)..)$.selec|
00003200  74 69 63 6f 6e 28 4f 70  74 50 61 6e 65 57 25 2c  |ticon(OptPaneW%,|
00003210  31 32 2c 48 61 74 63 68  25 29 0d 01 2a 2c f2 73  |12,Hatch%)..*,.s|
00003220  65 6c 65 63 74 69 63 6f  6e 28 4f 70 74 50 61 6e  |electicon(OptPan|
00003230  65 57 25 2c 31 36 2c 47  72 69 64 5f 53 69 7a 65  |eW%,16,Grid_Size|
00003240  4c 6f 63 6b 25 29 0d 01  2b 23 f2 73 65 74 69 63  |Lock%)..+#.setic|
00003250  6f 6e 74 65 78 74 28 32  38 2c c3 28 47 72 69 64  |ontext(28,.(Grid|
00003260  5f 53 69 7a 65 58 25 29  29 0d 01 2c 23 f2 73 65  |_SizeX%))..,#.se|
00003270  74 69 63 6f 6e 74 65 78  74 28 32 39 2c c3 28 47  |ticontext(29,.(G|
00003280  72 69 64 5f 53 69 7a 65  59 25 29 29 0d 01 2d 2b  |rid_SizeY%))..-+|
00003290  f2 73 65 6c 65 63 74 69  63 6f 6e 28 4f 70 74 50  |.selecticon(OptP|
000032a0  61 6e 65 57 25 2c 32 35  2c 47 72 69 64 5f 50 6f  |aneW%,25,Grid_Po|
000032b0  73 4c 6f 63 6b 25 29 0d  01 2e 22 f2 73 65 74 69  |sLock%)...".seti|
000032c0  63 6f 6e 74 65 78 74 28  33 30 2c c3 28 47 72 69  |context(30,.(Gri|
000032d0  64 5f 50 6f 73 58 25 29  29 0d 01 2f 22 f2 73 65  |d_PosX%))../".se|
000032e0  74 69 63 6f 6e 74 65 78  74 28 33 31 2c c3 28 47  |ticontext(31,.(G|
000032f0  72 69 64 5f 50 6f 73 59  25 29 29 0d 01 30 2e f2  |rid_PosY%))..0..|
00003300  73 65 6c 65 63 74 69 63  6f 6e 28 4f 70 74 50 61  |selecticon(OptPa|
00003310  6e 65 57 25 2c 31 34 2c  53 61 76 65 5f 55 6e 73  |neW%,14,Save_Uns|
00003320  65 6c 65 63 74 65 64 25  29 0d 01 31 2c f2 73 65  |elected%)..1,.se|
00003330  6c 65 63 74 69 63 6f 6e  28 4f 70 74 50 61 6e 65  |lecticon(OptPane|
00003340  57 25 2c 31 35 2c 44 65  6c 65 74 65 4f 75 74 73  |W%,15,DeleteOuts|
00003350  69 64 65 25 29 0d 01 32  28 f2 73 65 6c 65 63 74  |ide%)..2(.select|
00003360  69 63 6f 6e 28 4f 70 74  50 61 6e 65 57 25 2c 38  |icon(OptPaneW%,8|
00003370  2c 54 72 61 70 44 63 6c  69 63 6b 25 29 0d 01 33  |,TrapDclick%)..3|
00003380  11 f2 70 72 65 70 61 72  65 6d 65 6e 75 73 0d 01  |..preparemenus..|
00003390  34 28 f2 73 75 70 70 6f  72 74 69 6e 74 65 72 66  |4(.supportinterf|
000033a0  61 63 65 28 53 75 70 70  6f 72 74 49 6e 74 65 72  |ace(SupportInter|
000033b0  66 61 63 65 25 29 0d 01  35 14 41 45 48 72 65 67  |face%)..5.AEHreg|
000033c0  69 73 74 65 72 65 64 25  3d a3 0d 01 36 1c f2 73  |istered%=...6..s|
000033d0  75 70 70 6f 72 74 61 65  68 28 53 75 70 70 6f 72  |upportaeh(Suppor|
000033e0  74 41 45 48 25 29 0d 01  37 13 f2 72 65 61 64 73  |tAEH%)..7..reads|
000033f0  63 72 65 65 6e 76 61 72  73 0d 01 38 3a f4 20 67  |creenvars..8:. g|
00003400  65 74 20 66 69 6c 65 6e  61 6d 65 20 74 68 61 74  |et filename that|
00003410  20 77 61 73 20 67 69 76  65 6e 20 61 73 20 61 72  | was given as ar|
00003420  67 75 6d 65 6e 74 20 77  69 74 68 20 63 6f 6d 6d  |gument with comm|
00003430  61 6e 64 0d 01 39 1c c8  99 20 22 4f 53 5f 47 65  |and..9... "OS_Ge|
00003440  74 45 6e 76 22 20 b8 20  63 6d 64 73 74 72 25 0d  |tEnv" . cmdstr%.|
00003450  01 3a 15 66 6e 24 3d a4  73 74 72 28 63 6d 64 73  |.:.fn$=.str(cmds|
00003460  74 72 25 29 0d 01 3b 15  70 25 3d a7 66 6e 24 2c  |tr%)..;.p%=.fn$,|
00003470  41 70 70 6c 44 69 72 24  29 0d 01 3c 1f 70 25 3d  |ApplDir$)..<.p%=|
00003480  a7 66 6e 24 2c 22 20 22  2c 70 25 2b a9 28 41 70  |.fn$," ",p%+.(Ap|
00003490  70 6c 44 69 72 24 29 29  0d 01 3d 0c e7 20 70 25  |plDir$))..=.. p%|
000034a0  3e 30 20 8c 0d 01 3e 14  20 20 66 6e 24 3d c1 66  |>0 ...>.  fn$=.f|
000034b0  6e 24 2c 70 25 2b 31 29  0d 01 3f 15 20 20 70 25  |n$,p%+1)..?.  p%|
000034c0  3d a7 66 6e 24 2c 22 20  22 2c 70 25 29 0d 01 40  |=.fn$," ",p%)..@|
000034d0  14 20 20 66 6e 24 3d c0  66 6e 24 2c 70 25 2d 31  |.  fn$=.fn$,p%-1|
000034e0  29 0d 01 41 12 20 20 e7  20 a9 28 66 6e 24 29 3e  |)..A.  . .(fn$)>|
000034f0  30 20 8c 0d 01 42 41 20  20 20 20 f2 74 65 6d 70  |0 ...BA    .temp|
00003500  6c 5f 6c 6f 61 64 66 69  6c 65 28 66 6e 24 2c 31  |l_loadfile(fn$,1|
00003510  29 20 3a 20 f4 20 66 6f  75 6e 64 20 66 69 6c 65  |) : . found file|
00003520  6e 61 6d 65 20 2d 20 6c  6f 61 64 20 74 68 65 20  |name - load the |
00003530  66 69 6c 65 0d 01 43 1a  20 20 20 20 f2 73 65 74  |file..C.    .set|
00003540  6d 61 69 6e 66 6e 61 6d  65 28 66 6e 24 29 0d 01  |mainfname(fn$)..|
00003550  44 07 20 20 cd 0d 01 45  05 cc 0d 01 46 10 20 20  |D.  ...E....F.  |
00003560  f2 73 65 74 65 78 74 65  6e 74 0d 01 47 05 cd 0d  |.setextent..G...|
00003570  01 48 05 e1 0d 01 49 04  0d 01 4a 1e dd 20 f2 6b  |.H....I...J.. .k|
00003580  65 79 28 77 69 6e 64 6f  77 25 2c 69 63 6f 6e 25  |ey(window%,icon%|
00003590  2c 6b 65 79 25 29 0d 01  4b 49 ea 20 69 25 2c 77  |,key%)..KI. i%,w|
000035a0  61 73 6c 61 73 74 25 2c  64 78 25 2c 64 79 25 2c  |aslast%,dx%,dy%,|
000035b0  6e 6f 25 2c 68 65 6c 70  24 2c 78 6d 69 6e 25 2c  |no%,help$,xmin%,|
000035c0  79 6d 69 6e 25 2c 78 6d  61 78 25 2c 79 6d 61 78  |ymin%,xmax%,ymax|
000035d0  25 2c 78 73 74 65 70 25  2c 79 73 74 65 70 25 0d  |%,xstep%,ystep%.|
000035e0  01 4c 24 e7 20 28 6b 65  79 25 3d 32 37 29 20 80  |.L$. (key%=27) .|
000035f0  20 28 44 72 61 67 5f 54  79 70 65 25 3c 3e 2d 31  | (Drag_Type%<>-1|
00003600  29 20 8c 0d 01 4d 10 20  20 f2 61 62 6f 72 74 64  |) ...M.  .abortd|
00003610  72 61 67 0d 01 4e 05 cc  0d 01 4f 12 20 20 c8 8e  |rag..N....O.  ..|
00003620  20 77 69 6e 64 6f 77 25  20 ca 0d 01 50 10 20 20  | window% ...P.  |
00003630  20 20 c9 20 49 63 45 64  57 25 0d 01 51 13 20 20  |  . IcEdW%..Q.  |
00003640  20 20 20 20 c8 8e 20 6b  65 79 25 20 ca 0d 01 52  |    .. key% ...R|
00003650  30 20 20 20 20 20 20 20  20 c9 20 26 31 38 45 2c  |0        . &18E,|
00003660  26 31 38 41 2c 31 33 20  3a 20 f4 20 64 6f 77 6e  |&18A,13 : . down|
00003670  2c 20 74 61 62 2c 20 72  65 74 75 72 6e 0d 01 53  |, tab, return..S|
00003680  19 20 20 20 20 20 20 20  20 20 20 e7 20 69 63 6f  |.          . ico|
00003690  6e 25 3e 30 20 8c 0d 01  54 18 20 20 20 20 20 20  |n%>0 ...T.      |
000036a0  20 20 20 20 20 20 69 25  3d 69 63 6f 6e 25 0d 01  |      i%=icon%..|
000036b0  55 1a 20 20 20 20 20 20  20 20 20 20 20 20 77 61  |U.            wa|
000036c0  73 6c 61 73 74 25 3d a3  0d 01 56 11 20 20 20 20  |slast%=...V.    |
000036d0  20 20 20 20 20 20 20 20  f5 0d 01 57 1b 20 20 20  |        ...W.   |
000036e0  20 20 20 20 20 20 20 20  20 20 20 e7 20 69 25 3d  |           . i%=|
000036f0  32 36 20 8c 0d 01 58 19  20 20 20 20 20 20 20 20  |26 ...X.        |
00003700  20 20 20 20 20 20 20 20  69 25 3d 32 33 0d 01 59  |        i%=23..Y|
00003710  35 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |5               |
00003720  20 77 61 73 6c 61 73 74  25 3d b9 20 3a 20 f4 20  | waslast%=. : . |
00003730  63 61 72 65 74 20 77 65  6e 74 20 22 72 6f 75 6e  |caret went "roun|
00003740  64 22 0d 01 5a 13 20 20  20 20 20 20 20 20 20 20  |d"..Z.          |
00003750  20 20 20 20 cc 0d 01 5b  19 20 20 20 20 20 20 20  |    ...[.       |
00003760  20 20 20 20 20 20 20 20  20 69 25 2b 3d 31 0d 01  |         i%+=1..|
00003770  5c 13 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |\.              |
00003780  cd 0d 01 5d 39 20 20 20  20 20 20 20 20 20 20 20  |...]9           |
00003790  20 fd 20 28 ac 20 a4 69  63 6f 6e 73 68 61 64 65  | . (. .iconshade|
000037a0  64 28 49 63 45 64 57 25  2c 69 25 29 29 20 84 20  |d(IcEdW%,i%)) . |
000037b0  28 69 25 3d 69 63 6f 6e  25 29 0d 01 5e 28 20 20  |(i%=icon%)..^(  |
000037c0  20 20 20 20 20 20 20 20  20 20 e7 20 77 61 73 6c  |          . wasl|
000037d0  61 73 74 25 20 80 20 28  6b 65 79 25 3d 31 33 29  |ast% . (key%=13)|
000037e0  20 8c 0d 01 5f 29 20 20  20 20 20 20 20 20 20 20  | ..._)          |
000037f0  20 20 20 20 f2 73 65 6c  65 63 74 69 63 6f 6e 28  |    .selecticon(|
00003800  49 63 45 64 57 25 2c 39  2c 31 29 0d 01 60 23 20  |IcEdW%,9,1)..`# |
00003810  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 69 63  |             .ic|
00003820  65 64 5f 72 65 61 64 77  69 6e 28 2d 31 29 0d 01  |ed_readwin(-1)..|
00003830  61 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |a)              |
00003840  f2 73 65 6c 65 63 74 69  63 6f 6e 28 49 63 45 64  |.selecticon(IcEd|
00003850  57 25 2c 39 2c 30 29 0d  01 62 1a 20 20 20 20 20  |W%,9,0)..b.     |
00003860  20 20 20 20 20 20 20 20  20 69 25 3d 69 63 6f 6e  |         i%=icon|
00003870  25 0d 01 63 11 20 20 20  20 20 20 20 20 20 20 20  |%..c.           |
00003880  20 cd 0d 01 64 24 20 20  20 20 20 20 20 20 20 20  | ...d$          |
00003890  20 20 f2 73 65 74 63 61  72 65 74 28 49 63 45 64  |  .setcaret(IcEd|
000038a0  57 25 2c 69 25 29 0d 01  65 0f 20 20 20 20 20 20  |W%,i%)..e.      |
000038b0  20 20 20 20 cd 0d 01 66  29 20 20 20 20 20 20 20  |    ...f)       |
000038c0  20 c9 20 26 31 38 46 2c  26 31 39 41 20 3a 20 f4  | . &18F,&19A : .|
000038d0  20 75 70 2c 20 73 68 69  66 74 2b 74 61 62 0d 01  | up, shift+tab..|
000038e0  67 19 20 20 20 20 20 20  20 20 20 20 e7 20 69 63  |g.          . ic|
000038f0  6f 6e 25 3e 30 20 8c 0d  01 68 18 20 20 20 20 20  |on%>0 ...h.     |
00003900  20 20 20 20 20 20 20 69  25 3d 69 63 6f 6e 25 0d  |       i%=icon%.|
00003910  01 69 11 20 20 20 20 20  20 20 20 20 20 20 20 f5  |.i.            .|
00003920  0d 01 6a 1b 20 20 20 20  20 20 20 20 20 20 20 20  |..j.            |
00003930  20 20 e7 20 69 25 3d 32  33 20 8c 0d 01 6b 19 20  |  . i%=23 ...k. |
00003940  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
00003950  25 3d 32 36 0d 01 6c 13  20 20 20 20 20 20 20 20  |%=26..l.        |
00003960  20 20 20 20 20 20 cc 0d  01 6d 19 20 20 20 20 20  |      ...m.     |
00003970  20 20 20 20 20 20 20 20  20 20 20 69 25 2d 3d 31  |           i%-=1|
00003980  0d 01 6e 13 20 20 20 20  20 20 20 20 20 20 20 20  |..n.            |
00003990  20 20 cd 0d 01 6f 39 20  20 20 20 20 20 20 20 20  |  ...o9         |
000039a0  20 20 20 fd 20 28 ac 20  a4 69 63 6f 6e 73 68 61  |   . (. .iconsha|
000039b0  64 65 64 28 49 63 45 64  57 25 2c 69 25 29 29 20  |ded(IcEdW%,i%)) |
000039c0  84 20 28 69 25 3d 69 63  6f 6e 25 29 0d 01 70 24  |. (i%=icon%)..p$|
000039d0  20 20 20 20 20 20 20 20  20 20 20 20 f2 73 65 74  |            .set|
000039e0  63 61 72 65 74 28 49 63  45 64 57 25 2c 69 25 29  |caret(IcEdW%,i%)|
000039f0  0d 01 71 0f 20 20 20 20  20 20 20 20 20 20 cd 0d  |..q.          ..|
00003a00  01 72 19 20 20 20 20 20  20 20 20 c9 20 26 31 38  |.r.        . &18|
00003a10  31 20 3a 20 f4 20 46 31  0d 01 73 30 20 20 20 20  |1 : . F1..s0    |
00003a20  20 20 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 47  |      .. "Wimp_G|
00003a30  65 74 50 6f 69 6e 74 65  72 49 6e 66 6f 22 2c 2c  |etPointerInfo",,|
00003a40  50 74 72 49 6e 66 6f 25  0d 01 74 24 20 20 20 20  |PtrInfo%..t$    |
00003a50  20 20 20 20 20 20 e7 20  50 74 72 49 6e 66 6f 25  |      . PtrInfo%|
00003a60  21 31 32 3d 49 63 45 64  57 25 20 8c 0d 01 75 18  |!12=IcEdW% ...u.|
00003a70  20 20 20 20 20 20 20 20  20 20 20 20 68 65 6c 70  |            help|
00003a80  24 3d 22 22 0d 01 76 20  20 20 20 20 20 20 20 20  |$=""..v         |
00003a90  20 20 20 20 c8 8e 20 50  74 72 49 6e 66 6f 25 21  |    .. PtrInfo%!|
00003aa0  31 36 20 ca 0d 01 77 36  20 20 20 20 20 20 20 20  |16 ...w6        |
00003ab0  20 20 20 20 20 20 c9 20  31 34 20 20 20 20 20 20  |      . 14      |
00003ac0  20 20 20 20 20 20 3a 20  68 65 6c 70 24 3d 22 49  |      : help$="I|
00003ad0  6e 64 69 72 65 63 74 65  64 22 0d 01 78 36 20 20  |ndirected"..x6  |
00003ae0  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 33 2c  |            . 3,|
00003af0  32 35 20 20 20 20 20 20  20 20 20 20 3a 20 68 65  |25          : he|
00003b00  6c 70 24 3d 22 56 61 6c  69 64 61 74 69 6f 6e 22  |lp$="Validation"|
00003b10  0d 01 79 33 20 20 20 20  20 20 20 20 20 20 20 20  |..y3            |
00003b20  20 20 c9 20 34 2c 32 36  20 20 20 20 20 20 20 20  |  . 4,26        |
00003b30  20 20 3a 20 68 65 6c 70  24 3d 22 4d 61 78 73 69  |  : help$="Maxsi|
00003b40  7a 65 22 0d 01 7a 32 20  20 20 20 20 20 20 20 20  |ze"..z2         |
00003b50  20 20 20 20 20 c9 20 31  35 20 20 20 20 20 20 20  |     . 15       |
00003b60  20 20 20 20 20 3a 20 68  65 6c 70 24 3d 22 42 6f  |     : help$="Bo|
00003b70  72 64 65 72 22 0d 01 7b  32 20 20 20 20 20 20 20  |rder"..{2       |
00003b80  20 20 20 20 20 20 20 c9  20 31 36 20 20 20 20 20  |       . 16     |
00003b90  20 20 20 20 20 20 20 3a  20 68 65 6c 70 24 3d 22  |       : help$="|
00003ba0  46 69 6c 6c 65 64 22 0d  01 7c 34 20 20 20 20 20  |Filled"..|4     |
00003bb0  20 20 20 20 20 20 20 20  20 c9 20 31 37 20 20 20  |         . 17   |
00003bc0  20 20 20 20 20 20 20 20  20 3a 20 68 65 6c 70 24  |         : help$|
00003bd0  3d 22 48 63 65 6e 74 72  65 64 22 0d 01 7d 34 20  |="Hcentred"..}4 |
00003be0  20 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 31  |             . 1|
00003bf0  38 20 20 20 20 20 20 20  20 20 20 20 20 3a 20 68  |8            : h|
00003c00  65 6c 70 24 3d 22 56 63  65 6e 74 72 65 64 22 0d  |elp$="Vcentred".|
00003c10  01 7e 36 20 20 20 20 20  20 20 20 20 20 20 20 20  |.~6             |
00003c20  20 c9 20 31 39 20 20 20  20 20 20 20 20 20 20 20  | . 19           |
00003c30  20 3a 20 68 65 6c 70 24  3d 22 52 6a 75 73 74 69  | : help$="Rjusti|
00003c40  66 69 65 64 22 0d 01 7f  35 20 20 20 20 20 20 20  |fied"...5       |
00003c50  20 20 20 20 20 20 20 c9  20 32 30 20 20 20 20 20  |       . 20     |
00003c60  20 20 20 20 20 20 20 3a  20 68 65 6c 70 24 3d 22  |       : help$="|
00003c70  4e 65 65 64 73 68 65 6c  70 22 0d 01 80 37 20 20  |Needshelp"...7  |
00003c80  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 32 31  |            . 21|
00003c90  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 68 65  |            : he|
00003ca0  6c 70 24 3d 22 41 6c 6c  6f 77 61 64 6a 75 73 74  |lp$="Allowadjust|
00003cb0  22 0d 01 81 34 20 20 20  20 20 20 20 20 20 20 20  |"...4           |
00003cc0  20 20 20 c9 20 32 32 20  20 20 20 20 20 20 20 20  |   . 22         |
00003cd0  20 20 20 3a 20 68 65 6c  70 24 3d 22 48 61 6c 66  |   : help$="Half|
00003ce0  73 69 7a 65 22 0d 01 82  36 20 20 20 20 20 20 20  |size"...6       |
00003cf0  20 20 20 20 20 20 20 c9  20 35 2c 32 37 2c 32 38  |       . 5,27,28|
00003d00  2c 32 39 20 20 20 20 3a  20 68 65 6c 70 24 3d 22  |,29    : help$="|
00003d10  42 75 74 74 6f 6e 74 79  70 65 22 0d 01 83 2f 20  |Buttontype".../ |
00003d20  20 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 36  |             . 6|
00003d30  2c 33 30 2c 33 31 2c 33  32 20 20 20 20 3a 20 68  |,30,31,32    : h|
00003d40  65 6c 70 24 3d 22 45 53  47 22 0d 01 84 32 20 20  |elp$="ESG"...2  |
00003d50  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 33 39  |            . 39|
00003d60  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 68 65  |            : he|
00003d70  6c 70 24 3d 22 53 68 61  64 65 64 22 0d 01 85 31  |lp$="Shaded"...1|
00003d80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 c9 20  |              . |
00003d90  37 2c 33 33 2c 33 34 2c  33 35 20 20 20 20 3a 20  |7,33,34,35    : |
00003da0  68 65 6c 70 24 3d 22 46  67 63 6f 6c 22 0d 01 86  |help$="Fgcol"...|
00003db0  31 20 20 20 20 20 20 20  20 20 20 20 20 20 20 c9  |1              .|
00003dc0  20 38 2c 33 36 2c 33 37  2c 33 38 20 20 20 20 3a  | 8,36,37,38    :|
00003dd0  20 68 65 6c 70 24 3d 22  42 67 63 6f 6c 22 0d 01  | help$="Bgcol"..|
00003de0  87 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.0              |
00003df0  c9 20 34 31 20 20 20 20  20 20 20 20 20 20 20 20  |. 41            |
00003e00  3a 20 68 65 6c 70 24 3d  22 46 6f 6e 74 22 0d 01  |: help$="Font"..|
00003e10  88 31 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.1              |
00003e20  c9 20 31 20 20 20 20 20  20 20 20 20 20 20 20 20  |. 1             |
00003e30  3a 20 68 65 6c 70 24 3d  22 46 6c 61 67 73 22 0d  |: help$="Flags".|
00003e40  01 89 11 20 20 20 20 20  20 20 20 20 20 20 20 cb  |...            .|
00003e50  0d 01 8a 1d 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00003e60  e7 20 68 65 6c 70 24 3c  3e 22 22 20 8c 0d 01 8b  |. help$<>"" ....|
00003e70  35 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |5              .|
00003e80  61 73 6b 68 65 6c 70 28  22 54 65 6d 70 6c 45 64  |askhelp("TemplEd|
00003e90  2e 49 63 6f 6e 49 6e 66  6f 5f 22 2b 68 65 6c 70  |.IconInfo_"+help|
00003ea0  24 29 0d 01 8c 11 20 20  20 20 20 20 20 20 20 20  |$)....          |
00003eb0  20 20 cd 0d 01 8d 0f 20  20 20 20 20 20 20 20 20  |  .....         |
00003ec0  20 cd 0d 01 8e 19 20 20  20 20 20 20 20 20 c9 20  | .....        . |
00003ed0  26 31 38 32 20 3a 20 f4  20 46 32 0d 01 8f 25 20  |&182 : . F2...% |
00003ee0  20 20 20 20 20 20 20 20  20 f2 73 65 6c 65 63 74  |         .select|
00003ef0  69 63 6f 6e 28 49 63 45  64 57 25 2c 39 2c 31 29  |icon(IcEdW%,9,1)|
00003f00  0d 01 90 1f 20 20 20 20  20 20 20 20 20 20 f2 69  |....          .i|
00003f10  63 65 64 5f 72 65 61 64  77 69 6e 28 2d 31 29 0d  |ced_readwin(-1).|
00003f20  01 91 25 20 20 20 20 20  20 20 20 20 20 f2 73 65  |..%          .se|
00003f30  6c 65 63 74 69 63 6f 6e  28 49 63 45 64 57 25 2c  |lecticon(IcEdW%,|
00003f40  39 2c 30 29 0d 01 92 19  20 20 20 20 20 20 20 20  |9,0)....        |
00003f50  c9 20 26 31 38 33 20 3a  20 f4 20 46 33 0d 01 93  |. &183 : . F3...|
00003f60  26 20 20 20 20 20 20 20  20 20 20 f2 73 65 6c 65  |&          .sele|
00003f70  63 74 69 63 6f 6e 28 49  63 45 64 57 25 2c 31 30  |cticon(IcEdW%,10|
00003f80  2c 31 29 0d 01 94 1f 20  20 20 20 20 20 20 20 20  |,1)....         |
00003f90  20 f2 69 63 65 64 5f 72  65 61 64 77 69 6e 28 2d  | .iced_readwin(-|
00003fa0  31 29 0d 01 95 26 20 20  20 20 20 20 20 20 20 20  |1)...&          |
00003fb0  f2 73 65 6c 65 63 74 69  63 6f 6e 28 49 63 45 64  |.selecticon(IcEd|
00003fc0  57 25 2c 31 30 2c 30 29  0d 01 96 22 20 20 20 20  |W%,10,0)..."    |
00003fd0  20 20 20 20 20 20 f2 63  6c 6f 73 65 77 69 6e 64  |      .closewind|
00003fe0  6f 77 28 49 63 45 64 57  25 29 0d 01 97 25 20 20  |ow(IcEdW%)...%  |
00003ff0  20 20 20 20 20 20 20 20  f2 73 65 74 63 61 72 65  |        .setcare|
00004000  74 28 49 63 45 64 5f 57  69 6e 25 2c 2d 31 29 0d  |t(IcEd_Win%,-1).|
00004010  01 98 21 20 20 20 20 20  20 20 20 c9 20 26 31 38  |..!        . &18|
00004020  34 2c 32 37 20 3a 20 f4  20 46 34 2c 20 45 73 63  |4,27 : . F4, Esc|
00004030  0d 01 99 26 20 20 20 20  20 20 20 20 20 20 f2 73  |...&          .s|
00004040  65 6c 65 63 74 69 63 6f  6e 28 49 63 45 64 57 25  |electicon(IcEdW%|
00004050  2c 31 31 2c 31 29 0d 01  9a 22 20 20 20 20 20 20  |,11,1)..."      |
00004060  20 20 20 20 f2 63 6c 6f  73 65 77 69 6e 64 6f 77  |    .closewindow|
00004070  28 49 63 45 64 57 25 29  0d 01 9b 26 20 20 20 20  |(IcEdW%)...&    |
00004080  20 20 20 20 20 20 f2 73  65 6c 65 63 74 69 63 6f  |      .selectico|
00004090  6e 28 49 63 45 64 57 25  2c 31 31 2c 30 29 0d 01  |n(IcEdW%,11,0)..|
000040a0  9c 25 20 20 20 20 20 20  20 20 20 20 f2 73 65 74  |.%          .set|
000040b0  63 61 72 65 74 28 49 63  45 64 5f 57 69 6e 25 2c  |caret(IcEd_Win%,|
000040c0  2d 31 29 0d 01 9d 0d 20  20 20 20 20 20 20 20 7f  |-1)....        .|
000040d0  0d 01 9e 27 20 20 20 20  20 20 20 20 20 20 c8 99  |...'          ..|
000040e0  20 22 57 69 6d 70 5f 50  72 6f 63 65 73 73 4b 65  | "Wimp_ProcessKe|
000040f0  79 22 2c 6b 65 79 25 0d  01 9f 0b 20 20 20 20 20  |y",key%....     |
00004100  20 cb 0d 01 a0 11 20 20  20 20 c9 20 57 69 6e 45  | .....    . WinE|
00004110  64 57 25 0d 01 a1 13 20  20 20 20 20 20 c8 8e 20  |dW%....      .. |
00004120  6b 65 79 25 20 ca 0d 01  a2 17 20 20 20 20 20 20  |key% .....      |
00004130  20 20 c9 20 26 31 38 31  20 20 20 20 20 0d 01 a3  |  . &181     ...|
00004140  30 20 20 20 20 20 20 20  20 20 20 c8 99 20 22 57  |0          .. "W|
00004150  69 6d 70 5f 47 65 74 50  6f 69 6e 74 65 72 49 6e  |imp_GetPointerIn|
00004160  66 6f 22 2c 2c 50 74 72  49 6e 66 6f 25 0d 01 a4  |fo",,PtrInfo%...|
00004170  25 20 20 20 20 20 20 20  20 20 20 e7 20 50 74 72  |%          . Ptr|
00004180  49 6e 66 6f 25 21 31 32  3d 57 69 6e 45 64 57 25  |Info%!12=WinEdW%|
00004190  20 8c 0d 01 a5 18 20 20  20 20 20 20 20 20 20 20  | .....          |
000041a0  20 20 68 65 6c 70 24 3d  22 22 0d 01 a6 20 20 20  |  help$=""...   |
000041b0  20 20 20 20 20 20 20 20  20 20 c8 8e 20 50 74 72  |          .. Ptr|
000041c0  49 6e 66 6f 25 21 31 36  20 ca 0d 01 a7 34 20 20  |Info%!16 ....4  |
000041d0  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 34 20  |            . 4 |
000041e0  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 68 65  |            : he|
000041f0  6c 70 24 3d 22 4d 6f 76  65 61 62 6c 65 22 0d 01  |lp$="Moveable"..|
00004200  a8 37 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.7              |
00004210  c9 20 35 20 20 20 20 20  20 20 20 20 20 20 20 20  |. 5             |
00004220  3a 20 68 65 6c 70 24 3d  22 41 75 74 6f 2d 72 65  |: help$="Auto-re|
00004230  64 72 61 77 22 0d 01 a9  33 20 20 20 20 20 20 20  |draw"...3       |
00004240  20 20 20 20 20 20 20 c9  20 36 20 20 20 20 20 20  |       . 6      |
00004250  20 20 20 20 20 20 20 3a  20 68 65 6c 70 24 3d 22  |       : help$="|
00004260  48 6f 74 6b 65 79 73 22  0d 01 aa 30 20 20 20 20  |Hotkeys"...0    |
00004270  20 20 20 20 20 20 20 20  20 20 c9 20 37 20 20 20  |          . 7   |
00004280  20 20 20 20 20 20 20 20  20 20 3a 20 68 65 6c 70  |          : help|
00004290  24 3d 22 50 61 6e 65 22  0d 01 ab 34 20 20 20 20  |$="Pane"...4    |
000042a0  20 20 20 20 20 20 20 20  20 20 c9 20 38 20 20 20  |          . 8   |
000042b0  20 20 20 20 20 20 20 20  20 20 3a 20 68 65 6c 70  |          : help|
000042c0  24 3d 22 4e 6f 62 6f 75  6e 64 73 22 0d 01 ac 30  |$="Nobounds"...0|
000042d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 c9 20  |              . |
000042e0  39 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |9             : |
000042f0  68 65 6c 70 24 3d 22 47  43 4f 4c 22 0d 01 ad 36  |help$="GCOL"...6|
00004300  20 20 20 20 20 20 20 20  20 20 20 20 20 20 c9 20  |              . |
00004310  31 30 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |10            : |
00004320  68 65 6c 70 24 3d 22 42  61 63 6b 77 69 6e 64 6f  |help$="Backwindo|
00004330  77 22 0d 01 ae 32 20 20  20 20 20 20 20 20 20 20  |w"...2          |
00004340  20 20 20 20 c9 20 31 31  2c 31 32 20 20 20 20 20  |    . 11,12     |
00004350  20 20 20 20 3a 20 68 65  6c 70 24 3d 22 53 63 72  |    : help$="Scr|
00004360  6f 6c 6c 22 0d 01 af 36  20 20 20 20 20 20 20 20  |oll"...6        |
00004370  20 20 20 20 20 20 c9 20  31 2c 32 31 2c 32 32 2c  |      . 1,21,22,|
00004380  32 33 2c 32 34 20 3a 20  68 65 6c 70 24 3d 22 42  |23,24 : help$="B|
00004390  75 74 74 6f 6e 74 79 70  65 22 0d 01 b0 35 20 20  |uttontype"...5  |
000043a0  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 32 30  |            . 20|
000043b0  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 68 65  |            : he|
000043c0  6c 70 24 3d 22 4e 65 77  66 6f 72 6d 61 74 22 0d  |lp$="Newformat".|
000043d0  01 b1 11 20 20 20 20 20  20 20 20 20 20 20 20 cb  |...            .|
000043e0  0d 01 b2 1d 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
000043f0  e7 20 68 65 6c 70 24 3c  3e 22 22 20 8c 0d 01 b3  |. help$<>"" ....|
00004400  34 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |4              .|
00004410  61 73 6b 68 65 6c 70 28  22 54 65 6d 70 6c 45 64  |askhelp("TemplEd|
00004420  2e 57 69 6e 49 6e 66 6f  5f 22 2b 68 65 6c 70 24  |.WinInfo_"+help$|
00004430  29 0d 01 b4 11 20 20 20  20 20 20 20 20 20 20 20  |)....           |
00004440  20 cd 0d 01 b5 0f 20 20  20 20 20 20 20 20 20 20  | .....          |
00004450  cd 0d 01 b6 15 20 20 20  20 20 20 20 20 c9 20 26  |.....        . &|
00004460  31 38 32 2c 31 33 0d 01  b7 27 20 20 20 20 20 20  |182,13...'      |
00004470  20 20 20 20 f2 73 65 6c  65 63 74 69 63 6f 6e 28  |    .selecticon(|
00004480  57 69 6e 45 64 57 25 2c  35 33 2c 31 29 0d 01 b8  |WinEdW%,53,1)...|
00004490  1c 20 20 20 20 20 20 20  20 20 20 f2 77 69 6e 65  |.          .wine|
000044a0  64 5f 72 65 61 64 77 69  6e 0d 01 b9 27 20 20 20  |d_readwin...'   |
000044b0  20 20 20 20 20 20 20 f2  73 65 6c 65 63 74 69 63  |       .selectic|
000044c0  6f 6e 28 57 69 6e 45 64  57 25 2c 35 33 2c 30 29  |on(WinEdW%,53,0)|
000044d0  0d 01 ba 12 20 20 20 20  20 20 20 20 c9 20 26 31  |....        . &1|
000044e0  38 33 0d 01 bb 27 20 20  20 20 20 20 20 20 20 20  |83...'          |
000044f0  f2 73 65 6c 65 63 74 69  63 6f 6e 28 57 69 6e 45  |.selecticon(WinE|
00004500  64 57 25 2c 35 34 2c 31  29 0d 01 bc 1c 20 20 20  |dW%,54,1)....   |
00004510  20 20 20 20 20 20 20 f2  77 69 6e 65 64 5f 72 65  |       .wined_re|
00004520  61 64 77 69 6e 0d 01 bd  27 20 20 20 20 20 20 20  |adwin...'       |
00004530  20 20 20 f2 73 65 6c 65  63 74 69 63 6f 6e 28 57  |   .selecticon(W|
00004540  69 6e 45 64 57 25 2c 35  34 2c 30 29 0d 01 be 23  |inEdW%,54,0)...#|
00004550  20 20 20 20 20 20 20 20  20 20 f2 63 6c 6f 73 65  |          .close|
00004560  77 69 6e 64 6f 77 28 57  69 6e 45 64 57 25 29 0d  |window(WinEdW%).|
00004570  01 bf 26 20 20 20 20 20  20 20 20 20 20 f2 73 65  |..&          .se|
00004580  74 63 61 72 65 74 28 57  69 6e 45 64 5f 57 69 6e  |tcaret(WinEd_Win|
00004590  25 2c 2d 31 29 0d 01 c0  15 20 20 20 20 20 20 20  |%,-1)....       |
000045a0  20 c9 20 26 31 38 34 2c  32 37 0d 01 c1 27 20 20  | . &184,27...'  |
000045b0  20 20 20 20 20 20 20 20  f2 73 65 6c 65 63 74 69  |        .selecti|
000045c0  63 6f 6e 28 57 69 6e 45  64 57 25 2c 35 35 2c 31  |con(WinEdW%,55,1|
000045d0  29 0d 01 c2 23 20 20 20  20 20 20 20 20 20 20 f2  |)...#          .|
000045e0  63 6c 6f 73 65 77 69 6e  64 6f 77 28 57 69 6e 45  |closewindow(WinE|
000045f0  64 57 25 29 0d 01 c3 27  20 20 20 20 20 20 20 20  |dW%)...'        |
00004600  20 20 f2 73 65 6c 65 63  74 69 63 6f 6e 28 57 69  |  .selecticon(Wi|
00004610  6e 45 64 57 25 2c 35 35  2c 30 29 0d 01 c4 26 20  |nEdW%,55,0)...& |
00004620  20 20 20 20 20 20 20 20  20 f2 73 65 74 63 61 72  |         .setcar|
00004630  65 74 28 57 69 6e 45 64  5f 57 69 6e 25 2c 2d 31  |et(WinEd_Win%,-1|
00004640  29 0d 01 c5 0d 20 20 20  20 20 20 20 20 7f 0d 01  |)....        ...|
00004650  c6 27 20 20 20 20 20 20  20 20 20 20 c8 99 20 22  |.'          .. "|
00004660  57 69 6d 70 5f 50 72 6f  63 65 73 73 4b 65 79 22  |Wimp_ProcessKey"|
00004670  2c 6b 65 79 25 0d 01 c7  0b 20 20 20 20 20 20 cb  |,key%....      .|
00004680  0d 01 c8 10 20 20 20 20  c9 20 53 61 76 65 57 25  |....    . SaveW%|
00004690  0d 01 c9 13 20 20 20 20  20 20 c8 8e 20 6b 65 79  |....      .. key|
000046a0  25 20 ca 0d 01 ca 10 20  20 20 20 20 20 20 20 c9  |% .....        .|
000046b0  20 31 33 0d 01 cb 25 20  20 20 20 20 20 20 20 20  | 13...%         |
000046c0  20 f2 73 65 6c 65 63 74  69 63 6f 6e 28 53 61 76  | .selecticon(Sav|
000046d0  65 57 25 2c 30 2c 31 29  0d 01 cc 22 20 20 20 20  |eW%,0,1)..."    |
000046e0  20 20 20 20 20 20 e7 20  53 61 76 69 6e 67 53 65  |      . SavingSe|
000046f0  6c 65 63 74 69 6f 6e 25  20 8c 0d 01 cd 26 20 20  |lection% ....&  |
00004700  20 20 20 20 20 20 20 20  20 20 53 65 6c 46 4e 61  |          SelFNa|
00004710  6d 65 24 3d 24 28 46 69  6c 65 4e 61 6d 65 25 29  |me$=$(FileName%)|
00004720  0d 01 ce 29 20 20 20 20  20 20 20 20 20 20 20 20  |...)            |
00004730  f2 73 61 76 65 74 65 6d  70 6c 61 74 65 73 28 53  |.savetemplates(S|
00004740  65 6c 46 4e 61 6d 65 24  29 0d 01 cf 0f 20 20 20  |elFName$)....   |
00004750  20 20 20 20 20 20 20 cc  0d 01 d0 2b 20 20 20 20  |       ....+    |
00004760  20 20 20 20 20 20 20 20  f2 73 65 74 6d 61 69 6e  |        .setmain|
00004770  66 6e 61 6d 65 28 24 28  46 69 6c 65 4e 61 6d 65  |fname($(FileName|
00004780  25 29 29 0d 01 d1 2a 20  20 20 20 20 20 20 20 20  |%))...*         |
00004790  20 20 20 f2 73 61 76 65  74 65 6d 70 6c 61 74 65  |   .savetemplate|
000047a0  73 28 4d 61 69 6e 46 4e  61 6d 65 24 29 0d 01 d2  |s(MainFName$)...|
000047b0  0f 20 20 20 20 20 20 20  20 20 20 cd 0d 01 d3 25  |.          ....%|
000047c0  20 20 20 20 20 20 20 20  20 20 f2 73 65 6c 65 63  |          .selec|
000047d0  74 69 63 6f 6e 28 53 61  76 65 57 25 2c 30 2c 30  |ticon(SaveW%,0,0|
000047e0  29 0d 01 d4 26 20 20 20  20 20 20 20 20 20 20 c8  |)...&          .|
000047f0  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 4d 65  |. "Wimp_CreateMe|
00004800  6e 75 22 2c 2c 2d 31 0d  01 d5 10 20 20 20 20 20  |nu",,-1....     |
00004810  20 20 20 c9 20 32 37 0d  01 d6 26 20 20 20 20 20  |   . 27...&     |
00004820  20 20 20 20 20 c8 99 20  22 57 69 6d 70 5f 43 72  |     .. "Wimp_Cr|
00004830  65 61 74 65 4d 65 6e 75  22 2c 2c 2d 31 0d 01 d7  |eateMenu",,-1...|
00004840  0d 20 20 20 20 20 20 20  20 7f 0d 01 d8 27 20 20  |.        ....'  |
00004850  20 20 20 20 20 20 20 20  c8 99 20 22 57 69 6d 70  |        .. "Wimp|
00004860  5f 50 72 6f 63 65 73 73  4b 65 79 22 2c 6b 65 79  |_ProcessKey",key|
00004870  25 0d 01 d9 0b 20 20 20  20 20 20 cb 0d 01 da 10  |%....      .....|
00004880  20 20 20 20 c9 20 57 6f  72 6b 57 25 0d 01 db 13  |    . WorkW%....|
00004890  20 20 20 20 20 20 c8 8e  20 6b 65 79 25 20 ca 0d  |      .. key% ..|
000048a0  01 dc 1a 20 20 20 20 20  20 20 20 c9 20 26 31 38  |...        . &18|
000048b0  45 2c 26 31 38 41 2c 31  33 0d 01 dd 1a 20 20 20  |E,&18A,13....   |
000048c0  20 20 20 20 20 20 20 e7  20 69 63 6f 6e 25 3d 32  |       . icon%=2|
000048d0  35 20 8c 0d 01 de 1b 20  20 20 20 20 20 20 20 20  |5 .....         |
000048e0  20 20 20 e7 20 6b 65 79  25 3d 31 33 20 8c 0d 01  |   . key%=13 ...|
000048f0  df 2a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.*              |
00004900  f2 73 65 6c 65 63 74 69  63 6f 6e 28 57 6f 72 6b  |.selecticon(Work|
00004910  57 25 2c 33 30 2c 31 29  0d 01 e0 1e 20 20 20 20  |W%,30,1)....    |
00004920  20 20 20 20 20 20 20 20  20 20 f2 73 65 74 77 6f  |          .setwo|
00004930  72 6b 61 72 65 61 0d 01  e1 2a 20 20 20 20 20 20  |rkarea...*      |
00004940  20 20 20 20 20 20 20 20  f2 73 65 6c 65 63 74 69  |        .selecti|
00004950  63 6f 6e 28 57 6f 72 6b  57 25 2c 33 30 2c 30 29  |con(WorkW%,30,0)|
00004960  0d 01 e2 2a 20 20 20 20  20 20 20 20 20 20 20 20  |...*            |
00004970  20 20 c8 99 20 22 57 69  6d 70 5f 43 72 65 61 74  |  .. "Wimp_Creat|
00004980  65 4d 65 6e 75 22 2c 2c  2d 31 0d 01 e3 11 20 20  |eMenu",,-1....  |
00004990  20 20 20 20 20 20 20 20  20 20 cc 0d 01 e4 26 20  |          ....& |
000049a0  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 73 65  |             .se|
000049b0  74 63 61 72 65 74 28 57  6f 72 6b 57 25 2c 31 30  |tcaret(WorkW%,10|
000049c0  29 0d 01 e5 11 20 20 20  20 20 20 20 20 20 20 20  |)....           |
000049d0  20 cd 0d 01 e6 0f 20 20  20 20 20 20 20 20 20 20  | .....          |
000049e0  cc 0d 01 e7 29 20 20 20  20 20 20 20 20 20 20 20  |....)           |
000049f0  20 f2 73 65 74 63 61 72  65 74 28 57 6f 72 6b 57  | .setcaret(WorkW|
00004a00  25 2c 69 63 6f 6e 25 2b  33 29 0d 01 e8 0f 20 20  |%,icon%+3)....  |
00004a10  20 20 20 20 20 20 20 20  cd 0d 01 e9 17 20 20 20  |        .....   |
00004a20  20 20 20 20 20 c9 20 26  31 38 46 2c 26 31 39 41  |     . &18F,&19A|
00004a30  0d 01 ea 1a 20 20 20 20  20 20 20 20 20 20 e7 20  |....          . |
00004a40  69 63 6f 6e 25 3d 31 30  20 8c 0d 01 eb 24 20 20  |icon%=10 ....$  |
00004a50  20 20 20 20 20 20 20 20  20 20 f2 73 65 74 63 61  |          .setca|
00004a60  72 65 74 28 57 6f 72 6b  57 25 2c 32 35 29 0d 01  |ret(WorkW%,25)..|
00004a70  ec 0f 20 20 20 20 20 20  20 20 20 20 cc 0d 01 ed  |..          ....|
00004a80  29 20 20 20 20 20 20 20  20 20 20 20 20 f2 73 65  |)            .se|
00004a90  74 63 61 72 65 74 28 57  6f 72 6b 57 25 2c 69 63  |tcaret(WorkW%,ic|
00004aa0  6f 6e 25 2d 33 29 0d 01  ee 0f 20 20 20 20 20 20  |on%-3)....      |
00004ab0  20 20 20 20 cd 0d 01 ef  10 20 20 20 20 20 20 20  |    .....       |
00004ac0  20 c9 20 32 37 0d 01 f0  26 20 20 20 20 20 20 20  | . 27...&       |
00004ad0  20 20 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |   .. "Wimp_Crea|
00004ae0  74 65 4d 65 6e 75 22 2c  2c 2d 31 0d 01 f1 0d 20  |teMenu",,-1.... |
00004af0  20 20 20 20 20 20 20 7f  0d 01 f2 27 20 20 20 20  |       ....'    |
00004b00  20 20 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 50  |      .. "Wimp_P|
00004b10  72 6f 63 65 73 73 4b 65  79 22 2c 6b 65 79 25 0d  |rocessKey",key%.|
00004b20  01 f3 0b 20 20 20 20 20  20 cb 0d 01 f4 11 20 20  |...      .....  |
00004b30  20 20 c9 20 53 70 61 63  65 57 25 0d 01 f5 15 20  |  . SpaceW%.... |
00004b40  20 20 20 20 20 e7 20 6b  65 79 25 3d 31 33 20 8c  |     . key%=13 .|
00004b50  0d 01 f6 24 20 20 20 20  20 20 20 20 f2 73 65 6c  |...$        .sel|
00004b60  65 63 74 69 63 6f 6e 28  53 70 61 63 65 57 25 2c  |ecticon(SpaceW%,|
00004b70  39 2c 31 29 0d 01 f7 26  20 20 20 20 20 20 20 20  |9,1)...&        |
00004b80  f2 73 70 61 63 65 69 63  6f 6e 73 28 4c 61 73 74  |.spaceicons(Last|
00004b90  4d 65 6e 75 5f 57 69 6e  25 29 0d 01 f8 24 20 20  |Menu_Win%)...$  |
00004ba0  20 20 20 20 20 20 f2 73  65 6c 65 63 74 69 63 6f  |      .selectico|
00004bb0  6e 28 53 70 61 63 65 57  25 2c 39 2c 30 29 0d 01  |n(SpaceW%,9,0)..|
00004bc0  f9 24 20 20 20 20 20 20  20 20 c8 99 20 22 57 69  |.$        .. "Wi|
00004bd0  6d 70 5f 43 72 65 61 74  65 4d 65 6e 75 22 2c 2c  |mp_CreateMenu",,|
00004be0  2d 31 0d 01 fa 0b 20 20  20 20 20 20 cc 0d 01 fb  |-1....      ....|
00004bf0  25 20 20 20 20 20 20 20  20 c8 99 20 22 57 69 6d  |%        .. "Wim|
00004c00  70 5f 50 72 6f 63 65 73  73 4b 65 79 22 2c 6b 65  |p_ProcessKey",ke|
00004c10  79 25 0d 01 fc 0b 20 20  20 20 20 20 cd 0d 01 fd  |y%....      ....|
00004c20  09 20 20 20 20 7f 0d 01  fe 19 20 20 20 20 20 20  |.    .....      |
00004c30  c8 8e 20 44 72 61 67 5f  54 79 70 65 25 20 ca 0d  |.. Drag_Type% ..|
00004c40  01 ff 15 20 20 20 20 20  20 20 20 c9 20 30 2c 31  |...        . 0,1|
00004c50  2c 35 2c 36 0d 02 00 13  20 20 20 20 20 20 20 20  |,5,6....        |
00004c60  20 20 64 78 25 3d 30 0d  02 01 13 20 20 20 20 20  |  dx%=0....     |
00004c70  20 20 20 20 20 64 79 25  3d 30 0d 02 02 17 20 20  |     dy%=0....  |
00004c80  20 20 20 20 20 20 20 20  c8 8e 20 6b 65 79 25 20  |        .. key% |
00004c90  ca 0d 02 03 28 20 20 20  20 20 20 20 20 20 20 20  |....(           |
00004ca0  20 c9 20 26 31 38 43 20  3a 20 64 78 25 3d 2d 50  | . &18C : dx%=-P|
00004cb0  69 78 54 6f 4f 53 5f 58  25 0d 02 04 27 20 20 20  |ixToOS_X%...'   |
00004cc0  20 20 20 20 20 20 20 20  20 c9 20 26 31 38 44 20  |         . &18D |
00004cd0  3a 20 64 78 25 3d 50 69  78 54 6f 4f 53 5f 58 25  |: dx%=PixToOS_X%|
00004ce0  0d 02 05 28 20 20 20 20  20 20 20 20 20 20 20 20  |...(            |
00004cf0  c9 20 26 31 38 45 20 3a  20 64 79 25 3d 2d 50 69  |. &18E : dy%=-Pi|
00004d00  78 54 6f 4f 53 5f 59 25  0d 02 06 27 20 20 20 20  |xToOS_Y%...'    |
00004d10  20 20 20 20 20 20 20 20  c9 20 26 31 38 46 20 3a  |        . &18F :|
00004d20  20 64 79 25 3d 50 69 78  54 6f 4f 53 5f 59 25 0d  | dy%=PixToOS_Y%.|
00004d30  02 07 2a 20 20 20 20 20  20 20 20 20 20 20 20 c9  |..*            .|
00004d40  20 26 31 39 43 20 3a 20  64 78 25 3d 2d 34 2a 50  | &19C : dx%=-4*P|
00004d50  69 78 54 6f 4f 53 5f 58  25 0d 02 08 29 20 20 20  |ixToOS_X%...)   |
00004d60  20 20 20 20 20 20 20 20  20 c9 20 26 31 39 44 20  |         . &19D |
00004d70  3a 20 64 78 25 3d 34 2a  50 69 78 54 6f 4f 53 5f  |: dx%=4*PixToOS_|
00004d80  58 25 0d 02 09 2a 20 20  20 20 20 20 20 20 20 20  |X%...*          |
00004d90  20 20 c9 20 26 31 39 45  20 3a 20 64 79 25 3d 2d  |  . &19E : dy%=-|
00004da0  34 2a 50 69 78 54 6f 4f  53 5f 59 25 0d 02 0a 29  |4*PixToOS_Y%...)|
00004db0  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 26 31  |            . &1|
00004dc0  39 46 20 3a 20 64 79 25  3d 34 2a 50 69 78 54 6f  |9F : dy%=4*PixTo|
00004dd0  4f 53 5f 59 25 0d 02 0b  2d 20 20 20 20 20 20 20  |OS_Y%...-       |
00004de0  20 20 20 20 20 7f 20 3a  20 c8 99 20 22 57 69 6d  |     . : .. "Wim|
00004df0  70 5f 50 72 6f 63 65 73  73 4b 65 79 22 2c 6b 65  |p_ProcessKey",ke|
00004e00  79 25 0d 02 0c 0f 20 20  20 20 20 20 20 20 20 20  |y%....          |
00004e10  cb 0d 02 0d 30 20 20 20  20 20 20 20 20 20 20 c8  |....0          .|
00004e20  99 20 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |. "Wimp_GetPoint|
00004e30  65 72 49 6e 66 6f 22 2c  2c 50 74 72 49 6e 66 6f  |erInfo",,PtrInfo|
00004e40  25 0d 02 0e 34 20 20 20  20 20 20 20 20 20 20 c8  |%...4          .|
00004e50  97 20 b8 20 28 50 74 72  49 6e 66 6f 25 21 30 29  |. . (PtrInfo%!0)|
00004e60  2b 64 78 25 2c 28 50 74  72 49 6e 66 6f 25 21 34  |+dx%,(PtrInfo%!4|
00004e70  29 2b 64 79 25 0d 02 0f  0d 20 20 20 20 20 20 20  |)+dy%....       |
00004e80  20 7f 0d 02 10 29 20 20  20 20 20 20 20 20 20 20  | ....)          |
00004e90  6e 6f 25 3d a4 77 68 69  63 68 74 65 6d 70 6c 61  |no%=.whichtempla|
00004ea0  74 65 28 77 69 6e 64 6f  77 25 29 0d 02 11 19 20  |te(window%).... |
00004eb0  20 20 20 20 20 20 20 20  20 e7 20 6e 6f 25 3c 3e  |         . no%<>|
00004ec0  2d 31 20 8c 0d 02 12 19  20 20 20 20 20 20 20 20  |-1 .....        |
00004ed0  20 20 20 20 c8 8e 20 6b  65 79 25 20 ca 0d 02 13  |    .. key% ....|
00004ee0  40 20 20 20 20 20 20 20  20 20 20 20 20 20 20 c9  |@              .|
00004ef0  20 31 20 20 20 20 20 20  20 20 3a 20 f2 73 65 6c  | 1        : .sel|
00004f00  5f 61 6c 6c 28 77 69 6e  64 6f 77 25 29 20 20 20  |_all(window%)   |
00004f10  20 20 20 20 20 20 20 3a  20 f4 20 5e 41 0d 02 14  |       : . ^A...|
00004f20  15 20 20 20 20 20 20 20  20 20 20 20 20 20 20 c9  |.              .|
00004f30  20 33 0d 02 15 1d 20 20  20 20 20 20 20 20 20 20  | 3....          |
00004f40  20 20 20 20 20 20 64 75  6d 6d 79 25 3d 2d 31 0d  |      dummy%=-1.|
00004f50  02 16 43 20 20 20 20 20  20 20 20 20 20 20 20 20  |..C             |
00004f60  20 20 20 f2 63 6f 70 79  69 63 6f 6e 73 65 6c 28  |   .copyiconsel(|
00004f70  77 69 6e 64 6f 77 25 2c  64 75 6d 6d 79 25 2c 30  |window%,dummy%,0|
00004f80  29 20 20 20 20 20 20 20  20 20 20 20 3a 20 f4 20  |)           : . |
00004f90  5e 43 0d 02 17 15 20 20  20 20 20 20 20 20 20 20  |^C....          |
00004fa0  20 20 20 20 c9 20 34 0d  02 18 1d 20 20 20 20 20  |    . 4....     |
00004fb0  20 20 20 20 20 20 20 20  20 20 20 64 75 6d 6d 79  |           dummy|
00004fc0  25 3d 2d 31 0d 02 19 43  20 20 20 20 20 20 20 20  |%=-1...C        |
00004fd0  20 20 20 20 20 20 20 20  f2 63 6f 70 79 69 63 6f  |        .copyico|
00004fe0  6e 73 65 6c 28 77 69 6e  64 6f 77 25 2c 64 75 6d  |nsel(window%,dum|
00004ff0  6d 79 25 2c 32 29 20 20  20 20 20 20 20 20 20 20  |my%,2)          |
00005000  20 3a 20 f4 20 5e 44 0d  02 1a 40 20 20 20 20 20  | : . ^D...@     |
00005010  20 20 20 20 20 20 20 20  20 c9 20 35 20 20 20 20  |         . 5    |
00005020  20 20 20 3a 20 f2 69 63  65 64 5f 73 74 61 72 74  |   : .iced_start|
00005030  28 77 69 6e 64 6f 77 25  2c 2d 31 29 20 20 20 20  |(window%,-1)    |
00005040  20 3a 20 f4 20 5e 45 0d  02 1b 16 20 20 20 20 20  | : . ^E....     |
00005050  20 20 20 20 20 20 20 20  20 c9 20 31 30 0d 02 1c  |         . 10...|
00005060  43 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |C               |
00005070  20 f2 73 65 6c 5f 67 65  74 28 77 69 6e 64 6f 77  | .sel_get(window|
00005080  25 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%)              |
00005090  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 5e 4a  |          : . ^J|
000050a0  0d 02 1d 26 20 20 20 20  20 20 20 20 20 20 20 20  |...&            |
000050b0  20 20 20 20 e7 20 4e 72  53 65 6c 65 63 74 65 64  |    . NrSelected|
000050c0  25 3e 3d 32 20 8c 0d 02  1e 2b 20 20 20 20 20 20  |%>=2 ....+      |
000050d0  20 20 20 20 20 20 20 20  20 20 20 20 4c 61 73 74  |            Last|
000050e0  4d 65 6e 75 5f 57 69 6e  25 3d 77 69 6e 64 6f 77  |Menu_Win%=window|
000050f0  25 0d 02 1f 27 20 20 20  20 20 20 20 20 20 20 20  |%...'           |
00005100  20 20 20 20 20 20 20 4c  61 73 74 4d 65 6e 75 5f  |       LastMenu_|
00005110  49 63 6f 6e 25 3d 2d 31  0d 02 20 38 20 20 20 20  |Icon%=-1.. 8    |
00005120  20 20 20 20 20 20 20 20  20 20 20 20 20 20 c8 99  |              ..|
00005130  20 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  | "Wimp_GetPointe|
00005140  72 49 6e 66 6f 22 2c 2c  50 74 72 49 6e 66 6f 25  |rInfo",,PtrInfo%|
00005150  0d 02 21 4f 20 20 20 20  20 20 20 20 20 20 20 20  |..!O            |
00005160  20 20 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 43  |      .. "Wimp_C|
00005170  72 65 61 74 65 4d 65 6e  75 22 2c 2c 41 6c 69 67  |reateMenu",,Alig|
00005180  6e 57 25 2c 50 74 72 49  6e 66 6f 25 21 30 2d 38  |nW%,PtrInfo%!0-8|
00005190  30 2c 50 74 72 49 6e 66  6f 25 21 34 2b 38 30 0d  |0,PtrInfo%!4+80.|
000051a0  02 22 15 20 20 20 20 20  20 20 20 20 20 20 20 20  |.".             |
000051b0  20 20 20 cd 0d 02 23 16  20 20 20 20 20 20 20 20  |   ...#.        |
000051c0  20 20 20 20 20 20 c9 20  31 31 0d 02 24 43 20 20  |      . 11..$C  |
000051d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 f2 73  |              .s|
000051e0  65 6c 5f 67 65 74 28 77  69 6e 64 6f 77 25 29 20  |el_get(window%) |
000051f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005200  20 20 20 20 20 20 20 3a  20 f4 20 5e 4b 0d 02 25  |       : . ^K..%|
00005210  26 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |&               |
00005220  20 e7 20 4e 72 53 65 6c  65 63 74 65 64 25 3e 3d  | . NrSelected%>=|
00005230  32 20 8c 0d 02 26 2b 20  20 20 20 20 20 20 20 20  |2 ...&+         |
00005240  20 20 20 20 20 20 20 20  20 4c 61 73 74 4d 65 6e  |         LastMen|
00005250  75 5f 57 69 6e 25 3d 77  69 6e 64 6f 77 25 0d 02  |u_Win%=window%..|
00005260  27 27 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |''              |
00005270  20 20 20 20 4c 61 73 74  4d 65 6e 75 5f 49 63 6f  |    LastMenu_Ico|
00005280  6e 25 3d 2d 31 0d 02 28  38 20 20 20 20 20 20 20  |n%=-1..(8       |
00005290  20 20 20 20 20 20 20 20  20 20 20 c8 99 20 22 57  |           .. "W|
000052a0  69 6d 70 5f 47 65 74 50  6f 69 6e 74 65 72 49 6e  |imp_GetPointerIn|
000052b0  66 6f 22 2c 2c 50 74 72  49 6e 66 6f 25 0d 02 29  |fo",,PtrInfo%..)|
000052c0  4f 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |O               |
000052d0  20 20 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |   .. "Wimp_Crea|
000052e0  74 65 4d 65 6e 75 22 2c  2c 53 70 61 63 65 57 25  |teMenu",,SpaceW%|
000052f0  2c 50 74 72 49 6e 66 6f  25 21 30 2d 38 30 2c 50  |,PtrInfo%!0-80,P|
00005300  74 72 49 6e 66 6f 25 21  34 2b 38 30 0d 02 2a 15  |trInfo%!4+80..*.|
00005310  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005320  cd 0d 02 2b 16 20 20 20  20 20 20 20 20 20 20 20  |...+.           |
00005330  20 20 20 c9 20 31 32 0d  02 2c 1d 20 20 20 20 20  |   . 12..,.     |
00005340  20 20 20 20 20 20 20 20  20 20 20 64 75 6d 6d 79  |           dummy|
00005350  25 3d 2d 31 0d 02 2d 43  20 20 20 20 20 20 20 20  |%=-1..-C        |
00005360  20 20 20 20 20 20 20 20  f2 63 6f 70 79 69 63 6f  |        .copyico|
00005370  6e 73 65 6c 28 77 69 6e  64 6f 77 25 2c 64 75 6d  |nsel(window%,dum|
00005380  6d 79 25 2c 33 29 20 20  20 20 20 20 20 20 20 20  |my%,3)          |
00005390  20 3a 20 f4 20 5e 4c 0d  02 2e 44 20 20 20 20 20  | : . ^L...D     |
000053a0  20 20 20 20 20 20 20 20  20 c9 20 31 37 2c 26 31  |         . 17,&1|
000053b0  41 32 20 3a 20 f2 63 6c  6f 73 65 74 65 6d 70 6c  |A2 : .closetempl|
000053c0  61 74 65 28 6e 6f 25 29  20 20 20 20 20 20 20 20  |ate(no%)        |
000053d0  20 3a 20 f4 20 5e 51 2c  5e 46 32 0d 02 2f 16 20  | : . ^Q,^F2../. |
000053e0  20 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 31  |             . 1|
000053f0  38 0d 02 30 1d 20 20 20  20 20 20 20 20 20 20 20  |8..0.           |
00005400  20 20 20 20 20 64 75 6d  6d 79 25 3d 2d 31 0d 02  |     dummy%=-1..|
00005410  31 43 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |1C              |
00005420  20 20 f2 63 6f 70 79 69  63 6f 6e 73 65 6c 28 77  |  .copyiconsel(w|
00005430  69 6e 64 6f 77 25 2c 64  75 6d 6d 79 25 2c 34 29  |indow%,dummy%,4)|
00005440  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 5e  |           : . ^|
00005450  52 0d 02 32 40 20 20 20  20 20 20 20 20 20 20 20  |R..2@           |
00005460  20 20 20 c9 20 32 30 20  20 20 20 20 20 3a 20 f2  |   . 20      : .|
00005470  69 63 65 64 5f 73 74 61  72 74 28 77 69 6e 64 6f  |iced_start(windo|
00005480  77 25 2c 2d 34 29 20 20  20 20 20 3a 20 f4 20 5e  |w%,-4)     : . ^|
00005490  54 0d 02 33 16 20 20 20  20 20 20 20 20 20 20 20  |T..3.           |
000054a0  20 20 20 c9 20 32 31 0d  02 34 1d 20 20 20 20 20  |   . 21..4.     |
000054b0  20 20 20 20 20 20 20 20  20 20 20 64 75 6d 6d 79  |           dummy|
000054c0  25 3d 2d 31 0d 02 35 43  20 20 20 20 20 20 20 20  |%=-1..5C        |
000054d0  20 20 20 20 20 20 20 20  f2 63 6f 70 79 69 63 6f  |        .copyico|
000054e0  6e 73 65 6c 28 77 69 6e  64 6f 77 25 2c 64 75 6d  |nsel(window%,dum|
000054f0  6d 79 25 2c 31 29 20 20  20 20 20 20 20 20 20 20  |my%,1)          |
00005500  20 3a 20 f4 20 5e 55 0d  02 36 40 20 20 20 20 20  | : . ^U..6@     |
00005510  20 20 20 20 20 20 20 20  20 c9 20 32 33 20 20 20  |         . 23   |
00005520  20 20 20 3a 20 f2 77 69  6e 65 64 5f 66 69 6c 6c  |   : .wined_fill|
00005530  77 69 6e 28 77 69 6e 64  6f 77 25 29 20 20 20 20  |win(window%)    |
00005540  20 3a 20 f4 20 5e 57 0d  02 37 40 20 20 20 20 20  | : . ^W..7@     |
00005550  20 20 20 20 20 20 20 20  20 c9 20 32 34 20 20 20  |         . 24   |
00005560  20 20 20 3a 20 f2 64 65  6c 65 74 65 69 63 6f 6e  |   : .deleteicon|
00005570  73 65 6c 28 77 69 6e 64  6f 77 25 2c 2d 31 29 20  |sel(window%,-1) |
00005580  20 3a 20 f4 20 5e 58 0d  02 38 40 20 20 20 20 20  | : . ^X..8@     |
00005590  20 20 20 20 20 20 20 20  20 c9 20 32 36 20 20 20  |         . 26   |
000055a0  20 20 20 3a 20 f2 73 65  6c 5f 63 6c 65 61 72 28  |   : .sel_clear(|
000055b0  77 69 6e 64 6f 77 25 2c  2d 31 29 20 20 20 20 20  |window%,-1)     |
000055c0  20 3a 20 f4 20 5e 5a 0d  02 39 3b 20 20 20 20 20  | : . ^Z..9;     |
000055d0  20 20 20 20 20 20 20 20  20 c9 20 26 31 38 43 2c  |         . &18C,|
000055e0  26 31 38 44 2c 26 31 38  45 2c 26 31 38 46 2c 26  |&18D,&18E,&18F,&|
000055f0  31 39 43 2c 26 31 39 44  2c 26 31 39 45 2c 26 31  |19C,&19D,&19E,&1|
00005600  39 46 0d 02 3a 25 20 20  20 20 20 20 20 20 20 20  |9F..:%          |
00005610  20 20 20 20 20 20 f2 73  65 6c 5f 67 65 74 28 77  |      .sel_get(w|
00005620  69 6e 64 6f 77 25 29 0d  02 3b 25 20 20 20 20 20  |indow%)..;%     |
00005630  20 20 20 20 20 20 20 20  20 20 20 e7 20 4e 72 53  |           . NrS|
00005640  65 6c 65 63 74 65 64 25  3e 30 20 8c 0d 02 3c 3f  |elected%>0 ...<?|
00005650  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005660  20 20 f2 73 65 6c 5f 62  6f 78 28 77 69 6e 64 6f  |  .sel_box(windo|
00005670  77 25 2c 78 6d 69 6e 25  2c 79 6d 69 6e 25 2c 78  |w%,xmin%,ymin%,x|
00005680  6d 61 78 25 2c 79 6d 61  78 25 29 0d 02 3d 27 20  |max%,ymax%)..=' |
00005690  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000056a0  20 e7 20 47 72 69 64 5f  50 6f 73 4c 6f 63 6b 25  | . Grid_PosLock%|
000056b0  20 8c 0d 02 3e 29 20 20  20 20 20 20 20 20 20 20  | ...>)          |
000056c0  20 20 20 20 20 20 20 20  20 20 78 73 74 65 70 25  |          xstep%|
000056d0  3d 47 72 69 64 5f 50 6f  73 58 25 0d 02 3f 29 20  |=Grid_PosX%..?) |
000056e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000056f0  20 20 20 79 73 74 65 70  25 3d 47 72 69 64 5f 50  |   ystep%=Grid_P|
00005700  6f 73 59 25 0d 02 40 17  20 20 20 20 20 20 20 20  |osY%..@.        |
00005710  20 20 20 20 20 20 20 20  20 20 cc 0d 02 41 2a 20  |          ...A* |
00005720  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005730  20 20 20 e7 20 47 72 69  64 5f 53 69 7a 65 4c 6f  |   . Grid_SizeLo|
00005740  63 6b 25 20 8c 0d 02 42  2c 20 20 20 20 20 20 20  |ck% ...B,       |
00005750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 78  |               x|
00005760  73 74 65 70 25 3d 47 72  69 64 5f 53 69 7a 65 58  |step%=Grid_SizeX|
00005770  25 0d 02 43 2c 20 20 20  20 20 20 20 20 20 20 20  |%..C,           |
00005780  20 20 20 20 20 20 20 20  20 20 20 79 73 74 65 70  |           ystep|
00005790  25 3d 47 72 69 64 5f 53  69 7a 65 59 25 0d 02 44  |%=Grid_SizeY%..D|
000057a0  19 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000057b0  20 20 20 20 20 cc 0d 02  45 2b 20 20 20 20 20 20  |     ...E+      |
000057c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000057d0  78 73 74 65 70 25 3d 50  69 78 54 6f 4f 53 5f 58  |xstep%=PixToOS_X|
000057e0  25 0d 02 46 2b 20 20 20  20 20 20 20 20 20 20 20  |%..F+           |
000057f0  20 20 20 20 20 20 20 20  20 20 20 79 73 74 65 70  |           ystep|
00005800  25 3d 50 69 78 54 6f 4f  53 5f 59 25 0d 02 47 19  |%=PixToOS_Y%..G.|
00005810  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005820  20 20 20 20 cd 0d 02 48  17 20 20 20 20 20 20 20  |    ...H.       |
00005830  20 20 20 20 20 20 20 20  20 20 20 cd 0d 02 49 26  |           ...I&|
00005840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005850  20 20 c8 8e 20 28 6b 65  79 25 20 80 20 26 46 29  |  .. (key% . &F)|
00005860  20 ca 0d 02 4a 2a 20 20  20 20 20 20 20 20 20 20  | ...J*          |
00005870  20 20 20 20 20 20 20 20  20 20 c9 20 26 43 20 3a  |          . &C :|
00005880  20 64 78 25 3d 2d 78 73  74 65 70 25 0d 02 4b 29  | dx%=-xstep%..K)|
00005890  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000058a0  20 20 20 20 c9 20 26 44  20 3a 20 64 78 25 3d 78  |    . &D : dx%=x|
000058b0  73 74 65 70 25 0d 02 4c  2a 20 20 20 20 20 20 20  |step%..L*       |
000058c0  20 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 26  |             . &|
000058d0  45 20 3a 20 64 79 25 3d  2d 79 73 74 65 70 25 0d  |E : dy%=-ystep%.|
000058e0  02 4d 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |.M)             |
000058f0  20 20 20 20 20 20 20 c9  20 26 46 20 3a 20 64 79  |       . &F : dy|
00005900  25 3d 79 73 74 65 70 25  0d 02 4e 17 20 20 20 20  |%=ystep%..N.    |
00005910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 cb 0d  |              ..|
00005920  02 4f 24 20 20 20 20 20  20 20 20 20 20 20 20 20  |.O$             |
00005930  20 20 20 20 20 e7 20 6b  65 79 25 20 80 20 26 31  |     . key% . &1|
00005940  30 20 8c 0d 02 50 21 20  20 20 20 20 20 20 20 20  |0 ...P!         |
00005950  20 20 20 20 20 20 20 20  20 20 20 64 78 25 3d 64  |           dx%=d|
00005960  78 25 2a 34 0d 02 51 21  20 20 20 20 20 20 20 20  |x%*4..Q!        |
00005970  20 20 20 20 20 20 20 20  20 20 20 20 64 79 25 3d  |            dy%=|
00005980  64 79 25 2a 34 0d 02 52  17 20 20 20 20 20 20 20  |dy%*4..R.       |
00005990  20 20 20 20 20 20 20 20  20 20 20 cd 0d 02 53 20  |           ...S |
000059a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000059b0  20 20 78 6d 69 6e 25 2b  3d 64 78 25 0d 02 54 20  |  xmin%+=dx%..T |
000059c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000059d0  20 20 78 6d 61 78 25 2b  3d 64 78 25 0d 02 55 20  |  xmax%+=dx%..U |
000059e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000059f0  20 20 79 6d 69 6e 25 2b  3d 64 79 25 0d 02 56 20  |  ymin%+=dy%..V |
00005a00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005a10  20 20 79 6d 61 78 25 2b  3d 64 79 25 0d 02 57 4d  |  ymax%+=dy%..WM|
00005a20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005a30  20 20 f2 6d 6f 76 65 72  65 73 69 7a 65 28 77 69  |  .moveresize(wi|
00005a40  6e 64 6f 77 25 2c 2d 31  2c 77 69 6e 64 6f 77 25  |ndow%,-1,window%|
00005a50  2c 78 6d 69 6e 25 2c 79  6d 69 6e 25 2c 78 6d 61  |,xmin%,ymin%,xma|
00005a60  78 25 2c 79 6d 61 78 25  29 0d 02 58 15 20 20 20  |x%,ymax%)..X.   |
00005a70  20 20 20 20 20 20 20 20  20 20 20 20 20 cd 0d 02  |             ...|
00005a80  59 32 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Y2              |
00005a90  7f 20 20 20 20 3a 20 c8  99 20 22 57 69 6d 70 5f  |.    : .. "Wimp_|
00005aa0  50 72 6f 63 65 73 73 4b  65 79 22 2c 6b 65 79 25  |ProcessKey",key%|
00005ab0  0d 02 5a 11 20 20 20 20  20 20 20 20 20 20 20 20  |..Z.            |
00005ac0  cb 0d 02 5b 0f 20 20 20  20 20 20 20 20 20 20 cc  |...[.          .|
00005ad0  0d 02 5c 29 20 20 20 20  20 20 20 20 20 20 20 20  |..\)            |
00005ae0  c8 99 20 22 57 69 6d 70  5f 50 72 6f 63 65 73 73  |.. "Wimp_Process|
00005af0  4b 65 79 22 2c 6b 65 79  25 0d 02 5d 0f 20 20 20  |Key",key%..].   |
00005b00  20 20 20 20 20 20 20 cd  0d 02 5e 0b 20 20 20 20  |       ...^.    |
00005b10  20 20 cb 0d 02 5f 07 20  20 cb 0d 02 60 05 cd 0d  |  ..._.  ...`...|
00005b20  02 61 05 e1 0d 02 62 04  0d 02 63 37 dd 20 a4 6c  |.a....b...c7. .l|
00005b30  6f 61 64 74 65 6d 70 6c  61 74 65 28 6e 61 6d 65  |oadtemplate(name|
00005b40  24 2c 62 75 66 25 2c f8  20 69 6e 64 69 72 25 2c  |$,buf%,. indir%,|
00005b50  f8 20 66 72 65 65 25 2c  73 70 70 74 72 25 29 0d  |. free%,spptr%).|
00005b60  02 64 17 ea 20 6f 6c 64  69 6e 64 69 72 25 2c 68  |.d.. oldindir%,h|
00005b70  61 6e 64 6c 65 25 0d 02  65 07 ea 20 85 0d 02 66  |andle%..e.. ...f|
00005b80  2d ee 20 85 20 ea 20 c8  99 20 22 57 69 6d 70 5f  |-. . . .. "Wimp_|
00005b90  43 6c 6f 73 65 54 65 6d  70 6c 61 74 65 22 20 3a  |CloseTemplate" :|
00005ba0  20 f2 65 72 72 6f 72 28  31 29 0d 02 67 14 6f 6c  | .error(1)..g.ol|
00005bb0  64 69 6e 64 69 72 25 3d  69 6e 64 69 72 25 0d 02  |dindir%=indir%..|
00005bc0  68 17 6e 61 6d 65 24 3d  6e 61 6d 65 24 2b c4 31  |h.name$=name$+.1|
00005bd0  32 2c bd 30 29 0d 02 69  4e c8 99 20 22 57 69 6d  |2,.0)..iN.. "Wim|
00005be0  70 5f 4c 6f 61 64 54 65  6d 70 6c 61 74 65 22 2c  |p_LoadTemplate",|
00005bf0  2c 62 75 66 25 2b 34 2c  69 6e 64 69 72 25 2c 69  |,buf%+4,indir%,i|
00005c00  6e 64 69 72 25 2b 66 72  65 65 25 2c 46 72 61 25  |ndir%+free%,Fra%|
00005c10  2c 6e 61 6d 65 24 2c 30  20 b8 20 2c 2c 69 6e 64  |,name$,0 . ,,ind|
00005c20  69 72 25 0d 02 6a 1d 66  72 65 65 25 2d 3d 28 69  |ir%..j.free%-=(i|
00005c30  6e 64 69 72 25 2d 6f 6c  64 69 6e 64 69 72 25 29  |ndir%-oldindir%)|
00005c40  0d 02 6b 12 62 75 66 25  21 36 38 3d 73 70 70 74  |..k.buf%!68=sppt|
00005c50  72 25 0d 02 6c 11 e7 20  62 75 66 25 21 38 38 3e  |r%..l.. buf%!88>|
00005c60  30 20 8c 0d 02 6d 16 20  20 e3 20 69 25 3d 30 20  |0 ...m.  . i%=0 |
00005c70  b8 20 62 75 66 25 21 38  38 0d 02 6e 1d 20 20 20  |. buf%!88..n.   |
00005c80  20 66 25 3d 62 75 66 25  21 28 39 32 2b 69 25 2a  | f%=buf%!(92+i%*|
00005c90  33 32 2b 31 36 29 0d 02  6f 1c 20 20 20 20 e7 20  |32+16)..o.    . |
00005ca0  28 66 25 20 80 20 26 31  30 33 29 3d 26 31 30 32  |(f% . &103)=&102|
00005cb0  20 8c 0d 02 70 23 20 20  20 20 20 20 62 75 66 25  | ...p#      buf%|
00005cc0  21 28 39 32 2b 69 25 2a  33 32 2b 32 34 29 3d 73  |!(92+i%*32+24)=s|
00005cd0  70 70 74 72 25 0d 02 71  09 20 20 20 20 cd 0d 02  |pptr%..q.    ...|
00005ce0  72 0a 20 20 ed 20 69 25  0d 02 73 05 cd 0d 02 74  |r.  . i%..s....t|
00005cf0  2c c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  |,.. "Wimp_Create|
00005d00  57 69 6e 64 6f 77 22 2c  2c 62 75 66 25 2b 34 20  |Window",,buf%+4 |
00005d10  b8 20 68 61 6e 64 6c 65  25 0d 02 75 12 62 75 66  |. handle%..u.buf|
00005d20  25 21 30 3d 68 61 6e 64  6c 65 25 0d 02 76 0c 3d  |%!0=handle%..v.=|
00005d30  68 61 6e 64 6c 65 25 0d  02 77 04 0d 02 78 1d dd  |handle%..w...x..|
00005d40  20 f2 6d 65 6e 75 73 65  6c 65 63 74 28 73 65 6c  | .menuselect(sel|
00005d50  65 63 74 69 6f 6e 25 29  0d 02 79 42 ea 20 61 64  |ection%)..yB. ad|
00005d60  6a 75 73 74 25 2c 73 65  6c 69 6e 66 6f 25 2c 69  |just%,selinfo%,i|
00005d70  74 65 6d 6e 72 25 2c 69  74 65 6d 25 2c 69 74 65  |temnr%,item%,ite|
00005d80  6d 24 2c 70 61 72 65 6e  74 69 74 65 6d 25 2c 70  |m$,parentitem%,p|
00005d90  61 72 65 6e 74 69 74 65  6d 24 0d 02 7a 26 ea 20  |arentitem$..z&. |
00005da0  63 6d 64 24 2c 69 25 2c  6a 25 2c 6d 69 6e 78 25  |cmd$,i%,j%,minx%|
00005db0  2c 6d 69 6e 79 25 2c 73  69 7a 65 2c 64 69 72 25  |,miny%,size,dir%|
00005dc0  0d 02 7b 41 c8 99 20 22  4d 65 6e 75 55 74 69 6c  |..{A.. "MenuUtil|
00005dd0  5f 44 65 63 6f 64 65 22  2c 4c 61 73 74 4d 65 6e  |_Decode",LastMen|
00005de0  75 25 2c 73 65 6c 65 63  74 69 6f 6e 25 20 b8 20  |u%,selection% . |
00005df0  2c 61 64 6a 75 73 74 25  2c 73 65 6c 69 6e 66 6f  |,adjust%,selinfo|
00005e00  25 0d 02 7c 16 69 74 65  6d 6e 72 25 3d 73 65 6c  |%..|.itemnr%=sel|
00005e10  69 6e 66 6f 25 21 30 0d  02 7d 14 69 74 65 6d 25  |info%!0..}.item%|
00005e20  3d 73 65 6c 69 6e 66 6f  25 21 38 0d 02 7e 1b 69  |=selinfo%!8..~.i|
00005e30  74 65 6d 24 3d a4 73 74  72 28 73 65 6c 69 6e 66  |tem$=.str(selinf|
00005e40  6f 25 21 31 32 29 0d 02  7f 1b 70 61 72 65 6e 74  |o%!12)....parent|
00005e50  69 74 65 6d 25 3d 73 65  6c 69 6e 66 6f 25 21 32  |item%=selinfo%!2|
00005e60  34 0d 02 80 34 e7 20 70  61 72 65 6e 74 69 74 65  |4...4. parentite|
00005e70  6d 25 3c 3e 30 20 8c 20  70 61 72 65 6e 74 69 74  |m%<>0 . parentit|
00005e80  65 6d 24 3d a4 73 74 72  28 73 65 6c 69 6e 66 6f  |em$=.str(selinfo|
00005e90  25 21 32 38 29 0d 02 81  12 c8 8e 20 4c 61 73 74  |%!28)...... Last|
00005ea0  4d 65 6e 75 25 20 ca 0d  02 82 11 20 20 c9 20 4d  |Menu% .....  . M|
00005eb0  61 69 6e 4d 65 6e 75 25  0d 02 83 12 20 20 20 20  |ainMenu%....    |
00005ec0  c8 8e 20 69 74 65 6d 25  20 ca 0d 02 84 19 20 20  |.. item% .....  |
00005ed0  20 20 20 20 c9 20 69 74  65 6d 5f 6f 70 74 69 6f  |    . item_optio|
00005ee0  6e 73 25 0d 02 85 24 20  20 20 20 20 20 20 20 f2  |ns%...$        .|
00005ef0  6f 70 65 6e 77 69 6e 64  6f 77 28 4f 70 74 69 6f  |openwindow(Optio|
00005f00  6e 73 57 25 2c 32 29 0d  02 86 17 20 20 20 20 20  |nsW%,2)....     |
00005f10  20 c9 20 69 74 65 6d 5f  73 74 61 74 73 25 0d 02  | . item_stats%..|
00005f20  87 19 20 20 20 20 20 20  20 20 f2 73 74 61 74 5f  |..        .stat_|
00005f30  66 69 6c 6c 77 69 6e 0d  02 88 19 20 20 20 20 20  |fillwin....     |
00005f40  20 c9 20 69 74 65 6d 5f  73 70 72 76 69 65 77 25  | . item_sprview%|
00005f50  0d 02 89 24 20 20 20 20  20 20 20 20 63 6d 64 24  |...$        cmd$|
00005f60  3d 22 52 75 6e 20 22 2b  53 70 72 69 74 65 46 4e  |="Run "+SpriteFN|
00005f70  61 6d 65 24 0d 02 8a 32  20 20 20 20 20 20 20 20  |ame$...2        |
00005f80  e7 20 4f 53 76 65 72 73  69 6f 6e 25 3e 3d 33 30  |. OSversion%>=30|
00005f90  30 20 8c 20 63 6d 64 24  3d 22 46 69 6c 65 72 5f  |0 . cmd$="Filer_|
00005fa0  22 2b 63 6d 64 24 0d 02  8b 24 20 20 20 20 20 20  |"+cmd$...$      |
00005fb0  20 20 c8 99 20 22 57 69  6d 70 5f 53 74 61 72 74  |  .. "Wimp_Start|
00005fc0  54 61 73 6b 22 2c 63 6d  64 24 0d 02 8c 1b 20 20  |Task",cmd$....  |
00005fd0  20 20 20 20 c9 20 69 74  65 6d 5f 73 70 72 72 65  |    . item_sprre|
00005fe0  6c 6f 61 64 25 0d 02 8d  2a 20 20 20 20 20 20 20  |load%...*       |
00005ff0  20 f2 6c 6f 61 64 75 73  65 72 73 70 72 69 74 65  | .loadusersprite|
00006000  73 28 53 70 72 69 74 65  46 4e 61 6d 65 24 29 0d  |s(SpriteFName$).|
00006010  02 8e 1a 20 20 20 20 20  20 c9 20 69 74 65 6d 5f  |...      . item_|
00006020  73 70 72 72 65 73 65 74  25 0d 02 8f 20 20 20 20  |sprreset%...    |
00006030  20 20 20 20 20 f2 6c 6f  61 64 75 73 65 72 73 70  |     .loadusersp|
00006040  72 69 74 65 73 28 22 22  29 0d 02 90 16 20 20 20  |rites("")....   |
00006050  20 20 20 c9 20 69 74 65  6d 5f 71 75 69 74 25 0d  |   . item_quit%.|
00006060  02 91 1c 20 20 20 20 20  20 20 20 e7 20 43 68 61  |...        . Cha|
00006070  6e 67 65 73 4d 61 64 65  25 20 8c 0d 02 92 20 20  |ngesMade% ....  |
00006080  20 20 20 20 20 20 20 20  20 f2 64 69 61 6c 6f 67  |         .dialog|
00006090  75 65 28 30 2c 22 22 2c  22 22 29 0d 02 93 0d 20  |ue(0,"","").... |
000060a0  20 20 20 20 20 20 20 cc  0d 02 94 19 20 20 20 20  |       .....    |
000060b0  20 20 20 20 20 20 f2 70  72 65 71 75 69 74 28 30  |      .prequit(0|
000060c0  29 0d 02 95 0d 20 20 20  20 20 20 20 20 cd 0d 02  |)....        ...|
000060d0  96 09 20 20 20 20 cb 0d  02 97 12 20 20 c9 20 54  |..    .....  . T|
000060e0  65 6d 70 6c 4d 65 6e 75  25 0d 02 98 12 20 20 20  |emplMenu%....   |
000060f0  20 c8 8e 20 69 74 65 6d  25 20 ca 0d 02 99 1b 20  | .. item% ..... |
00006100  20 20 20 20 20 c9 20 69  74 65 6d 5f 74 65 6d 70  |     . item_temp|
00006110  6c 6e 61 6d 65 25 0d 02  9a 1c 20 20 20 20 20 20  |lname%....      |
00006120  20 20 c8 8e 20 70 61 72  65 6e 74 69 74 65 6d 25  |  .. parentitem%|
00006130  20 ca 0d 02 9b 21 20 20  20 20 20 20 20 20 20 20  | ....!          |
00006140  c9 20 69 74 65 6d 5f 63  72 65 61 74 65 74 65 6d  |. item_createtem|
00006150  70 6c 25 0d 02 9c 1e 20  20 20 20 20 20 20 20 20  |pl%....         |
00006160  20 20 20 e7 20 a9 28 69  74 65 6d 24 29 3e 30 20  |   . .(item$)>0 |
00006170  8c 0d 02 9d 21 20 20 20  20 20 20 20 20 20 20 20  |....!           |
00006180  20 20 20 57 69 6e 42 6c  6b 25 21 30 3d 44 65 66  |   WinBlk%!0=Def|
00006190  57 25 0d 02 9e 32 20 20  20 20 20 20 20 20 20 20  |W%...2          |
000061a0  20 20 20 20 c8 99 20 22  57 69 6d 70 5f 47 65 74  |    .. "Wimp_Get|
000061b0  57 69 6e 64 6f 77 49 6e  66 6f 22 2c 2c 57 69 6e  |WindowInfo",,Win|
000061c0  42 6c 6b 25 0d 02 9f 4a  20 20 20 20 20 20 20 20  |Blk%...J        |
000061d0  20 20 20 20 20 20 24 28  57 69 6e 42 6c 6b 25 2b  |      $(WinBlk%+|
000061e0  37 36 29 3d 69 74 65 6d  24 20 3a 20 f4 20 74 69  |76)=item$ : . ti|
000061f0  74 6c 65 20 62 61 72 20  65 71 75 61 6c 20 74 6f  |tle bar equal to|
00006200  20 74 65 6d 70 6c 61 74  65 20 6e 61 6d 65 0d 02  | template name..|
00006210  a0 1e 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00006220  57 69 6e 42 6c 6b 25 21  38 38 3d 30 0d 02 a1 2d  |WinBlk%!88=0...-|
00006230  20 20 20 20 20 20 20 20  20 20 20 20 20 20 f2 74  |              .t|
00006240  65 6d 70 6c 5f 61 64 64  28 69 74 65 6d 24 2c 57  |empl_add(item$,W|
00006250  69 6e 42 6c 6b 25 2c 31  29 0d 02 a2 2f 20 20 20  |inBlk%,1).../   |
00006260  20 20 20 20 20 20 20 20  20 20 20 f2 6f 70 65 6e  |           .open|
00006270  74 65 6d 70 6c 61 74 65  28 4e 72 54 65 6d 70 6c  |template(NrTempl|
00006280  61 74 65 73 25 2d 31 29  0d 02 a3 20 20 20 20 20  |ates%-1)...     |
00006290  20 20 20 20 20 20 20 20  20 20 f2 73 65 74 63 68  |          .setch|
000062a0  61 6e 67 65 64 28 b9 29  0d 02 a4 11 20 20 20 20  |anged(.)....    |
000062b0  20 20 20 20 20 20 20 20  cd 0d 02 a5 21 20 20 20  |        ....!   |
000062c0  20 20 20 20 20 20 20 c9  20 69 74 65 6d 5f 72 65  |       . item_re|
000062d0  6e 61 6d 65 74 65 6d 70  6c 25 0d 02 a6 1e 20 20  |nametempl%....  |
000062e0  20 20 20 20 20 20 20 20  20 20 e7 20 a9 28 69 74  |          . .(it|
000062f0  65 6d 24 29 3e 30 20 8c  0d 02 a7 16 20 20 20 20  |em$)>0 .....    |
00006300  20 20 20 20 20 20 20 20  20 20 6a 25 3d 30 0d 02  |          j%=0..|
00006310  a8 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.0              |
00006320  f4 20 63 68 65 63 6b 20  69 66 20 6e 61 6d 65 20  |. check if name |
00006330  61 6c 72 65 61 64 79 20  65 78 69 73 74 73 0d 02  |already exists..|
00006340  a9 46 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.F              |
00006350  c8 95 20 28 6a 25 3c 4e  72 54 65 6d 70 6c 61 74  |.. (j%<NrTemplat|
00006360  65 73 25 29 20 80 20 28  24 28 54 65 6d 70 6c 4e  |es%) . ($(TemplN|
00006370  61 6d 65 73 25 2b 32 38  2a 6a 25 29 3c 3e 69 74  |ames%+28*j%)<>it|
00006380  65 6d 24 29 0d 02 aa 19  20 20 20 20 20 20 20 20  |em$)....        |
00006390  20 20 20 20 20 20 20 20  6a 25 2b 3d 31 0d 02 ab  |        j%+=1...|
000063a0  13 20 20 20 20 20 20 20  20 20 20 20 20 20 20 ce  |.              .|
000063b0  0d 02 ac 34 20 20 20 20  20 20 20 20 20 20 20 20  |...4            |
000063c0  20 20 e7 20 28 6a 25 3d  4e 72 54 65 6d 70 6c 61  |  . (j%=NrTempla|
000063d0  74 65 73 25 29 20 84 20  44 75 70 6c 4e 61 6d 65  |tes%) . DuplName|
000063e0  73 25 20 8c 0d 02 ad 20  20 20 20 20 20 20 20 20  |s% ....         |
000063f0  20 20 20 20 20 20 20 20  69 25 3d 53 65 6c 42 6c  |        i%=SelBl|
00006400  6b 25 21 30 0d 02 ae 2e  20 20 20 20 20 20 20 20  |k%!0....        |
00006410  20 20 20 20 20 20 20 20  24 28 54 65 6d 70 6c 4e  |        $(TemplN|
00006420  61 6d 65 73 25 2b 32 38  2a 69 25 29 3d 69 74 65  |ames%+28*i%)=ite|
00006430  6d 24 0d 02 af 26 20 20  20 20 20 20 20 20 20 20  |m$...&          |
00006440  20 20 20 20 20 20 49 63  6f 6e 42 6c 6b 25 21 30  |      IconBlk%!0|
00006450  3d 54 65 6d 70 6c 57 25  0d 02 b0 21 20 20 20 20  |=TemplW%...!    |
00006460  20 20 20 20 20 20 20 20  20 20 20 20 49 63 6f 6e  |            Icon|
00006470  42 6c 6b 25 21 34 3d 69  25 0d 02 b1 34 20 20 20  |Blk%!4=i%...4   |
00006480  20 20 20 20 20 20 20 20  20 20 20 20 20 c8 99 20  |             .. |
00006490  22 57 69 6d 70 5f 47 65  74 49 63 6f 6e 53 74 61  |"Wimp_GetIconSta|
000064a0  74 65 22 2c 2c 49 63 6f  6e 42 6c 6b 25 0d 02 b2  |te",,IconBlk%...|
000064b0  4f 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |O               |
000064c0  20 49 63 6f 6e 42 6c 6b  25 21 31 36 3d 28 49 63  | IconBlk%!16=(Ic|
000064d0  6f 6e 42 6c 6b 25 21 38  29 2b 28 54 65 6d 70 6c  |onBlk%!8)+(Templ|
000064e0  57 5f 49 63 6f 6e 58 25  2d 38 29 2d 31 36 2a 28  |W_IconX%-8)-16*(|
000064f0  31 31 2d a9 28 69 74 65  6d 24 29 29 0d 02 b3 3d  |11-.(item$))...=|
00006500  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006510  64 75 6d 6d 79 25 3d a4  72 65 64 65 66 69 6e 65  |dummy%=.redefine|
00006520  69 63 6f 6e 28 54 65 6d  70 6c 57 25 2c 69 25 2c  |icon(TemplW%,i%,|
00006530  49 63 6f 6e 42 6c 6b 25  29 0d 02 b4 22 20 20 20  |IconBlk%)..."   |
00006540  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 73 65  |             .se|
00006550  74 63 68 61 6e 67 65 64  28 b9 29 0d 02 b5 13 20  |tchanged(.).... |
00006560  20 20 20 20 20 20 20 20  20 20 20 20 20 cc 0d 02  |             ...|
00006570  b6 33 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.3              |
00006580  20 20 f2 63 6f 6d 70 6c  61 69 6e 28 a4 6d 73 67  |  .complain(.msg|
00006590  5f 6c 6f 6f 6b 75 70 30  28 22 54 41 45 58 22 29  |_lookup0("TAEX")|
000065a0  29 0d 02 b7 13 20 20 20  20 20 20 20 20 20 20 20  |)....           |
000065b0  20 20 20 cd 0d 02 b8 11  20 20 20 20 20 20 20 20  |   .....        |
000065c0  20 20 20 20 cd 0d 02 b9  1f 20 20 20 20 20 20 20  |    .....       |
000065d0  20 20 20 c9 20 69 74 65  6d 5f 63 6f 70 79 74 65  |   . item_copyte|
000065e0  6d 70 6c 25 0d 02 ba 1e  20 20 20 20 20 20 20 20  |mpl%....        |
000065f0  20 20 20 20 e7 20 a9 28  69 74 65 6d 24 29 3e 30  |    . .(item$)>0|
00006600  20 8c 0d 02 bb 23 20 20  20 20 20 20 20 20 20 20  | ....#          |
00006610  20 20 20 20 f2 73 65 6c  5f 67 65 74 28 54 65 6d  |    .sel_get(Tem|
00006620  70 6c 57 25 29 0d 02 bc  33 20 20 20 20 20 20 20  |plW%)...3       |
00006630  20 20 20 20 20 20 20 57  69 6e 42 6c 6b 25 21 30  |       WinBlk%!0|
00006640  3d 54 65 6d 70 6c 48 61  6e 64 6c 65 25 28 53 65  |=TemplHandle%(Se|
00006650  6c 42 6c 6b 25 21 30 29  0d 02 bd 32 20 20 20 20  |lBlk%!0)...2    |
00006660  20 20 20 20 20 20 20 20  20 20 c8 99 20 22 57 69  |          .. "Wi|
00006670  6d 70 5f 47 65 74 57 69  6e 64 6f 77 49 6e 66 6f  |mp_GetWindowInfo|
00006680  22 2c 2c 57 69 6e 42 6c  6b 25 0d 02 be 30 20 20  |",,WinBlk%...0  |
00006690  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 50 61  |            . Pa|
000066a0  6e 65 46 6c 61 67 25 3f  28 53 65 6c 42 6c 6b 25  |neFlag%?(SelBlk%|
000066b0  21 28 34 2a 69 25 29 29  20 8c 0d 02 bf 47 20 20  |!(4*i%)) ....G  |
000066c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 57 69  |              Wi|
000066d0  6e 42 6c 6b 25 21 33 32  3d 57 69 6e 42 6c 6b 25  |nBlk%!32=WinBlk%|
000066e0  21 33 32 20 84 20 28 31  3c 3c 35 29 20 3a 20 f4  |!32 . (1<<5) : .|
000066f0  20 63 6f 70 79 20 27 50  61 6e 65 27 20 66 6c 61  | copy 'Pane' fla|
00006700  67 0d 02 c0 13 20 20 20  20 20 20 20 20 20 20 20  |g....           |
00006710  20 20 20 cd 0d 02 c1 35  20 20 20 20 20 20 20 20  |   ....5        |
00006720  20 20 20 20 20 20 f2 69  63 6f 6e 72 65 61 6c 6c  |      .iconreall|
00006730  6f 63 28 57 69 6e 42 6c  6b 25 2b 36 30 2c 57 69  |oc(WinBlk%+60,Wi|
00006740  6e 42 6c 6b 25 2b 37 36  29 0d 02 c2 22 20 20 20  |nBlk%+76)..."   |
00006750  20 20 20 20 20 20 20 20  20 20 20 e7 20 57 69 6e  |           . Win|
00006760  42 6c 6b 25 21 38 38 3e  30 20 8c 0d 02 c3 29 20  |Blk%!88>0 ....) |
00006770  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 e3  |               .|
00006780  20 69 25 3d 30 20 b8 20  57 69 6e 42 6c 6b 25 21  | i%=0 . WinBlk%!|
00006790  38 38 2d 31 0d 02 c4 4b  20 20 20 20 20 20 20 20  |88-1...K        |
000067a0  20 20 20 20 20 20 20 20  20 20 f2 69 63 6f 6e 72  |          .iconr|
000067b0  65 61 6c 6c 6f 63 28 57  69 6e 42 6c 6b 25 2b 39  |ealloc(WinBlk%+9|
000067c0  32 2b 33 32 2a 69 25 2b  31 36 2c 57 69 6e 42 6c  |2+32*i%+16,WinBl|
000067d0  6b 25 2b 39 32 2b 33 32  2a 69 25 2b 32 30 29 0d  |k%+92+32*i%+20).|
000067e0  02 c5 18 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
000067f0  20 20 20 ed 20 69 25 0d  02 c6 13 20 20 20 20 20  |   . i%....     |
00006800  20 20 20 20 20 20 20 20  20 cd 0d 02 c7 2d 20 20  |         ....-  |
00006810  20 20 20 20 20 20 20 20  20 20 20 20 f2 74 65 6d  |            .tem|
00006820  70 6c 5f 61 64 64 28 69  74 65 6d 24 2c 57 69 6e  |pl_add(item$,Win|
00006830  42 6c 6b 25 2c 31 29 0d  02 c8 2f 20 20 20 20 20  |Blk%,1).../     |
00006840  20 20 20 20 20 20 20 20  20 f2 6f 70 65 6e 74 65  |         .opente|
00006850  6d 70 6c 61 74 65 28 4e  72 54 65 6d 70 6c 61 74  |mplate(NrTemplat|
00006860  65 73 25 2d 31 29 0d 02  c9 20 20 20 20 20 20 20  |es%-1)...       |
00006870  20 20 20 20 20 20 20 20  f2 73 65 74 63 68 61 6e  |        .setchan|
00006880  67 65 64 28 b9 29 0d 02  ca 11 20 20 20 20 20 20  |ged(.)....      |
00006890  20 20 20 20 20 20 cd 0d  02 cb 0d 20 20 20 20 20  |      .....     |
000068a0  20 20 20 cb 0d 02 cc 1b  20 20 20 20 20 20 c9 20  |   .....      . |
000068b0  69 74 65 6d 5f 6f 70 65  6e 74 65 6d 70 6c 25 0d  |item_opentempl%.|
000068c0  02 cd 1d 20 20 20 20 20  20 20 20 f2 73 65 6c 5f  |...        .sel_|
000068d0  67 65 74 28 54 65 6d 70  6c 57 25 29 0d 02 ce 27  |get(TemplW%)...'|
000068e0  20 20 20 20 20 20 20 20  e3 20 69 25 3d 4e 72 53  |        . i%=NrS|
000068f0  65 6c 65 63 74 65 64 25  2d 31 20 b8 20 30 20 88  |elected%-1 . 0 .|
00006900  20 2d 31 0d 02 cf 2b 20  20 20 20 20 20 20 20 20  | -1...+         |
00006910  20 f2 6f 70 65 6e 74 65  6d 70 6c 61 74 65 28 53  | .opentemplate(S|
00006920  65 6c 42 6c 6b 25 21 28  34 2a 69 25 29 29 0d 02  |elBlk%!(4*i%))..|
00006930  d0 10 20 20 20 20 20 20  20 20 ed 20 69 25 0d 02  |..        . i%..|
00006940  d1 1c 20 20 20 20 20 20  c9 20 69 74 65 6d 5f 63  |..      . item_c|
00006950  6c 6f 73 65 74 65 6d 70  6c 25 0d 02 d2 1d 20 20  |losetempl%....  |
00006960  20 20 20 20 20 20 f2 73  65 6c 5f 67 65 74 28 54  |      .sel_get(T|
00006970  65 6d 70 6c 57 25 29 0d  02 d3 27 20 20 20 20 20  |emplW%)...'     |
00006980  20 20 20 e3 20 69 25 3d  4e 72 53 65 6c 65 63 74  |   . i%=NrSelect|
00006990  65 64 25 2d 31 20 b8 20  30 20 88 20 2d 31 0d 02  |ed%-1 . 0 . -1..|
000069a0  d4 2c 20 20 20 20 20 20  20 20 20 20 f2 63 6c 6f  |.,          .clo|
000069b0  73 65 74 65 6d 70 6c 61  74 65 28 53 65 6c 42 6c  |setemplate(SelBl|
000069c0  6b 25 21 28 34 2a 69 25  29 29 0d 02 d5 10 20 20  |k%!(4*i%))....  |
000069d0  20 20 20 20 20 20 ed 20  69 25 0d 02 d6 1d 20 20  |      . i%....  |
000069e0  20 20 20 20 c9 20 69 74  65 6d 5f 64 65 6c 65 74  |    . item_delet|
000069f0  65 74 65 6d 70 6c 25 0d  02 d7 1d 20 20 20 20 20  |etempl%....     |
00006a00  20 20 20 c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |   .. "Hourglass|
00006a10  5f 4f 6e 22 0d 02 d8 1d  20 20 20 20 20 20 20 20  |_On"....        |
00006a20  f2 73 65 6c 5f 67 65 74  28 54 65 6d 70 6c 57 25  |.sel_get(TemplW%|
00006a30  29 0d 02 d9 27 20 20 20  20 20 20 20 20 e3 20 69  |)...'        . i|
00006a40  25 3d 4e 72 53 65 6c 65  63 74 65 64 25 2d 31 20  |%=NrSelected%-1 |
00006a50  b8 20 30 20 88 20 2d 31  0d 02 da 2b 20 20 20 20  |. 0 . -1...+    |
00006a60  20 20 20 20 20 20 f2 74  65 6d 70 6c 5f 64 65 6c  |      .templ_del|
00006a70  65 74 65 28 53 65 6c 42  6c 6b 25 21 28 34 2a 69  |ete(SelBlk%!(4*i|
00006a80  25 29 29 0d 02 db 10 20  20 20 20 20 20 20 20 ed  |%))....        .|
00006a90  20 69 25 0d 02 dc 22 20  20 20 20 20 20 20 20 f2  | i%..."        .|
00006aa0  73 65 6c 5f 63 6c 65 61  72 28 54 65 6d 70 6c 57  |sel_clear(TemplW|
00006ab0  25 2c 2d 31 29 0d 02 dd  21 20 20 20 20 20 20 20  |%,-1)...!       |
00006ac0  20 4c 61 73 74 4d 65 6e  75 5f 57 69 6e 25 3d 54  | LastMenu_Win%=T|
00006ad0  65 6d 70 6c 57 25 0d 02  de 1d 20 20 20 20 20 20  |emplW%....      |
00006ae0  20 20 4c 61 73 74 4d 65  6e 75 5f 49 63 6f 6e 25  |  LastMenu_Icon%|
00006af0  3d 2d 31 0d 02 df 1e 20  20 20 20 20 20 20 20 c8  |=-1....        .|
00006b00  99 20 22 48 6f 75 72 67  6c 61 73 73 5f 4f 66 66  |. "Hourglass_Off|
00006b10  22 0d 02 e0 1d 20 20 20  20 20 20 c9 20 69 74 65  |"....      . ite|
00006b20  6d 5f 73 65 6c 61 6c 6c  74 65 6d 70 6c 25 0d 02  |m_selalltempl%..|
00006b30  e1 1d 20 20 20 20 20 20  20 20 f2 73 65 6c 5f 61  |..        .sel_a|
00006b40  6c 6c 28 54 65 6d 70 6c  57 25 29 0d 02 e2 1f 20  |ll(TemplW%).... |
00006b50  20 20 20 20 20 c9 20 69  74 65 6d 5f 63 6c 65 61  |     . item_clea|
00006b60  72 73 65 6c 74 65 6d 70  6c 25 0d 02 e3 22 20 20  |rseltempl%..."  |
00006b70  20 20 20 20 20 20 f2 73  65 6c 5f 63 6c 65 61 72  |      .sel_clear|
00006b80  28 54 65 6d 70 6c 57 25  2c 2d 31 29 0d 02 e4 1b  |(TemplW%,-1)....|
00006b90  20 20 20 20 20 20 c9 20  69 74 65 6d 5f 64 65 6c  |      . item_del|
00006ba0  65 74 65 61 6c 6c 25 0d  02 e5 1c 20 20 20 20 20  |eteall%....     |
00006bb0  20 20 20 e7 20 43 68 61  6e 67 65 73 4d 61 64 65  |   . ChangesMade|
00006bc0  25 20 8c 0d 02 e6 20 20  20 20 20 20 20 20 20 20  |% ....          |
00006bd0  20 f2 64 69 61 6c 6f 67  75 65 28 31 2c 22 22 2c  | .dialogue(1,"",|
00006be0  22 22 29 0d 02 e7 0d 20  20 20 20 20 20 20 20 cc  |"")....        .|
00006bf0  0d 02 e8 1e 20 20 20 20  20 20 20 20 20 20 f2 74  |....          .t|
00006c00  65 6d 70 6c 5f 64 65 6c  65 74 65 61 6c 6c 0d 02  |empl_deleteall..|
00006c10  e9 23 20 20 20 20 20 20  20 20 20 20 4c 61 73 74  |.#          Last|
00006c20  4d 65 6e 75 5f 57 69 6e  25 3d 54 65 6d 70 6c 57  |Menu_Win%=TemplW|
00006c30  25 0d 02 ea 1f 20 20 20  20 20 20 20 20 20 20 4c  |%....          L|
00006c40  61 73 74 4d 65 6e 75 5f  49 63 6f 6e 25 3d 2d 31  |astMenu_Icon%=-1|
00006c50  0d 02 eb 0d 20 20 20 20  20 20 20 20 cd 0d 02 ec  |....        ....|
00006c60  1b 20 20 20 20 20 20 c9  20 69 74 65 6d 5f 73 6f  |.      . item_so|
00006c70  72 74 74 65 6d 70 6c 25  0d 02 ed 22 20 20 20 20  |rttempl%..."    |
00006c80  20 20 20 20 f2 73 65 6c  5f 63 6c 65 61 72 28 54  |    .sel_clear(T|
00006c90  65 6d 70 6c 57 25 2c 2d  31 29 0d 02 ee 17 20 20  |emplW%,-1)....  |
00006ca0  20 20 20 20 20 20 f2 74  65 6d 70 6c 5f 73 6f 72  |      .templ_sor|
00006cb0  74 0d 02 ef 1f 20 20 20  20 20 20 20 20 f2 72 65  |t....        .re|
00006cc0  64 65 66 69 6e 65 62 72  6f 77 73 65 72 28 b9 29  |definebrowser(.)|
00006cd0  0d 02 f0 21 20 20 20 20  20 20 20 20 4c 61 73 74  |...!        Last|
00006ce0  4d 65 6e 75 5f 57 69 6e  25 3d 54 65 6d 70 6c 57  |Menu_Win%=TemplW|
00006cf0  25 0d 02 f1 1d 20 20 20  20 20 20 20 20 4c 61 73  |%....        Las|
00006d00  74 4d 65 6e 75 5f 49 63  6f 6e 25 3d 2d 31 0d 02  |tMenu_Icon%=-1..|
00006d10  f2 16 20 20 20 20 20 20  c9 20 69 74 65 6d 5f 73  |..      . item_s|
00006d20  61 76 65 25 0d 02 f3 1e  20 20 20 20 20 20 20 20  |ave%....        |
00006d30  53 61 76 69 6e 67 53 65  6c 65 63 74 69 6f 6e 25  |SavingSelection%|
00006d40  3d a3 0d 02 f4 26 20 20  20 20 20 20 20 20 f2 73  |=....&        .s|
00006d50  61 76 65 74 65 6d 70 6c  61 74 65 73 28 4d 61 69  |avetemplates(Mai|
00006d60  6e 46 4e 61 6d 65 24 29  0d 02 f5 09 20 20 20 20  |nFName$)....    |
00006d70  cb 0d 02 f6 36 20 20 20  20 e7 20 54 65 6d 70 6c  |....6    . Templ|
00006d80  4d 65 6e 75 5f 44 65 73  65 6c 65 63 74 25 20 8c  |Menu_Deselect% .|
00006d90  20 f2 73 65 6c 5f 63 6c  65 61 72 28 54 65 6d 70  | .sel_clear(Temp|
00006da0  6c 57 25 2c 2d 31 29 0d  02 f7 11 20 20 c9 20 55  |lW%,-1)....  . U|
00006db0  73 65 72 4d 65 6e 75 25  0d 02 f8 12 20 20 20 20  |serMenu%....    |
00006dc0  c8 8e 20 69 74 65 6d 25  20 ca 0d 02 f9 45 20 20  |.. item% ....E  |
00006dd0  20 20 20 20 c9 20 69 74  65 6d 5f 63 6f 70 79 69  |    . item_copyi|
00006de0  63 6f 6e 25 2c 69 74 65  6d 5f 75 70 25 2c 69 74  |con%,item_up%,it|
00006df0  65 6d 5f 64 6f 77 6e 25  2c 69 74 65 6d 5f 6c 65  |em_down%,item_le|
00006e00  66 74 25 2c 69 74 65 6d  5f 72 69 67 68 74 25 0d  |ft%,item_right%.|
00006e10  02 fa 16 20 20 20 20 20  20 20 20 c8 8e 20 69 74  |...        .. it|
00006e20  65 6d 25 20 ca 0d 02 fb  27 20 20 20 20 20 20 20  |em% ....'       |
00006e30  20 20 20 c9 20 69 74 65  6d 5f 63 6f 70 79 69 63  |   . item_copyic|
00006e40  6f 6e 25 20 3a 20 64 69  72 25 3d 30 0d 02 fc 27  |on% : dir%=0...'|
00006e50  20 20 20 20 20 20 20 20  20 20 c9 20 69 74 65 6d  |          . item|
00006e60  5f 75 70 25 20 20 20 20  20 20 20 3a 20 64 69 72  |_up%       : dir|
00006e70  25 3d 31 0d 02 fd 27 20  20 20 20 20 20 20 20 20  |%=1...'         |
00006e80  20 c9 20 69 74 65 6d 5f  64 6f 77 6e 25 20 20 20  | . item_down%   |
00006e90  20 20 3a 20 64 69 72 25  3d 32 0d 02 fe 27 20 20  |  : dir%=2...'  |
00006ea0  20 20 20 20 20 20 20 20  c9 20 69 74 65 6d 5f 6c  |        . item_l|
00006eb0  65 66 74 25 20 20 20 20  20 3a 20 64 69 72 25 3d  |eft%     : dir%=|
00006ec0  33 0d 02 ff 27 20 20 20  20 20 20 20 20 20 20 c9  |3...'          .|
00006ed0  20 69 74 65 6d 5f 72 69  67 68 74 25 20 20 20 20  | item_right%    |
00006ee0  3a 20 64 69 72 25 3d 34  0d 03 00 0d 20 20 20 20  |: dir%=4....    |
00006ef0  20 20 20 20 cb 0d 03 01  3b 20 20 20 20 20 20 20  |    ....;       |
00006f00  20 f2 63 6f 70 79 69 63  6f 6e 73 65 6c 28 4c 61  | .copyiconsel(La|
00006f10  73 74 4d 65 6e 75 5f 57  69 6e 25 2c 4c 61 73 74  |stMenu_Win%,Last|
00006f20  4d 65 6e 75 5f 49 63 6f  6e 25 2c 64 69 72 25 29  |Menu_Icon%,dir%)|
00006f30  0d 03 02 2b 20 20 20 20  20 20 c9 20 69 74 65 6d  |...+      . item|
00006f40  5f 69 63 6f 6e 6e 72 25  2c 69 74 65 6d 5f 72 65  |_iconnr%,item_re|
00006f50  6e 75 6d 62 65 72 69 63  6f 6e 25 0d 03 03 37 20  |numbericon%...7 |
00006f60  20 20 20 20 20 20 20 e7  20 69 74 65 6d 25 3d 69  |       . item%=i|
00006f70  74 65 6d 5f 69 63 6f 6e  6e 72 25 20 8c 20 4e 65  |tem_iconnr% . Ne|
00006f80  78 74 49 63 6f 6e 4e 72  25 3d bb 28 69 74 65 6d  |xtIconNr%=.(item|
00006f90  24 29 0d 03 04 23 20 20  20 20 20 20 20 20 f2 73  |$)...#        .s|
00006fa0  65 6c 5f 67 65 74 28 4c  61 73 74 4d 65 6e 75 5f  |el_get(LastMenu_|
00006fb0  57 69 6e 25 29 0d 03 05  1c 20 20 20 20 20 20 20  |Win%)....       |
00006fc0  20 c8 8e 20 4e 72 53 65  6c 65 63 74 65 64 25 20  | .. NrSelected% |
00006fd0  ca 0d 03 06 11 20 20 20  20 20 20 20 20 20 20 c9  |.....          .|
00006fe0  20 30 0d 03 07 3b 20 20  20 20 20 20 20 20 20 20  | 0...;          |
00006ff0  20 20 f2 72 65 6e 75 6d  62 65 72 69 63 6f 6e 28  |  .renumbericon(|
00007000  4c 61 73 74 4d 65 6e 75  5f 57 69 6e 25 2c 4c 61  |LastMenu_Win%,La|
00007010  73 74 4d 65 6e 75 5f 49  63 6f 6e 25 29 0d 03 08  |stMenu_Icon%)...|
00007020  2a 20 20 20 20 20 20 20  20 20 20 20 20 4c 61 73  |*            Las|
00007030  74 4d 65 6e 75 5f 49 63  6f 6e 25 3d 4e 65 78 74  |tMenu_Icon%=Next|
00007040  49 63 6f 6e 4e 72 25 0d  03 09 11 20 20 20 20 20  |IconNr%....     |
00007050  20 20 20 20 20 c9 20 31  0d 03 0a 36 20 20 20 20  |     . 1...6    |
00007060  20 20 20 20 20 20 20 20  f2 72 65 6e 75 6d 62 65  |        .renumbe|
00007070  72 69 63 6f 6e 28 4c 61  73 74 4d 65 6e 75 5f 57  |ricon(LastMenu_W|
00007080  69 6e 25 2c 53 65 6c 42  6c 6b 25 21 30 29 0d 03  |in%,SelBlk%!0)..|
00007090  0b 0f 20 20 20 20 20 20  20 20 20 20 7f 0d 03 0c  |..          ....|
000070a0  2f 20 20 20 20 20 20 20  20 20 20 20 20 f2 72 65  |/            .re|
000070b0  6e 75 6d 62 65 72 69 63  6f 6e 73 65 6c 28 4c 61  |numbericonsel(La|
000070c0  73 74 4d 65 6e 75 5f 57  69 6e 25 29 0d 03 0d 0d  |stMenu_Win%)....|
000070d0  20 20 20 20 20 20 20 20  cb 0d 03 0e 1c 20 20 20  |        .....   |
000070e0  20 20 20 c9 20 69 74 65  6d 5f 64 65 6c 65 74 65  |   . item_delete|
000070f0  69 63 6f 6e 25 0d 03 0f  38 20 20 20 20 20 20 20  |icon%...8       |
00007100  20 f2 64 65 6c 65 74 65  69 63 6f 6e 73 65 6c 28  | .deleteiconsel(|
00007110  4c 61 73 74 4d 65 6e 75  5f 57 69 6e 25 2c 4c 61  |LastMenu_Win%,La|
00007120  73 74 4d 65 6e 75 5f 49  63 6f 6e 25 29 0d 03 10  |stMenu_Icon%)...|
00007130  1a 20 20 20 20 20 20 c9  20 69 74 65 6d 5f 65 64  |.      . item_ed|
00007140  69 74 69 63 6f 6e 25 0d  03 11 35 20 20 20 20 20  |iticon%...5     |
00007150  20 20 20 f2 69 63 65 64  5f 73 74 61 72 74 28 4c  |   .iced_start(L|
00007160  61 73 74 4d 65 6e 75 5f  57 69 6e 25 2c 4c 61 73  |astMenu_Win%,Las|
00007170  74 4d 65 6e 75 5f 49 63  6f 6e 25 29 0d 03 12 19  |tMenu_Icon%)....|
00007180  20 20 20 20 20 20 c9 20  69 74 65 6d 5f 6d 69 6e  |      . item_min|
00007190  73 69 7a 65 25 0d 03 13  3c 20 20 20 20 20 20 20  |size%...<       |
000071a0  20 f2 6d 69 6e 69 6d 69  7a 65 69 63 6f 6e 73 65  | .minimizeiconse|
000071b0  6c 28 4c 61 73 74 4d 65  6e 75 5f 57 69 6e 25 2c  |l(LastMenu_Win%,|
000071c0  4c 61 73 74 4d 65 6e 75  5f 49 63 6f 6e 25 2c 30  |LastMenu_Icon%,0|
000071d0  29 0d 03 14 1c 20 20 20  20 20 20 c9 20 69 74 65  |)....      . ite|
000071e0  6d 5f 63 65 6e 74 65 72  69 63 6f 6e 25 0d 03 15  |m_centericon%...|
000071f0  3a 20 20 20 20 20 20 20  20 f2 63 65 6e 74 65 72  |:        .center|
00007200  69 63 6f 6e 73 65 6c 28  4c 61 73 74 4d 65 6e 75  |iconsel(LastMenu|
00007210  5f 57 69 6e 25 2c 4c 61  73 74 4d 65 6e 75 5f 49  |_Win%,LastMenu_I|
00007220  63 6f 6e 25 2c 30 29 0d  03 16 1a 20 20 20 20 20  |con%,0)....     |
00007230  20 c9 20 69 74 65 6d 5f  73 61 6d 65 73 69 7a 65  | . item_samesize|
00007240  25 0d 03 17 3c 20 20 20  20 20 20 20 20 f2 73 61  |%...<        .sa|
00007250  6d 65 73 69 7a 65 69 63  6f 6e 73 65 6c 28 4c 61  |mesizeiconsel(La|
00007260  73 74 4d 65 6e 75 5f 57  69 6e 25 2c 4c 61 73 74  |stMenu_Win%,Last|
00007270  4d 65 6e 75 5f 49 63 6f  6e 25 2c 30 29 0d 03 18  |Menu_Icon%,0)...|
00007280  2c 20 20 20 20 20 20 c9  20 69 74 65 6d 5f 62 6f  |,      . item_bo|
00007290  74 68 25 2c 69 74 65 6d  5f 78 64 69 6d 25 2c 69  |th%,item_xdim%,i|
000072a0  74 65 6d 5f 79 64 69 6d  25 0d 03 19 1c 20 20 20  |tem_ydim%....   |
000072b0  20 20 20 20 20 c8 8e 20  70 61 72 65 6e 74 69 74  |     .. parentit|
000072c0  65 6d 25 20 ca 0d 03 1a  1d 20 20 20 20 20 20 20  |em% .....       |
000072d0  20 20 20 c9 20 69 74 65  6d 5f 6d 69 6e 73 69 7a  |   . item_minsiz|
000072e0  65 25 0d 03 1b 46 20 20  20 20 20 20 20 20 20 20  |e%...F          |
000072f0  20 20 f2 6d 69 6e 69 6d  69 7a 65 69 63 6f 6e 73  |  .minimizeicons|
00007300  65 6c 28 4c 61 73 74 4d  65 6e 75 5f 57 69 6e 25  |el(LastMenu_Win%|
00007310  2c 4c 61 73 74 4d 65 6e  75 5f 49 63 6f 6e 25 2c  |,LastMenu_Icon%,|
00007320  69 74 65 6d 6e 72 25 29  0d 03 1c 20 20 20 20 20  |itemnr%)...     |
00007330  20 20 20 20 20 20 c9 20  69 74 65 6d 5f 63 65 6e  |      . item_cen|
00007340  74 65 72 69 63 6f 6e 25  0d 03 1d 44 20 20 20 20  |tericon%...D    |
00007350  20 20 20 20 20 20 20 20  f2 63 65 6e 74 65 72 69  |        .centeri|
00007360  63 6f 6e 73 65 6c 28 4c  61 73 74 4d 65 6e 75 5f  |consel(LastMenu_|
00007370  57 69 6e 25 2c 4c 61 73  74 4d 65 6e 75 5f 49 63  |Win%,LastMenu_Ic|
00007380  6f 6e 25 2c 69 74 65 6d  6e 72 25 29 0d 03 1e 1e  |on%,itemnr%)....|
00007390  20 20 20 20 20 20 20 20  20 20 c9 20 69 74 65 6d  |          . item|
000073a0  5f 73 61 6d 65 73 69 7a  65 25 0d 03 1f 46 20 20  |_samesize%...F  |
000073b0  20 20 20 20 20 20 20 20  20 20 f2 73 61 6d 65 73  |          .sames|
000073c0  69 7a 65 69 63 6f 6e 73  65 6c 28 4c 61 73 74 4d  |izeiconsel(LastM|
000073d0  65 6e 75 5f 57 69 6e 25  2c 4c 61 73 74 4d 65 6e  |enu_Win%,LastMen|
000073e0  75 5f 49 63 6f 6e 25 2c  69 74 65 6d 6e 72 25 29  |u_Icon%,itemnr%)|
000073f0  0d 03 20 0d 20 20 20 20  20 20 20 20 cb 0d 03 21  |.. .        ...!|
00007400  1d 20 20 20 20 20 20 c9  20 69 74 65 6d 5f 73 65  |.      . item_se|
00007410  6c 61 6c 6c 69 63 6f 6e  73 25 0d 03 22 23 20 20  |lallicons%.."#  |
00007420  20 20 20 20 20 20 f2 73  65 6c 5f 61 6c 6c 28 4c  |      .sel_all(L|
00007430  61 73 74 4d 65 6e 75 5f  57 69 6e 25 29 0d 03 23  |astMenu_Win%)..#|
00007440  1f 20 20 20 20 20 20 c9  20 69 74 65 6d 5f 63 6c  |.      . item_cl|
00007450  65 61 72 73 65 6c 69 63  6f 6e 73 25 0d 03 24 28  |earselicons%..$(|
00007460  20 20 20 20 20 20 20 20  f2 73 65 6c 5f 63 6c 65  |        .sel_cle|
00007470  61 72 28 4c 61 73 74 4d  65 6e 75 5f 57 69 6e 25  |ar(LastMenu_Win%|
00007480  2c 2d 31 29 0d 03 25 1c  20 20 20 20 20 20 c9 20  |,-1)..%.      . |
00007490  69 74 65 6d 5f 65 64 69  74 77 69 6e 64 6f 77 25  |item_editwindow%|
000074a0  0d 03 26 29 20 20 20 20  20 20 20 20 f2 77 69 6e  |..&)        .win|
000074b0  65 64 5f 66 69 6c 6c 77  69 6e 28 4c 61 73 74 4d  |ed_fillwin(LastM|
000074c0  65 6e 75 5f 57 69 6e 25  29 0d 03 27 1b 20 20 20  |enu_Win%)..'.   |
000074d0  20 20 20 c9 20 69 74 65  6d 5f 65 64 69 74 74 69  |   . item_editti|
000074e0  74 6c 65 25 0d 03 28 29  20 20 20 20 20 20 20 20  |tle%..()        |
000074f0  f2 69 63 65 64 5f 73 74  61 72 74 28 4c 61 73 74  |.iced_start(Last|
00007500  4d 65 6e 75 5f 57 69 6e  25 2c 2d 34 29 0d 03 29  |Menu_Win%,-4)..)|
00007510  1b 20 20 20 20 20 20 c9  20 69 74 65 6d 5f 74 69  |.      . item_ti|
00007520  64 79 69 63 6f 6e 73 25  0d 03 2a 33 20 20 20 20  |dyicons%..*3    |
00007530  20 20 20 20 4c 61 73 74  4d 65 6e 75 5f 57 69 6e  |    LastMenu_Win|
00007540  25 3d a4 74 69 64 79 69  63 6f 6e 73 28 4c 61 73  |%=.tidyicons(Las|
00007550  74 4d 65 6e 75 5f 57 69  6e 25 29 0d 03 2b 1b 20  |tMenu_Win%)..+. |
00007560  20 20 20 20 20 c9 20 69  74 65 6d 5f 63 65 6e 74  |     . item_cent|
00007570  65 72 77 69 6e 25 0d 03  2c 28 20 20 20 20 20 20  |erwin%..,(      |
00007580  20 20 f2 6f 70 65 6e 77  69 6e 64 6f 77 28 4c 61  |  .openwindow(La|
00007590  73 74 4d 65 6e 75 5f 57  69 6e 25 2c 31 29 0d 03  |stMenu_Win%,1)..|
000075a0  2d 1a 20 20 20 20 20 20  c9 20 69 74 65 6d 5f 77  |-.      . item_w|
000075b0  69 6d 70 61 72 65 61 25  0d 03 2e 32 20 20 20 20  |imparea%...2    |
000075c0  20 20 20 20 f2 77 69 6e  64 6f 77 5f 73 65 74 73  |    .window_sets|
000075d0  70 72 69 74 65 61 72 65  61 28 4c 61 73 74 4d 65  |pritearea(LastMe|
000075e0  6e 75 5f 57 69 6e 25 2c  31 29 0d 03 2f 1c 20 20  |nu_Win%,1)../.  |
000075f0  20 20 20 20 c9 20 69 74  65 6d 5f 63 75 73 74 6f  |    . item_custo|
00007600  6d 61 72 65 61 25 0d 03  30 3d 20 20 20 20 20 20  |marea%..0=      |
00007610  20 20 f2 77 69 6e 64 6f  77 5f 73 65 74 73 70 72  |  .window_setspr|
00007620  69 74 65 61 72 65 61 28  4c 61 73 74 4d 65 6e 75  |itearea(LastMenu|
00007630  5f 57 69 6e 25 2c 55 73  65 72 53 70 72 69 74 65  |_Win%,UserSprite|
00007640  73 25 29 0d 03 31 1a 20  20 20 20 20 20 c9 20 69  |s%)..1.      . i|
00007650  74 65 6d 5f 63 6c 6f 73  65 77 69 6e 25 0d 03 32  |tem_closewin%..2|
00007660  39 20 20 20 20 20 20 20  20 f2 63 6c 6f 73 65 74  |9        .closet|
00007670  65 6d 70 6c 61 74 65 28  a4 77 68 69 63 68 74 65  |emplate(.whichte|
00007680  6d 70 6c 61 74 65 28 4c  61 73 74 4d 65 6e 75 5f  |mplate(LastMenu_|
00007690  57 69 6e 25 29 29 0d 03  33 0b 20 20 20 20 20 20  |Win%))..3.      |
000076a0  7f 0d 03 34 49 20 20 20  20 20 20 20 20 e7 20 28  |...4I        . (|
000076b0  69 74 65 6d 25 3d 69 74  65 6d 5f 63 72 65 61 74  |item%=item_creat|
000076c0  65 69 63 6f 6e 25 29 20  84 20 28 70 61 72 65 6e  |eicon%) . (paren|
000076d0  74 69 74 65 6d 25 3d 69  74 65 6d 5f 63 72 65 61  |titem%=item_crea|
000076e0  74 65 69 63 6f 6e 25 29  20 8c 0d 03 35 31 20 20  |teicon%) ...51  |
000076f0  20 20 20 20 20 20 20 20  e7 20 69 74 65 6d 25 3d  |        . item%=|
00007700  69 74 65 6d 5f 63 72 65  61 74 65 69 63 6f 6e 25  |item_createicon%|
00007710  20 8c 20 69 74 65 6d 24  3d 22 22 0d 03 36 36 20  | . item$=""..66 |
00007720  20 20 20 20 20 20 20 20  20 f4 20 63 6f 6e 76 65  |         . conve|
00007730  72 74 20 73 63 72 65 65  6e 20 63 6f 6f 72 64 73  |rt screen coords|
00007740  20 74 6f 20 77 69 6e 64  6f 77 20 63 6f 6f 72 64  | to window coord|
00007750  73 0d 03 37 27 20 20 20  20 20 20 20 20 20 20 53  |s..7'          S|
00007760  63 72 61 70 42 6c 6b 25  21 30 3d 4c 61 73 74 4d  |crapBlk%!0=LastM|
00007770  65 6e 75 5f 57 69 6e 25  0d 03 38 31 20 20 20 20  |enu_Win%..81    |
00007780  20 20 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 47  |      .. "Wimp_G|
00007790  65 74 57 69 6e 64 6f 77  53 74 61 74 65 22 2c 2c  |etWindowState",,|
000077a0  53 63 72 61 70 42 6c 6b  25 0d 03 39 3a 20 20 20  |ScrapBlk%..9:   |
000077b0  20 20 20 20 20 20 20 6d  69 6e 78 25 3d 4c 61 73  |       minx%=Las|
000077c0  74 4d 65 6e 75 5f 58 25  2d 28 53 63 72 61 70 42  |tMenu_X%-(ScrapB|
000077d0  6c 6b 25 21 34 2d 53 63  72 61 70 42 6c 6b 25 21  |lk%!4-ScrapBlk%!|
000077e0  32 30 29 0d 03 3a 3b 20  20 20 20 20 20 20 20 20  |20)..:;         |
000077f0  20 6d 69 6e 79 25 3d 4c  61 73 74 4d 65 6e 75 5f  | miny%=LastMenu_|
00007800  59 25 2d 28 53 63 72 61  70 42 6c 6b 25 21 31 36  |Y%-(ScrapBlk%!16|
00007810  2d 53 63 72 61 70 42 6c  6b 25 21 32 34 29 0d 03  |-ScrapBlk%!24)..|
00007820  3b 42 20 20 20 20 20 20  20 20 20 20 f2 63 72 65  |;B          .cre|
00007830  61 74 65 73 74 61 6e 64  61 72 64 69 63 6f 6e 28  |atestandardicon(|
00007840  69 74 65 6d 24 2c 4c 61  73 74 4d 65 6e 75 5f 57  |item$,LastMenu_W|
00007850  69 6e 25 2c 6d 69 6e 78  25 2c 6d 69 6e 79 25 29  |in%,minx%,miny%)|
00007860  0d 03 3c 0d 20 20 20 20  20 20 20 20 cd 0d 03 3d  |..<.        ...=|
00007870  09 20 20 20 20 cb 0d 03  3e 15 20 20 c9 20 49 63  |.    ...>.  . Ic|
00007880  42 75 74 74 6f 6e 4d 65  6e 75 25 0d 03 3f 1c 20  |ButtonMenu%..?. |
00007890  20 20 20 49 63 45 64 5f  42 75 74 74 6f 6e 25 3d  |   IcEd_Button%=|
000078a0  69 74 65 6d 6e 72 25 0d  03 40 34 20 20 20 20 f2  |itemnr%..@4    .|
000078b0  73 65 74 69 63 6f 6e 74  65 78 74 28 34 2c 24 28  |seticontext(4,$(|
000078c0  49 63 42 75 74 74 6f 6e  25 2b 32 30 2a 49 63 45  |IcButton%+20*IcE|
000078d0  64 5f 42 75 74 74 6f 6e  25 29 29 0d 03 41 16 20  |d_Button%))..A. |
000078e0  20 c9 20 57 69 6e 42 75  74 74 6f 6e 4d 65 6e 75  | . WinButtonMenu|
000078f0  25 0d 03 42 1d 20 20 20  20 57 69 6e 45 64 5f 42  |%..B.    WinEd_B|
00007900  75 74 74 6f 6e 25 3d 69  74 65 6d 6e 72 25 0d 03  |utton%=itemnr%..|
00007910  43 36 20 20 20 20 f2 73  65 74 69 63 6f 6e 74 65  |C6    .seticonte|
00007920  78 74 28 36 2c 24 28 57  69 6e 42 75 74 74 6f 6e  |xt(6,$(WinButton|
00007930  25 2b 32 30 2a 57 69 6e  45 64 5f 42 75 74 74 6f  |%+20*WinEd_Butto|
00007940  6e 25 29 29 0d 03 44 10  20 20 c9 20 45 73 67 4d  |n%))..D.  . EsgM|
00007950  65 6e 75 25 0d 03 45 1e  20 20 20 20 49 63 45 64  |enu%..E.    IcEd|
00007960  5f 45 73 67 25 3d bb 28  c0 69 74 65 6d 24 2c 32  |_Esg%=.(.item$,2|
00007970  29 29 0d 03 46 24 20 20  20 20 f2 73 65 74 69 63  |))..F$    .setic|
00007980  6f 6e 74 65 78 74 28 35  2c c3 28 49 63 45 64 5f  |ontext(5,.(IcEd_|
00007990  45 73 67 25 29 29 0d 03  47 13 20 20 c9 20 43 6f  |Esg%))..G.  . Co|
000079a0  6c 6f 75 72 4d 65 6e 75  25 0d 03 48 18 20 20 20  |lourMenu%..H.   |
000079b0  20 e7 20 69 74 65 6d 24  3d 22 4e 6f 6e 65 22 20  | . item$="None" |
000079c0  8c 0d 03 49 10 20 20 20  20 20 20 6a 25 3d 32 35  |...I.      j%=25|
000079d0  35 0d 03 4a 09 20 20 20  20 cc 0d 03 4b 15 20 20  |5..J.    ...K.  |
000079e0  20 20 20 20 6a 25 3d bb  28 69 74 65 6d 24 29 0d  |    j%=.(item$).|
000079f0  03 4c 09 20 20 20 20 cd  0d 03 4d 1a 20 20 20 20  |.L.    ...M.    |
00007a00  c8 8e 20 4c 61 73 74 4d  65 6e 75 5f 57 69 6e 25  |.. LastMenu_Win%|
00007a10  20 ca 0d 03 4e 12 20 20  20 20 20 20 c9 20 49 63  | ...N.      . Ic|
00007a20  45 64 57 25 0d 03 4f 1f  20 20 20 20 20 20 20 20  |EdW%..O.        |
00007a30  c8 8e 20 4c 61 73 74 4d  65 6e 75 5f 49 63 6f 6e  |.. LastMenu_Icon|
00007a40  25 20 ca 0d 03 50 12 20  20 20 20 20 20 20 20 20  |% ...P.         |
00007a50  20 c9 20 33 34 0d 03 51  1e 20 20 20 20 20 20 20  | . 34..Q.       |
00007a60  20 20 20 20 20 49 63 45  64 5f 46 67 63 6f 6c 25  |     IcEd_Fgcol%|
00007a70  3d 6a 25 0d 03 52 23 20  20 20 20 20 20 20 20 20  |=j%..R#         |
00007a80  20 20 20 f2 73 65 74 63  6f 6c 6f 75 72 62 6f 78  |   .setcolourbox|
00007a90  28 30 2c 6a 25 29 0d 03  53 12 20 20 20 20 20 20  |(0,j%)..S.      |
00007aa0  20 20 20 20 c9 20 33 37  0d 03 54 1e 20 20 20 20  |    . 37..T.    |
00007ab0  20 20 20 20 20 20 20 20  49 63 45 64 5f 42 67 63  |        IcEd_Bgc|
00007ac0  6f 6c 25 3d 6a 25 0d 03  55 23 20 20 20 20 20 20  |ol%=j%..U#      |
00007ad0  20 20 20 20 20 20 f2 73  65 74 63 6f 6c 6f 75 72  |      .setcolour|
00007ae0  62 6f 78 28 31 2c 6a 25  29 0d 03 56 0d 20 20 20  |box(1,j%)..V.   |
00007af0  20 20 20 20 20 cb 0d 03  57 13 20 20 20 20 20 20  |     ...W.      |
00007b00  c9 20 57 69 6e 45 64 57  25 0d 03 58 26 20 20 20  |. WinEdW%..X&   |
00007b10  20 20 20 20 20 69 25 3d  28 4c 61 73 74 4d 65 6e  |     i%=(LastMen|
00007b20  75 5f 49 63 6f 6e 25 2d  32 37 29 20 81 20 34 0d  |u_Icon%-27) . 4.|
00007b30  03 59 1d 20 20 20 20 20  20 20 20 57 69 6e 45 64  |.Y.        WinEd|
00007b40  5f 43 6f 6c 25 28 69 25  29 3d 6a 25 0d 03 5a 22  |_Col%(i%)=j%..Z"|
00007b50  20 20 20 20 20 20 20 20  f2 73 65 74 63 6f 6c 6f  |        .setcolo|
00007b60  75 72 62 6f 78 28 32 2b  69 25 2c 6a 25 29 0d 03  |urbox(2+i%,j%)..|
00007b70  5b 09 20 20 20 20 cb 0d  03 5c 11 20 20 c9 20 46  |[.    ...\.  . F|
00007b80  6f 6e 74 4d 65 6e 75 25  0d 03 5d 1c 20 20 20 20  |ontMenu%..].    |
00007b90  e7 20 a9 28 70 61 72 65  6e 74 69 74 65 6d 24 29  |. .(parentitem$)|
00007ba0  3e 30 20 8c 0d 03 5e 1f  20 20 20 20 20 20 e7 20  |>0 ...^.      . |
00007bb0  69 74 65 6d 24 3d 22 28  52 65 67 75 6c 61 72 29  |item$="(Regular)|
00007bc0  22 20 8c 0d 03 5f 22 20  20 20 20 20 20 20 20 49  |" ..._"        I|
00007bd0  63 45 64 5f 46 6f 6e 74  24 3d 70 61 72 65 6e 74  |cEd_Font$=parent|
00007be0  69 74 65 6d 24 0d 03 60  0b 20 20 20 20 20 20 cc  |item$..`.      .|
00007bf0  0d 03 61 2c 20 20 20 20  20 20 20 20 49 63 45 64  |..a,        IcEd|
00007c00  5f 46 6f 6e 74 24 3d 70  61 72 65 6e 74 69 74 65  |_Font$=parentite|
00007c10  6d 24 2b 22 2e 22 2b 69  74 65 6d 24 0d 03 62 0b  |m$+"."+item$..b.|
00007c20  20 20 20 20 20 20 cd 0d  03 63 25 20 20 20 20 20  |      ...c%     |
00007c30  20 f2 73 65 74 69 63 6f  6e 74 65 78 74 28 31 39  | .seticontext(19|
00007c40  2c 49 63 45 64 5f 46 6f  6e 74 24 29 0d 03 64 09  |,IcEd_Font$)..d.|
00007c50  20 20 20 20 cd 0d 03 65  15 20 20 c9 20 46 6f 6e  |    ...e.  . Fon|
00007c60  74 53 69 7a 65 6d 65 6e  75 25 0d 03 66 15 20 20  |tSizemenu%..f.  |
00007c70  20 20 73 69 7a 65 3d bb  28 69 74 65 6d 24 29 0d  |  size=.(item$).|
00007c80  03 67 12 20 20 20 20 e7  20 73 69 7a 65 3e 30 20  |.g.    . size>0 |
00007c90  8c 0d 03 68 1f 20 20 20  20 20 20 e7 20 4c 61 73  |...h.      . Las|
00007ca0  74 4d 65 6e 75 5f 49 63  6f 6e 25 3d 34 38 20 8c  |tMenu_Icon%=48 .|
00007cb0  0d 03 69 1b 20 20 20 20  20 20 20 20 49 63 45 64  |..i.        IcEd|
00007cc0  5f 58 73 69 7a 65 3d 73  69 7a 65 0d 03 6a 2e 20  |_Xsize=size..j. |
00007cd0  20 20 20 20 20 20 20 f2  73 65 74 69 63 6f 6e 74  |       .seticont|
00007ce0  65 78 74 28 32 30 2c c0  c3 28 49 63 45 64 5f 58  |ext(20,..(IcEd_X|
00007cf0  73 69 7a 65 29 2c 34 29  29 0d 03 6b 28 20 20 20  |size),4))..k(   |
00007d00  20 20 20 20 20 e7 20 a4  69 63 6f 6e 73 65 6c 65  |     . .iconsele|
00007d10  63 74 65 64 28 49 63 45  64 57 25 2c 35 33 29 20  |cted(IcEdW%,53) |
00007d20  8c 0d 03 6c 23 20 20 20  20 20 20 20 20 20 20 49  |...l#          I|
00007d30  63 45 64 5f 59 73 69 7a  65 3d 49 63 45 64 5f 58  |cEd_Ysize=IcEd_X|
00007d40  73 69 7a 65 0d 03 6d 30  20 20 20 20 20 20 20 20  |size..m0        |
00007d50  20 20 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 32  |  .seticontext(2|
00007d60  31 2c c0 c3 28 49 63 45  64 5f 59 73 69 7a 65 29  |1,..(IcEd_Ysize)|
00007d70  2c 34 29 29 0d 03 6e 0d  20 20 20 20 20 20 20 20  |,4))..n.        |
00007d80  cd 0d 03 6f 0b 20 20 20  20 20 20 cc 0d 03 70 1b  |...o.      ...p.|
00007d90  20 20 20 20 20 20 20 20  49 63 45 64 5f 59 73 69  |        IcEd_Ysi|
00007da0  7a 65 3d 73 69 7a 65 0d  03 71 2e 20 20 20 20 20  |ze=size..q.     |
00007db0  20 20 20 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |   .seticontext(|
00007dc0  32 31 2c c0 c3 28 49 63  45 64 5f 59 73 69 7a 65  |21,..(IcEd_Ysize|
00007dd0  29 2c 34 29 29 0d 03 72  0b 20 20 20 20 20 20 cd  |),4))..r.      .|
00007de0  0d 03 73 09 20 20 20 20  cd 0d 03 74 13 20 20 c9  |..s.    ...t.  .|
00007df0  20 55 70 64 61 74 65 6d  65 6e 75 25 0d 03 75 12  | Updatemenu%..u.|
00007e00  20 20 20 20 c8 8e 20 69  74 65 6d 25 20 ca 0d 03  |    .. item% ...|
00007e10  76 31 20 20 20 20 20 20  c9 20 69 74 65 6d 5f 75  |v1      . item_u|
00007e20  70 64 62 74 25 20 20 20  3a 20 f2 69 63 65 64 5f  |pdbt%   : .iced_|
00007e30  72 65 61 64 77 69 6e 28  26 46 3c 3c 31 32 29 0d  |readwin(&F<<12).|
00007e40  03 77 32 20 20 20 20 20  20 c9 20 69 74 65 6d 5f  |.w2      . item_|
00007e50  75 70 64 65 73 67 25 20  20 3a 20 f2 69 63 65 64  |updesg%  : .iced|
00007e60  5f 72 65 61 64 77 69 6e  28 26 31 46 3c 3c 31 36  |_readwin(&1F<<16|
00007e70  29 0d 03 78 3a 20 20 20  20 20 20 c9 20 69 74 65  |)..x:      . ite|
00007e80  6d 5f 75 70 64 66 67 25  20 20 20 3a 20 f2 69 63  |m_updfg%   : .ic|
00007e90  65 64 5f 72 65 61 64 77  69 6e 28 28 26 46 3c 3c  |ed_readwin((&F<<|
00007ea0  32 34 29 2b 28 31 3c 3c  36 29 29 0d 03 79 3a 20  |24)+(1<<6))..y: |
00007eb0  20 20 20 20 20 c9 20 69  74 65 6d 5f 75 70 64 62  |     . item_updb|
00007ec0  67 25 20 20 20 3a 20 f2  69 63 65 64 5f 72 65 61  |g%   : .iced_rea|
00007ed0  64 77 69 6e 28 28 26 46  3c 3c 32 38 29 2b 28 31  |dwin((&F<<28)+(1|
00007ee0  3c 3c 36 29 29 0d 03 7a  3b 20 20 20 20 20 20 c9  |<<6))..z;      .|
00007ef0  20 69 74 65 6d 5f 75 70  64 66 6f 6e 74 25 20 3a  | item_updfont% :|
00007f00  20 f2 69 63 65 64 5f 72  65 61 64 77 69 6e 28 28  | .iced_readwin((|
00007f10  26 46 46 3c 3c 32 34 29  2b 28 31 3c 3c 36 29 29  |&FF<<24)+(1<<6))|
00007f20  0d 03 7b 37 20 20 20 20  20 20 c9 20 69 74 65 6d  |..{7      . item|
00007f30  5f 75 70 64 72 65 73 74  25 20 3a 20 f2 69 63 65  |_updrest% : .ice|
00007f40  64 5f 72 65 61 64 77 69  6e 28 26 45 46 43 2b 28  |d_readwin(&EFC+(|
00007f50  31 3c 3c 32 32 29 29 0d  03 7c 2f 20 20 20 20 20  |1<<22))..|/     |
00007f60  20 c9 20 69 74 65 6d 5f  75 70 64 62 6f 25 3a 20  | . item_updbo%: |
00007f70  20 3a 20 f2 69 63 65 64  5f 72 65 61 64 77 69 6e  | : .iced_readwin|
00007f80  28 31 3c 3c 32 29 0d 03  7d 2f 20 20 20 20 20 20  |(1<<2)..}/      |
00007f90  c9 20 69 74 65 6d 5f 75  70 64 66 69 25 3a 20 20  |. item_updfi%:  |
00007fa0  3a 20 f2 69 63 65 64 5f  72 65 61 64 77 69 6e 28  |: .iced_readwin(|
00007fb0  31 3c 3c 35 29 0d 03 7e  2f 20 20 20 20 20 20 c9  |1<<5)..~/      .|
00007fc0  20 69 74 65 6d 5f 75 70  64 68 63 25 3a 20 20 3a  | item_updhc%:  :|
00007fd0  20 f2 69 63 65 64 5f 72  65 61 64 77 69 6e 28 31  | .iced_readwin(1|
00007fe0  3c 3c 33 29 0d 03 7f 2f  20 20 20 20 20 20 c9 20  |<<3).../      . |
00007ff0  69 74 65 6d 5f 75 70 64  76 63 25 3a 20 20 3a 20  |item_updvc%:  : |
00008000  f2 69 63 65 64 5f 72 65  61 64 77 69 6e 28 31 3c  |.iced_readwin(1<|
00008010  3c 34 29 0d 03 80 2f 20  20 20 20 20 20 c9 20 69  |<4).../      . i|
00008020  74 65 6d 5f 75 70 64 72  6a 25 3a 20 20 3a 20 f2  |tem_updrj%:  : .|
00008030  69 63 65 64 5f 72 65 61  64 77 69 6e 28 31 3c 3c  |iced_readwin(1<<|
00008040  39 29 0d 03 81 2f 20 20  20 20 20 20 c9 20 69 74  |9).../      . it|
00008050  65 6d 5f 75 70 64 6e 68  25 3a 20 20 3a 20 f2 69  |em_updnh%:  : .i|
00008060  63 65 64 5f 72 65 61 64  77 69 6e 28 31 3c 3c 37  |ced_readwin(1<<7|
00008070  29 0d 03 82 30 20 20 20  20 20 20 c9 20 69 74 65  |)...0      . ite|
00008080  6d 5f 75 70 64 61 61 25  3a 20 20 3a 20 f2 69 63  |m_updaa%:  : .ic|
00008090  65 64 5f 72 65 61 64 77  69 6e 28 31 3c 3c 31 30  |ed_readwin(1<<10|
000080a0  29 0d 03 83 30 20 20 20  20 20 20 c9 20 69 74 65  |)...0      . ite|
000080b0  6d 5f 75 70 64 68 73 25  3a 20 20 3a 20 f2 69 63  |m_updhs%:  : .ic|
000080c0  65 64 5f 72 65 61 64 77  69 6e 28 31 3c 3c 31 31  |ed_readwin(1<<11|
000080d0  29 0d 03 84 30 20 20 20  20 20 20 c9 20 69 74 65  |)...0      . ite|
000080e0  6d 5f 75 70 64 73 68 25  3a 20 20 3a 20 f2 69 63  |m_updsh%:  : .ic|
000080f0  65 64 5f 72 65 61 64 77  69 6e 28 31 3c 3c 32 32  |ed_readwin(1<<22|
00008100  29 0d 03 85 09 20 20 20  20 cb 0d 03 86 1d 20 20  |)....    .....  |
00008110  20 20 e7 20 4c 61 73 74  4d 65 6e 75 5f 49 63 6f  |  . LastMenu_Ico|
00008120  6e 25 3d 31 30 20 8c 0d  03 87 1e 20 20 20 20 20  |n%=10 .....     |
00008130  20 f2 63 6c 6f 73 65 77  69 6e 64 6f 77 28 49 63  | .closewindow(Ic|
00008140  45 64 57 25 29 0d 03 88  21 20 20 20 20 20 20 f2  |EdW%)...!      .|
00008150  73 65 74 63 61 72 65 74  28 49 63 45 64 5f 57 69  |setcaret(IcEd_Wi|
00008160  6e 25 2c 2d 31 29 0d 03  89 13 20 20 20 20 20 20  |n%,-1)....      |
00008170  61 64 6a 75 73 74 25 3d  a3 0d 03 8a 09 20 20 20  |adjust%=.....   |
00008180  20 cd 0d 03 8b 05 cb 0d  03 8c 0f e7 20 61 64 6a  | ........... adj|
00008190  75 73 74 25 20 8c 0d 03  8d 47 20 20 f2 63 72 65  |ust% ....G  .cre|
000081a0  61 74 65 6d 65 6e 75 28  4c 61 73 74 4d 65 6e 75  |atemenu(LastMenu|
000081b0  5f 58 25 2c 4c 61 73 74  4d 65 6e 75 5f 59 25 2c  |_X%,LastMenu_Y%,|
000081c0  4c 61 73 74 4d 65 6e 75  5f 57 69 6e 25 2c 4c 61  |LastMenu_Win%,La|
000081d0  73 74 4d 65 6e 75 5f 49  63 6f 6e 25 29 0d 03 8e  |stMenu_Icon%)...|
000081e0  05 cc 0d 03 8f 12 20 20  4c 61 73 74 4d 65 6e 75  |......  LastMenu|
000081f0  25 3d 2d 31 0d 03 90 05  cd 0d 03 91 05 e1 0d 03  |%=-1............|
00008200  92 04 0d 03 93 34 dd 20  f2 65 64 69 74 61 63 74  |.....4. .editact|
00008210  69 6f 6e 28 78 70 6f 73  25 2c 79 70 6f 73 25 2c  |ion(xpos%,ypos%,|
00008220  62 75 74 74 6f 6e 25 2c  77 69 6e 64 6f 77 25 2c  |button%,window%,|
00008230  69 63 6f 6e 25 29 0d 03  94 12 ea 20 6b 65 79 25  |icon%)..... key%|
00008240  2c 64 63 6c 69 63 6b 25  0d 03 95 0a 6b 65 79 25  |,dclick%....key%|
00008250  3d 30 0d 03 96 0d 64 63  6c 69 63 6b 25 3d a3 0d  |=0....dclick%=..|
00008260  03 97 2d e7 20 28 a6 20  2d 31 29 20 8c 20 6b 65  |..-. (. -1) . ke|
00008270  79 25 2b 3d 31 20 3a 20  f4 20 62 69 74 20 30 20  |y%+=1 : . bit 0 |
00008280  2d 3e 20 53 68 69 66 74  20 6b 65 79 0d 03 98 2c  |-> Shift key...,|
00008290  e7 20 28 a6 20 2d 32 29  20 8c 20 6b 65 79 25 2b  |. (. -2) . key%+|
000082a0  3d 32 20 3a 20 f4 20 62  69 74 20 31 20 2d 3e 20  |=2 : . bit 1 -> |
000082b0  43 74 72 6c 20 6b 65 79  0d 03 99 2b e7 20 28 a6  |Ctrl key...+. (.|
000082c0  20 2d 33 29 20 8c 20 6b  65 79 25 2b 3d 34 20 3a  | -3) . key%+=4 :|
000082d0  20 f4 20 62 69 74 20 32  20 2d 3e 20 41 6c 74 20  | . bit 2 -> Alt |
000082e0  6b 65 79 0d 03 9a 2b 54  69 6d 65 64 44 72 61 67  |key...+TimedDrag|
000082f0  5f 45 6e 61 62 6c 65 64  25 3d 28 6b 65 79 25 3d  |_Enabled%=(key%=|
00008300  30 29 80 28 69 63 6f 6e  25 3e 3d 2d 31 29 0d 03  |0).(icon%>=-1)..|
00008310  9b 13 e7 20 62 75 74 74  6f 6e 25 3e 32 35 36 20  |... button%>256 |
00008320  8c 0d 03 9c 40 20 20 62  75 74 74 6f 6e 25 3d 62  |....@  button%=b|
00008330  75 74 74 6f 6e 25 3e 3e  38 20 3a 20 f4 20 63 6c  |utton%>>8 : . cl|
00008340  69 63 6b 65 64 20 6f 6e  20 69 63 6f 6e 20 77 69  |icked on icon wi|
00008350  74 68 20 62 75 74 74 6f  6e 20 74 79 70 65 20 31  |th button type 1|
00008360  30 0d 03 9d 05 cd 0d 03  9e 0d c8 8e 20 6b 65 79  |0........... key|
00008370  25 20 ca 0d 03 9f 22 20  20 c9 20 30 20 3a 20 f4  |% ...."  . 0 : .|
00008380  20 6d 6f 75 73 65 20 62  75 74 74 6f 6e 2c 20 6e  | mouse button, n|
00008390  6f 20 6b 65 79 0d 03 a0  15 20 20 20 20 e7 20 62  |o key....    . b|
000083a0  75 74 74 6f 6e 25 3e 30  20 8c 0d 03 a1 34 20 20  |utton%>0 ....4  |
000083b0  20 20 20 20 64 63 6c 69  63 6b 25 3d 28 91 2d 54  |    dclick%=(.-T|
000083c0  68 69 73 43 6c 69 63 6b  54 69 6d 65 25 29 3c 44  |hisClickTime%)<D|
000083d0  63 6c 69 63 6b 49 6e 74  65 72 76 61 6c 25 0d 03  |clickInterval%..|
000083e0  a2 36 20 20 20 20 20 20  64 63 6c 69 63 6b 25 3d  |.6      dclick%=|
000083f0  64 63 6c 69 63 6b 25 20  80 20 28 54 68 69 73 43  |dclick% . (ThisC|
00008400  6c 69 63 6b 42 75 74 74  6f 6e 25 3d 62 75 74 74  |lickButton%=butt|
00008410  6f 6e 25 29 0d 03 a3 4a  20 20 20 20 20 20 64 63  |on%)...J      dc|
00008420  6c 69 63 6b 25 3d 64 63  6c 69 63 6b 25 20 80 20  |lick%=dclick% . |
00008430  28 94 28 54 68 69 73 43  6c 69 63 6b 58 25 2d 78  |(.(ThisClickX%-x|
00008440  70 6f 73 25 29 2b 94 28  54 68 69 73 43 6c 69 63  |pos%)+.(ThisClic|
00008450  6b 59 25 2d 79 70 6f 73  25 29 29 3c 33 32 0d 03  |kY%-ypos%))<32..|
00008460  a4 1a 20 20 20 20 20 20  54 68 69 73 43 6c 69 63  |..      ThisClic|
00008470  6b 54 69 6d 65 25 3d 91  0d 03 a5 1b 20 20 20 20  |kTime%=.....    |
00008480  20 20 54 68 69 73 43 6c  69 63 6b 58 25 3d 78 70  |  ThisClickX%=xp|
00008490  6f 73 25 0d 03 a6 1b 20  20 20 20 20 20 54 68 69  |os%....      Thi|
000084a0  73 43 6c 69 63 6b 59 25  3d 79 70 6f 73 25 0d 03  |sClickY%=ypos%..|
000084b0  a7 22 20 20 20 20 20 20  54 68 69 73 43 6c 69 63  |."      ThisClic|
000084c0  6b 42 75 74 74 6f 6e 25  3d 62 75 74 74 6f 6e 25  |kButton%=button%|
000084d0  0d 03 a8 09 20 20 20 20  cd 0d 03 a9 14 20 20 20  |....    .....   |
000084e0  20 c8 8e 20 62 75 74 74  6f 6e 25 20 ca 0d 03 aa  | .. button% ....|
000084f0  0f 20 20 20 20 20 20 c9  20 31 2c 34 0d 03 ab 16  |.      . 1,4....|
00008500  20 20 20 20 20 20 20 20  c8 8e 20 69 63 6f 6e 25  |        .. icon%|
00008510  20 ca 0d 03 ac 12 20 20  20 20 20 20 20 20 20 20  | .....          |
00008520  c9 20 2d 34 0d 03 ad 37  20 20 20 20 20 20 20 20  |. -4...7        |
00008530  20 20 20 20 e7 20 64 63  6c 69 63 6b 25 20 80 20  |    . dclick% . |
00008540  54 72 61 70 44 63 6c 69  63 6b 25 20 80 20 28 62  |TrapDclick% . (b|
00008550  75 74 74 6f 6e 25 3d 34  29 20 8c 0d 03 ae 2c 20  |utton%=4) ...., |
00008560  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 69 63  |             .ic|
00008570  65 64 5f 73 74 61 72 74  28 77 69 6e 64 6f 77 25  |ed_start(window%|
00008580  2c 69 63 6f 6e 25 29 0d  03 af 11 20 20 20 20 20  |,icon%)....     |
00008590  20 20 20 20 20 20 20 cd  0d 03 b0 12 20 20 20 20  |       .....    |
000085a0  20 20 20 20 20 20 c9 20  2d 31 0d 03 b1 34 20 20  |      . -1...4  |
000085b0  20 20 20 20 20 20 20 20  20 20 e7 20 62 75 74 74  |          . butt|
000085c0  6f 6e 25 3d 34 20 8c 20  f2 73 65 6c 5f 63 6c 65  |on%=4 . .sel_cle|
000085d0  61 72 28 77 69 6e 64 6f  77 25 2c 2d 31 29 0d 03  |ar(window%,-1)..|
000085e0  b2 37 20 20 20 20 20 20  20 20 20 20 20 20 e7 20  |.7            . |
000085f0  64 63 6c 69 63 6b 25 20  80 20 54 72 61 70 44 63  |dclick% . TrapDc|
00008600  6c 69 63 6b 25 20 80 20  28 62 75 74 74 6f 6e 25  |lick% . (button%|
00008610  3d 34 29 20 8c 0d 03 b3  29 20 20 20 20 20 20 20  |=4) ....)       |
00008620  20 20 20 20 20 20 20 f2  77 69 6e 65 64 5f 66 69  |       .wined_fi|
00008630  6c 6c 77 69 6e 28 77 69  6e 64 6f 77 25 29 0d 03  |llwin(window%)..|
00008640  b4 11 20 20 20 20 20 20  20 20 20 20 20 20 cc 0d  |..            ..|
00008650  03 b5 26 20 20 20 20 20  20 20 20 20 20 20 20 20  |..&             |
00008660  20 f2 64 72 61 67 73 65  6c 65 63 74 28 62 75 74  | .dragselect(but|
00008670  74 6f 6e 25 29 0d 03 b6  27 20 20 20 20 20 20 20  |ton%)...'       |
00008680  20 20 20 20 20 20 20 f2  73 65 74 63 61 72 65 74  |       .setcaret|
00008690  28 77 69 6e 64 6f 77 25  2c 2d 31 29 0d 03 b7 11  |(window%,-1)....|
000086a0  20 20 20 20 20 20 20 20  20 20 20 20 cd 0d 03 b8  |            ....|
000086b0  0f 20 20 20 20 20 20 20  20 20 20 7f 0d 03 b9 1c  |.          .....|
000086c0  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 69 63  |            . ic|
000086d0  6f 6e 25 3e 3d 30 20 8c  0d 03 ba 1f 20 20 20 20  |on%>=0 .....    |
000086e0  20 20 20 20 20 20 20 20  20 20 e7 20 62 75 74 74  |          . butt|
000086f0  6f 6e 25 3d 31 20 8c 0d  03 bb 2d 20 20 20 20 20  |on%=1 ....-     |
00008700  20 20 20 20 20 20 20 20  20 20 20 f4 20 74 6f 67  |           . tog|
00008710  67 6c 65 20 22 73 65 6c  65 63 74 65 64 22 20 73  |gle "selected" s|
00008720  74 61 74 65 0d 03 bc 27  20 20 20 20 20 20 20 20  |tate...'        |
00008730  20 20 20 20 20 20 20 20  53 63 72 61 70 42 6c 6b  |        ScrapBlk|
00008740  25 21 30 3d 77 69 6e 64  6f 77 25 0d 03 bd 25 20  |%!0=window%...% |
00008750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
00008760  63 72 61 70 42 6c 6b 25  21 34 3d 69 63 6f 6e 25  |crapBlk%!4=icon%|
00008770  0d 03 be 35 20 20 20 20  20 20 20 20 20 20 20 20  |...5            |
00008780  20 20 20 20 c8 99 20 22  57 69 6d 70 5f 47 65 74  |    .. "Wimp_Get|
00008790  49 63 6f 6e 53 74 61 74  65 22 2c 2c 53 63 72 61  |IconState",,Scra|
000087a0  70 42 6c 6b 25 0d 03 bf  32 20 20 20 20 20 20 20  |pBlk%...2       |
000087b0  20 20 20 20 20 20 20 20  20 c8 8e 20 28 28 53 63  |         .. ((Sc|
000087c0  72 61 70 42 6c 6b 25 21  32 34 29 3e 3e 31 32 29  |rapBlk%!24)>>12)|
000087d0  20 80 20 31 35 20 ca 0d  03 c0 4d 20 20 20 20 20  | . 15 ....M     |
000087e0  20 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 34  |             . 4|
000087f0  2c 39 20 20 20 20 20 20  3a 20 f4 20 73 65 6c 65  |,9      : . sele|
00008800  63 74 69 6e 67 20 75 73  65 6c 65 73 73 20 66 6f  |cting useless fo|
00008810  72 20 74 68 65 73 65 20  62 75 74 74 6f 6e 20 74  |r these button t|
00008820  79 70 65 73 0d 03 c1 3b  20 20 20 20 20 20 20 20  |ypes...;        |
00008830  20 20 20 20 20 20 20 20  20 20 c9 20 35 2c 37 2c  |          . 5,7,|
00008840  38 2c 31 31 20 3a 20 f4  20 73 65 6c 65 63 74 69  |8,11 : . selecti|
00008850  6e 67 20 64 6f 6e 65 20  62 79 20 77 69 6d 70 0d  |ng done by wimp.|
00008860  03 c2 3c 20 20 20 20 20  20 20 20 20 20 20 20 20  |..<             |
00008870  20 20 20 20 20 7f 20 f2  73 65 74 69 63 6f 6e 73  |     . .seticons|
00008880  74 61 74 65 28 77 69 6e  64 6f 77 25 2c 69 63 6f  |tate(window%,ico|
00008890  6e 25 2c 31 3c 3c 32 31  2c 30 29 0d 03 c3 15 20  |n%,1<<21,0).... |
000088a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 cb  |               .|
000088b0  0d 03 c4 13 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
000088c0  20 20 cc 0d 03 c5 28 20  20 20 20 20 20 20 20 20  |  ....(         |
000088d0  20 20 20 20 20 20 20 f4  20 22 65 78 63 6c 75 73  |       . "exclus|
000088e0  69 76 65 22 20 73 65 6c  65 63 74 0d 03 c6 2d 20  |ive" select...- |
000088f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |               .|
00008900  73 65 6c 5f 63 6c 65 61  72 28 77 69 6e 64 6f 77  |sel_clear(window|
00008910  25 2c 69 63 6f 6e 25 29  0d 03 c7 36 20 20 20 20  |%,icon%)...6    |
00008920  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 ac 20  |            . . |
00008930  a4 69 63 6f 6e 73 65 6c  65 63 74 65 64 28 77 69  |.iconselected(wi|
00008940  6e 64 6f 77 25 2c 69 63  6f 6e 25 29 20 8c 0d 03  |ndow%,icon%) ...|
00008950  c8 32 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.2              |
00008960  20 20 20 20 f2 73 65 6c  65 63 74 69 63 6f 6e 28  |    .selecticon(|
00008970  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 2c 31 29  |window%,icon%,1)|
00008980  0d 03 c9 15 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00008990  20 20 20 20 cd 0d 03 ca  13 20 20 20 20 20 20 20  |    .....       |
000089a0  20 20 20 20 20 20 20 cd  0d 03 cb 39 20 20 20 20  |       ....9    |
000089b0  20 20 20 20 20 20 20 20  20 20 e7 20 64 63 6c 69  |          . dcli|
000089c0  63 6b 25 20 80 20 54 72  61 70 44 63 6c 69 63 6b  |ck% . TrapDclick|
000089d0  25 20 80 20 28 62 75 74  74 6f 6e 25 3d 34 29 20  |% . (button%=4) |
000089e0  8c 0d 03 cc 2e 20 20 20  20 20 20 20 20 20 20 20  |.....           |
000089f0  20 20 20 20 20 f2 69 63  65 64 5f 73 74 61 72 74  |     .iced_start|
00008a00  28 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |(window%,icon%).|
00008a10  03 cd 13 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
00008a20  20 cc 0d 03 ce 28 20 20  20 20 20 20 20 20 20 20  | ....(          |
00008a30  20 20 20 20 20 20 f2 64  72 61 67 73 65 6c 65 63  |      .dragselec|
00008a40  74 28 62 75 74 74 6f 6e  25 29 0d 03 cf 29 20 20  |t(button%)...)  |
00008a50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 f2 73  |              .s|
00008a60  65 74 63 61 72 65 74 28  77 69 6e 64 6f 77 25 2c  |etcaret(window%,|
00008a70  2d 31 29 0d 03 d0 13 20  20 20 20 20 20 20 20 20  |-1)....         |
00008a80  20 20 20 20 20 cd 0d 03  d1 11 20 20 20 20 20 20  |     .....      |
00008a90  20 20 20 20 20 20 cd 0d  03 d2 0d 20 20 20 20 20  |      .....     |
00008aa0  20 20 20 cb 0d 03 d3 09  20 20 20 20 cb 0d 03 d4  |   .....    ....|
00008ab0  22 20 20 c9 20 31 20 3a  20 f4 20 73 68 69 66 74  |"  . 1 : . shift|
00008ac0  20 2b 20 6d 6f 75 73 65  20 62 75 74 74 6f 6e 0d  | + mouse button.|
00008ad0  03 d5 14 20 20 20 20 c8  8e 20 62 75 74 74 6f 6e  |...    .. button|
00008ae0  25 20 ca 0d 03 d6 0f 20  20 20 20 20 20 c9 20 31  |% .....      . 1|
00008af0  2c 34 0d 03 d7 21 20 20  20 20 20 20 20 20 f2 73  |,4...!        .s|
00008b00  65 74 63 61 72 65 74 28  77 69 6e 64 6f 77 25 2c  |etcaret(window%,|
00008b10  2d 31 29 0d 03 d8 31 20  20 20 20 20 20 20 20 f2  |-1)...1        .|
00008b20  73 74 61 72 74 69 63 6f  6e 64 72 61 67 28 62 75  |starticondrag(bu|
00008b30  74 74 6f 6e 25 2c 77 69  6e 64 6f 77 25 2c 69 63  |tton%,window%,ic|
00008b40  6f 6e 25 29 0d 03 d9 0d  20 20 20 20 20 20 c9 20  |on%)....      . |
00008b50  32 0d 03 da 26 20 20 20  20 20 20 20 20 f2 69 63  |2...&        .ic|
00008b60  65 64 5f 73 74 61 72 74  28 77 69 6e 64 6f 77 25  |ed_start(window%|
00008b70  2c 69 63 6f 6e 25 29 0d  03 db 09 20 20 20 20 cb  |,icon%)....    .|
00008b80  0d 03 dc 21 20 20 c9 20  32 20 3a 20 f4 20 63 74  |...!  . 2 : . ct|
00008b90  72 6c 20 2b 20 6d 6f 75  73 65 20 62 75 74 74 6f  |rl + mouse butto|
00008ba0  6e 0d 03 dd 14 20 20 20  20 c8 8e 20 62 75 74 74  |n....    .. butt|
00008bb0  6f 6e 25 20 ca 0d 03 de  0d 20 20 20 20 20 20 c9  |on% .....      .|
00008bc0  20 31 0d 03 df 21 20 20  20 20 20 20 20 20 f2 73  | 1...!        .s|
00008bd0  65 74 63 61 72 65 74 28  77 69 6e 64 6f 77 25 2c  |etcaret(window%,|
00008be0  2d 31 29 0d 03 e0 27 20  20 20 20 20 20 20 20 f2  |-1)...'        .|
00008bf0  73 74 61 72 74 77 69 6e  64 6f 77 72 65 73 69 7a  |startwindowresiz|
00008c00  65 28 77 69 6e 64 6f 77  25 29 0d 03 e1 0d 20 20  |e(window%)....  |
00008c10  20 20 20 20 c9 20 32 0d  03 e2 18 20 20 20 20 20  |    . 2....     |
00008c20  20 20 20 e7 20 69 63 6f  6e 25 3d 2d 34 20 8c 0d  |   . icon%=-4 ..|
00008c30  03 e3 28 20 20 20 20 20  20 20 20 20 20 f2 69 63  |..(          .ic|
00008c40  65 64 5f 73 74 61 72 74  28 77 69 6e 64 6f 77 25  |ed_start(window%|
00008c50  2c 69 63 6f 6e 25 29 0d  03 e4 0d 20 20 20 20 20  |,icon%)....     |
00008c60  20 20 20 cc 0d 03 e5 25  20 20 20 20 20 20 20 20  |   ....%        |
00008c70  20 20 f2 77 69 6e 65 64  5f 66 69 6c 6c 77 69 6e  |  .wined_fillwin|
00008c80  28 77 69 6e 64 6f 77 25  29 0d 03 e6 0d 20 20 20  |(window%)....   |
00008c90  20 20 20 20 20 cd 0d 03  e7 0d 20 20 20 20 20 20  |     .....      |
00008ca0  c9 20 34 0d 03 e8 21 20  20 20 20 20 20 20 20 f2  |. 4...!        .|
00008cb0  73 65 74 63 61 72 65 74  28 77 69 6e 64 6f 77 25  |setcaret(window%|
00008cc0  2c 2d 31 29 0d 03 e9 25  20 20 20 20 20 20 20 20  |,-1)...%        |
00008cd0  f2 73 74 61 72 74 77 69  6e 64 6f 77 6d 6f 76 65  |.startwindowmove|
00008ce0  28 77 69 6e 64 6f 77 25  29 0d 03 ea 09 20 20 20  |(window%)....   |
00008cf0  20 cb 0d 03 eb 20 20 20  c9 20 34 20 3a 20 f4 20  | ....   . 4 : . |
00008d00  61 6c 74 20 2b 20 6d 6f  75 73 65 20 62 75 74 74  |alt + mouse butt|
00008d10  6f 6e 0d 03 ec 14 20 20  20 20 c8 8e 20 62 75 74  |on....    .. but|
00008d20  74 6f 6e 25 20 ca 0d 03  ed 0d 20 20 20 20 20 20  |ton% .....      |
00008d30  c9 20 31 0d 03 ee 18 20  20 20 20 20 20 20 20 e7  |. 1....        .|
00008d40  20 69 63 6f 6e 25 3e 3d  30 20 8c 0d 03 ef 2a 20  | icon%>=0 ....* |
00008d50  20 20 20 20 20 20 20 20  20 f2 72 65 6e 75 6d 62  |         .renumb|
00008d60  65 72 69 63 6f 6e 28 77  69 6e 64 6f 77 25 2c 69  |ericon(window%,i|
00008d70  63 6f 6e 25 29 0d 03 f0  2e 20 20 20 20 20 20 20  |con%)....       |
00008d80  20 20 20 e7 20 4e 65 78  74 49 63 6f 6e 4e 72 25  |   . NextIconNr%|
00008d90  3e 30 20 8c 20 4e 65 78  74 49 63 6f 6e 4e 72 25  |>0 . NextIconNr%|
00008da0  2d 3d 31 0d 03 f1 0d 20  20 20 20 20 20 20 20 cd  |-=1....        .|
00008db0  0d 03 f2 0d 20 20 20 20  20 20 c9 20 34 0d 03 f3  |....      . 4...|
00008dc0  18 20 20 20 20 20 20 20  20 e7 20 69 63 6f 6e 25  |.        . icon%|
00008dd0  3e 3d 30 20 8c 0d 03 f4  2a 20 20 20 20 20 20 20  |>=0 ....*       |
00008de0  20 20 20 f2 72 65 6e 75  6d 62 65 72 69 63 6f 6e  |   .renumbericon|
00008df0  28 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |(window%,icon%).|
00008e00  03 f5 1c 20 20 20 20 20  20 20 20 20 20 4e 65 78  |...          Nex|
00008e10  74 49 63 6f 6e 4e 72 25  2b 3d 31 0d 03 f6 0d 20  |tIconNr%+=1.... |
00008e20  20 20 20 20 20 20 20 cd  0d 03 f7 09 20 20 20 20  |       .....    |
00008e30  cb 0d 03 f8 07 20 20 7f  0d 03 f9 2b 20 20 20 20  |.....  ....+    |
00008e40  e7 20 28 62 75 74 74 6f  6e 25 3e 30 29 20 80 20  |. (button%>0) . |
00008e50  53 75 70 70 6f 72 74 49  6e 74 65 72 66 61 63 65  |SupportInterface|
00008e60  25 20 8c 0d 03 fa 26 20  20 20 20 20 20 f4 20 6d  |% ....&      . m|
00008e70  61 6b 65 20 49 6e 74 65  72 66 61 63 65 20 69 6e  |ake Interface in|
00008e80  76 65 72 74 20 69 63 6f  6e 0d 03 fb 1d 20 20 20  |vert icon....   |
00008e90  20 20 20 53 63 72 61 70  42 6c 6b 25 21 38 3d 62  |   ScrapBlk%!8=b|
00008ea0  75 74 74 6f 6e 25 0d 03  fc 1e 20 20 20 20 20 20  |utton%....      |
00008eb0  53 63 72 61 70 42 6c 6b  25 21 31 32 3d 77 69 6e  |ScrapBlk%!12=win|
00008ec0  64 6f 77 25 0d 03 fd 1c  20 20 20 20 20 20 53 63  |dow%....      Sc|
00008ed0  72 61 70 42 6c 6b 25 21  31 36 3d 69 63 6f 6e 25  |rapBlk%!16=icon%|
00008ee0  0d 03 fe 29 20 20 20 20  20 20 c8 99 20 22 57 69  |...)      .. "Wi|
00008ef0  6d 70 5f 42 6f 72 64 65  72 49 63 6f 6e 22 2c 2c  |mp_BorderIcon",,|
00008f00  53 63 72 61 70 42 6c 6b  25 0d 03 ff 1a 20 20 20  |ScrapBlk%....   |
00008f10  20 20 20 f4 20 62 61 63  6b 20 74 6f 20 6e 6f 72  |   . back to nor|
00008f20  6d 61 6c 0d 04 00 17 20  20 20 20 20 20 53 63 72  |mal....      Scr|
00008f30  61 70 42 6c 6b 25 21 38  3d 30 0d 04 01 1e 20 20  |apBlk%!8=0....  |
00008f40  20 20 20 20 53 63 72 61  70 42 6c 6b 25 21 31 32  |    ScrapBlk%!12|
00008f50  3d 77 69 6e 64 6f 77 25  0d 04 02 1c 20 20 20 20  |=window%....    |
00008f60  20 20 53 63 72 61 70 42  6c 6b 25 21 31 36 3d 69  |  ScrapBlk%!16=i|
00008f70  63 6f 6e 25 0d 04 03 29  20 20 20 20 20 20 c8 99  |con%...)      ..|
00008f80  20 22 57 69 6d 70 5f 42  6f 72 64 65 72 49 63 6f  | "Wimp_BorderIco|
00008f90  6e 22 2c 2c 53 63 72 61  70 42 6c 6b 25 0d 04 04  |n",,ScrapBlk%...|
00008fa0  09 20 20 20 20 cd 0d 04  05 25 20 20 20 20 e7 20  |.    ....%    . |
00008fb0  28 62 75 74 74 6f 6e 25  3e 30 29 20 80 20 53 75  |(button%>0) . Su|
00008fc0  70 70 6f 72 74 41 45 48  25 20 8c 0d 04 06 1d 20  |pportAEH% ..... |
00008fd0  20 20 20 20 20 53 63 72  61 70 42 6c 6b 25 21 38  |     ScrapBlk%!8|
00008fe0  3d 62 75 74 74 6f 6e 25  0d 04 07 1e 20 20 20 20  |=button%....    |
00008ff0  20 20 53 63 72 61 70 42  6c 6b 25 21 31 32 3d 77  |  ScrapBlk%!12=w|
00009000  69 6e 64 6f 77 25 0d 04  08 1c 20 20 20 20 20 20  |indow%....      |
00009010  53 63 72 61 70 42 6c 6b  25 21 31 36 3d 69 63 6f  |ScrapBlk%!16=ico|
00009020  6e 25 0d 04 09 28 20 20  20 20 20 20 c8 99 20 22  |n%...(      .. "|
00009030  41 45 48 5f 52 65 64 72  61 77 49 63 6f 6e 22 2c  |AEH_RedrawIcon",|
00009040  2c 53 63 72 61 70 42 6c  6b 25 0d 04 0a 20 20 20  |,ScrapBlk%...   |
00009050  20 20 20 20 c8 99 20 22  41 45 48 5f 52 65 6c 65  |    .. "AEH_Rele|
00009060  61 73 65 49 63 6f 6e 22  2c 30 0d 04 0b 09 20 20  |aseIcon",0....  |
00009070  20 20 cd 0d 04 0c 05 cb  0d 04 0d 05 e1 0d 04 0e  |  ..............|
00009080  04 0d 04 0f 3a dd 20 f2  63 6c 69 63 6b 28 78 70  |....:. .click(xp|
00009090  6f 73 25 2c 79 70 6f 73  25 2c 62 75 74 74 6f 6e  |os%,ypos%,button|
000090a0  25 2c 77 69 6e 64 6f 77  25 2c 69 63 6f 6e 25 2c  |%,window%,icon%,|
000090b0  77 69 6d 70 63 6c 69 63  6b 25 29 0d 04 10 0e ea  |wimpclick%).....|
000090c0  20 6e 6f 25 2c 6b 65 79  25 0d 04 11 22 4d 62 75  | no%,key%..."Mbu|
000090d0  74 74 6f 6e 73 5f 52 65  6c 65 61 73 65 64 25 3d  |ttons_Released%=|
000090e0  28 62 75 74 74 6f 6e 25  3d 30 29 0d 04 12 18 54  |(button%=0)....T|
000090f0  69 6d 65 64 44 72 61 67  5f 45 6e 61 62 6c 65 64  |imedDrag_Enabled|
00009100  25 3d a3 0d 04 13 1f 6e  6f 25 3d a4 77 68 69 63  |%=.....no%=.whic|
00009110  68 74 65 6d 70 6c 61 74  65 28 77 69 6e 64 6f 77  |htemplate(window|
00009120  25 29 0d 04 14 11 e7 20  62 75 74 74 6f 6e 25 3d  |%)..... button%=|
00009130  32 20 8c 0d 04 15 3e 20  20 f4 20 22 73 74 65 61  |2 ....>  . "stea|
00009140  6c 22 20 63 6c 69 63 6b  73 20 77 69 74 68 20 4d  |l" clicks with M|
00009150  65 6e 75 20 69 66 20 53  68 69 66 74 2c 20 43 74  |enu if Shift, Ct|
00009160  72 6c 20 6f 72 20 41 6c  74 20 70 72 65 73 73 65  |rl or Alt presse|
00009170  64 0d 04 16 20 20 20 c8  99 20 22 4f 53 5f 42 79  |d...   .. "OS_By|
00009180  74 65 22 2c 31 32 31 2c  30 20 b8 20 2c 6b 65 79  |te",121,0 . ,key|
00009190  25 0d 04 17 11 20 20 e7  20 6b 65 79 25 3e 3d 33  |%....  . key%>=3|
000091a0  20 8c 0d 04 18 3d 20 20  20 20 e7 20 77 69 6d 70  | ....=    . wimp|
000091b0  63 6c 69 63 6b 25 20 8c  20 f2 63 72 65 61 74 65  |click% . .create|
000091c0  6d 65 6e 75 28 78 70 6f  73 25 2c 79 70 6f 73 25  |menu(xpos%,ypos%|
000091d0  2c 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |,window%,icon%).|
000091e0  04 19 07 20 20 cc 0d 04  1a 41 20 20 20 20 e7 20  |...  ....A    . |
000091f0  6e 6f 25 3e 3d 30 20 8c  20 f2 65 64 69 74 61 63  |no%>=0 . .editac|
00009200  74 69 6f 6e 28 78 70 6f  73 25 2c 79 70 6f 73 25  |tion(xpos%,ypos%|
00009210  2c 62 75 74 74 6f 6e 25  2c 77 69 6e 64 6f 77 25  |,button%,window%|
00009220  2c 69 63 6f 6e 25 29 0d  04 1b 07 20 20 cd 0d 04  |,icon%)....  ...|
00009230  1c 05 cc 0d 04 1d 10 20  20 e7 20 6e 6f 25 3e 3d  |.......  . no%>=|
00009240  30 20 8c 0d 04 1e 36 20  20 20 20 f2 65 64 69 74  |0 ....6    .edit|
00009250  61 63 74 69 6f 6e 28 78  70 6f 73 25 2c 79 70 6f  |action(xpos%,ypo|
00009260  73 25 2c 62 75 74 74 6f  6e 25 2c 77 69 6e 64 6f  |s%,button%,windo|
00009270  77 25 2c 69 63 6f 6e 25  29 0d 04 1f 07 20 20 cc  |w%,icon%)....  .|
00009280  0d 04 20 44 20 20 20 20  e7 20 77 69 6d 70 63 6c  |.. D    . wimpcl|
00009290  69 63 6b 25 20 8c 20 f2  69 63 6f 6e 63 6c 69 63  |ick% . .iconclic|
000092a0  6b 28 78 70 6f 73 25 2c  79 70 6f 73 25 2c 62 75  |k(xpos%,ypos%,bu|
000092b0  74 74 6f 6e 25 2c 77 69  6e 64 6f 77 25 2c 69 63  |tton%,window%,ic|
000092c0  6f 6e 25 29 0d 04 21 07  20 20 cd 0d 04 22 05 cd  |on%)..!.  ..."..|
000092d0  0d 04 23 05 e1 0d 04 24  04 0d 04 25 33 dd 20 f2  |..#....$...%3. .|
000092e0  69 63 6f 6e 63 6c 69 63  6b 28 78 70 6f 73 25 2c  |iconclick(xpos%,|
000092f0  79 70 6f 73 25 2c 62 75  74 74 6f 6e 25 2c 77 69  |ypos%,button%,wi|
00009300  6e 64 6f 77 25 2c 69 63  6f 6e 25 29 0d 04 26 37  |ndow%,icon%)..&7|
00009310  ea 20 73 65 6c 65 63 74  25 2c 6d 65 6e 75 25 2c  |. select%,menu%,|
00009320  61 64 6a 75 73 74 25 2c  69 25 2c 6a 25 2c 78 73  |adjust%,i%,j%,xs|
00009330  69 7a 65 25 2c 79 73 69  7a 65 25 2c 75 70 25 2c  |ize%,ysize%,up%,|
00009340  6c 6f 25 0d 04 27 17 73  65 6c 65 63 74 25 3d 28  |lo%..'.select%=(|
00009350  62 75 74 74 6f 6e 25 3d  34 29 0d 04 28 15 6d 65  |button%=4)..(.me|
00009360  6e 75 25 3d 28 62 75 74  74 6f 6e 25 3d 32 29 0d  |nu%=(button%=2).|
00009370  04 29 17 61 64 6a 75 73  74 25 3d 28 62 75 74 74  |.).adjust%=(butt|
00009380  6f 6e 25 3d 31 29 0d 04  2a 10 c8 8e 20 77 69 6e  |on%=1)..*... win|
00009390  64 6f 77 25 20 ca 0d 04  2b 0a 20 20 c9 20 2d 32  |dow% ...+.  . -2|
000093a0  0d 04 2c 13 20 20 20 20  e7 20 73 65 6c 65 63 74  |..,.    . select|
000093b0  25 20 8c 0d 04 2d 20 20  20 20 20 20 20 f2 6f 70  |% ...-       .op|
000093c0  65 6e 77 69 6e 64 6f 77  28 54 65 6d 70 6c 57 25  |enwindow(TemplW%|
000093d0  2c 33 29 0d 04 2e 34 20  20 20 20 20 20 e7 20 49  |,3)...4      . I|
000093e0  63 49 6e 66 6f 5f 41 63  74 69 76 65 25 20 8c 20  |cInfo_Active% . |
000093f0  f2 6f 70 65 6e 77 69 6e  64 6f 77 28 49 63 49 6e  |.openwindow(IcIn|
00009400  66 6f 57 25 2c 34 29 0d  04 2f 09 20 20 20 20 cd  |foW%,4)../.    .|
00009410  0d 04 30 0e 20 20 c9 20  49 63 45 64 57 25 0d 04  |..0.  . IcEdW%..|
00009420  31 36 20 20 20 20 f2 69  63 65 64 5f 63 6c 69 63  |16    .iced_clic|
00009430  6b 28 78 70 6f 73 25 2c  79 70 6f 73 25 2c 73 65  |k(xpos%,ypos%,se|
00009440  6c 65 63 74 25 2c 61 64  6a 75 73 74 25 2c 69 63  |lect%,adjust%,ic|
00009450  6f 6e 25 29 0d 04 32 0f  20 20 c9 20 57 69 6e 45  |on%)..2.  . WinE|
00009460  64 57 25 0d 04 33 37 20  20 20 20 f2 77 69 6e 65  |dW%..37    .wine|
00009470  64 5f 63 6c 69 63 6b 28  78 70 6f 73 25 2c 79 70  |d_click(xpos%,yp|
00009480  6f 73 25 2c 73 65 6c 65  63 74 25 2c 61 64 6a 75  |os%,select%,adju|
00009490  73 74 25 2c 69 63 6f 6e  25 29 0d 04 34 0e 20 20  |st%,icon%)..4.  |
000094a0  c9 20 53 74 61 74 57 25  0d 04 35 15 20 20 20 20  |. StatW%..5.    |
000094b0  f2 73 74 61 74 5f 66 69  6c 6c 77 69 6e 0d 04 36  |.stat_fillwin..6|
000094c0  0f 20 20 c9 20 54 65 6d  70 6c 57 25 0d 04 37 2c  |.  . TemplW%..7,|
000094d0  20 20 20 20 e7 20 28 73  65 6c 65 63 74 25 20 84  |    . (select% .|
000094e0  20 61 64 6a 75 73 74 25  29 20 80 20 28 69 63 6f  | adjust%) . (ico|
000094f0  6e 25 3e 3d 30 29 20 8c  0d 04 38 29 20 20 20 20  |n%>=0) ...8)    |
00009500  20 20 53 63 72 61 70 42  6c 6b 25 21 30 3d 54 65  |  ScrapBlk%!0=Te|
00009510  6d 70 6c 48 61 6e 64 6c  65 25 28 69 63 6f 6e 25  |mplHandle%(icon%|
00009520  29 0d 04 39 2d 20 20 20  20 20 20 c8 99 20 22 57  |)..9-      .. "W|
00009530  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
00009540  74 65 22 2c 2c 53 63 72  61 70 42 6c 6b 25 0d 04  |te",,ScrapBlk%..|
00009550  3a 24 20 20 20 20 20 20  e7 20 53 63 72 61 70 42  |:$      . ScrapB|
00009560  6c 6b 25 21 33 32 20 80  20 28 31 3c 3c 31 36 29  |lk%!32 . (1<<16)|
00009570  20 8c 0d 04 3b 21 20 20  20 20 20 20 20 20 f2 63  | ...;!        .c|
00009580  6c 6f 73 65 74 65 6d 70  6c 61 74 65 28 69 63 6f  |losetemplate(ico|
00009590  6e 25 29 0d 04 3c 0b 20  20 20 20 20 20 cc 0d 04  |n%)..<.      ...|
000095a0  3d 20 20 20 20 20 20 20  20 20 f2 6f 70 65 6e 74  |=         .opent|
000095b0  65 6d 70 6c 61 74 65 28  69 63 6f 6e 25 29 0d 04  |emplate(icon%)..|
000095c0  3e 0b 20 20 20 20 20 20  cd 0d 04 3f 26 20 20 20  |>.      ...?&   |
000095d0  20 20 20 f2 73 65 6c 65  63 74 69 63 6f 6e 28 54  |   .selecticon(T|
000095e0  65 6d 70 6c 57 25 2c 69  63 6f 6e 25 2c 30 29 0d  |emplW%,icon%,0).|
000095f0  04 40 09 20 20 20 20 cd  0d 04 41 20 20 20 20 20  |.@.    ...A     |
00009600  e7 20 73 65 6c 65 63 74  25 20 80 20 28 69 63 6f  |. select% . (ico|
00009610  6e 25 3d 2d 31 29 20 8c  0d 04 42 20 20 20 20 20  |n%=-1) ...B     |
00009620  20 20 f2 73 65 6c 5f 63  6c 65 61 72 28 54 65 6d  |  .sel_clear(Tem|
00009630  70 6c 57 25 2c 2d 31 29  0d 04 43 09 20 20 20 20  |plW%,-1)..C.    |
00009640  cd 0d 04 44 27 20 20 20  20 e7 20 28 62 75 74 74  |...D'    . (butt|
00009650  6f 6e 25 3d 31 36 29 20  84 20 28 62 75 74 74 6f  |on%=16) . (butto|
00009660  6e 25 3d 36 34 29 20 8c  0d 04 45 21 20 20 20 20  |n%=64) ...E!    |
00009670  20 20 f2 64 72 61 67 73  65 6c 65 63 74 28 62 75  |  .dragselect(bu|
00009680  74 74 6f 6e 25 3e 3e 34  29 0d 04 46 09 20 20 20  |tton%>>4)..F.   |
00009690  20 cd 0d 04 47 0e 20 20  c9 20 53 61 76 65 57 25  | ...G.  . SaveW%|
000096a0  0d 04 48 12 20 20 20 20  c8 8e 20 69 63 6f 6e 25  |..H.    .. icon%|
000096b0  20 ca 0d 04 49 0d 20 20  20 20 20 20 c9 20 30 0d  | ...I.      . 0.|
000096c0  04 4a 20 20 20 20 20 20  20 20 20 e7 20 53 61 76  |.J         . Sav|
000096d0  69 6e 67 53 65 6c 65 63  74 69 6f 6e 25 20 8c 0d  |ingSelection% ..|
000096e0  04 4b 24 20 20 20 20 20  20 20 20 20 20 53 65 6c  |.K$          Sel|
000096f0  46 4e 61 6d 65 24 3d 24  28 46 69 6c 65 4e 61 6d  |FName$=$(FileNam|
00009700  65 25 29 0d 04 4c 27 20  20 20 20 20 20 20 20 20  |e%)..L'         |
00009710  20 f2 73 61 76 65 74 65  6d 70 6c 61 74 65 73 28  | .savetemplates(|
00009720  53 65 6c 46 4e 61 6d 65  24 29 0d 04 4d 0d 20 20  |SelFName$)..M.  |
00009730  20 20 20 20 20 20 cc 0d  04 4e 29 20 20 20 20 20  |      ...N)     |
00009740  20 20 20 20 20 f2 73 65  74 6d 61 69 6e 66 6e 61  |     .setmainfna|
00009750  6d 65 28 24 28 46 69 6c  65 4e 61 6d 65 25 29 29  |me($(FileName%))|
00009760  0d 04 4f 28 20 20 20 20  20 20 20 20 20 20 f2 73  |..O(          .s|
00009770  61 76 65 74 65 6d 70 6c  61 74 65 73 28 4d 61 69  |avetemplates(Mai|
00009780  6e 46 4e 61 6d 65 24 29  0d 04 50 0d 20 20 20 20  |nFName$)..P.    |
00009790  20 20 20 20 cd 0d 04 51  24 20 20 20 20 20 20 20  |    ...Q$       |
000097a0  20 c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  | .. "Wimp_Create|
000097b0  4d 65 6e 75 22 2c 2c 2d  31 0d 04 52 0d 20 20 20  |Menu",,-1..R.   |
000097c0  20 20 20 c9 20 32 0d 04  53 20 20 20 20 20 20 20  |   . 2..S       |
000097d0  20 20 e7 20 28 62 75 74  74 6f 6e 25 3e 3e 34 29  |  . (button%>>4)|
000097e0  20 80 20 35 20 8c 0d 04  54 22 20 20 20 20 20 20  | . 5 ...T"      |
000097f0  20 20 20 20 e7 20 53 61  76 69 6e 67 53 65 6c 65  |    . SavingSele|
00009800  63 74 69 6f 6e 25 20 8c  0d 04 55 26 20 20 20 20  |ction% ...U&    |
00009810  20 20 20 20 20 20 20 20  53 65 6c 46 4e 61 6d 65  |        SelFName|
00009820  24 3d 24 28 46 69 6c 65  4e 61 6d 65 25 29 0d 04  |$=$(FileName%)..|
00009830  56 0f 20 20 20 20 20 20  20 20 20 20 cc 0d 04 57  |V.          ...W|
00009840  2b 20 20 20 20 20 20 20  20 20 20 20 20 f2 73 65  |+            .se|
00009850  74 6d 61 69 6e 66 6e 61  6d 65 28 24 28 46 69 6c  |tmainfname($(Fil|
00009860  65 4e 61 6d 65 25 29 29  0d 04 58 0f 20 20 20 20  |eName%))..X.    |
00009870  20 20 20 20 20 20 cd 0d  04 59 1c 20 20 20 20 20  |      ...Y.     |
00009880  20 20 20 20 20 f2 73 74  61 72 74 73 61 76 65 64  |     .startsaved|
00009890  72 61 67 0d 04 5a 0d 20  20 20 20 20 20 20 20 cd  |rag..Z.        .|
000098a0  0d 04 5b 09 20 20 20 20  cb 0d 04 5c 0f 20 20 c9  |..[.    ...\.  .|
000098b0  20 41 6c 69 67 6e 57 25  0d 04 5d 12 20 20 20 20  | AlignW%..].    |
000098c0  c8 8e 20 69 63 6f 6e 25  20 ca 0d 04 5e 0e 20 20  |.. icon% ...^.  |
000098d0  20 20 20 20 c9 20 31 30  0d 04 5f 26 20 20 20 20  |    . 10.._&    |
000098e0  20 20 20 20 f2 61 6c 69  67 6e 69 63 6f 6e 73 28  |    .alignicons(|
000098f0  4c 61 73 74 4d 65 6e 75  5f 57 69 6e 25 29 0d 04  |LastMenu_Win%)..|
00009900  60 34 20 20 20 20 20 20  20 20 e7 20 28 ac 20 61  |`4        . (. a|
00009910  64 6a 75 73 74 25 29 20  8c 20 c8 99 20 22 57 69  |djust%) . .. "Wi|
00009920  6d 70 5f 43 72 65 61 74  65 4d 65 6e 75 22 2c 2c  |mp_CreateMenu",,|
00009930  2d 31 0d 04 61 0b 20 20  20 20 20 20 7f 0d 04 62  |-1..a.      ...b|
00009940  1d 20 20 20 20 20 20 20  20 f2 61 6c 69 67 6e 5f  |.        .align_|
00009950  73 68 61 64 65 69 63 6f  6e 73 0d 04 63 09 20 20  |shadeicons..c.  |
00009960  20 20 cb 0d 04 64 0f 20  20 c9 20 53 70 61 63 65  |  ...d.  . Space|
00009970  57 25 0d 04 65 12 20 20  20 20 c8 8e 20 69 63 6f  |W%..e.    .. ico|
00009980  6e 25 20 ca 0d 04 66 0f  20 20 20 20 20 20 c9 20  |n% ...f.      . |
00009990  35 2c 37 0d 04 67 2f 20  20 20 20 20 20 20 20 53  |5,7..g/        S|
000099a0  70 61 63 65 4f 75 74 5f  53 70 61 63 65 25 3d bb  |paceOut_Space%=.|
000099b0  28 24 28 49 63 6f 6e 54  65 78 74 25 28 31 38 29  |($(IconText%(18)|
000099c0  29 29 0d 04 68 25 20 20  20 20 20 20 20 20 75 70  |))..h%        up|
000099d0  25 3d 28 61 64 6a 75 73  74 25 20 82 20 28 69 63  |%=(adjust% . (ic|
000099e0  6f 6e 25 3d 37 29 29 0d  04 69 3a 20 20 20 20 20  |on%=7))..i:     |
000099f0  20 20 20 e7 20 a4 63 68  61 6e 67 65 76 61 72 28  |   . .changevar(|
00009a00  53 70 61 63 65 4f 75 74  5f 53 70 61 63 65 25 2c  |SpaceOut_Space%,|
00009a10  34 2c 75 70 25 2c 2d 35  31 32 2c 35 31 32 29 20  |4,up%,-512,512) |
00009a20  8c 0d 04 6a 31 20 20 20  20 20 20 20 20 20 20 f2  |...j1          .|
00009a30  73 65 74 69 63 6f 6e 74  65 78 74 28 31 38 2c c3  |seticontext(18,.|
00009a40  28 53 70 61 63 65 4f 75  74 5f 53 70 61 63 65 25  |(SpaceOut_Space%|
00009a50  29 29 0d 04 6b 22 20 20  20 20 20 20 20 20 20 20  |))..k"          |
00009a60  f2 73 65 74 63 61 72 65  74 28 53 70 61 63 65 57  |.setcaret(SpaceW|
00009a70  25 2c 36 29 0d 04 6c 0d  20 20 20 20 20 20 20 20  |%,6)..l.        |
00009a80  cd 0d 04 6d 0e 20 20 20  20 20 c9 20 34 2c 38 0d  |...m.     . 4,8.|
00009a90  04 6e 1d 20 20 20 20 20  20 20 20 f2 73 70 61 63  |.n.        .spac|
00009aa0  65 5f 73 68 61 64 65 69  63 6f 6e 73 0d 04 6f 28  |e_shadeicons..o(|
00009ab0  20 20 20 20 20 20 20 20  e7 20 69 63 6f 6e 25 3d  |        . icon%=|
00009ac0  38 20 8c 20 f2 73 65 74  63 61 72 65 74 28 2d 31  |8 . .setcaret(-1|
00009ad0  2c 2d 31 29 0d 04 70 0d  20 20 20 20 20 20 c9 20  |,-1)..p.      . |
00009ae0  39 0d 04 71 26 20 20 20  20 20 20 20 20 f2 73 70  |9..q&        .sp|
00009af0  61 63 65 69 63 6f 6e 73  28 4c 61 73 74 4d 65 6e  |aceicons(LastMen|
00009b00  75 5f 57 69 6e 25 29 0d  04 72 34 20 20 20 20 20  |u_Win%)..r4     |
00009b10  20 20 20 e7 20 28 ac 20  61 64 6a 75 73 74 25 29  |   . (. adjust%)|
00009b20  20 8c 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  | . .. "Wimp_Crea|
00009b30  74 65 4d 65 6e 75 22 2c  2c 2d 31 0d 04 73 09 20  |teMenu",,-1..s. |
00009b40  20 20 20 cb 0d 04 74 0e  20 20 c9 20 57 6f 72 6b  |   ...t.  . Work|
00009b50  57 25 0d 04 75 15 20 20  20 20 e7 20 69 63 6f 6e  |W%..u.    . icon|
00009b60  25 3c 3d 32 36 20 8c 0d  04 76 2b 20 20 20 20 20  |%<=26 ...v+     |
00009b70  20 e7 20 28 69 63 6f 6e  25 3e 3d 39 29 20 80 20  | . (icon%>=9) . |
00009b80  28 28 69 63 6f 6e 25 20  83 20 33 29 3c 3e 31 29  |((icon% . 3)<>1)|
00009b90  20 8c 0d 04 77 22 20 20  20 20 20 20 20 20 f4 20  | ...w"        . |
00009ba0  63 6c 69 63 6b 20 6f 6e  20 61 72 72 6f 77 20 69  |click on arrow i|
00009bb0  63 6f 6e 73 0d 04 78 29  20 20 20 20 20 20 20 20  |cons..x)        |
00009bc0  75 70 25 3d 28 28 69 63  6f 6e 25 20 83 20 33 29  |up%=((icon% . 3)|
00009bd0  3d 32 29 20 82 20 61 64  6a 75 73 74 25 0d 04 79  |=2) . adjust%..y|
00009be0  1c 20 20 20 20 20 20 20  20 69 25 3d 28 69 63 6f  |.        i%=(ico|
00009bf0  6e 25 2d 39 29 20 81 20  33 0d 04 7a 25 20 20 20  |n%-9) . 3..z%   |
00009c00  20 20 20 20 20 6a 25 3d  bb 28 24 28 49 63 6f 6e  |     j%=.($(Icon|
00009c10  54 65 78 74 25 28 31 32  2b 69 25 29 29 29 0d 04  |Text%(12+i%)))..|
00009c20  7b 14 20 20 20 20 20 20  20 20 e7 20 69 25 3c 32  |{.        . i%<2|
00009c30  20 8c 0d 04 7c 18 20 20  20 20 20 20 20 20 20 20  | ...|.          |
00009c40  6c 6f 25 3d 2d 31 30 30  30 30 0d 04 7d 0d 20 20  |lo%=-10000..}.  |
00009c50  20 20 20 20 20 20 cc 0d  04 7e 37 20 20 20 20 20  |      ...~7     |
00009c60  20 20 20 20 20 6c 6f 25  3d 30 20 3a 20 f4 20 22  |     lo%=0 : . "|
00009c70  73 69 7a 65 22 20 66 69  65 6c 64 2c 20 63 61 6e  |size" field, can|
00009c80  27 74 20 62 65 20 6e 65  67 61 74 69 76 65 0d 04  |'t be negative..|
00009c90  7f 0d 20 20 20 20 20 20  20 20 cd 0d 04 80 2e 20  |..        ..... |
00009ca0  20 20 20 20 20 20 20 e7  20 a4 63 68 61 6e 67 65  |       . .change|
00009cb0  76 61 72 28 6a 25 2c 34  2c 75 70 25 2c 6c 6f 25  |var(j%,4,up%,lo%|
00009cc0  2c 31 30 30 30 30 29 20  8c 0d 04 81 27 20 20 20  |,10000) ....'   |
00009cd0  20 20 20 20 20 20 20 f2  73 65 74 69 63 6f 6e 74  |       .seticont|
00009ce0  65 78 74 28 31 32 2b 69  25 2c c3 28 6a 25 29 29  |ext(12+i%,.(j%))|
00009cf0  0d 04 82 27 20 20 20 20  20 20 20 20 20 20 f2 73  |...'          .s|
00009d00  65 74 63 61 72 65 74 28  57 6f 72 6b 57 25 2c 33  |etcaret(WorkW%,3|
00009d10  2a 69 25 2b 31 30 29 0d  04 83 0d 20 20 20 20 20  |*i%+10)....     |
00009d20  20 20 20 cd 0d 04 84 0b  20 20 20 20 20 20 cd 0d  |   .....      ..|
00009d30  04 85 1a 20 20 20 20 cc  20 20 20 20 20 20 20 20  |...    .        |
00009d40  20 20 20 20 20 20 20 20  20 0d 04 86 21 20 20 20  |         ...!   |
00009d50  20 20 20 57 69 6e 42 6c  6b 25 21 30 3d 4c 61 73  |   WinBlk%!0=Las|
00009d60  74 4d 65 6e 75 5f 57 69  6e 25 0d 04 87 2b 20 20  |tMenu_Win%...+  |
00009d70  20 20 20 20 c8 99 20 22  57 69 6d 70 5f 47 65 74  |    .. "Wimp_Get|
00009d80  57 69 6e 64 6f 77 53 74  61 74 65 22 2c 2c 57 69  |WindowState",,Wi|
00009d90  6e 42 6c 6b 25 0d 04 88  14 20 20 20 20 20 20 c8  |nBlk%....      .|
00009da0  8e 20 69 63 6f 6e 25 20  ca 0d 04 89 13 20 20 20  |. icon% .....   |
00009db0  20 20 20 20 20 c9 20 32  37 2c 32 38 0d 04 8a 3f  |     . 27,28...?|
00009dc0  20 20 20 20 20 20 20 20  20 20 78 73 69 7a 65 25  |          xsize%|
00009dd0  3d 57 69 6e 42 6c 6b 25  21 31 32 2d 57 69 6e 42  |=WinBlk%!12-WinB|
00009de0  6c 6b 25 21 34 2b 57 69  6e 42 6c 6b 25 21 32 30  |lk%!4+WinBlk%!20|
00009df0  2d 57 69 6e 42 6c 6b 25  21 34 34 0d 04 8b 3f 20  |-WinBlk%!44...? |
00009e00  20 20 20 20 20 20 20 20  20 79 73 69 7a 65 25 3d  |         ysize%=|
00009e10  57 69 6e 42 6c 6b 25 21  31 36 2d 57 69 6e 42 6c  |WinBlk%!16-WinBl|
00009e20  6b 25 21 38 2d 57 69 6e  42 6c 6b 25 21 32 34 2b  |k%!8-WinBlk%!24+|
00009e30  57 69 6e 42 6c 6b 25 21  35 36 0d 04 8c 1a 20 20  |WinBlk%!56....  |
00009e40  20 20 20 20 20 20 20 20  e7 20 69 63 6f 6e 25 3d  |        . icon%=|
00009e50  32 37 20 8c 0d 04 8d 2e  20 20 20 20 20 20 20 20  |27 .....        |
00009e60  20 20 20 20 f2 73 65 74  69 63 6f 6e 74 65 78 74  |    .seticontext|
00009e70  28 31 32 2c c3 28 57 69  6e 42 6c 6b 25 21 34 34  |(12,.(WinBlk%!44|
00009e80  29 29 0d 04 8e 2e 20 20  20 20 20 20 20 20 20 20  |))....          |
00009e90  20 20 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 31  |  .seticontext(1|
00009ea0  33 2c c3 28 57 69 6e 42  6c 6b 25 21 35 36 29 29  |3,.(WinBlk%!56))|
00009eb0  0d 04 8f 2a 20 20 20 20  20 20 20 20 20 20 20 20  |...*            |
00009ec0  f2 73 65 74 69 63 6f 6e  74 65 78 74 28 31 34 2c  |.seticontext(14,|
00009ed0  c3 28 78 73 69 7a 65 25  29 29 0d 04 90 2a 20 20  |.(xsize%))...*  |
00009ee0  20 20 20 20 20 20 20 20  20 20 f2 73 65 74 69 63  |          .setic|
00009ef0  6f 6e 74 65 78 74 28 31  35 2c c3 28 79 73 69 7a  |ontext(15,.(ysiz|
00009f00  65 25 29 29 0d 04 91 24  20 20 20 20 20 20 20 20  |e%))...$        |
00009f10  20 20 20 20 f2 73 65 74  63 61 72 65 74 28 57 6f  |    .setcaret(Wo|
00009f20  72 6b 57 25 2c 31 36 29  0d 04 92 0f 20 20 20 20  |rkW%,16)....    |
00009f30  20 20 20 20 20 20 cc 0d  04 93 2a 20 20 20 20 20  |      ....*     |
00009f40  20 20 20 20 20 20 20 f2  73 65 74 69 63 6f 6e 74  |       .seticont|
00009f50  65 78 74 28 31 36 2c c3  28 78 73 69 7a 65 25 29  |ext(16,.(xsize%)|
00009f60  29 0d 04 94 2a 20 20 20  20 20 20 20 20 20 20 20  |)...*           |
00009f70  20 f2 73 65 74 69 63 6f  6e 74 65 78 74 28 31 37  | .seticontext(17|
00009f80  2c c3 28 79 73 69 7a 65  25 29 29 0d 04 95 24 20  |,.(ysize%))...$ |
00009f90  20 20 20 20 20 20 20 20  20 20 20 f2 73 65 74 63  |           .setc|
00009fa0  61 72 65 74 28 57 6f 72  6b 57 25 2c 32 32 29 0d  |aret(WorkW%,22).|
00009fb0  04 96 0f 20 20 20 20 20  20 20 20 20 20 cd 0d 04  |...          ...|
00009fc0  97 10 20 20 20 20 20 20  20 20 c9 20 32 39 0d 04  |..        . 29..|
00009fd0  98 22 20 20 20 20 20 20  20 20 20 20 f2 73 65 74  |."          .set|
00009fe0  69 63 6f 6e 74 65 78 74  28 31 32 2c 22 30 22 29  |icontext(12,"0")|
00009ff0  0d 04 99 22 20 20 20 20  20 20 20 20 20 20 f2 73  |..."          .s|
0000a000  65 74 69 63 6f 6e 74 65  78 74 28 31 33 2c 22 30  |eticontext(13,"0|
0000a010  22 29 0d 04 9a 25 20 20  20 20 20 20 20 20 20 20  |")...%          |
0000a020  f2 73 65 74 69 63 6f 6e  74 65 78 74 28 31 34 2c  |.seticontext(14,|
0000a030  22 31 32 33 36 22 29 0d  04 9b 24 20 20 20 20 20  |"1236")...$     |
0000a040  20 20 20 20 20 f2 73 65  74 69 63 6f 6e 74 65 78  |     .seticontex|
0000a050  74 28 31 35 2c 22 39 33  36 22 29 0d 04 9c 22 20  |t(15,"936")..." |
0000a060  20 20 20 20 20 20 20 20  20 f2 73 65 74 69 63 6f  |         .setico|
0000a070  6e 74 65 78 74 28 31 36  2c 22 30 22 29 0d 04 9d  |ntext(16,"0")...|
0000a080  22 20 20 20 20 20 20 20  20 20 20 f2 73 65 74 69  |"          .seti|
0000a090  63 6f 6e 74 65 78 74 28  31 37 2c 22 30 22 29 0d  |context(17,"0").|
0000a0a0  04 9e 22 20 20 20 20 20  20 20 20 20 20 f2 73 65  |.."          .se|
0000a0b0  74 63 61 72 65 74 28 57  6f 72 6b 57 25 2c 31 36  |tcaret(WorkW%,16|
0000a0c0  29 0d 04 9f 10 20 20 20  20 20 20 20 20 c9 20 33  |)....        . 3|
0000a0d0  30 0d 04 a0 1a 20 20 20  20 20 20 20 20 20 20 f2  |0....          .|
0000a0e0  73 65 74 77 6f 72 6b 61  72 65 61 0d 04 a1 36 20  |setworkarea...6 |
0000a0f0  20 20 20 20 20 20 20 20  20 e7 20 28 ac 20 61 64  |         . (. ad|
0000a100  6a 75 73 74 25 29 20 8c  20 c8 99 20 22 57 69 6d  |just%) . .. "Wim|
0000a110  70 5f 43 72 65 61 74 65  4d 65 6e 75 22 2c 2c 2d  |p_CreateMenu",,-|
0000a120  31 0d 04 a2 0d 20 20 20  20 20 20 20 20 7f 0d 04  |1....        ...|
0000a130  a3 0b 20 20 20 20 20 20  cb 0d 04 a4 09 20 20 20  |..      .....   |
0000a140  20 cd 0d 04 a5 11 20 20  c9 20 4f 70 74 50 61 6e  | .....  . OptPan|
0000a150  65 57 25 0d 04 a6 12 20  20 20 20 c8 8e 20 69 63  |eW%....    .. ic|
0000a160  6f 6e 25 20 ca 0d 04 a7  2a 20 20 20 20 20 20 c9  |on% ....*      .|
0000a170  20 38 20 20 3a 20 54 72  61 70 44 63 6c 69 63 6b  | 8  : TrapDclick|
0000a180  25 3d ac 20 54 72 61 70  44 63 6c 69 63 6b 25 0d  |%=. TrapDclick%.|
0000a190  04 a8 37 20 20 20 20 20  20 c9 20 39 20 20 3a 20  |..7      . 9  : |
0000a1a0  f2 73 75 70 70 6f 72 74  69 6e 74 65 72 66 61 63  |.supportinterfac|
0000a1b0  65 28 ac 20 53 75 70 70  6f 72 74 49 6e 74 65 72  |e(. SupportInter|
0000a1c0  66 61 63 65 25 29 0d 04  a9 2b 20 20 20 20 20 20  |face%)...+      |
0000a1d0  c9 20 31 30 20 3a 20 f2  73 75 70 70 6f 72 74 61  |. 10 : .supporta|
0000a1e0  65 68 28 ac 20 53 75 70  70 6f 72 74 41 45 48 25  |eh(. SupportAEH%|
0000a1f0  29 0d 04 aa 28 20 20 20  20 20 20 c9 20 31 31 20  |)...(      . 11 |
0000a200  3a 20 44 75 70 6c 4e 61  6d 65 73 25 3d ac 20 44  |: DuplNames%=. D|
0000a210  75 70 6c 4e 61 6d 65 73  25 0d 04 ab 0e 20 20 20  |uplNames%....   |
0000a220  20 20 20 c9 20 31 32 0d  04 ac 1b 20 20 20 20 20  |   . 12....     |
0000a230  20 20 20 48 61 74 63 68  25 3d ac 20 48 61 74 63  |   Hatch%=. Hatc|
0000a240  68 25 0d 04 ad 16 20 20  20 20 20 20 20 20 f2 72  |h%....        .r|
0000a250  65 64 72 61 77 61 6c 6c  0d 04 ae 0e 20 20 20 20  |edrawall....    |
0000a260  20 20 c9 20 31 33 0d 04  af 2b 20 20 20 20 20 20  |  . 13...+      |
0000a270  20 20 49 63 49 6e 66 6f  5f 41 63 74 69 76 65 25  |  IcInfo_Active%|
0000a280  3d ac 20 49 63 49 6e 66  6f 5f 41 63 74 69 76 65  |=. IcInfo_Active|
0000a290  25 0d 04 b0 1e 20 20 20  20 20 20 20 20 e7 20 49  |%....        . I|
0000a2a0  63 49 6e 66 6f 5f 41 63  74 69 76 65 25 20 8c 0d  |cInfo_Active% ..|
0000a2b0  04 b1 25 20 20 20 20 20  20 20 20 20 20 f2 6f 70  |..%          .op|
0000a2c0  65 6e 77 69 6e 64 6f 77  28 49 63 49 6e 66 6f 57  |enwindow(IcInfoW|
0000a2d0  25 2c 34 29 0d 04 b2 0d  20 20 20 20 20 20 20 20  |%,4)....        |
0000a2e0  cc 0d 04 b3 24 20 20 20  20 20 20 20 20 20 20 f2  |....$          .|
0000a2f0  63 6c 6f 73 65 77 69 6e  64 6f 77 28 49 63 49 6e  |closewindow(IcIn|
0000a300  66 6f 57 25 29 0d 04 b4  0d 20 20 20 20 20 20 20  |foW%)....       |
0000a310  20 cd 0d 04 b5 34 20 20  20 20 20 20 c9 20 31 34  | ....4      . 14|
0000a320  20 3a 20 53 61 76 65 5f  55 6e 73 65 6c 65 63 74  | : Save_Unselect|
0000a330  65 64 25 3d ac 20 53 61  76 65 5f 55 6e 73 65 6c  |ed%=. Save_Unsel|
0000a340  65 63 74 65 64 25 0d 04  b6 30 20 20 20 20 20 20  |ected%...0      |
0000a350  c9 20 31 35 20 3a 20 44  65 6c 65 74 65 4f 75 74  |. 15 : DeleteOut|
0000a360  73 69 64 65 25 3d ac 20  44 65 6c 65 74 65 4f 75  |side%=. DeleteOu|
0000a370  74 73 69 64 65 25 0d 04  b7 30 20 20 20 20 20 20  |tside%...0      |
0000a380  c9 20 31 36 20 3a 20 47  72 69 64 5f 53 69 7a 65  |. 16 : Grid_Size|
0000a390  4c 6f 63 6b 25 3d ac 20  47 72 69 64 5f 53 69 7a  |Lock%=. Grid_Siz|
0000a3a0  65 4c 6f 63 6b 25 0d 04  b8 11 20 20 20 20 20 20  |eLock%....      |
0000a3b0  c9 20 31 38 2c 32 30 0d  04 b9 26 20 20 20 20 20  |. 18,20...&     |
0000a3c0  20 20 20 75 70 25 3d 28  61 64 6a 75 73 74 25 20  |   up%=(adjust% |
0000a3d0  82 20 28 69 63 6f 6e 25  3d 32 30 29 29 0d 04 ba  |. (icon%=20))...|
0000a3e0  44 20 20 20 20 20 20 20  20 e7 20 a4 63 68 61 6e  |D        . .chan|
0000a3f0  67 65 76 61 72 28 47 72  69 64 5f 53 69 7a 65 58  |gevar(Grid_SizeX|
0000a400  25 2c 50 69 78 54 6f 4f  53 5f 58 25 2c 75 70 25  |%,PixToOS_X%,up%|
0000a410  2c 50 69 78 54 6f 4f 53  5f 58 25 2c 36 34 29 20  |,PixToOS_X%,64) |
0000a420  8c 0d 04 bb 2d 20 20 20  20 20 20 20 20 20 20 f2  |....-          .|
0000a430  73 65 74 69 63 6f 6e 74  65 78 74 28 32 38 2c c3  |seticontext(28,.|
0000a440  28 47 72 69 64 5f 53 69  7a 65 58 25 29 29 0d 04  |(Grid_SizeX%))..|
0000a450  bc 0d 20 20 20 20 20 20  20 20 cd 0d 04 bd 11 20  |..        ..... |
0000a460  20 20 20 20 20 c9 20 32  32 2c 32 34 0d 04 be 26  |     . 22,24...&|
0000a470  20 20 20 20 20 20 20 20  75 70 25 3d 28 61 64 6a  |        up%=(adj|
0000a480  75 73 74 25 20 82 20 28  69 63 6f 6e 25 3d 32 34  |ust% . (icon%=24|
0000a490  29 29 0d 04 bf 44 20 20  20 20 20 20 20 20 e7 20  |))...D        . |
0000a4a0  a4 63 68 61 6e 67 65 76  61 72 28 47 72 69 64 5f  |.changevar(Grid_|
0000a4b0  53 69 7a 65 59 25 2c 50  69 78 54 6f 4f 53 5f 59  |SizeY%,PixToOS_Y|
0000a4c0  25 2c 75 70 25 2c 50 69  78 54 6f 4f 53 5f 59 25  |%,up%,PixToOS_Y%|
0000a4d0  2c 36 34 29 20 8c 0d 04  c0 2d 20 20 20 20 20 20  |,64) ....-      |
0000a4e0  20 20 20 20 f2 73 65 74  69 63 6f 6e 74 65 78 74  |    .seticontext|
0000a4f0  28 32 39 2c c3 28 47 72  69 64 5f 53 69 7a 65 59  |(29,.(Grid_SizeY|
0000a500  25 29 29 0d 04 c1 0d 20  20 20 20 20 20 20 20 cd  |%))....        .|
0000a510  0d 04 c2 2e 20 20 20 20  20 20 c9 20 32 35 20 3a  |....      . 25 :|
0000a520  20 47 72 69 64 5f 50 6f  73 4c 6f 63 6b 25 3d ac  | Grid_PosLock%=.|
0000a530  20 47 72 69 64 5f 50 6f  73 4c 6f 63 6b 25 0d 04  | Grid_PosLock%..|
0000a540  c3 11 20 20 20 20 20 20  c9 20 32 37 2c 32 39 0d  |..      . 27,29.|
0000a550  04 c4 26 20 20 20 20 20  20 20 20 75 70 25 3d 28  |..&        up%=(|
0000a560  61 64 6a 75 73 74 25 20  82 20 28 69 63 6f 6e 25  |adjust% . (icon%|
0000a570  3d 32 39 29 29 0d 04 c5  43 20 20 20 20 20 20 20  |=29))...C       |
0000a580  20 e7 20 a4 63 68 61 6e  67 65 76 61 72 28 47 72  | . .changevar(Gr|
0000a590  69 64 5f 50 6f 73 58 25  2c 50 69 78 54 6f 4f 53  |id_PosX%,PixToOS|
0000a5a0  5f 58 25 2c 75 70 25 2c  50 69 78 54 6f 4f 53 5f  |_X%,up%,PixToOS_|
0000a5b0  58 25 2c 36 34 29 20 8c  0d 04 c6 2c 20 20 20 20  |X%,64) ....,    |
0000a5c0  20 20 20 20 20 20 f2 73  65 74 69 63 6f 6e 74 65  |      .seticonte|
0000a5d0  78 74 28 33 30 2c c3 28  47 72 69 64 5f 50 6f 73  |xt(30,.(Grid_Pos|
0000a5e0  58 25 29 29 0d 04 c7 0d  20 20 20 20 20 20 20 20  |X%))....        |
0000a5f0  cd 0d 04 c8 11 20 20 20  20 20 20 c9 20 33 31 2c  |.....      . 31,|
0000a600  33 33 0d 04 c9 26 20 20  20 20 20 20 20 20 75 70  |33...&        up|
0000a610  25 3d 28 61 64 6a 75 73  74 25 20 82 20 28 69 63  |%=(adjust% . (ic|
0000a620  6f 6e 25 3d 33 33 29 29  0d 04 ca 43 20 20 20 20  |on%=33))...C    |
0000a630  20 20 20 20 e7 20 a4 63  68 61 6e 67 65 76 61 72  |    . .changevar|
0000a640  28 47 72 69 64 5f 50 6f  73 59 25 2c 50 69 78 54  |(Grid_PosY%,PixT|
0000a650  6f 4f 53 5f 59 25 2c 75  70 25 2c 50 69 78 54 6f  |oOS_Y%,up%,PixTo|
0000a660  4f 53 5f 59 25 2c 36 34  29 20 8c 0d 04 cb 2c 20  |OS_Y%,64) ...., |
0000a670  20 20 20 20 20 20 20 20  20 f2 73 65 74 69 63 6f  |         .setico|
0000a680  6e 74 65 78 74 28 33 31  2c c3 28 47 72 69 64 5f  |ntext(31,.(Grid_|
0000a690  50 6f 73 59 25 29 29 0d  04 cc 0d 20 20 20 20 20  |PosY%))....     |
0000a6a0  20 20 20 cd 0d 04 cd 09  20 20 20 20 cb 0d 04 ce  |   .....    ....|
0000a6b0  11 20 20 c9 20 4f 70 74  69 6f 6e 73 57 25 0d 04  |.  . OptionsW%..|
0000a6c0  cf 12 20 20 20 20 c8 8e  20 69 63 6f 6e 25 20 ca  |..    .. icon% .|
0000a6d0  0d 04 d0 0d 20 20 20 20  20 20 c9 20 30 0d 04 d1  |....      . 0...|
0000a6e0  17 20 20 20 20 20 20 20  20 f2 73 65 74 75 70 5f  |.        .setup_|
0000a6f0  73 61 76 65 0d 04 d2 23  20 20 20 20 20 20 20 20  |save...#        |
0000a700  f2 63 6c 6f 73 65 77 69  6e 64 6f 77 28 4f 70 74  |.closewindow(Opt|
0000a710  69 6f 6e 73 57 25 29 0d  04 d3 0d 20 20 20 20 20  |ionsW%)....     |
0000a720  20 c9 20 31 0d 04 d4 23  20 20 20 20 20 20 20 20  | . 1...#        |
0000a730  f2 63 6c 6f 73 65 77 69  6e 64 6f 77 28 4f 70 74  |.closewindow(Opt|
0000a740  69 6f 6e 73 57 25 29 0d  04 d5 09 20 20 20 20 cb  |ionsW%)....    .|
0000a750  0d 04 d6 0e 20 20 c9 20  44 69 61 6c 57 25 0d 04  |....  . DialW%..|
0000a760  d7 20 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 43  |.     .. "Wimp_C|
0000a770  72 65 61 74 65 4d 65 6e  75 22 2c 2c 2d 31 0d 04  |reateMenu",,-1..|
0000a780  d8 1a 20 20 20 20 c8 8e  20 4c 61 73 74 44 69 61  |..    .. LastDia|
0000a790  6c 6f 67 75 65 25 20 ca  0d 04 d9 0d 20 20 20 20  |logue% .....    |
0000a7a0  20 20 c9 20 30 0d 04 da  2c 20 20 20 20 20 20 20  |  . 0...,       |
0000a7b0  20 f4 20 70 72 6f 67 72  61 6d 20 71 75 69 74 20  | . program quit |
0000a7c0  77 69 74 68 20 63 68 61  6e 67 65 73 20 6d 61 64  |with changes mad|
0000a7d0  65 0d 04 db 16 20 20 20  20 20 20 20 20 c8 8e 20  |e....        .. |
0000a7e0  69 63 6f 6e 25 20 ca 0d  04 dc 11 20 20 20 20 20  |icon% .....     |
0000a7f0  20 20 20 20 20 c9 20 31  0d 04 dd 32 20 20 20 20  |     . 1...2    |
0000a800  20 20 20 20 20 20 20 20  c8 99 20 22 57 69 6d 70  |        .. "Wimp|
0000a810  5f 47 65 74 50 6f 69 6e  74 65 72 49 6e 66 6f 22  |_GetPointerInfo"|
0000a820  2c 2c 50 74 72 49 6e 66  6f 25 0d 04 de 27 20 20  |,,PtrInfo%...'  |
0000a830  20 20 20 20 20 20 20 20  20 20 24 28 46 69 6c 65  |          $(File|
0000a840  4e 61 6d 65 25 29 3d 4d  61 69 6e 46 4e 61 6d 65  |Name%)=MainFName|
0000a850  24 0d 04 df 22 20 20 20  20 20 20 20 20 20 20 20  |$..."           |
0000a860  20 53 61 76 69 6e 67 53  65 6c 65 63 74 69 6f 6e  | SavingSelection|
0000a870  25 3d a3 0d 04 e0 20 20  20 20 20 20 20 20 20 20  |%=....          |
0000a880  20 20 20 51 75 69 74 41  66 74 65 72 53 61 76 65  |   QuitAfterSave|
0000a890  25 3d b9 0d 04 e1 49 20  20 20 20 20 20 20 20 20  |%=....I         |
0000a8a0  20 20 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |   .. "Wimp_Crea|
0000a8b0  74 65 4d 65 6e 75 22 2c  2c 53 61 76 65 57 25 2c  |teMenu",,SaveW%,|
0000a8c0  50 74 72 49 6e 66 6f 25  21 30 2d 31 32 36 2c 50  |PtrInfo%!0-126,P|
0000a8d0  74 72 49 6e 66 6f 25 21  34 2b 35 36 0d 04 e2 11  |trInfo%!4+56....|
0000a8e0  20 20 20 20 20 20 20 20  20 20 c9 20 32 0d 04 e3  |          . 2...|
0000a8f0  1b 20 20 20 20 20 20 20  20 20 20 20 20 f2 70 72  |.            .pr|
0000a900  65 71 75 69 74 28 31 29  0d 04 e4 0d 20 20 20 20  |equit(1)....    |
0000a910  20 20 20 20 cb 0d 04 e5  0d 20 20 20 20 20 20 c9  |    .....      .|
0000a920  20 31 0d 04 e6 2a 20 20  20 20 20 20 20 20 f4 20  | 1...*        . |
0000a930  64 65 6c 65 74 65 20 61  6c 6c 20 77 69 74 68 20  |delete all with |
0000a940  63 68 61 6e 67 65 73 20  6d 61 64 65 0d 04 e7 28  |changes made...(|
0000a950  20 20 20 20 20 20 20 20  e7 20 69 63 6f 6e 25 3d  |        . icon%=|
0000a960  31 20 8c 20 f2 74 65 6d  70 6c 5f 64 65 6c 65 74  |1 . .templ_delet|
0000a970  65 61 6c 6c 0d 04 e8 0d  20 20 20 20 20 20 c9 20  |eall....      . |
0000a980  32 0d 04 e9 2d 20 20 20  20 20 20 20 20 f4 20 6c  |2...-        . l|
0000a990  6f 61 64 20 6e 65 77 20  66 69 6c 65 20 77 69 74  |oad new file wit|
0000a9a0  68 20 63 68 61 6e 67 65  73 20 6d 61 64 65 0d 04  |h changes made..|
0000a9b0  ea 17 20 20 20 20 20 20  20 20 e7 20 69 63 6f 6e  |..        . icon|
0000a9c0  25 3d 31 20 8c 0d 04 eb  1e 20 20 20 20 20 20 20  |%=1 .....       |
0000a9d0  20 20 20 f2 74 65 6d 70  6c 5f 64 65 6c 65 74 65  |   .templ_delete|
0000a9e0  61 6c 6c 0d 04 ec 2a 20  20 20 20 20 20 20 20 20  |all...*         |
0000a9f0  20 f2 74 65 6d 70 6c 5f  6c 6f 61 64 66 69 6c 65  | .templ_loadfile|
0000aa00  28 4e 65 77 46 4e 61 6d  65 24 2c 31 29 0d 04 ed  |(NewFName$,1)...|
0000aa10  26 20 20 20 20 20 20 20  20 20 20 f2 73 65 74 6d  |&          .setm|
0000aa20  61 69 6e 66 6e 61 6d 65  28 4e 65 77 46 4e 61 6d  |ainfname(NewFNam|
0000aa30  65 24 29 0d 04 ee 0d 20  20 20 20 20 20 20 20 cd  |e$)....        .|
0000aa40  0d 04 ef 0d 20 20 20 20  20 20 c9 20 38 0d 04 f0  |....      . 8...|
0000aa50  31 20 20 20 20 20 20 20  20 f4 20 65 78 69 74 20  |1        . exit |
0000aa60  66 72 6f 6d 20 64 65 73  6b 74 6f 70 20 77 69 74  |from desktop wit|
0000aa70  68 20 63 68 61 6e 67 65  73 20 6d 61 64 65 0d 04  |h changes made..|
0000aa80  f1 16 20 20 20 20 20 20  20 20 c8 8e 20 69 63 6f  |..        .. ico|
0000aa90  6e 25 20 ca 0d 04 f2 11  20 20 20 20 20 20 20 20  |n% .....        |
0000aaa0  20 20 c9 20 31 0d 04 f3  20 20 20 20 20 20 20 20  |  . 1...        |
0000aab0  20 20 20 20 20 f2 74 65  6d 70 6c 5f 64 65 6c 65  |     .templ_dele|
0000aac0  74 65 61 6c 6c 0d 04 f4  41 20 20 20 20 20 20 20  |teall...A       |
0000aad0  20 20 20 20 20 f4 20 72  65 73 75 6d 65 20 70 72  |     . resume pr|
0000aae0  65 71 75 69 74 20 70 72  6f 63 65 64 75 72 65 20  |equit procedure |
0000aaf0  28 63 6f 64 65 20 63 6f  70 69 65 64 20 66 72 6f  |(code copied fro|
0000ab00  6d 20 50 52 4d 29 0d 04  f5 35 20 20 20 20 20 20  |m PRM)...5      |
0000ab10  20 20 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 47  |      .. "Wimp_G|
0000ab20  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 22  |etCaretPosition"|
0000ab30  2c 2c 53 63 72 61 70 42  6c 6b 25 0d 04 f6 21 20  |,,ScrapBlk%...! |
0000ab40  20 20 20 20 20 20 20 20  20 20 20 53 63 72 61 70  |           Scrap|
0000ab50  42 6c 6b 25 21 32 34 3d  26 31 46 43 0d 04 f7 40  |Blk%!24=&1FC...@|
0000ab60  20 20 20 20 20 20 20 20  20 20 20 20 c8 99 20 22  |            .. "|
0000ab70  57 69 6d 70 5f 53 65 6e  64 4d 65 73 73 61 67 65  |Wimp_SendMessage|
0000ab80  22 2c 38 2c 53 63 72 61  70 42 6c 6b 25 2c 50 72  |",8,ScrapBlk%,Pr|
0000ab90  65 51 75 69 74 53 65 6e  64 65 72 25 0d 04 f8 0d  |eQuitSender%....|
0000aba0  20 20 20 20 20 20 20 20  cb 0d 04 f9 09 20 20 20  |        .....   |
0000abb0  20 cb 0d 04 fa 05 cb 0d  04 fb 05 e1 0d 04 fc 04  | ...............|
0000abc0  0d 04 fd 35 dd 20 f2 77  69 6e 65 64 5f 63 6c 69  |...5. .wined_cli|
0000abd0  63 6b 28 78 70 6f 73 25  2c 79 70 6f 73 25 2c 73  |ck(xpos%,ypos%,s|
0000abe0  65 6c 65 63 74 25 2c 61  64 6a 75 73 74 25 2c 69  |elect%,adjust%,i|
0000abf0  63 6f 6e 25 29 0d 04 fe  12 ea 20 75 70 25 2c 69  |con%)..... up%,i|
0000ac00  25 2c 67 63 6f 6c 25 0d  04 ff 0e c8 8e 20 69 63  |%,gcol%...... ic|
0000ac10  6f 6e 25 20 ca 0d 05 00  0a 20 20 c9 20 35 33 0d  |on% .....  . 53.|
0000ac20  05 01 16 20 20 20 20 f2  77 69 6e 65 64 5f 72 65  |...    .wined_re|
0000ac30  61 64 77 69 6e 0d 05 02  0a 20 20 c9 20 35 34 0d  |adwin....  . 54.|
0000ac40  05 03 16 20 20 20 20 f2  77 69 6e 65 64 5f 72 65  |...    .wined_re|
0000ac50  61 64 77 69 6e 0d 05 04  1d 20 20 20 20 f2 63 6c  |adwin....    .cl|
0000ac60  6f 73 65 77 69 6e 64 6f  77 28 57 69 6e 45 64 57  |osewindow(WinEdW|
0000ac70  25 29 0d 05 05 20 20 20  20 20 f2 73 65 74 63 61  |%)...     .setca|
0000ac80  72 65 74 28 57 69 6e 45  64 5f 57 69 6e 25 2c 2d  |ret(WinEd_Win%,-|
0000ac90  31 29 0d 05 06 0a 20 20  c9 20 35 35 0d 05 07 1d  |1)....  . 55....|
0000aca0  20 20 20 20 f2 63 6c 6f  73 65 77 69 6e 64 6f 77  |    .closewindow|
0000acb0  28 57 69 6e 45 64 57 25  29 0d 05 08 20 20 20 20  |(WinEdW%)...    |
0000acc0  20 f2 73 65 74 63 61 72  65 74 28 57 69 6e 45 64  | .setcaret(WinEd|
0000acd0  5f 57 69 6e 25 2c 2d 31  29 0d 05 09 0a 20 20 c9  |_Win%,-1)....  .|
0000ace0  20 31 33 0d 05 0a 27 20  20 20 20 e7 20 ac 20 a4  | 13...'    . . .|
0000acf0  69 63 6f 6e 73 65 6c 65  63 74 65 64 28 57 69 6e  |iconselected(Win|
0000ad00  45 64 57 25 2c 32 30 29  20 8c 0d 05 0b 3b 20 20  |EdW%,20) ....;  |
0000ad10  20 20 20 20 f2 73 65 6c  65 63 74 69 63 6f 6e 28  |    .selecticon(|
0000ad20  57 69 6e 45 64 57 25 2c  31 34 2c a4 69 63 6f 6e  |WinEdW%,14,.icon|
0000ad30  73 65 6c 65 63 74 65 64  28 57 69 6e 45 64 57 25  |selected(WinEdW%|
0000ad40  2c 31 33 29 29 0d 05 0c  09 20 20 20 20 cd 0d 05  |,13))....    ...|
0000ad50  0d 0a 20 20 c9 20 31 34  0d 05 0e 27 20 20 20 20  |..  . 14...'    |
0000ad60  e7 20 ac 20 a4 69 63 6f  6e 73 65 6c 65 63 74 65  |. . .iconselecte|
0000ad70  64 28 57 69 6e 45 64 57  25 2c 32 30 29 20 8c 0d  |d(WinEdW%,20) ..|
0000ad80  05 0f 3b 20 20 20 20 20  20 f2 73 65 6c 65 63 74  |..;      .select|
0000ad90  69 63 6f 6e 28 57 69 6e  45 64 57 25 2c 31 33 2c  |icon(WinEdW%,13,|
0000ada0  a4 69 63 6f 6e 73 65 6c  65 63 74 65 64 28 57 69  |.iconselected(Wi|
0000adb0  6e 45 64 57 25 2c 31 34  29 29 0d 05 10 09 20 20  |nEdW%,14))....  |
0000adc0  20 20 cd 0d 05 11 13 20  20 c9 20 31 35 2c 31 37  |  .....  . 15,17|
0000add0  2c 31 39 2c 32 30 0d 05  12 20 20 20 20 20 f2 77  |,19,20...     .w|
0000ade0  69 6e 65 64 5f 73 68 61  64 65 69 63 6f 6e 73 28  |ined_shadeicons(|
0000adf0  69 63 6f 6e 25 29 0d 05  13 1f 20 20 c9 20 32 33  |icon%)....  . 23|
0000ae00  2c 32 37 2c 33 31 2c 33  35 2c 33 39 2c 34 33 2c  |,27,31,35,39,43,|
0000ae10  34 37 2c 35 31 0d 05 14  2e 20 20 20 20 f2 63 72  |47,51....    .cr|
0000ae20  65 61 74 65 6d 65 6e 75  28 78 70 6f 73 25 2c 79  |eatemenu(xpos%,y|
0000ae30  70 6f 73 25 2c 57 69 6e  45 64 57 25 2c 69 63 6f  |pos%,WinEdW%,ico|
0000ae40  6e 25 29 0d 05 15 0d 20  20 c9 20 32 32 2c 32 34  |n%)....  . 22,24|
0000ae50  0d 05 16 22 20 20 20 20  75 70 25 3d 28 61 64 6a  |..."    up%=(adj|
0000ae60  75 73 74 25 20 82 20 28  69 63 6f 6e 25 3d 32 34  |ust% . (icon%=24|
0000ae70  29 29 0d 05 17 30 20 20  20 20 e7 20 a4 63 68 61  |))...0    . .cha|
0000ae80  6e 67 65 76 61 72 28 57  69 6e 45 64 5f 42 75 74  |ngevar(WinEd_But|
0000ae90  74 6f 6e 25 2c 31 2c 75  70 25 2c 30 2c 31 35 29  |ton%,1,up%,0,15)|
0000aea0  20 8c 0d 05 18 38 20 20  20 20 20 20 f2 73 65 74  | ....8      .set|
0000aeb0  69 63 6f 6e 74 65 78 74  28 36 2c 24 28 57 69 6e  |icontext(6,$(Win|
0000aec0  42 75 74 74 6f 6e 25 2b  32 30 2a 57 69 6e 45 64  |Button%+20*WinEd|
0000aed0  5f 42 75 74 74 6f 6e 25  29 29 0d 05 19 09 20 20  |_Button%))....  |
0000aee0  20 20 cd 0d 05 1a 0a 20  20 c9 20 35 36 0d 05 1b  |  .....  . 56...|
0000aef0  17 20 20 20 20 57 69 6e  45 64 5f 43 6f 6c 25 28  |.    WinEd_Col%(|
0000af00  30 29 3d 37 0d 05 1c 17  20 20 20 20 57 69 6e 45  |0)=7....    WinE|
0000af10  64 5f 43 6f 6c 25 28 31  29 3d 32 0d 05 1d 17 20  |d_Col%(1)=2.... |
0000af20  20 20 20 57 69 6e 45 64  5f 43 6f 6c 25 28 32 29  |   WinEd_Col%(2)|
0000af30  3d 37 0d 05 1e 17 20 20  20 20 57 69 6e 45 64 5f  |=7....    WinEd_|
0000af40  43 6f 6c 25 28 33 29 3d  31 0d 05 1f 17 20 20 20  |Col%(3)=1....   |
0000af50  20 57 69 6e 45 64 5f 43  6f 6c 25 28 34 29 3d 33  | WinEd_Col%(4)=3|
0000af60  0d 05 20 17 20 20 20 20  57 69 6e 45 64 5f 43 6f  |.. .    WinEd_Co|
0000af70  6c 25 28 35 29 3d 31 0d  05 21 18 20 20 20 20 57  |l%(5)=1..!.    W|
0000af80  69 6e 45 64 5f 43 6f 6c  25 28 36 29 3d 31 32 0d  |inEd_Col%(6)=12.|
0000af90  05 22 12 20 20 20 20 e3  20 69 25 3d 30 20 b8 20  |.".    . i%=0 . |
0000afa0  36 0d 05 23 2c 20 20 20  20 20 20 f2 73 65 74 63  |6..#,      .setc|
0000afb0  6f 6c 6f 75 72 62 6f 78  28 32 2b 69 25 2c 57 69  |olourbox(2+i%,Wi|
0000afc0  6e 45 64 5f 43 6f 6c 25  28 69 25 29 29 0d 05 24  |nEd_Col%(i%))..$|
0000afd0  0c 20 20 20 20 ed 20 69  25 0d 05 25 07 20 20 7f  |.    . i%..%.  .|
0000afe0  0d 05 26 37 20 20 20 20  e7 20 28 69 63 6f 6e 25  |..&7    . (icon%|
0000aff0  3e 3d 32 36 29 20 80 20  28 69 63 6f 6e 25 3c 3d  |>=26) . (icon%<=|
0000b000  35 32 29 20 80 20 28 28  69 63 6f 6e 25 20 83 20  |52) . ((icon% . |
0000b010  32 29 3d 30 29 20 8c 0d  05 27 27 20 20 20 20 20  |2)=0) ...''     |
0000b020  20 75 70 25 3d 28 28 69  63 6f 6e 25 20 83 20 34  | up%=((icon% . 4|
0000b030  29 3d 30 29 20 82 20 61  64 6a 75 73 74 25 0d 05  |)=0) . adjust%..|
0000b040  28 1b 20 20 20 20 20 20  69 25 3d 28 69 63 6f 6e  |(.      i%=(icon|
0000b050  25 2d 32 36 29 20 81 20  34 0d 05 29 28 20 20 20  |%-26) . 4..)(   |
0000b060  20 20 20 67 63 6f 6c 25  3d a4 69 63 6f 6e 73 65  |   gcol%=.iconse|
0000b070  6c 65 63 74 65 64 28 57  69 6e 45 64 57 25 2c 39  |lected(WinEdW%,9|
0000b080  29 0d 05 2a 3b 20 20 20  20 20 20 f2 63 68 61 6e  |)..*;      .chan|
0000b090  67 65 63 6f 6c 6f 75 72  62 6f 78 28 32 2b 69 25  |gecolourbox(2+i%|
0000b0a0  2c 57 69 6e 45 64 5f 43  6f 6c 25 28 69 25 29 2c  |,WinEd_Col%(i%),|
0000b0b0  31 2c 75 70 25 2c 67 63  6f 6c 25 29 0d 05 2b 09  |1,up%,gcol%)..+.|
0000b0c0  20 20 20 20 cd 0d 05 2c  05 cb 0d 05 2d 05 e1 0d  |    ...,....-...|
0000b0d0  05 2e 04 0d 05 2f 34 dd  20 f2 69 63 65 64 5f 63  |...../4. .iced_c|
0000b0e0  6c 69 63 6b 28 78 70 6f  73 25 2c 79 70 6f 73 25  |lick(xpos%,ypos%|
0000b0f0  2c 73 65 6c 65 63 74 25  2c 61 64 6a 75 73 74 25  |,select%,adjust%|
0000b100  2c 69 63 6f 6e 25 29 0d  05 30 0c ea 20 75 70 25  |,icon%)..0.. up%|
0000b110  2c 6c 25 0d 05 31 0e c8  8e 20 69 63 6f 6e 25 20  |,l%..1... icon% |
0000b120  ca 0d 05 32 09 20 20 c9  20 34 0d 05 33 2e 20 20  |...2.  . 4..3.  |
0000b130  20 20 e7 20 61 64 6a 75  73 74 25 20 80 20 a4 69  |  . adjust% . .i|
0000b140  63 6f 6e 73 65 6c 65 63  74 65 64 28 49 63 45 64  |conselected(IcEd|
0000b150  57 25 2c 31 34 29 20 8c  0d 05 34 2f 20 20 20 20  |W%,14) ...4/    |
0000b160  20 20 f4 20 6d 69 6e 69  6d 69 7a 65 20 6e 75 6d  |  . minimize num|
0000b170  62 65 72 20 69 6e 20 27  4d 61 78 20 73 69 7a 65  |ber in 'Max size|
0000b180  27 20 66 69 65 6c 64 0d  05 35 26 20 20 20 20 20  |' field..5&     |
0000b190  20 e7 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  | . .iconselected|
0000b1a0  28 49 63 45 64 57 25 2c  31 32 29 20 8c 0d 05 36  |(IcEdW%,12) ...6|
0000b1b0  23 20 20 20 20 20 20 20  20 20 20 6c 25 3d a9 28  |#          l%=.(|
0000b1c0  24 28 49 63 6f 6e 54 65  78 74 25 28 30 29 29 29  |$(IconText%(0)))|
0000b1d0  0d 05 37 0b 20 20 20 20  20 20 cc 0d 05 38 28 20  |..7.      ...8( |
0000b1e0  20 20 20 20 20 20 20 e7  20 a4 69 63 6f 6e 73 65  |       . .iconse|
0000b1f0  6c 65 63 74 65 64 28 49  63 45 64 57 25 2c 31 33  |lected(IcEdW%,13|
0000b200  29 20 8c 0d 05 39 23 20  20 20 20 20 20 20 20 20  |) ...9#         |
0000b210  20 6c 25 3d a9 28 24 28  49 63 6f 6e 54 65 78 74  | l%=.($(IconText|
0000b220  25 28 31 29 29 29 0d 05  3a 0d 20 20 20 20 20 20  |%(1)))..:.      |
0000b230  20 20 cd 0d 05 3b 0b 20  20 20 20 20 20 cd 0d 05  |  ...;.      ...|
0000b240  3c 21 20 20 20 20 20 20  f2 73 65 74 69 63 6f 6e  |<!      .seticon|
0000b250  74 65 78 74 28 33 2c c3  28 6c 25 2b 31 29 29 0d  |text(3,.(l%+1)).|
0000b260  05 3d 09 20 20 20 20 cd  0d 05 3e 09 20 20 c9 20  |.=.    ...>.  . |
0000b270  39 0d 05 3f 19 20 20 20  20 f2 69 63 65 64 5f 72  |9..?.    .iced_r|
0000b280  65 61 64 77 69 6e 28 2d  31 29 0d 05 40 0a 20 20  |eadwin(-1)..@.  |
0000b290  c9 20 31 30 0d 05 41 19  20 20 20 20 f2 69 63 65  |. 10..A.    .ice|
0000b2a0  64 5f 72 65 61 64 77 69  6e 28 2d 31 29 0d 05 42  |d_readwin(-1)..B|
0000b2b0  1c 20 20 20 20 f2 63 6c  6f 73 65 77 69 6e 64 6f  |.    .closewindo|
0000b2c0  77 28 49 63 45 64 57 25  29 0d 05 43 1f 20 20 20  |w(IcEdW%)..C.   |
0000b2d0  20 f2 73 65 74 63 61 72  65 74 28 49 63 45 64 5f  | .setcaret(IcEd_|
0000b2e0  57 69 6e 25 2c 2d 31 29  0d 05 44 0a 20 20 c9 20  |Win%,-1)..D.  . |
0000b2f0  31 31 0d 05 45 1c 20 20  20 20 f2 63 6c 6f 73 65  |11..E.    .close|
0000b300  77 69 6e 64 6f 77 28 49  63 45 64 57 25 29 0d 05  |window(IcEdW%)..|
0000b310  46 1f 20 20 20 20 f2 73  65 74 63 61 72 65 74 28  |F.    .setcaret(|
0000b320  49 63 45 64 5f 57 69 6e  25 2c 2d 31 29 0d 05 47  |IcEd_Win%,-1)..G|
0000b330  16 20 20 c9 20 31 32 2c  31 33 2c 31 34 2c 34 31  |.  . 12,13,14,41|
0000b340  2c 35 33 0d 05 48 1f 20  20 20 20 f2 69 63 65 64  |,53..H.    .iced|
0000b350  5f 73 68 61 64 65 69 63  6f 6e 73 28 69 63 6f 6e  |_shadeicons(icon|
0000b360  25 29 0d 05 49 1f 20 20  c9 20 32 38 2c 33 31 2c  |%)..I.  . 28,31,|
0000b370  33 34 2c 33 37 2c 34 35  2c 34 36 2c 34 38 2c 35  |34,37,45,46,48,5|
0000b380  31 0d 05 4a 2d 20 20 20  20 f2 63 72 65 61 74 65  |1..J-    .create|
0000b390  6d 65 6e 75 28 78 70 6f  73 25 2c 79 70 6f 73 25  |menu(xpos%,ypos%|
0000b3a0  2c 49 63 45 64 57 25 2c  69 63 6f 6e 25 29 0d 05  |,IcEdW%,icon%)..|
0000b3b0  4b 0d 20 20 c9 20 32 37  2c 32 39 0d 05 4c 22 20  |K.  . 27,29..L" |
0000b3c0  20 20 20 75 70 25 3d 28  61 64 6a 75 73 74 25 20  |   up%=(adjust% |
0000b3d0  82 20 28 69 63 6f 6e 25  3d 32 39 29 29 0d 05 4d  |. (icon%=29))..M|
0000b3e0  2f 20 20 20 20 e7 20 a4  63 68 61 6e 67 65 76 61  |/    . .changeva|
0000b3f0  72 28 49 63 45 64 5f 42  75 74 74 6f 6e 25 2c 31  |r(IcEd_Button%,1|
0000b400  2c 75 70 25 2c 30 2c 31  35 29 20 8c 0d 05 4e 36  |,up%,0,15) ...N6|
0000b410  20 20 20 20 20 20 f2 73  65 74 69 63 6f 6e 74 65  |      .seticonte|
0000b420  78 74 28 34 2c 24 28 49  63 42 75 74 74 6f 6e 25  |xt(4,$(IcButton%|
0000b430  2b 32 30 2a 49 63 45 64  5f 42 75 74 74 6f 6e 25  |+20*IcEd_Button%|
0000b440  29 29 0d 05 4f 09 20 20  20 20 cd 0d 05 50 0d 20  |))..O.    ...P. |
0000b450  20 c9 20 33 30 2c 33 32  0d 05 51 22 20 20 20 20  | . 30,32..Q"    |
0000b460  75 70 25 3d 28 61 64 6a  75 73 74 25 20 82 20 28  |up%=(adjust% . (|
0000b470  69 63 6f 6e 25 3d 33 32  29 29 0d 05 52 2c 20 20  |icon%=32))..R,  |
0000b480  20 20 e7 20 a4 63 68 61  6e 67 65 76 61 72 28 49  |  . .changevar(I|
0000b490  63 45 64 5f 45 73 67 25  2c 31 2c 75 70 25 2c 30  |cEd_Esg%,1,up%,0|
0000b4a0  2c 33 31 29 20 8c 0d 05  53 26 20 20 20 20 20 20  |,31) ...S&      |
0000b4b0  f2 73 65 74 69 63 6f 6e  74 65 78 74 28 35 2c c3  |.seticontext(5,.|
0000b4c0  28 49 63 45 64 5f 45 73  67 25 29 29 0d 05 54 09  |(IcEd_Esg%))..T.|
0000b4d0  20 20 20 20 cd 0d 05 55  0d 20 20 c9 20 33 33 2c  |    ...U.  . 33,|
0000b4e0  33 35 0d 05 56 22 20 20  20 20 75 70 25 3d 28 61  |35..V"    up%=(a|
0000b4f0  64 6a 75 73 74 25 20 82  20 28 69 63 6f 6e 25 3d  |djust% . (icon%=|
0000b500  33 35 29 29 0d 05 57 2f  20 20 20 20 f2 63 68 61  |35))..W/    .cha|
0000b510  6e 67 65 63 6f 6c 6f 75  72 62 6f 78 28 30 2c 49  |ngecolourbox(0,I|
0000b520  63 45 64 5f 46 67 63 6f  6c 25 2c 31 2c 75 70 25  |cEd_Fgcol%,1,up%|
0000b530  2c 30 29 0d 05 58 0d 20  20 c9 20 33 36 2c 33 38  |,0)..X.  . 36,38|
0000b540  0d 05 59 22 20 20 20 20  75 70 25 3d 28 61 64 6a  |..Y"    up%=(adj|
0000b550  75 73 74 25 20 82 20 28  69 63 6f 6e 25 3d 33 38  |ust% . (icon%=38|
0000b560  29 29 0d 05 5a 2f 20 20  20 20 f2 63 68 61 6e 67  |))..Z/    .chang|
0000b570  65 63 6f 6c 6f 75 72 62  6f 78 28 31 2c 49 63 45  |ecolourbox(1,IcE|
0000b580  64 5f 42 67 63 6f 6c 25  2c 31 2c 75 70 25 2c 30  |d_Bgcol%,1,up%,0|
0000b590  29 0d 05 5b 0d 20 20 c9  20 34 37 2c 34 39 0d 05  |)..[.  . 47,49..|
0000b5a0  5c 3b 20 20 20 20 e7 20  28 61 64 6a 75 73 74 25  |\;    . (adjust%|
0000b5b0  20 80 20 28 69 63 6f 6e  25 3d 34 37 29 29 20 84  | . (icon%=47)) .|
0000b5c0  20 28 73 65 6c 65 63 74  25 20 80 20 28 69 63 6f  | (select% . (ico|
0000b5d0  6e 25 3d 34 39 29 29 20  8c 0d 05 5d 1c 20 20 20  |n%=49)) ...].   |
0000b5e0  20 20 20 e7 20 49 63 45  64 5f 58 73 69 7a 65 3c  |   . IcEd_Xsize<|
0000b5f0  39 39 38 20 8c 0d 05 5e  19 20 20 20 20 20 20 20  |998 ...^.       |
0000b600  20 49 63 45 64 5f 58 73  69 7a 65 2b 3d 32 0d 05  | IcEd_Xsize+=2..|
0000b610  5f 2e 20 20 20 20 20 20  20 20 f2 73 65 74 69 63  |_.        .setic|
0000b620  6f 6e 74 65 78 74 28 32  30 2c c0 c3 28 49 63 45  |ontext(20,..(IcE|
0000b630  64 5f 58 73 69 7a 65 29  2c 34 29 29 0d 05 60 28  |d_Xsize),4))..`(|
0000b640  20 20 20 20 20 20 20 20  e7 20 a4 69 63 6f 6e 73  |        . .icons|
0000b650  65 6c 65 63 74 65 64 28  49 63 45 64 57 25 2c 35  |elected(IcEdW%,5|
0000b660  33 29 20 8c 0d 05 61 23  20 20 20 20 20 20 20 20  |3) ...a#        |
0000b670  20 20 49 63 45 64 5f 59  73 69 7a 65 3d 49 63 45  |  IcEd_Ysize=IcE|
0000b680  64 5f 58 73 69 7a 65 0d  05 62 30 20 20 20 20 20  |d_Xsize..b0     |
0000b690  20 20 20 20 20 f2 73 65  74 69 63 6f 6e 74 65 78  |     .seticontex|
0000b6a0  74 28 32 31 2c c0 c3 28  49 63 45 64 5f 59 73 69  |t(21,..(IcEd_Ysi|
0000b6b0  7a 65 29 2c 34 29 29 0d  05 63 0d 20 20 20 20 20  |ze),4))..c.     |
0000b6c0  20 20 20 cd 0d 05 64 0b  20 20 20 20 20 20 cd 0d  |   ...d.      ..|
0000b6d0  05 65 09 20 20 20 20 cc  0d 05 66 1a 20 20 20 20  |.e.    ...f.    |
0000b6e0  20 20 e7 20 49 63 45 64  5f 58 73 69 7a 65 3e 32  |  . IcEd_Xsize>2|
0000b6f0  20 8c 0d 05 67 19 20 20  20 20 20 20 20 20 49 63  | ...g.        Ic|
0000b700  45 64 5f 58 73 69 7a 65  2d 3d 32 0d 05 68 2e 20  |Ed_Xsize-=2..h. |
0000b710  20 20 20 20 20 20 20 f2  73 65 74 69 63 6f 6e 74  |       .seticont|
0000b720  65 78 74 28 32 30 2c c0  c3 28 49 63 45 64 5f 58  |ext(20,..(IcEd_X|
0000b730  73 69 7a 65 29 2c 34 29  29 0d 05 69 28 20 20 20  |size),4))..i(   |
0000b740  20 20 20 20 20 e7 20 a4  69 63 6f 6e 73 65 6c 65  |     . .iconsele|
0000b750  63 74 65 64 28 49 63 45  64 57 25 2c 35 33 29 20  |cted(IcEdW%,53) |
0000b760  8c 0d 05 6a 23 20 20 20  20 20 20 20 20 20 20 49  |...j#          I|
0000b770  63 45 64 5f 59 73 69 7a  65 3d 49 63 45 64 5f 58  |cEd_Ysize=IcEd_X|
0000b780  73 69 7a 65 0d 05 6b 30  20 20 20 20 20 20 20 20  |size..k0        |
0000b790  20 20 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 32  |  .seticontext(2|
0000b7a0  31 2c c0 c3 28 49 63 45  64 5f 59 73 69 7a 65 29  |1,..(IcEd_Ysize)|
0000b7b0  2c 34 29 29 0d 05 6c 0d  20 20 20 20 20 20 20 20  |,4))..l.        |
0000b7c0  cd 0d 05 6d 0b 20 20 20  20 20 20 cd 0d 05 6e 09  |...m.      ...n.|
0000b7d0  20 20 20 20 cd 0d 05 6f  0d 20 20 c9 20 35 30 2c  |    ...o.  . 50,|
0000b7e0  35 32 0d 05 70 3b 20 20  20 20 e7 20 28 61 64 6a  |52..p;    . (adj|
0000b7f0  75 73 74 25 20 80 20 28  69 63 6f 6e 25 3d 35 30  |ust% . (icon%=50|
0000b800  29 29 20 84 20 28 73 65  6c 65 63 74 25 20 80 20  |)) . (select% . |
0000b810  28 69 63 6f 6e 25 3d 35  32 29 29 20 8c 0d 05 71  |(icon%=52)) ...q|
0000b820  1c 20 20 20 20 20 20 e7  20 49 63 45 64 5f 59 73  |.      . IcEd_Ys|
0000b830  69 7a 65 3c 39 39 38 20  8c 0d 05 72 19 20 20 20  |ize<998 ...r.   |
0000b840  20 20 20 20 20 49 63 45  64 5f 59 73 69 7a 65 2b  |     IcEd_Ysize+|
0000b850  3d 32 0d 05 73 2e 20 20  20 20 20 20 20 20 f2 73  |=2..s.        .s|
0000b860  65 74 69 63 6f 6e 74 65  78 74 28 32 31 2c c0 c3  |eticontext(21,..|
0000b870  28 49 63 45 64 5f 59 73  69 7a 65 29 2c 34 29 29  |(IcEd_Ysize),4))|
0000b880  0d 05 74 0b 20 20 20 20  20 20 cd 0d 05 75 09 20  |..t.      ...u. |
0000b890  20 20 20 cc 0d 05 76 1a  20 20 20 20 20 20 e7 20  |   ...v.      . |
0000b8a0  49 63 45 64 5f 59 73 69  7a 65 3e 32 20 8c 0d 05  |IcEd_Ysize>2 ...|
0000b8b0  77 19 20 20 20 20 20 20  20 20 49 63 45 64 5f 59  |w.        IcEd_Y|
0000b8c0  73 69 7a 65 2d 3d 32 0d  05 78 2e 20 20 20 20 20  |size-=2..x.     |
0000b8d0  20 20 20 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |   .seticontext(|
0000b8e0  32 31 2c c0 c3 28 49 63  45 64 5f 59 73 69 7a 65  |21,..(IcEd_Ysize|
0000b8f0  29 2c 34 29 29 0d 05 79  0b 20 20 20 20 20 20 cd  |),4))..y.      .|
0000b900  0d 05 7a 09 20 20 20 20  cd 0d 05 7b 05 cb 0d 05  |..z.    ...{....|
0000b910  7c 05 e1 0d 05 7d 04 0d  05 7e 14 dd 20 f2 72 65  ||....}...~.. .re|
0000b920  63 65 69 76 65 28 62 75  66 25 29 0d 05 7f 48 ea  |ceive(buf%)...H.|
0000b930  20 73 65 6e 64 65 72 25  2c 72 65 66 25 2c 63 6f  | sender%,ref%,co|
0000b940  64 65 25 2c 61 63 6b 63  6f 64 65 25 2c 61 63 6b  |de%,ackcode%,ack|
0000b950  74 79 70 65 25 2c 66 6e  61 6d 65 24 2c 66 74 79  |type%,fname$,fty|
0000b960  70 65 25 2c 69 63 6f 6e  25 2c 6e 6f 25 2c 62 6f  |pe%,icon%,no%,bo|
0000b970  6f 74 24 0d 05 80 12 73  65 6e 64 65 72 25 3d 62  |ot$....sender%=b|
0000b980  75 66 25 21 34 0d 05 81  0f 72 65 66 25 3d 62 75  |uf%!4....ref%=bu|
0000b990  66 25 21 38 0d 05 82 11  63 6f 64 65 25 3d 62 75  |f%!8....code%=bu|
0000b9a0  66 25 21 31 36 0d 05 83  43 61 63 6b 63 6f 64 65  |f%!16...Cackcode|
0000b9b0  25 3d 30 20 3a 20 f4 20  73 6f 72 74 20 6f 66 20  |%=0 : . sort of |
0000b9c0  6d 65 73 73 61 67 65 20  74 6f 20 61 63 6b 6e 6f  |message to ackno|
0000b9d0  77 6c 65 64 67 65 20 74  68 69 73 20 6d 65 73 73  |wledge this mess|
0000b9e0  61 67 65 20 77 69 74 68  0d 05 84 2f 61 63 6b 74  |age with.../ackt|
0000b9f0  79 70 65 25 3d 31 37 20  3a 20 f4 20 6d 65 73 73  |ype%=17 : . mess|
0000ba00  61 67 65 20 74 79 70 65  20 6f 66 20 61 63 6b 6e  |age type of ackn|
0000ba10  6f 77 6c 65 64 67 65 0d  05 85 1c e7 20 73 65 6e  |owledge..... sen|
0000ba20  64 65 72 25 20 3c 3e 20  54 68 69 73 54 61 73 6b  |der% <> ThisTask|
0000ba30  25 20 8c 0d 05 86 10 20  20 c8 8e 20 63 6f 64 65  |% .....  .. code|
0000ba40  25 20 ca 0d 05 87 0b 20  20 20 20 c9 20 30 0d 05  |% .....    . 0..|
0000ba50  88 1a 20 20 20 20 20 20  f4 20 27 71 75 69 74 27  |..      . 'quit'|
0000ba60  20 6d 65 73 73 61 67 65  0d 05 89 15 20 20 20 20  | message....    |
0000ba70  20 20 f2 70 72 65 71 75  69 74 28 30 29 0d 05 8a  |  .prequit(0)...|
0000ba80  0b 20 20 20 20 c9 20 31  0d 05 8b 15 20 20 20 20  |.    . 1....    |
0000ba90  20 20 f4 20 64 61 74 61  20 73 61 76 65 0d 05 8c  |  . data save...|
0000baa0  1a 20 20 20 20 20 20 e7  20 62 75 66 25 21 34 30  |.      . buf%!40|
0000bab0  3d 26 46 45 43 20 8c 0d  05 8d 3e 20 20 20 20 20  |=&FEC ....>     |
0000bac0  20 20 20 f4 20 6f 74 68  65 72 20 61 70 70 20 73  |   . other app s|
0000bad0  61 76 65 73 20 66 69 6c  65 20 74 6f 20 54 65 6d  |aves file to Tem|
0000bae0  70 6c 45 64 20 28 76 69  61 20 57 69 6d 70 24 53  |plEd (via Wimp$S|
0000baf0  63 72 61 70 29 0d 05 8e  26 20 20 20 20 20 20 20  |crap)...&       |
0000bb00  20 4e 65 77 4c 65 61 66  4e 61 6d 65 24 3d a4 73  | NewLeafName$=.s|
0000bb10  74 72 28 62 75 66 25 2b  34 34 29 0d 05 8f 25 20  |tr(buf%+44)...% |
0000bb20  20 20 20 20 20 20 20 24  28 62 75 66 25 2b 34 34  |       $(buf%+44|
0000bb30  29 3d 22 3c 57 69 6d 70  24 53 63 72 61 70 3e 22  |)="<Wimp$Scrap>"|
0000bb40  0d 05 90 31 20 20 20 20  20 20 20 20 62 75 66 25  |...1        buf%|
0000bb50  21 33 36 3d 2d 31 20 3a  20 f4 20 73 61 76 65 64  |!36=-1 : . saved|
0000bb60  20 66 69 6c 65 20 69 73  20 22 75 6e 73 61 66 65  | file is "unsafe|
0000bb70  22 0d 05 91 16 20 20 20  20 20 20 20 20 61 63 6b  |"....        ack|
0000bb80  63 6f 64 65 25 3d 32 0d  05 92 0b 20 20 20 20 20  |code%=2....     |
0000bb90  20 cd 0d 05 93 0b 20 20  20 20 c9 20 32 0d 05 94  | .....    . 2...|
0000bba0  19 20 20 20 20 20 20 f4  20 64 61 74 61 20 73 61  |.      . data sa|
0000bbb0  76 65 20 61 63 6b 0d 05  95 1e 20 20 20 20 20 20  |ve ack....      |
0000bbc0  66 6e 61 6d 65 24 3d a4  73 74 72 28 62 75 66 25  |fname$=.str(buf%|
0000bbd0  2b 34 34 29 0d 05 96 1e  20 20 20 20 20 20 e7 20  |+44)....      . |
0000bbe0  53 61 76 69 6e 67 53 65  6c 65 63 74 69 6f 6e 25  |SavingSelection%|
0000bbf0  20 8c 0d 05 97 1c 20 20  20 20 20 20 20 20 53 65  | .....        Se|
0000bc00  6c 46 4e 61 6d 65 24 3d  66 6e 61 6d 65 24 0d 05  |lFName$=fname$..|
0000bc10  98 25 20 20 20 20 20 20  20 20 f2 73 61 76 65 74  |.%        .savet|
0000bc20  65 6d 70 6c 61 74 65 73  28 53 65 6c 46 4e 61 6d  |emplates(SelFNam|
0000bc30  65 24 29 0d 05 99 0b 20  20 20 20 20 20 cc 0d 05  |e$)....      ...|
0000bc40  9a 38 20 20 20 20 20 20  20 20 e7 20 28 62 75 66  |.8        . (buf|
0000bc50  25 21 33 36 3c 3e 2d 31  29 20 80 20 28 66 6e 61  |%!36<>-1) . (fna|
0000bc60  6d 65 24 3c 3e 22 3c 57  69 6d 70 24 53 63 72 61  |me$<>"<Wimp$Scra|
0000bc70  70 3e 22 29 20 8c 0d 05  9b 23 20 20 20 20 20 20  |p>") ....#      |
0000bc80  20 20 20 20 f2 73 65 74  6d 61 69 6e 66 6e 61 6d  |    .setmainfnam|
0000bc90  65 28 66 6e 61 6d 65 24  29 0d 05 9c 0d 20 20 20  |e(fname$)....   |
0000bca0  20 20 20 20 20 cd 0d 05  9d 22 20 20 20 20 20 20  |     ...."      |
0000bcb0  20 20 f2 73 61 76 65 74  65 6d 70 6c 61 74 65 73  |  .savetemplates|
0000bcc0  28 66 6e 61 6d 65 24 29  0d 05 9e 0b 20 20 20 20  |(fname$)....    |
0000bcd0  20 20 cd 0d 05 9f 33 20  20 20 20 20 20 c8 99 20  |  ....3      .. |
0000bce0  22 4f 53 5f 46 69 6c 65  22 2c 31 37 2c 66 6e 61  |"OS_File",17,fna|
0000bcf0  6d 65 24 20 b8 20 66 74  79 70 65 25 2c 2c 2c 2c  |me$ . ftype%,,,,|
0000bd00  66 73 69 7a 65 25 0d 05  a0 16 20 20 20 20 20 20  |fsize%....      |
0000bd10  e7 20 66 74 79 70 65 25  3d 31 20 8c 0d 05 a1 16  |. ftype%=1 .....|
0000bd20  20 20 20 20 20 20 20 20  61 63 6b 63 6f 64 65 25  |        ackcode%|
0000bd30  3d 33 0d 05 a2 1a 20 20  20 20 20 20 20 20 62 75  |=3....        bu|
0000bd40  66 25 21 33 36 3d 66 73  69 7a 65 25 0d 05 a3 0b  |f%!36=fsize%....|
0000bd50  20 20 20 20 20 20 cd 0d  05 a4 0b 20 20 20 20 c9  |      .....    .|
0000bd60  20 33 0d 05 a5 15 20 20  20 20 20 20 f4 20 64 61  | 3....      . da|
0000bd70  74 61 20 6c 6f 61 64 0d  05 a6 21 20 20 20 20 20  |ta load...!     |
0000bd80  20 4e 65 77 46 4e 61 6d  65 24 3d a4 73 74 72 28  | NewFName$=.str(|
0000bd90  62 75 66 25 2b 34 34 29  0d 05 a7 16 20 20 20 20  |buf%+44)....    |
0000bda0  20 20 c8 8e 20 62 75 66  25 21 34 30 20 ca 0d 05  |  .. buf%!40 ...|
0000bdb0  a8 12 20 20 20 20 20 20  20 20 c9 20 26 46 45 43  |..        . &FEC|
0000bdc0  0d 05 a9 1a 20 20 20 20  20 20 20 20 20 20 c8 8e  |....          ..|
0000bdd0  20 62 75 66 25 21 32 30  20 ca 0d 05 aa 19 20 20  | buf%!20 .....  |
0000bde0  20 20 20 20 20 20 20 20  20 20 c9 20 54 65 6d 70  |          . Temp|
0000bdf0  6c 57 25 0d 05 ab 2d 20  20 20 20 20 20 20 20 20  |lW%...-         |
0000be00  20 20 20 20 20 f2 73 65  74 63 68 61 6e 67 65 64  |     .setchanged|
0000be10  28 4e 72 54 65 6d 70 6c  61 74 65 73 25 3e 30 29  |(NrTemplates%>0)|
0000be20  0d 05 ac 2e 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
0000be30  20 20 f2 74 65 6d 70 6c  5f 6c 6f 61 64 66 69 6c  |  .templ_loadfil|
0000be40  65 28 4e 65 77 46 4e 61  6d 65 24 2c 30 29 0d 05  |e(NewFName$,0)..|
0000be50  ad 1c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
0000be60  61 63 6b 63 6f 64 65 25  3d 34 0d 05 ae 14 20 20  |ackcode%=4....  |
0000be70  20 20 20 20 20 20 20 20  20 20 c9 20 2d 32 0d 05  |          . -2..|
0000be80  af 26 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.&              |
0000be90  e7 20 62 75 66 25 21 32  34 3d 42 61 72 49 63 6f  |. buf%!24=BarIco|
0000bea0  6e 25 20 8c 0d 05 b0 24  20 20 20 20 20 20 20 20  |n% ....$        |
0000beb0  20 20 20 20 20 20 20 20  e7 20 43 68 61 6e 67 65  |        . Change|
0000bec0  73 4d 61 64 65 25 20 8c  0d 05 b1 28 20 20 20 20  |sMade% ....(    |
0000bed0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 f2 64  |              .d|
0000bee0  69 61 6c 6f 67 75 65 28  32 2c 22 22 2c 22 22 29  |ialogue(2,"","")|
0000bef0  0d 05 b2 15 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
0000bf00  20 20 20 20 cc 0d 05 b3  26 20 20 20 20 20 20 20  |    ....&       |
0000bf10  20 20 20 20 20 20 20 20  20 20 20 f2 74 65 6d 70  |           .temp|
0000bf20  6c 5f 64 65 6c 65 74 65  61 6c 6c 0d 05 b4 32 20  |l_deleteall...2 |
0000bf30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bf40  20 f2 74 65 6d 70 6c 5f  6c 6f 61 64 66 69 6c 65  | .templ_loadfile|
0000bf50  28 4e 65 77 46 4e 61 6d  65 24 2c 31 29 0d 05 b5  |(NewFName$,1)...|
0000bf60  15 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
0000bf70  20 cd 0d 05 b6 13 20 20  20 20 20 20 20 20 20 20  | .....          |
0000bf80  20 20 20 20 cd 0d 05 b7  1c 20 20 20 20 20 20 20  |    .....       |
0000bf90  20 20 20 20 20 20 20 61  63 6b 63 6f 64 65 25 3d  |       ackcode%=|
0000bfa0  34 0d 05 b8 0f 20 20 20  20 20 20 20 20 20 20 cb  |4....          .|
0000bfb0  0d 05 b9 12 20 20 20 20  20 20 20 20 c9 20 26 46  |....        . &F|
0000bfc0  46 39 0d 05 ba 33 20 20  20 20 20 20 20 20 20 20  |F9...3          |
0000bfd0  e7 20 28 62 75 66 25 21  32 30 3d 2d 32 29 20 80  |. (buf%!20=-2) .|
0000bfe0  20 28 62 75 66 25 21 32  34 3d 42 61 72 49 63 6f  | (buf%!24=BarIco|
0000bff0  6e 25 29 20 8c 0d 05 bb  2b 20 20 20 20 20 20 20  |n%) ....+       |
0000c000  20 20 20 20 20 f2 6c 6f  61 64 75 73 65 72 73 70  |     .loadusersp|
0000c010  72 69 74 65 73 28 4e 65  77 46 4e 61 6d 65 24 29  |rites(NewFName$)|
0000c020  0d 05 bc 1a 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
0000c030  61 63 6b 63 6f 64 65 25  3d 34 0d 05 bd 0f 20 20  |ackcode%=4....  |
0000c040  20 20 20 20 20 20 20 20  cd 0d 05 be 13 20 20 20  |        .....   |
0000c050  20 20 20 20 20 c9 20 26  32 30 30 30 0d 05 bf 32  |     . &2000...2|
0000c060  20 20 20 20 20 20 20 20  20 20 4e 65 77 46 4e 61  |          NewFNa|
0000c070  6d 65 24 3d a4 73 74 72  28 62 75 66 25 2b 34 34  |me$=.str(buf%+44|
0000c080  29 2b 22 2e 54 65 6d 70  6c 61 74 65 73 22 0d 05  |)+".Templates"..|
0000c090  c0 48 20 20 20 20 20 20  20 20 20 20 e7 20 a4 66  |.H          . .f|
0000c0a0  69 6c 65 65 78 69 73 74  73 28 4e 65 77 46 4e 61  |ileexists(NewFNa|
0000c0b0  6d 65 24 29 80 28 62 75  66 25 21 32 30 3d 2d 32  |me$).(buf%!20=-2|
0000c0c0  29 80 28 62 75 66 25 21  32 34 3d 42 61 72 49 63  |).(buf%!24=BarIc|
0000c0d0  6f 6e 25 29 20 8c 0d 05  c1 20 20 20 20 20 20 20  |on%) ....       |
0000c0e0  20 20 20 20 20 20 e7 20  43 68 61 6e 67 65 73 4d  |      . ChangesM|
0000c0f0  61 64 65 25 20 8c 0d 05  c2 24 20 20 20 20 20 20  |ade% ....$      |
0000c100  20 20 20 20 20 20 20 20  f2 64 69 61 6c 6f 67 75  |        .dialogu|
0000c110  65 28 32 2c 22 22 2c 22  22 29 0d 05 c3 11 20 20  |e(2,"","")....  |
0000c120  20 20 20 20 20 20 20 20  20 20 cc 0d 05 c4 22 20  |          ...." |
0000c130  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 74 65  |             .te|
0000c140  6d 70 6c 5f 64 65 6c 65  74 65 61 6c 6c 0d 05 c5  |mpl_deleteall...|
0000c150  2e 20 20 20 20 20 20 20  20 20 20 20 20 20 20 f2  |.              .|
0000c160  74 65 6d 70 6c 5f 6c 6f  61 64 66 69 6c 65 28 4e  |templ_loadfile(N|
0000c170  65 77 46 4e 61 6d 65 24  2c 31 29 0d 05 c6 11 20  |ewFName$,1).... |
0000c180  20 20 20 20 20 20 20 20  20 20 20 cd 0d 05 c7 1a  |           .....|
0000c190  20 20 20 20 20 20 20 20  20 20 20 20 61 63 6b 63  |            ackc|
0000c1a0  6f 64 65 25 3d 34 0d 05  c8 0f 20 20 20 20 20 20  |ode%=4....      |
0000c1b0  20 20 20 20 cd 0d 05 c9  0b 20 20 20 20 20 20 cb  |    .....      .|
0000c1c0  0d 05 ca 0b 20 20 20 20  c9 20 35 0d 05 cb 22 20  |....    . 5..." |
0000c1d0  20 20 20 20 20 f4 20 64  6f 75 62 6c 65 2d 63 6c  |     . double-cl|
0000c1e0  69 63 6b 20 6f 6e 20 61  20 66 69 6c 65 0d 05 cc  |ick on a file...|
0000c1f0  21 20 20 20 20 20 20 4e  65 77 46 4e 61 6d 65 24  |!      NewFName$|
0000c200  3d a4 73 74 72 28 62 75  66 25 2b 34 34 29 0d 05  |=.str(buf%+44)..|
0000c210  cd 16 20 20 20 20 20 20  c8 8e 20 62 75 66 25 21  |..      .. buf%!|
0000c220  34 30 20 ca 0d 05 ce 12  20 20 20 20 20 20 20 20  |40 .....        |
0000c230  c9 20 26 46 45 43 0d 05  cf 20 20 20 20 20 20 20  |. &FEC...       |
0000c240  20 20 20 20 e7 20 4e 72  54 65 6d 70 6c 61 74 65  |    . NrTemplate|
0000c250  73 25 3d 30 20 8c 0d 05  d0 2c 20 20 20 20 20 20  |s%=0 ....,      |
0000c260  20 20 20 20 20 20 f2 74  65 6d 70 6c 5f 6c 6f 61  |      .templ_loa|
0000c270  64 66 69 6c 65 28 4e 65  77 46 4e 61 6d 65 24 2c  |dfile(NewFName$,|
0000c280  31 29 0d 05 d1 1a 20 20  20 20 20 20 20 20 20 20  |1)....          |
0000c290  20 20 61 63 6b 63 6f 64  65 25 3d 34 0d 05 d2 0f  |  ackcode%=4....|
0000c2a0  20 20 20 20 20 20 20 20  20 20 cd 0d 05 d3 0b 20  |          ..... |
0000c2b0  20 20 20 20 20 cb 0d 05  d4 0b 20 20 20 20 c9 20  |     .....    . |
0000c2c0  38 0d 05 d5 18 20 20 20  20 20 20 f4 20 64 65 73  |8....      . des|
0000c2d0  6b 74 6f 70 20 65 78 69  74 0d 05 d6 1a 20 20 20  |ktop exit....   |
0000c2e0  20 20 20 e7 20 43 68 61  6e 67 65 73 4d 61 64 65  |   . ChangesMade|
0000c2f0  25 20 8c 0d 05 d7 16 20  20 20 20 20 20 20 20 61  |% .....        a|
0000c300  63 6b 63 6f 64 65 25 3d  38 0d 05 d8 17 20 20 20  |ckcode%=8....   |
0000c310  20 20 20 20 20 61 63 6b  74 79 70 65 25 3d 31 39  |     acktype%=19|
0000c320  0d 05 d9 22 20 20 20 20  20 20 20 20 50 72 65 51  |..."        PreQ|
0000c330  75 69 74 53 65 6e 64 65  72 25 3d 73 65 6e 64 65  |uitSender%=sende|
0000c340  72 25 0d 05 da 1e 20 20  20 20 20 20 20 20 f2 64  |r%....        .d|
0000c350  69 61 6c 6f 67 75 65 28  38 2c 22 22 2c 22 22 29  |ialogue(8,"","")|
0000c360  0d 05 db 0b 20 20 20 20  20 20 cd 0d 05 dc 0c 20  |....      ..... |
0000c370  20 20 20 c9 20 31 30 0d  05 dd 23 20 20 20 20 20  |   . 10...#     |
0000c380  20 f4 20 64 65 73 6b 74  6f 70 20 73 61 76 65 20  | . desktop save |
0000c390  28 52 69 73 63 4f 53 20  33 29 0d 05 de 35 20 20  |(RiscOS 3)...5  |
0000c3a0  20 20 20 20 62 6f 6f 74  24 3d 22 52 75 6e 20 22  |    boot$="Run "|
0000c3b0  2b a4 72 65 61 64 76 61  72 76 61 6c 28 22 54 65  |+.readvarval("Te|
0000c3c0  6d 70 6c 45 64 24 44 69  72 22 29 2b bd 31 30 0d  |mplEd$Dir")+.10.|
0000c3d0  05 df 2f 20 20 20 20 20  20 c8 99 20 22 4f 53 5f  |../      .. "OS_|
0000c3e0  47 42 50 42 22 2c 32 2c  62 75 66 25 21 32 30 2c  |GBPB",2,buf%!20,|
0000c3f0  62 6f 6f 74 24 2c a9 28  62 6f 6f 74 24 29 0d 05  |boot$,.(boot$)..|
0000c400  e0 0e 20 20 20 20 c9 20  26 35 30 32 0d 05 e1 2a  |..    . &502...*|
0000c410  20 20 20 20 20 20 f4 20  72 65 71 75 65 73 74 20  |      . request |
0000c420  66 72 6f 6d 20 21 48 65  6c 70 20 61 70 70 6c 69  |from !Help appli|
0000c430  63 61 74 69 6f 6e 0d 05  e2 25 20 20 20 20 20 20  |cation...%      |
0000c440  6e 6f 25 3d a4 77 68 69  63 68 74 65 6d 70 6c 61  |no%=.whichtempla|
0000c450  74 65 28 62 75 66 25 21  33 32 29 0d 05 e3 17 20  |te(buf%!32).... |
0000c460  20 20 20 20 20 69 63 6f  6e 25 3d 62 75 66 25 21  |     icon%=buf%!|
0000c470  33 36 0d 05 e4 24 20 20  20 20 20 20 e7 20 28 6e  |36...$      . (n|
0000c480  6f 25 3e 3d 30 29 20 80  20 28 69 63 6f 6e 25 3e  |o%>=0) . (icon%>|
0000c490  3d 2d 31 29 20 8c 0d 05  e5 2b 20 20 20 20 20 20  |=-1) ....+      |
0000c4a0  20 20 24 28 62 75 66 25  2b 32 30 29 3d a4 69 63  |  $(buf%+20)=.ic|
0000c4b0  6f 6e 68 65 6c 70 28 6e  6f 25 2c 69 63 6f 6e 25  |onhelp(no%,icon%|
0000c4c0  29 0d 05 e6 19 20 20 20  20 20 20 20 20 61 63 6b  |)....        ack|
0000c4d0  63 6f 64 65 25 3d 26 35  30 33 0d 05 e7 0b 20 20  |code%=&503....  |
0000c4e0  20 20 20 20 cd 0d 05 e8  10 20 20 20 20 c9 20 26  |    .....    . &|
0000c4f0  34 30 30 43 30 0d 05 e9  21 20 20 20 20 20 20 f4  |400C0...!      .|
0000c500  20 61 62 6f 75 74 20 74  6f 20 6f 70 65 6e 20 73  | about to open s|
0000c510  75 62 6d 65 6e 75 0d 05  ea 18 20 20 20 20 20 20  |ubmenu....      |
0000c520  c8 8e 20 4c 61 73 74 4d  65 6e 75 25 20 ca 0d 05  |.. LastMenu% ...|
0000c530  eb 18 20 20 20 20 20 20  20 20 c9 20 54 65 6d 70  |..        . Temp|
0000c540  6c 4d 65 6e 75 25 0d 05  ec 2b 20 20 20 20 20 20  |lMenu%...+      |
0000c550  20 20 20 20 f4 20 73 65  74 20 66 69 6c 65 6e 61  |    . set filena|
0000c560  6d 65 20 69 6e 20 73 61  76 65 20 77 69 6e 64 6f  |me in save windo|
0000c570  77 0d 05 ed 1c 20 20 20  20 20 20 20 20 20 20 e7  |w....          .|
0000c580  20 62 75 66 25 21 33 36  3d 2d 31 20 8c 0d 05 ee  | buf%!36=-1 ....|
0000c590  27 20 20 20 20 20 20 20  20 20 20 20 20 24 28 46  |'            $(F|
0000c5a0  69 6c 65 4e 61 6d 65 25  29 3d 4d 61 69 6e 46 4e  |ileName%)=MainFN|
0000c5b0  61 6d 65 24 0d 05 ef 22  20 20 20 20 20 20 20 20  |ame$..."        |
0000c5c0  20 20 20 20 53 61 76 69  6e 67 53 65 6c 65 63 74  |    SavingSelect|
0000c5d0  69 6f 6e 25 3d a3 0d 05  f0 0f 20 20 20 20 20 20  |ion%=.....      |
0000c5e0  20 20 20 20 cc 0d 05 f1  26 20 20 20 20 20 20 20  |    ....&       |
0000c5f0  20 20 20 20 20 24 28 46  69 6c 65 4e 61 6d 65 25  |     $(FileName%|
0000c600  29 3d 53 65 6c 46 4e 61  6d 65 24 0d 05 f2 22 20  |)=SelFName$..." |
0000c610  20 20 20 20 20 20 20 20  20 20 20 53 61 76 69 6e  |           Savin|
0000c620  67 53 65 6c 65 63 74 69  6f 6e 25 3d b9 0d 05 f3  |gSelection%=....|
0000c630  0f 20 20 20 20 20 20 20  20 20 20 cd 0d 05 f4 1f  |.          .....|
0000c640  20 20 20 20 20 20 20 20  20 20 f2 73 65 6c 5f 67  |          .sel_g|
0000c650  65 74 28 54 65 6d 70 6c  57 25 29 0d 05 f5 30 20  |et(TemplW%)...0 |
0000c660  20 20 20 20 20 20 20 20  20 e7 20 28 62 75 66 25  |         . (buf%|
0000c670  21 33 36 3d 2d 31 29 20  84 20 28 4e 72 53 65 6c  |!36=-1) . (NrSel|
0000c680  65 63 74 65 64 25 3d 30  29 20 8c 0d 05 f6 29 20  |ected%=0) ....) |
0000c690  20 20 20 20 20 20 20 20  20 20 20 f4 20 74 65 6d  |           . tem|
0000c6a0  70 6c 61 74 65 20 6e 61  6d 65 20 74 6f 20 63 72  |plate name to cr|
0000c6b0  65 61 74 65 0d 05 f7 35  20 20 20 20 20 20 20 20  |eate...5        |
0000c6c0  20 20 20 20 c8 99 20 22  4d 65 6e 75 55 74 69 6c  |    .. "MenuUtil|
0000c6d0  5f 54 65 78 74 22 2c 69  74 65 6d 5f 74 65 6d 70  |_Text",item_temp|
0000c6e0  6c 6e 61 6d 65 25 2c 22  22 0d 05 f8 0f 20 20 20  |lname%,""....   |
0000c6f0  20 20 20 20 20 20 20 cc  0d 05 f9 31 20 20 20 20  |       ....1    |
0000c700  20 20 20 20 20 20 20 20  f4 20 74 65 6d 70 6c 61  |        . templa|
0000c710  74 65 20 6e 61 6d 65 20  74 6f 20 63 6f 70 79 20  |te name to copy |
0000c720  6f 72 20 72 65 6e 61 6d  65 0d 05 fa 50 20 20 20  |or rename...P   |
0000c730  20 20 20 20 20 20 20 20  20 c8 99 20 22 4d 65 6e  |         .. "Men|
0000c740  75 55 74 69 6c 5f 54 65  78 74 22 2c 69 74 65 6d  |uUtil_Text",item|
0000c750  5f 74 65 6d 70 6c 6e 61  6d 65 25 2c 24 28 54 65  |_templname%,$(Te|
0000c760  6d 70 6c 4e 61 6d 65 73  25 2b 32 38 2a 28 53 65  |mplNames%+28*(Se|
0000c770  6c 42 6c 6b 25 21 30 29  29 0d 05 fb 0f 20 20 20  |lBlk%!0))....   |
0000c780  20 20 20 20 20 20 20 cd  0d 05 fc 17 20 20 20 20  |       .....    |
0000c790  20 20 20 20 c9 20 55 73  65 72 4d 65 6e 75 25 0d  |    . UserMenu%.|
0000c7a0  05 fd 2d 20 20 20 20 20  20 20 20 20 20 f4 20 66  |..-          . f|
0000c7b0  69 6c 6c 20 69 63 6f 6e  73 20 69 6e 20 77 6f 72  |ill icons in wor|
0000c7c0  6b 61 72 65 61 20 77 69  6e 64 6f 77 0d 05 fe 25  |karea window...%|
0000c7d0  20 20 20 20 20 20 20 20  20 20 57 69 6e 42 6c 6b  |          WinBlk|
0000c7e0  25 21 30 3d 4c 61 73 74  4d 65 6e 75 5f 57 69 6e  |%!0=LastMenu_Win|
0000c7f0  25 0d 05 ff 2e 20 20 20  20 20 20 20 20 20 20 c8  |%....          .|
0000c800  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
0000c810  77 49 6e 66 6f 22 2c 2c  57 69 6e 42 6c 6b 25 0d  |wInfo",,WinBlk%.|
0000c820  06 00 2c 20 20 20 20 20  20 20 20 20 20 24 28 49  |..,          $(I|
0000c830  63 6f 6e 54 65 78 74 25  28 31 32 29 29 3d c3 28  |conText%(12))=.(|
0000c840  57 69 6e 42 6c 6b 25 21  34 34 29 0d 06 01 2c 20  |WinBlk%!44)..., |
0000c850  20 20 20 20 20 20 20 20  20 24 28 49 63 6f 6e 54  |         $(IconT|
0000c860  65 78 74 25 28 31 33 29  29 3d c3 28 57 69 6e 42  |ext%(13))=.(WinB|
0000c870  6c 6b 25 21 35 36 29 0d  06 02 37 20 20 20 20 20  |lk%!56)...7     |
0000c880  20 20 20 20 20 24 28 49  63 6f 6e 54 65 78 74 25  |     $(IconText%|
0000c890  28 31 34 29 29 3d c3 28  57 69 6e 42 6c 6b 25 21  |(14))=.(WinBlk%!|
0000c8a0  35 32 2d 57 69 6e 42 6c  6b 25 21 34 34 29 0d 06  |52-WinBlk%!44)..|
0000c8b0  03 37 20 20 20 20 20 20  20 20 20 20 24 28 49 63  |.7          $(Ic|
0000c8c0  6f 6e 54 65 78 74 25 28  31 35 29 29 3d c3 28 57  |onText%(15))=.(W|
0000c8d0  69 6e 42 6c 6b 25 21 35  36 2d 57 69 6e 42 6c 6b  |inBlk%!56-WinBlk|
0000c8e0  25 21 34 38 29 0d 06 04  36 20 20 20 20 20 20 20  |%!48)...6       |
0000c8f0  20 20 20 24 28 49 63 6f  6e 54 65 78 74 25 28 31  |   $(IconText%(1|
0000c900  36 29 29 3d c3 28 28 57  69 6e 42 6c 6b 25 21 37  |6))=.((WinBlk%!7|
0000c910  32 29 20 80 20 26 46 46  46 46 29 0d 06 05 32 20  |2) . &FFFF)...2 |
0000c920  20 20 20 20 20 20 20 20  20 24 28 49 63 6f 6e 54  |         $(IconT|
0000c930  65 78 74 25 28 31 37 29  29 3d c3 28 28 57 69 6e  |ext%(17))=.((Win|
0000c940  42 6c 6b 25 21 37 32 29  3e 3e 31 36 29 0d 06 06  |Blk%!72)>>16)...|
0000c950  0b 20 20 20 20 20 20 cb  0d 06 07 3a 20 20 20 20  |.      ....:    |
0000c960  20 20 c8 99 20 22 57 69  6d 70 5f 43 72 65 61 74  |  .. "Wimp_Creat|
0000c970  65 53 75 62 4d 65 6e 75  22 2c 2c 62 75 66 25 21  |eSubMenu",,buf%!|
0000c980  32 30 2c 62 75 66 25 21  32 34 2c 62 75 66 25 21  |20,buf%!24,buf%!|
0000c990  32 38 0d 06 08 10 20 20  20 20 c9 20 26 34 30 30  |28....    . &400|
0000c9a0  43 31 0d 06 09 17 20 20  20 20 20 20 f4 20 6d 6f  |C1....      . mo|
0000c9b0  64 65 20 63 68 61 6e 67  65 0d 06 0a 19 20 20 20  |de change....   |
0000c9c0  20 20 20 f2 72 65 61 64  73 63 72 65 65 6e 76 61  |   .readscreenva|
0000c9d0  72 73 0d 06 0b 3d 20 20  20 20 20 20 e7 20 54 65  |rs...=      . Te|
0000c9e0  6d 70 6c 57 5f 4d 61 78  43 6f 6c 25 3c 54 65 6d  |mplW_MaxCol%<Tem|
0000c9f0  70 6c 57 5f 43 6f 6c 73  25 20 8c 20 f2 72 65 64  |plW_Cols% . .red|
0000ca00  65 66 69 6e 65 62 72 6f  77 73 65 72 28 b9 29 0d  |efinebrowser(.).|
0000ca10  06 0c 10 20 20 20 20 c9  20 26 34 30 30 43 39 0d  |...    . &400C9.|
0000ca20  06 0d 31 20 20 20 20 20  20 f4 20 6d 65 6e 75 20  |..1      . menu |
0000ca30  72 65 6d 6f 76 65 64 20  77 69 74 68 20 6e 6f 20  |removed with no |
0000ca40  6d 65 6e 75 20 69 74 65  6d 20 63 68 6f 73 65 6e  |menu item chosen|
0000ca50  0d 06 0e 22 20 20 20 20  20 20 e7 20 4c 61 73 74  |..."      . Last|
0000ca60  4d 65 6e 75 25 3d 54 65  6d 70 6c 4d 65 6e 75 25  |Menu%=TemplMenu%|
0000ca70  20 8c 0d 06 0f 3a 20 20  20 20 20 20 20 20 e7 20  | ....:        . |
0000ca80  54 65 6d 70 6c 4d 65 6e  75 5f 44 65 73 65 6c 65  |TemplMenu_Desele|
0000ca90  63 74 25 20 8c 20 f2 73  65 6c 5f 63 6c 65 61 72  |ct% . .sel_clear|
0000caa0  28 54 65 6d 70 6c 57 25  2c 2d 31 29 0d 06 10 0b  |(TemplW%,-1)....|
0000cab0  20 20 20 20 20 20 cd 0d  06 11 07 20 20 cb 0d 06  |      .....  ...|
0000cac0  12 15 20 20 e7 20 61 63  6b 63 6f 64 65 25 3c 3e  |..  . ackcode%<>|
0000cad0  30 20 8c 0d 06 13 12 20  20 20 20 62 75 66 25 21  |0 .....    buf%!|
0000cae0  30 3d 32 35 36 0d 06 14  14 20 20 20 20 62 75 66  |0=256....    buf|
0000caf0  25 21 31 32 3d 72 65 66  25 0d 06 15 18 20 20 20  |%!12=ref%....   |
0000cb00  20 62 75 66 25 21 31 36  3d 61 63 6b 63 6f 64 65  | buf%!16=ackcode|
0000cb10  25 0d 06 16 2d 20 20 20  20 c8 99 20 22 57 69 6d  |%...-    .. "Wim|
0000cb20  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
0000cb30  37 2c 62 75 66 25 2c 73  65 6e 64 65 72 25 0d 06  |7,buf%,sender%..|
0000cb40  17 07 20 20 cd 0d 06 18  05 cd 0d 06 19 05 e1 0d  |..  ............|
0000cb50  06 1a 04 0d 06 1b 16 dd  20 f2 72 65 64 72 61 77  |........ .redraw|
0000cb60  28 68 61 6e 64 6c 65 25  29 0d 06 1c 1d ea 20 6d  |(handle%)..... m|
0000cb70  6f 72 65 25 2c 77 69 6e  30 78 25 2c 77 69 6e 30  |ore%,win0x%,win0|
0000cb80  79 25 2c 64 78 25 0d 06  1d 29 ea 20 78 73 74 61  |y%,dx%...). xsta|
0000cb90  72 74 25 2c 68 65 69 67  68 74 25 2c 78 63 6f 72  |rt%,height%,xcor|
0000cba0  72 25 2c 79 63 6f 72 72  25 2c 78 25 2c 79 25 0d  |r%,ycorr%,x%,y%.|
0000cbb0  06 1e 0a 64 78 25 3d 34  38 0d 06 1f 12 42 6c 6b  |...dx%=48....Blk|
0000cbc0  25 21 30 3d 68 61 6e 64  6c 65 25 0d 06 20 28 c8  |%!0=handle%.. (.|
0000cbd0  99 20 22 57 69 6d 70 5f  52 65 64 72 61 77 57 69  |. "Wimp_RedrawWi|
0000cbe0  6e 64 6f 77 22 2c 2c 42  6c 6b 25 20 b8 20 6d 6f  |ndow",,Blk% . mo|
0000cbf0  72 65 25 0d 06 21 19 77  69 6e 30 78 25 3d 42 6c  |re%..!.win0x%=Bl|
0000cc00  6b 25 21 34 2d 42 6c 6b  25 21 32 30 0d 06 22 1a  |k%!4-Blk%!20..".|
0000cc10  77 69 6e 30 79 25 3d 42  6c 6b 25 21 31 36 2d 42  |win0y%=Blk%!16-B|
0000cc20  6c 6b 25 21 32 34 0d 06  23 0c c8 95 20 6d 6f 72  |lk%!24..#... mor|
0000cc30  65 25 0d 06 24 10 20 20  e7 20 48 61 74 63 68 25  |e%..$.  . Hatch%|
0000cc40  20 8c 0d 06 25 1f 20 20  20 20 68 65 69 67 68 74  | ...%.    height|
0000cc50  25 3d 42 6c 6b 25 21 34  30 2d 42 6c 6b 25 21 33  |%=Blk%!40-Blk%!3|
0000cc60  32 0d 06 26 1f 20 20 20  20 78 73 74 61 72 74 25  |2..&.    xstart%|
0000cc70  3d 42 6c 6b 25 21 32 38  2d 68 65 69 67 68 74 25  |=Blk%!28-height%|
0000cc80  0d 06 27 25 20 20 20 20  78 63 6f 72 72 25 3d 28  |..'%    xcorr%=(|
0000cc90  78 73 74 61 72 74 25 2d  77 69 6e 30 78 25 29 20  |xstart%-win0x%) |
0000cca0  83 20 64 78 25 0d 06 28  25 20 20 20 20 79 63 6f  |. dx%..(%    yco|
0000ccb0  72 72 25 3d 28 77 69 6e  30 79 25 2d 42 6c 6b 25  |rr%=(win0y%-Blk%|
0000ccc0  21 33 32 29 20 83 20 64  78 25 0d 06 29 34 20 20  |!32) . dx%..)4  |
0000ccd0  20 20 e3 20 78 25 3d 78  73 74 61 72 74 25 2d 28  |  . x%=xstart%-(|
0000cce0  78 63 6f 72 72 25 2b 79  63 6f 72 72 25 29 20 b8  |xcorr%+ycorr%) .|
0000ccf0  20 42 6c 6b 25 21 33 36  20 88 20 64 78 25 0d 06  | Blk%!36 . dx%..|
0000cd00  2a 16 20 20 20 20 20 20  ec 20 78 25 2c 42 6c 6b  |*.      . x%,Blk|
0000cd10  25 21 33 32 0d 06 2b 1d  20 20 20 20 20 20 f0 20  |%!32..+.      . |
0000cd20  31 2c 68 65 69 67 68 74  25 2c 68 65 69 67 68 74  |1,height%,height|
0000cd30  25 0d 06 2c 0c 20 20 20  20 ed 20 78 25 0d 06 2d  |%..,.    . x%..-|
0000cd40  25 20 20 20 20 79 63 6f  72 72 25 3d 28 77 69 6e  |%    ycorr%=(win|
0000cd50  30 79 25 2d 42 6c 6b 25  21 34 30 29 20 83 20 64  |0y%-Blk%!40) . d|
0000cd60  78 25 0d 06 2e 34 20 20  20 20 e3 20 78 25 3d 78  |x%...4    . x%=x|
0000cd70  73 74 61 72 74 25 2d 28  78 63 6f 72 72 25 2d 79  |start%-(xcorr%-y|
0000cd80  63 6f 72 72 25 29 20 b8  20 42 6c 6b 25 21 33 36  |corr%) . Blk%!36|
0000cd90  20 88 20 64 78 25 0d 06  2f 16 20 20 20 20 20 20  | . dx%../.      |
0000cda0  ec 20 78 25 2c 42 6c 6b  25 21 34 30 0d 06 30 1e  |. x%,Blk%!40..0.|
0000cdb0  20 20 20 20 20 20 f0 20  31 2c 68 65 69 67 68 74  |      . 1,height|
0000cdc0  25 2c 2d 68 65 69 67 68  74 25 0d 06 31 0c 20 20  |%,-height%..1.  |
0000cdd0  20 20 ed 20 78 25 0d 06  32 07 20 20 cd 0d 06 33  |  . x%..2.  ...3|
0000cde0  1b 20 20 e7 20 53 75 70  70 6f 72 74 49 6e 74 65  |.  . SupportInte|
0000cdf0  72 66 61 63 65 25 20 8c  0d 06 34 24 20 20 20 20  |rface% ...4$    |
0000ce00  c8 99 20 22 57 69 6d 70  5f 42 6f 72 64 65 72 57  |.. "Wimp_BorderW|
0000ce10  69 6e 64 6f 77 22 2c 2c  42 6c 6b 25 0d 06 35 07  |indow",,Blk%..5.|
0000ce20  20 20 cd 0d 06 36 15 20  20 e7 20 53 75 70 70 6f  |  ...6.  . Suppo|
0000ce30  72 74 41 45 48 25 20 8c  0d 06 37 23 20 20 20 20  |rtAEH% ...7#    |
0000ce40  c8 99 20 22 41 45 48 5f  52 65 64 72 61 77 57 69  |.. "AEH_RedrawWi|
0000ce50  6e 64 6f 77 22 2c 2c 42  6c 6b 25 0d 06 38 07 20  |ndow",,Blk%..8. |
0000ce60  20 cd 0d 06 39 2a 20 20  c8 99 20 22 57 69 6d 70  | ...9*  .. "Wimp|
0000ce70  5f 47 65 74 52 65 63 74  61 6e 67 6c 65 22 2c 2c  |_GetRectangle",,|
0000ce80  42 6c 6b 25 20 b8 20 6d  6f 72 65 25 0d 06 3a 05  |Blk% . more%..:.|
0000ce90  ce 0d 06 3b 05 e1 0d 06  3c 04 0d 06 3d 2e f4 20  |...;....<...=.. |
0000cea0  2a 2a 2a 20 70 72 6f 63  73 20 66 6f 72 20 74 68  |*** procs for th|
0000ceb0  65 20 77 69 6e 64 6f 77  2d 65 64 69 74 20 77 69  |e window-edit wi|
0000cec0  6e 64 6f 77 20 2a 2a 2a  0d 06 3e 04 0d 06 3f 1d  |ndow ***..>...?.|
0000ced0  dd 20 f2 77 69 6e 65 64  5f 66 69 6c 6c 77 69 6e  |. .wined_fillwin|
0000cee0  28 77 69 6e 64 6f 77 25  29 0d 06 40 13 ea 20 6e  |(window%)..@.. n|
0000cef0  6f 25 2c 66 6c 61 67 73  25 2c 69 25 0d 06 41 16  |o%,flags%,i%..A.|
0000cf00  57 69 6e 45 64 5f 57 69  6e 25 3d 77 69 6e 64 6f  |WinEd_Win%=windo|
0000cf10  77 25 0d 06 42 18 57 69  6e 42 6c 6b 25 21 30 3d  |w%..B.WinBlk%!0=|
0000cf20  57 69 6e 45 64 5f 57 69  6e 25 0d 06 43 1f 6e 6f  |WinEd_Win%..C.no|
0000cf30  25 3d a4 77 68 69 63 68  74 65 6d 70 6c 61 74 65  |%=.whichtemplate|
0000cf40  28 77 69 6e 64 6f 77 25  29 0d 06 44 24 c8 99 20  |(window%)..D$.. |
0000cf50  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
0000cf60  6e 66 6f 22 2c 2c 57 69  6e 42 6c 6b 25 0d 06 45  |nfo",,WinBlk%..E|
0000cf70  15 66 6c 61 67 73 25 3d  57 69 6e 42 6c 6b 25 21  |.flags%=WinBlk%!|
0000cf80  33 32 0d 06 46 22 57 69  6e 45 64 5f 42 75 74 74  |32..F"WinEd_Butt|
0000cf90  6f 6e 25 3d 28 57 69 6e  42 6c 6b 25 21 36 34 29  |on%=(WinBlk%!64)|
0000cfa0  3e 3e 31 32 0d 06 47 0e  e3 20 69 25 3d 30 20 b8  |>>12..G.. i%=0 .|
0000cfb0  20 36 0d 06 48 26 20 20  57 69 6e 45 64 5f 43 6f  | 6..H&  WinEd_Co|
0000cfc0  6c 25 28 69 25 29 3d 28  57 69 6e 42 6c 6b 25 3f  |l%(i%)=(WinBlk%?|
0000cfd0  28 33 36 2b 69 25 29 29  0d 06 49 08 ed 20 69 25  |(36+i%))..I.. i%|
0000cfe0  0d 06 4a 2a f2 73 65 6c  65 63 74 69 63 6f 6e 28  |..J*.selecticon(|
0000cff0  57 69 6e 45 64 57 25 2c  34 2c 66 6c 61 67 73 25  |WinEdW%,4,flags%|
0000d000  20 80 20 28 31 3c 3c 31  29 29 0d 06 4b 2a f2 73  | . (1<<1))..K*.s|
0000d010  65 6c 65 63 74 69 63 6f  6e 28 57 69 6e 45 64 57  |electicon(WinEdW|
0000d020  25 2c 35 2c 66 6c 61 67  73 25 20 80 20 28 31 3c  |%,5,flags% . (1<|
0000d030  3c 34 29 29 0d 06 4c 2b  f2 73 65 6c 65 63 74 69  |<4))..L+.selecti|
0000d040  63 6f 6e 28 57 69 6e 45  64 57 25 2c 36 2c 66 6c  |con(WinEdW%,6,fl|
0000d050  61 67 73 25 20 80 20 28  31 3c 3c 31 32 29 29 0d  |ags% . (1<<12)).|
0000d060  06 4d 28 f2 73 65 6c 65  63 74 69 63 6f 6e 28 57  |.M(.selecticon(W|
0000d070  69 6e 45 64 57 25 2c 37  2c 50 61 6e 65 46 6c 61  |inEdW%,7,PaneFla|
0000d080  67 25 3f 6e 6f 25 29 0d  06 4e 2a f2 73 65 6c 65  |g%?no%)..N*.sele|
0000d090  63 74 69 63 6f 6e 28 57  69 6e 45 64 57 25 2c 38  |cticon(WinEdW%,8|
0000d0a0  2c 66 6c 61 67 73 25 20  80 20 28 31 3c 3c 36 29  |,flags% . (1<<6)|
0000d0b0  29 0d 06 4f 2b f2 73 65  6c 65 63 74 69 63 6f 6e  |)..O+.selecticon|
0000d0c0  28 57 69 6e 45 64 57 25  2c 39 2c 66 6c 61 67 73  |(WinEdW%,9,flags|
0000d0d0  25 20 80 20 28 31 3c 3c  31 30 29 29 0d 06 50 2c  |% . (1<<10))..P,|
0000d0e0  f2 73 65 6c 65 63 74 69  63 6f 6e 28 57 69 6e 45  |.selecticon(WinE|
0000d0f0  64 57 25 2c 31 30 2c 66  6c 61 67 73 25 20 80 20  |dW%,10,flags% . |
0000d100  28 31 3c 3c 31 31 29 29  0d 06 51 2b f2 73 65 6c  |(1<<11))..Q+.sel|
0000d110  65 63 74 69 63 6f 6e 28  57 69 6e 45 64 57 25 2c  |ecticon(WinEdW%,|
0000d120  31 31 2c 66 6c 61 67 73  25 20 80 20 28 31 3c 3c  |11,flags% . (1<<|
0000d130  38 29 29 0d 06 52 2b f2  73 65 6c 65 63 74 69 63  |8))..R+.selectic|
0000d140  6f 6e 28 57 69 6e 45 64  57 25 2c 31 32 2c 66 6c  |on(WinEdW%,12,fl|
0000d150  61 67 73 25 20 80 20 28  31 3c 3c 39 29 29 0d 06  |ags% . (1<<9))..|
0000d160  53 2c f2 73 65 6c 65 63  74 69 63 6f 6e 28 57 69  |S,.selecticon(Wi|
0000d170  6e 45 64 57 25 2c 32 30  2c 66 6c 61 67 73 25 20  |nEdW%,20,flags% |
0000d180  80 20 28 31 3c 3c 33 31  29 29 0d 06 54 0e e3 20  |. (1<<31))..T.. |
0000d190  69 25 3d 30 20 b8 20 36  0d 06 55 36 20 20 f2 73  |i%=0 . 6..U6  .s|
0000d1a0  65 6c 65 63 74 69 63 6f  6e 28 57 69 6e 45 64 57  |electicon(WinEdW|
0000d1b0  25 2c 31 33 2b 69 25 2c  66 6c 61 67 73 25 20 80  |%,13+i%,flags% .|
0000d1c0  20 28 31 3c 3c 28 32 34  2b 69 25 29 29 29 0d 06  | (1<<(24+i%)))..|
0000d1d0  56 08 ed 20 69 25 0d 06  57 1c e7 20 28 66 6c 61  |V.. i%..W.. (fla|
0000d1e0  67 73 25 20 80 20 28 31  3c 3c 33 31 29 29 3d 30  |gs% . (1<<31))=0|
0000d1f0  20 8c 0d 06 58 31 20 20  f2 73 65 6c 65 63 74 69  | ...X1  .selecti|
0000d200  63 6f 6e 28 57 69 6e 45  64 57 25 2c 31 34 2c 28  |con(WinEdW%,14,(|
0000d210  66 6c 61 67 73 25 20 80  20 28 31 3c 3c 37 29 29  |flags% . (1<<7))|
0000d220  3d 30 29 0d 06 59 31 20  20 f2 73 65 6c 65 63 74  |=0)..Y1  .select|
0000d230  69 63 6f 6e 28 57 69 6e  45 64 57 25 2c 31 33 2c  |icon(WinEdW%,13,|
0000d240  28 66 6c 61 67 73 25 20  80 20 28 31 3c 3c 37 29  |(flags% . (1<<7)|
0000d250  29 3d 30 29 0d 06 5a 2d  20 20 f2 73 65 6c 65 63  |)=0)..Z-  .selec|
0000d260  74 69 63 6f 6e 28 57 69  6e 45 64 57 25 2c 31 35  |ticon(WinEdW%,15|
0000d270  2c 66 6c 61 67 73 25 20  80 20 28 31 3c 3c 30 29  |,flags% . (1<<0)|
0000d280  29 0d 06 5b 2d 20 20 f2  73 65 6c 65 63 74 69 63  |)..[-  .selectic|
0000d290  6f 6e 28 57 69 6e 45 64  57 25 2c 31 37 2c 66 6c  |on(WinEdW%,17,fl|
0000d2a0  61 67 73 25 20 80 20 28  31 3c 3c 32 29 29 0d 06  |ags% . (1<<2))..|
0000d2b0  5c 2d 20 20 f2 73 65 6c  65 63 74 69 63 6f 6e 28  |\-  .selecticon(|
0000d2c0  57 69 6e 45 64 57 25 2c  31 39 2c 66 6c 61 67 73  |WinEdW%,19,flags|
0000d2d0  25 20 80 20 28 31 3c 3c  33 29 29 0d 06 5d 05 cd  |% . (1<<3))..]..|
0000d2e0  0d 06 5e 4f f2 73 65 74  74 69 74 6c 65 62 61 72  |..^O.settitlebar|
0000d2f0  28 57 69 6e 45 64 57 25  2c 57 69 6e 45 64 54 62  |(WinEdW%,WinEdTb|
0000d300  61 72 25 2c a4 6d 73 67  5f 6c 6f 6f 6b 75 70 31  |ar%,.msg_lookup1|
0000d310  28 22 45 44 54 50 22 2c  24 28 54 65 6d 70 6c 4e  |("EDTP",$(TemplN|
0000d320  61 6d 65 73 25 2b 32 38  2a 6e 6f 25 29 29 29 0d  |ames%+28*no%))).|
0000d330  06 5f 32 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |._2.seticontext(|
0000d340  36 2c 24 28 57 69 6e 42  75 74 74 6f 6e 25 2b 32  |6,$(WinButton%+2|
0000d350  30 2a 57 69 6e 45 64 5f  42 75 74 74 6f 6e 25 29  |0*WinEd_Button%)|
0000d360  29 0d 06 60 0e e3 20 69  25 3d 30 20 b8 20 36 0d  |)..`.. i%=0 . 6.|
0000d370  06 61 28 20 20 f2 73 65  74 63 6f 6c 6f 75 72 62  |.a(  .setcolourb|
0000d380  6f 78 28 32 2b 69 25 2c  57 69 6e 45 64 5f 43 6f  |ox(2+i%,WinEd_Co|
0000d390  6c 25 28 69 25 29 29 0d  06 62 08 ed 20 69 25 0d  |l%(i%))..b.. i%.|
0000d3a0  06 63 19 f2 77 69 6e 65  64 5f 73 68 61 64 65 69  |.c..wined_shadei|
0000d3b0  63 6f 6e 73 28 2d 31 29  0d 06 64 1a f2 6f 70 65  |cons(-1)..d..ope|
0000d3c0  6e 77 69 6e 64 6f 77 28  57 69 6e 45 64 57 25 2c  |nwindow(WinEdW%,|
0000d3d0  30 29 0d 06 65 19 f2 73  65 74 63 61 72 65 74 28  |0)..e..setcaret(|
0000d3e0  57 69 6e 45 64 57 25 2c  2d 31 29 0d 06 66 05 e1  |WinEdW%,-1)..f..|
0000d3f0  0d 06 67 04 0d 06 68 23  dd 20 f2 77 69 6e 65 64  |..g...h#. .wined|
0000d400  5f 73 68 61 64 65 69 63  6f 6e 73 28 63 6c 69 63  |_shadeicons(clic|
0000d410  6b 65 64 6f 6e 25 29 0d  06 69 22 ea 20 6e 65 77  |kedon%)..i". new|
0000d420  66 6f 72 6d 61 74 25 2c  74 69 74 6c 65 62 61 72  |format%,titlebar|
0000d430  25 2c 73 63 72 6f 6c 6c  25 0d 06 6a 28 6e 65 77  |%,scroll%..j(new|
0000d440  66 6f 72 6d 61 74 25 3d  a4 69 63 6f 6e 73 65 6c  |format%=.iconsel|
0000d450  65 63 74 65 64 28 57 69  6e 45 64 57 25 2c 32 30  |ected(WinEdW%,20|
0000d460  29 0d 06 6b 27 74 69 74  6c 65 62 61 72 25 3d a4  |)..k'titlebar%=.|
0000d470  69 63 6f 6e 73 65 6c 65  63 74 65 64 28 57 69 6e  |iconselected(Win|
0000d480  45 64 57 25 2c 31 35 29  0d 06 6c 41 73 63 72 6f  |EdW%,15)..lAscro|
0000d490  6c 6c 25 3d a4 69 63 6f  6e 73 65 6c 65 63 74 65  |ll%=.iconselecte|
0000d4a0  64 28 57 69 6e 45 64 57  25 2c 31 37 29 20 84 20  |d(WinEdW%,17) . |
0000d4b0  a4 69 63 6f 6e 73 65 6c  65 63 74 65 64 28 57 69  |.iconselected(Wi|
0000d4c0  6e 45 64 57 25 2c 31 39  29 0d 06 6d 29 e7 20 28  |nEdW%,19)..m). (|
0000d4d0  63 6c 69 63 6b 65 64 6f  6e 25 3d 2d 31 29 20 84  |clickedon%=-1) .|
0000d4e0  20 28 63 6c 69 63 6b 65  64 6f 6e 25 3d 32 30 29  | (clickedon%=20)|
0000d4f0  20 8c 0d 06 6e 29 20 20  f2 73 68 61 64 65 69 63  | ...n)  .shadeic|
0000d500  6f 6e 28 57 69 6e 45 64  57 25 2c 31 36 2c ac 20  |on(WinEdW%,16,. |
0000d510  6e 65 77 66 6f 72 6d 61  74 25 29 0d 06 6f 05 cd  |newformat%)..o..|
0000d520  0d 06 70 29 e7 20 28 63  6c 69 63 6b 65 64 6f 6e  |..p). (clickedon|
0000d530  25 3d 2d 31 29 20 84 20  28 63 6c 69 63 6b 65 64  |%=-1) . (clicked|
0000d540  6f 6e 25 3d 31 35 29 20  8c 0d 06 71 28 20 20 f2  |on%=15) ...q(  .|
0000d550  73 68 61 64 65 69 63 6f  6e 28 57 69 6e 45 64 57  |shadeicon(WinEdW|
0000d560  25 2c 31 33 2c ac 20 74  69 74 6c 65 62 61 72 25  |%,13,. titlebar%|
0000d570  29 0d 06 72 28 20 20 f2  73 68 61 64 65 69 63 6f  |)..r(  .shadeico|
0000d580  6e 28 57 69 6e 45 64 57  25 2c 31 34 2c ac 20 74  |n(WinEdW%,14,. t|
0000d590  69 74 6c 65 62 61 72 25  29 0d 06 73 28 20 20 f2  |itlebar%)..s(  .|
0000d5a0  73 68 61 64 65 69 63 6f  6e 28 57 69 6e 45 64 57  |shadeicon(WinEdW|
0000d5b0  25 2c 31 36 2c ac 20 74  69 74 6c 65 62 61 72 25  |%,16,. titlebar%|
0000d5c0  29 0d 06 74 05 cd 0d 06  75 18 e7 20 28 63 6c 69  |)..t....u.. (cli|
0000d5d0  63 6b 65 64 6f 6e 25 3c  3e 31 35 29 20 8c 0d 06  |ckedon%<>15) ...|
0000d5e0  76 35 20 20 f2 73 68 61  64 65 69 63 6f 6e 28 57  |v5  .shadeicon(W|
0000d5f0  69 6e 45 64 57 25 2c 31  38 2c 6e 65 77 66 6f 72  |inEdW%,18,newfor|
0000d600  6d 61 74 25 20 80 20 28  ac 20 73 63 72 6f 6c 6c  |mat% . (. scroll|
0000d610  25 29 29 0d 06 77 05 cd  0d 06 78 05 e1 0d 06 79  |%))..w....x....y|
0000d620  04 0d 06 7a 14 dd 20 f2  77 69 6e 65 64 5f 72 65  |...z.. .wined_re|
0000d630  61 64 77 69 6e 0d 06 7b  13 ea 20 66 6c 61 67 73  |adwin..{.. flags|
0000d640  25 2c 6e 6f 25 2c 69 25  0d 06 7c 18 57 69 6e 42  |%,no%,i%..|.WinB|
0000d650  6c 6b 25 21 30 3d 57 69  6e 45 64 5f 57 69 6e 25  |lk%!0=WinEd_Win%|
0000d660  0d 06 7d 24 c8 99 20 22  57 69 6d 70 5f 47 65 74  |..}$.. "Wimp_Get|
0000d670  57 69 6e 64 6f 77 49 6e  66 6f 22 2c 2c 57 69 6e  |WindowInfo",,Win|
0000d680  42 6c 6b 25 0d 06 7e 21  66 6c 61 67 73 25 3d 28  |Blk%..~!flags%=(|
0000d690  57 69 6e 42 6c 6b 25 21  33 32 29 80 28 26 31 46  |WinBlk%!32).(&1F|
0000d6a0  3c 3c 31 36 29 0d 06 7f  30 e7 20 a4 69 63 6f 6e  |<<16)...0. .icon|
0000d6b0  73 65 6c 65 63 74 65 64  28 57 69 6e 45 64 57 25  |selected(WinEdW%|
0000d6c0  2c 31 35 29 20 8c 20 66  6c 61 67 73 25 2b 3d 28  |,15) . flags%+=(|
0000d6d0  31 3c 3c 30 29 0d 06 80  2f e7 20 a4 69 63 6f 6e  |1<<0).../. .icon|
0000d6e0  73 65 6c 65 63 74 65 64  28 57 69 6e 45 64 57 25  |selected(WinEdW%|
0000d6f0  2c 34 29 20 8c 20 66 6c  61 67 73 25 2b 3d 28 31  |,4) . flags%+=(1|
0000d700  3c 3c 31 29 0d 06 81 30  e7 20 a4 69 63 6f 6e 73  |<<1)...0. .icons|
0000d710  65 6c 65 63 74 65 64 28  57 69 6e 45 64 57 25 2c  |elected(WinEdW%,|
0000d720  31 37 29 20 8c 20 66 6c  61 67 73 25 2b 3d 28 31  |17) . flags%+=(1|
0000d730  3c 3c 32 29 0d 06 82 30  e7 20 a4 69 63 6f 6e 73  |<<2)...0. .icons|
0000d740  65 6c 65 63 74 65 64 28  57 69 6e 45 64 57 25 2c  |elected(WinEdW%,|
0000d750  31 39 29 20 8c 20 66 6c  61 67 73 25 2b 3d 28 31  |19) . flags%+=(1|
0000d760  3c 3c 33 29 0d 06 83 2f  e7 20 a4 69 63 6f 6e 73  |<<3).../. .icons|
0000d770  65 6c 65 63 74 65 64 28  57 69 6e 45 64 57 25 2c  |elected(WinEdW%,|
0000d780  35 29 20 8c 20 66 6c 61  67 73 25 2b 3d 28 31 3c  |5) . flags%+=(1<|
0000d790  3c 34 29 0d 06 84 22 6e  6f 25 3d a4 77 68 69 63  |<4)..."no%=.whic|
0000d7a0  68 74 65 6d 70 6c 61 74  65 28 57 69 6e 45 64 5f  |htemplate(WinEd_|
0000d7b0  57 69 6e 25 29 0d 06 85  20 e7 20 a4 69 63 6f 6e  |Win%)... . .icon|
0000d7c0  73 65 6c 65 63 74 65 64  28 57 69 6e 45 64 57 25  |selected(WinEdW%|
0000d7d0  2c 37 29 20 8c 0d 06 86  18 20 20 50 61 6e 65 46  |,7) .....  PaneF|
0000d7e0  6c 61 67 25 3f 6e 6f 25  3d 31 3c 3c 35 0d 06 87  |lag%?no%=1<<5...|
0000d7f0  05 cc 0d 06 88 15 20 20  50 61 6e 65 46 6c 61 67  |......  PaneFlag|
0000d800  25 3f 6e 6f 25 3d 30 0d  06 89 05 cd 0d 06 8a 2f  |%?no%=0......../|
0000d810  e7 20 a4 69 63 6f 6e 73  65 6c 65 63 74 65 64 28  |. .iconselected(|
0000d820  57 69 6e 45 64 57 25 2c  38 29 20 8c 20 66 6c 61  |WinEdW%,8) . fla|
0000d830  67 73 25 2b 3d 28 31 3c  3c 36 29 0d 06 8b 32 e7  |gs%+=(1<<6)...2.|
0000d840  20 ac 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  | . .iconselected|
0000d850  28 57 69 6e 45 64 57 25  2c 31 34 29 20 8c 20 66  |(WinEdW%,14) . f|
0000d860  6c 61 67 73 25 2b 3d 28  31 3c 3c 37 29 0d 06 8c  |lags%+=(1<<7)...|
0000d870  30 e7 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |0. .iconselected|
0000d880  28 57 69 6e 45 64 57 25  2c 31 31 29 20 8c 20 66  |(WinEdW%,11) . f|
0000d890  6c 61 67 73 25 2b 3d 28  31 3c 3c 38 29 0d 06 8d  |lags%+=(1<<8)...|
0000d8a0  30 e7 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |0. .iconselected|
0000d8b0  28 57 69 6e 45 64 57 25  2c 31 32 29 20 8c 20 66  |(WinEdW%,12) . f|
0000d8c0  6c 61 67 73 25 2b 3d 28  31 3c 3c 39 29 0d 06 8e  |lags%+=(1<<9)...|
0000d8d0  30 e7 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |0. .iconselected|
0000d8e0  28 57 69 6e 45 64 57 25  2c 39 29 20 8c 20 66 6c  |(WinEdW%,9) . fl|
0000d8f0  61 67 73 25 2b 3d 28 31  3c 3c 31 30 29 0d 06 8f  |ags%+=(1<<10)...|
0000d900  31 e7 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |1. .iconselected|
0000d910  28 57 69 6e 45 64 57 25  2c 31 30 29 20 8c 20 66  |(WinEdW%,10) . f|
0000d920  6c 61 67 73 25 2b 3d 28  31 3c 3c 31 31 29 0d 06  |lags%+=(1<<11)..|
0000d930  90 30 e7 20 a4 69 63 6f  6e 73 65 6c 65 63 74 65  |.0. .iconselecte|
0000d940  64 28 57 69 6e 45 64 57  25 2c 36 29 20 8c 20 66  |d(WinEdW%,6) . f|
0000d950  6c 61 67 73 25 2b 3d 28  31 3c 3c 31 32 29 0d 06  |lags%+=(1<<12)..|
0000d960  91 0e e3 20 69 25 3d 30  20 b8 20 37 0d 06 92 3b  |... i%=0 . 7...;|
0000d970  20 20 e7 20 a4 69 63 6f  6e 73 65 6c 65 63 74 65  |  . .iconselecte|
0000d980  64 28 57 69 6e 45 64 57  25 2c 31 33 2b 69 25 29  |d(WinEdW%,13+i%)|
0000d990  20 8c 20 66 6c 61 67 73  25 2b 3d 28 31 3c 3c 28  | . flags%+=(1<<(|
0000d9a0  32 34 2b 69 25 29 29 0d  06 93 08 ed 20 69 25 0d  |24+i%))..... i%.|
0000d9b0  06 94 15 57 69 6e 42 6c  6b 25 21 33 32 3d 66 6c  |...WinBlk%!32=fl|
0000d9c0  61 67 73 25 0d 06 95 20  57 69 6e 42 6c 6b 25 21  |ags%... WinBlk%!|
0000d9d0  36 34 3d 57 69 6e 45 64  5f 42 75 74 74 6f 6e 25  |64=WinEd_Button%|
0000d9e0  3c 3c 31 32 0d 06 96 0e  e3 20 69 25 3d 30 20 b8  |<<12..... i%=0 .|
0000d9f0  20 36 0d 06 97 24 20 20  57 69 6e 42 6c 6b 25 3f  | 6...$  WinBlk%?|
0000da00  28 33 36 2b 69 25 29 3d  57 69 6e 45 64 5f 43 6f  |(36+i%)=WinEd_Co|
0000da10  6c 25 28 69 25 29 0d 06  98 08 ed 20 69 25 0d 06  |l%(i%)..... i%..|
0000da20  99 29 57 69 6e 45 64 5f  57 69 6e 25 3d a4 72 65  |.)WinEd_Win%=.re|
0000da30  64 65 66 69 6e 65 77 69  6e 64 6f 77 28 57 69 6e  |definewindow(Win|
0000da40  42 6c 6b 25 2c 31 29 0d  06 9a 05 e1 0d 06 9b 04  |Blk%,1).........|
0000da50  0d 06 9c 2c f4 20 2a 2a  2a 20 70 72 6f 63 73 20  |...,. *** procs |
0000da60  66 6f 72 20 74 68 65 20  69 63 6f 6e 2d 65 64 69  |for the icon-edi|
0000da70  74 20 77 69 6e 64 6f 77  20 2a 2a 2a 0d 06 9d 04  |t window ***....|
0000da80  0d 06 9e 20 dd 20 f2 69  63 65 64 5f 73 74 61 72  |... . .iced_star|
0000da90  74 28 77 69 6e 64 6f 77  25 2c 69 63 6f 6e 25 29  |t(window%,icon%)|
0000daa0  0d 06 9f 10 e7 20 69 63  6f 6e 25 3d 2d 34 20 8c  |..... icon%=-4 .|
0000dab0  0d 06 a0 1f 20 20 f2 69  63 65 64 5f 66 69 6c 6c  |....  .iced_fill|
0000dac0  77 69 6e 28 77 69 6e 64  6f 77 25 2c 2d 34 29 0d  |win(window%,-4).|
0000dad0  06 a1 05 cc 0d 06 a2 17  20 20 f2 73 65 6c 5f 67  |........  .sel_g|
0000dae0  65 74 28 77 69 6e 64 6f  77 25 29 0d 06 a3 17 20  |et(window%).... |
0000daf0  20 e7 20 4e 72 53 65 6c  65 63 74 65 64 25 3e 30  | . NrSelected%>0|
0000db00  20 8c 0d 06 a4 1a 20 20  20 20 20 e7 20 4e 72 53  | .....     . NrS|
0000db10  65 6c 65 63 74 65 64 25  3d 31 20 8c 0d 06 a5 2a  |elected%=1 ....*|
0000db20  20 20 20 20 20 20 f2 69  63 65 64 5f 66 69 6c 6c  |      .iced_fill|
0000db30  77 69 6e 28 77 69 6e 64  6f 77 25 2c 53 65 6c 42  |win(window%,SelB|
0000db40  6c 6b 25 21 30 29 0d 06  a6 0a 20 20 20 20 20 cc  |lk%!0)....     .|
0000db50  0d 06 a7 24 20 20 20 20  20 20 20 f2 69 63 65 64  |...$       .iced|
0000db60  5f 66 69 6c 6c 77 69 6e  28 77 69 6e 64 6f 77 25  |_fillwin(window%|
0000db70  2c 2d 31 29 0d 06 a8 0a  20 20 20 20 20 cd 0d 06  |,-1)....     ...|
0000db80  a9 07 20 20 cc 0d 06 aa  16 20 20 20 20 e7 20 28  |..  .....    . (|
0000db90  69 63 6f 6e 25 3e 3d 30  29 20 8c 0d 06 ab 26 20  |icon%>=0) ....& |
0000dba0  20 20 20 20 20 f2 69 63  65 64 5f 66 69 6c 6c 77  |     .iced_fillw|
0000dbb0  69 6e 28 77 69 6e 64 6f  77 25 2c 69 63 6f 6e 25  |in(window%,icon%|
0000dbc0  29 0d 06 ac 09 20 20 20  20 cd 0d 06 ad 07 20 20  |)....    .....  |
0000dbd0  cd 0d 06 ae 05 cd 0d 06  af 05 e1 0d 06 b0 04 0d  |................|
0000dbe0  06 b1 22 dd 20 f2 69 63  65 64 5f 66 69 6c 6c 77  |..". .iced_fillw|
0000dbf0  69 6e 28 77 69 6e 64 6f  77 25 2c 69 63 6f 6e 25  |in(window%,icon%|
0000dc00  29 0d 06 b2 40 ea 20 6e  6f 25 2c 66 6c 61 67 73  |)...@. no%,flags|
0000dc10  25 2c 64 61 74 61 25 2c  61 72 67 24 2c 74 69 74  |%,data%,arg$,tit|
0000dc20  6c 65 24 2c 74 65 78 74  25 2c 73 70 72 69 74 65  |le$,text%,sprite|
0000dc30  25 2c 69 6e 64 69 72 25  2c 63 61 72 65 74 74 6f  |%,indir%,caretto|
0000dc40  25 0d 06 b3 11 ea 20 74  24 2c 76 24 2c 6d 24 2c  |%..... t$,v$,m$,|
0000dc50  73 24 0d 06 b4 15 49 63  45 64 5f 57 69 6e 25 3d  |s$....IcEd_Win%=|
0000dc60  77 69 6e 64 6f 77 25 0d  06 b5 14 49 63 45 64 5f  |window%....IcEd_|
0000dc70  49 63 6f 6e 25 3d 69 63  6f 6e 25 0d 06 b6 1f 6e  |Icon%=icon%....n|
0000dc80  6f 25 3d a4 77 68 69 63  68 74 65 6d 70 6c 61 74  |o%=.whichtemplat|
0000dc90  65 28 77 69 6e 64 6f 77  25 29 0d 06 b7 17 57 69  |e(window%)....Wi|
0000dca0  6e 42 6c 6b 25 21 30 3d  49 63 45 64 5f 57 69 6e  |nBlk%!0=IcEd_Win|
0000dcb0  25 0d 06 b8 24 c8 99 20  22 57 69 6d 70 5f 47 65  |%...$.. "Wimp_Ge|
0000dcc0  74 57 69 6e 64 6f 77 49  6e 66 6f 22 2c 2c 57 69  |tWindowInfo",,Wi|
0000dcd0  6e 42 6c 6b 25 0d 06 b9  0e c8 8e 20 69 63 6f 6e  |nBlk%...... icon|
0000dce0  25 20 ca 0d 06 ba 26 20  20 c9 20 2d 34 20 20 3a  |% ....&  . -4  :|
0000dcf0  20 f4 20 65 64 69 74 69  6e 67 20 74 69 74 6c 65  | . editing title|
0000dd00  20 62 61 72 20 69 63 6f  6e 0d 06 bb 3f 20 20 20  | bar icon...?   |
0000dd10  20 66 6c 61 67 73 25 3d  28 57 69 6e 42 6c 6b 25  | flags%=(WinBlk%|
0000dd20  21 36 30 29 20 80 20 26  46 46 46 20 3a 20 f4 20  |!60) . &FFF : . |
0000dd30  6d 61 73 6b 20 6f 75 74  20 69 72 72 65 6c 65 76  |mask out irrelev|
0000dd40  61 6e 74 20 62 69 74 73  0d 06 bc 1b 20 20 20 20  |ant bits....    |
0000dd50  66 6c 61 67 73 25 3d 66  6c 61 67 73 25 20 84 20  |flags%=flags% . |
0000dd60  26 31 34 0d 06 bd 1f 20  20 20 20 e7 20 28 66 6c  |&14....    . (fl|
0000dd70  61 67 73 25 20 80 20 28  31 3c 3c 36 29 29 3d 30  |ags% . (1<<6))=0|
0000dd80  20 8c 0d 06 be 3b 20 20  20 20 20 20 f4 20 63 6f  | ....;      . co|
0000dd90  70 79 20 66 67 20 61 6e  64 20 62 67 20 63 6f 6c  |py fg and bg col|
0000dda0  6f 75 72 20 66 6c 61 67  73 20 66 72 6f 6d 20 77  |our flags from w|
0000ddb0  69 6e 64 6f 77 20 63 6f  6c 6f 75 72 73 0d 06 bf  |indow colours...|
0000ddc0  4a 20 20 20 20 20 20 66  6c 61 67 73 25 3d 28 66  |J      flags%=(f|
0000ddd0  6c 61 67 73 25 20 80 20  26 46 46 46 29 20 84 20  |lags% . &FFF) . |
0000dde0  28 28 57 69 6e 42 6c 6b  25 3f 33 36 29 3c 3c 32  |((WinBlk%?36)<<2|
0000ddf0  34 29 20 84 20 28 28 57  69 6e 42 6c 6b 25 3f 33  |4) . ((WinBlk%?3|
0000de00  37 29 3c 3c 32 38 29 0d  06 c0 09 20 20 20 20 cd  |7)<<28)....    .|
0000de10  0d 06 c1 18 20 20 20 20  64 61 74 61 25 3d 57 69  |....    data%=Wi|
0000de20  6e 42 6c 6b 25 2b 37 36  0d 06 c2 22 20 20 20 20  |nBlk%+76..."    |
0000de30  61 72 67 24 2b 3d a4 6d  73 67 5f 6c 6f 6f 6b 75  |arg$+=.msg_looku|
0000de40  70 30 28 22 54 42 41 52  22 29 0d 06 c3 3e 20 20  |p0("TBAR")...>  |
0000de50  c9 20 2d 31 20 20 3a 20  f4 20 65 64 69 74 69 6e  |. -1  : . editin|
0000de60  67 20 73 65 6c 65 63 74  69 6f 6e 20 28 72 65 61  |g selection (rea|
0000de70  64 20 66 6c 61 67 73 20  66 72 6f 6d 20 66 69 72  |d flags from fir|
0000de80  73 74 20 69 63 6f 6e 29  0d 06 c4 1b 20 20 20 20  |st icon)....    |
0000de90  f2 73 65 6c 5f 67 65 74  28 49 63 45 64 5f 57 69  |.sel_get(IcEd_Wi|
0000dea0  6e 25 29 0d 06 c5 2d 20  20 20 20 66 6c 61 67 73  |n%)...-    flags|
0000deb0  25 3d 57 69 6e 42 6c 6b  25 21 28 39 32 2b 33 32  |%=WinBlk%!(92+32|
0000dec0  2a 28 53 65 6c 42 6c 6b  25 21 30 29 2b 31 36 29  |*(SelBlk%!0)+16)|
0000ded0  0d 06 c6 2a 20 20 20 20  64 61 74 61 25 3d 57 69  |...*    data%=Wi|
0000dee0  6e 42 6c 6b 25 2b 39 32  2b 33 32 2a 28 53 65 6c  |nBlk%+92+32*(Sel|
0000def0  42 6c 6b 25 21 30 29 2b  32 30 0d 06 c7 21 20 20  |Blk%!0)+20...!  |
0000df00  20 20 61 72 67 24 2b 3d  a4 6d 73 67 5f 6c 6f 6f  |  arg$+=.msg_loo|
0000df10  6b 75 70 30 28 22 53 45  4c 22 29 0d 06 c8 1f 20  |kup0("SEL").... |
0000df20  20 7f 20 3a 20 f4 20 65  64 69 74 69 6e 67 20 73  | . : . editing s|
0000df30  69 6e 67 6c 65 20 69 63  6f 6e 0d 06 c9 2c 20 20  |ingle icon...,  |
0000df40  20 20 66 6c 61 67 73 25  3d 57 69 6e 42 6c 6b 25  |  flags%=WinBlk%|
0000df50  21 28 39 32 2b 33 32 2a  49 63 45 64 5f 49 63 6f  |!(92+32*IcEd_Ico|
0000df60  6e 25 2b 31 36 29 0d 06  ca 29 20 20 20 20 64 61  |n%+16)...)    da|
0000df70  74 61 25 3d 57 69 6e 42  6c 6b 25 2b 39 32 2b 33  |ta%=WinBlk%+92+3|
0000df80  32 2a 49 63 45 64 5f 49  63 6f 6e 25 2b 32 30 0d  |2*IcEd_Icon%+20.|
0000df90  06 cb 2b 20 20 20 20 61  72 67 24 2b 3d a4 6d 73  |..+    arg$+=.ms|
0000dfa0  67 5f 6c 6f 6f 6b 75 70  31 28 22 49 43 4e 52 22  |g_lookup1("ICNR"|
0000dfb0  2c c3 28 69 63 6f 6e 25  29 29 0d 06 cc 05 cb 0d  |,.(icon%))......|
0000dfc0  06 cd 3a 74 69 74 6c 65  24 3d a4 6d 73 67 5f 6c  |..:title$=.msg_l|
0000dfd0  6f 6f 6b 75 70 32 28 22  45 44 49 43 22 2c 24 28  |ookup2("EDIC",$(|
0000dfe0  54 65 6d 70 6c 4e 61 6d  65 73 25 2b 32 38 2a 6e  |TemplNames%+28*n|
0000dff0  6f 25 29 2c 61 72 67 24  29 0d 06 ce 18 74 65 78  |o%),arg$)....tex|
0000e000  74 25 3d 28 66 6c 61 67  73 25 20 80 20 31 29 3e  |t%=(flags% . 1)>|
0000e010  30 0d 06 cf 1a 73 70 72  69 74 65 25 3d 28 66 6c  |0....sprite%=(fl|
0000e020  61 67 73 25 20 80 20 32  29 3e 30 0d 06 d0 1c 69  |ags% . 2)>0....i|
0000e030  6e 64 69 72 25 3d 28 66  6c 61 67 73 25 20 80 20  |ndir%=(flags% . |
0000e040  26 31 30 30 29 3e 30 0d  06 d1 0d e7 20 74 65 78  |&100)>0..... tex|
0000e050  74 25 20 8c 0d 06 d2 10  20 20 e7 20 69 6e 64 69  |t% .....  . indi|
0000e060  72 25 20 8c 0d 06 d3 15  20 20 20 20 74 24 3d 24  |r% .....    t$=$|
0000e070  28 64 61 74 61 25 21 30  29 0d 06 d4 15 20 20 20  |(data%!0)....   |
0000e080  20 6d 24 3d c3 28 64 61  74 61 25 21 38 29 0d 06  | m$=.(data%!8)..|
0000e090  d5 25 20 20 20 20 e7 20  64 61 74 61 25 21 34 3c  |.%    . data%!4<|
0000e0a0  3e 2d 31 20 8c 20 76 24  3d 24 28 64 61 74 61 25  |>-1 . v$=$(data%|
0000e0b0  21 34 29 0d 06 d6 07 20  20 cc 0d 06 d7 13 20 20  |!4)....  .....  |
0000e0c0  20 20 74 24 3d 24 28 64  61 74 61 25 29 0d 06 d8  |  t$=$(data%)...|
0000e0d0  07 20 20 cd 0d 06 d9 05  cd 0d 06 da 1b e7 20 73  |.  ........... s|
0000e0e0  70 72 69 74 65 25 20 80  20 28 ac 20 74 65 78 74  |prite% . (. text|
0000e0f0  25 29 20 8c 0d 06 db 10  20 20 e7 20 69 6e 64 69  |%) .....  . indi|
0000e100  72 25 20 8c 0d 06 dc 15  20 20 20 20 73 24 3d 24  |r% .....    s$=$|
0000e110  28 64 61 74 61 25 21 30  29 0d 06 dd 15 20 20 20  |(data%!0)....   |
0000e120  20 6d 24 3d c3 28 64 61  74 61 25 21 38 29 0d 06  | m$=.(data%!8)..|
0000e130  de 07 20 20 cc 0d 06 df  13 20 20 20 20 73 24 3d  |..  .....    s$=|
0000e140  24 28 64 61 74 61 25 29  0d 06 e0 07 20 20 cd 0d  |$(data%)....  ..|
0000e150  06 e1 05 cd 0d 06 e2 22  49 63 45 64 5f 42 75 74  |......."IcEd_But|
0000e160  74 6f 6e 25 3d 28 66 6c  61 67 73 25 3e 3e 31 32  |ton%=(flags%>>12|
0000e170  29 20 80 20 31 35 0d 06  e3 1f 49 63 45 64 5f 45  |) . 15....IcEd_E|
0000e180  73 67 25 3d 28 66 6c 61  67 73 25 3e 3e 31 36 29  |sg%=(flags%>>16)|
0000e190  20 80 20 33 31 0d 06 e4  19 e7 20 28 66 6c 61 67  | . 31..... (flag|
0000e1a0  73 25 20 80 20 28 31 3c  3c 36 29 29 20 8c 0d 06  |s% . (1<<6)) ...|
0000e1b0  e5 13 20 20 49 63 45 64  5f 46 67 63 6f 6c 25 3d  |..  IcEd_Fgcol%=|
0000e1c0  37 0d 06 e6 13 20 20 49  63 45 64 5f 42 67 63 6f  |7....  IcEd_Bgco|
0000e1d0  6c 25 3d 30 0d 06 e7 48  20 20 f2 66 6f 6e 74 5f  |l%=0...H  .font_|
0000e1e0  67 65 74 69 6e 66 6f 28  28 66 6c 61 67 73 25 3e  |getinfo((flags%>|
0000e1f0  3e 32 34 29 20 80 20 32  35 35 2c 49 63 45 64 5f  |>24) . 255,IcEd_|
0000e200  46 6f 6e 74 24 2c 49 63  45 64 5f 58 73 69 7a 65  |Font$,IcEd_Xsize|
0000e210  2c 49 63 45 64 5f 59 73  69 7a 65 29 0d 06 e8 05  |,IcEd_Ysize)....|
0000e220  cc 0d 06 e9 23 20 20 49  63 45 64 5f 46 67 63 6f  |....#  IcEd_Fgco|
0000e230  6c 25 3d 28 66 6c 61 67  73 25 3e 3e 32 34 29 20  |l%=(flags%>>24) |
0000e240  80 20 31 35 0d 06 ea 23  20 20 49 63 45 64 5f 42  |. 15...#  IcEd_B|
0000e250  67 63 6f 6c 25 3d 28 66  6c 61 67 73 25 3e 3e 32  |gcol%=(flags%>>2|
0000e260  38 29 20 80 20 31 35 0d  06 eb 22 20 20 49 63 45  |8) . 15..."  IcE|
0000e270  64 5f 46 6f 6e 74 24 3d  22 48 6f 6d 65 72 74 6f  |d_Font$="Homerto|
0000e280  6e 2e 4d 65 64 69 75 6d  22 0d 06 ec 13 20 20 49  |n.Medium"....  I|
0000e290  63 45 64 5f 58 73 69 7a  65 3d 31 32 0d 06 ed 13  |cEd_Xsize=12....|
0000e2a0  20 20 49 63 45 64 5f 59  73 69 7a 65 3d 31 32 0d  |  IcEd_Ysize=12.|
0000e2b0  06 ee 05 cd 0d 06 ef 29  f2 73 65 74 74 69 74 6c  |.......).settitl|
0000e2c0  65 62 61 72 28 49 63 45  64 57 25 2c 49 63 45 64  |ebar(IcEdW%,IcEd|
0000e2d0  54 62 61 72 25 2c 74 69  74 6c 65 24 29 0d 06 f0  |Tbar%,title$)...|
0000e2e0  20 f2 73 65 6c 65 63 74  69 63 6f 6e 28 49 63 45  | .selecticon(IcE|
0000e2f0  64 57 25 2c 31 32 2c 74  65 78 74 25 29 0d 06 f1  |dW%,12,text%)...|
0000e300  22 f2 73 65 6c 65 63 74  69 63 6f 6e 28 49 63 45  |".selecticon(IcE|
0000e310  64 57 25 2c 31 33 2c 73  70 72 69 74 65 25 29 0d  |dW%,13,sprite%).|
0000e320  06 f2 21 f2 73 65 6c 65  63 74 69 63 6f 6e 28 49  |..!.selecticon(I|
0000e330  63 45 64 57 25 2c 31 34  2c 69 6e 64 69 72 25 29  |cEdW%,14,indir%)|
0000e340  0d 06 f3 16 f2 73 65 74  69 63 6f 6e 74 65 78 74  |.....seticontext|
0000e350  28 30 2c 74 24 29 0d 06  f4 16 f2 73 65 74 69 63  |(0,t$).....setic|
0000e360  6f 6e 74 65 78 74 28 31  2c 73 24 29 0d 06 f5 16  |ontext(1,s$)....|
0000e370  f2 73 65 74 69 63 6f 6e  74 65 78 74 28 32 2c 76  |.seticontext(2,v|
0000e380  24 29 0d 06 f6 16 f2 73  65 74 69 63 6f 6e 74 65  |$).....seticonte|
0000e390  78 74 28 33 2c 6d 24 29  0d 06 f7 2a f2 73 65 6c  |xt(3,m$)...*.sel|
0000e3a0  65 63 74 69 63 6f 6e 28  49 63 45 64 57 25 2c 31  |ecticon(IcEdW%,1|
0000e3b0  35 2c 66 6c 61 67 73 25  20 80 20 28 31 3c 3c 32  |5,flags% . (1<<2|
0000e3c0  29 29 0d 06 f8 2a f2 73  65 6c 65 63 74 69 63 6f  |))...*.selectico|
0000e3d0  6e 28 49 63 45 64 57 25  2c 31 37 2c 66 6c 61 67  |n(IcEdW%,17,flag|
0000e3e0  73 25 20 80 20 28 31 3c  3c 33 29 29 0d 06 f9 2a  |s% . (1<<3))...*|
0000e3f0  f2 73 65 6c 65 63 74 69  63 6f 6e 28 49 63 45 64  |.selecticon(IcEd|
0000e400  57 25 2c 31 38 2c 66 6c  61 67 73 25 20 80 20 28  |W%,18,flags% . (|
0000e410  31 3c 3c 34 29 29 0d 06  fa 2a f2 73 65 6c 65 63  |1<<4))...*.selec|
0000e420  74 69 63 6f 6e 28 49 63  45 64 57 25 2c 31 36 2c  |ticon(IcEdW%,16,|
0000e430  66 6c 61 67 73 25 20 80  20 28 31 3c 3c 35 29 29  |flags% . (1<<5))|
0000e440  0d 06 fb 2a f2 73 65 6c  65 63 74 69 63 6f 6e 28  |...*.selecticon(|
0000e450  49 63 45 64 57 25 2c 34  31 2c 66 6c 61 67 73 25  |IcEdW%,41,flags%|
0000e460  20 80 20 28 31 3c 3c 36  29 29 0d 06 fc 2a f2 73  | . (1<<6))...*.s|
0000e470  65 6c 65 63 74 69 63 6f  6e 28 49 63 45 64 57 25  |electicon(IcEdW%|
0000e480  2c 32 30 2c 66 6c 61 67  73 25 20 80 20 28 31 3c  |,20,flags% . (1<|
0000e490  3c 37 29 29 0d 06 fd 2a  f2 73 65 6c 65 63 74 69  |<7))...*.selecti|
0000e4a0  63 6f 6e 28 49 63 45 64  57 25 2c 31 39 2c 66 6c  |con(IcEdW%,19,fl|
0000e4b0  61 67 73 25 20 80 20 28  31 3c 3c 39 29 29 0d 06  |ags% . (1<<9))..|
0000e4c0  fe 2b f2 73 65 6c 65 63  74 69 63 6f 6e 28 49 63  |.+.selecticon(Ic|
0000e4d0  45 64 57 25 2c 32 31 2c  66 6c 61 67 73 25 20 80  |EdW%,21,flags% .|
0000e4e0  20 28 31 3c 3c 31 30 29  29 0d 06 ff 2b f2 73 65  | (1<<10))...+.se|
0000e4f0  6c 65 63 74 69 63 6f 6e  28 49 63 45 64 57 25 2c  |lecticon(IcEdW%,|
0000e500  32 32 2c 66 6c 61 67 73  25 20 80 20 28 31 3c 3c  |22,flags% . (1<<|
0000e510  31 31 29 29 0d 07 00 2b  f2 73 65 6c 65 63 74 69  |11))...+.selecti|
0000e520  63 6f 6e 28 49 63 45 64  57 25 2c 33 39 2c 66 6c  |con(IcEdW%,39,fl|
0000e530  61 67 73 25 20 80 20 28  31 3c 3c 32 32 29 29 0d  |ags% . (1<<22)).|
0000e540  07 01 30 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |..0.seticontext(|
0000e550  34 2c 24 28 49 63 42 75  74 74 6f 6e 25 2b 32 30  |4,$(IcButton%+20|
0000e560  2a 49 63 45 64 5f 42 75  74 74 6f 6e 25 29 29 0d  |*IcEd_Button%)).|
0000e570  07 02 20 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |.. .seticontext(|
0000e580  35 2c c3 28 49 63 45 64  5f 45 73 67 25 29 29 0d  |5,.(IcEd_Esg%)).|
0000e590  07 03 20 f2 73 65 74 63  6f 6c 6f 75 72 62 6f 78  |.. .setcolourbox|
0000e5a0  28 30 2c 49 63 45 64 5f  46 67 63 6f 6c 25 29 0d  |(0,IcEd_Fgcol%).|
0000e5b0  07 04 20 f2 73 65 74 63  6f 6c 6f 75 72 62 6f 78  |.. .setcolourbox|
0000e5c0  28 31 2c 49 63 45 64 5f  42 67 63 6f 6c 25 29 0d  |(1,IcEd_Bgcol%).|
0000e5d0  07 05 1f f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |....seticontext(|
0000e5e0  31 39 2c 49 63 45 64 5f  46 6f 6e 74 24 29 0d 07  |19,IcEd_Font$)..|
0000e5f0  06 26 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 32  |.&.seticontext(2|
0000e600  30 2c c0 c3 28 49 63 45  64 5f 58 73 69 7a 65 29  |0,..(IcEd_Xsize)|
0000e610  2c 34 29 29 0d 07 07 26  f2 73 65 74 69 63 6f 6e  |,4))...&.seticon|
0000e620  74 65 78 74 28 32 31 2c  c0 c3 28 49 63 45 64 5f  |text(21,..(IcEd_|
0000e630  59 73 69 7a 65 29 2c 34  29 29 0d 07 08 30 f2 73  |Ysize),4))...0.s|
0000e640  65 6c 65 63 74 69 63 6f  6e 28 49 63 45 64 57 25  |electicon(IcEdW%|
0000e650  2c 35 33 2c 49 63 45 64  5f 58 73 69 7a 65 3d 49  |,53,IcEd_Xsize=I|
0000e660  63 45 64 5f 59 73 69 7a  65 29 0d 07 09 10 e3 20  |cEd_Ysize)..... |
0000e670  69 25 3d 31 32 20 b8 20  31 34 0d 07 0a 29 20 20  |i%=12 . 14...)  |
0000e680  f2 73 68 61 64 65 69 63  6f 6e 28 49 63 45 64 57  |.shadeicon(IcEdW|
0000e690  25 2c 69 25 2c 49 63 45  64 5f 49 63 6f 6e 25 3d  |%,i%,IcEd_Icon%=|
0000e6a0  2d 31 29 0d 07 0b 08 ed  20 69 25 0d 07 0c 15 e7  |-1)..... i%.....|
0000e6b0  20 49 63 45 64 5f 49 63  6f 6e 25 3d 2d 31 20 8c  | IcEd_Icon%=-1 .|
0000e6c0  0d 07 0d 12 20 20 e3 20  69 25 3d 32 33 20 b8 20  |....  . i%=23 . |
0000e6d0  32 36 0d 07 0e 1f 20 20  20 20 f2 73 68 61 64 65  |26....    .shade|
0000e6e0  69 63 6f 6e 28 49 63 45  64 57 25 2c 69 25 2c 31  |icon(IcEdW%,i%,1|
0000e6f0  29 0d 07 0f 0a 20 20 ed  20 69 25 0d 07 10 05 cd  |)....  . i%.....|
0000e700  0d 07 11 27 f2 73 68 61  64 65 69 63 6f 6e 28 49  |...'.shadeicon(I|
0000e710  63 45 64 57 25 2c 31 35  2c 49 63 45 64 5f 49 63  |cEdW%,15,IcEd_Ic|
0000e720  6f 6e 25 3d 2d 34 29 0d  07 12 27 f2 73 68 61 64  |on%=-4)...'.shad|
0000e730  65 69 63 6f 6e 28 49 63  45 64 57 25 2c 31 36 2c  |eicon(IcEdW%,16,|
0000e740  49 63 45 64 5f 49 63 6f  6e 25 3d 2d 34 29 0d 07  |IcEd_Icon%=-4)..|
0000e750  13 27 f2 73 68 61 64 65  69 63 6f 6e 28 49 63 45  |.'.shadeicon(IcE|
0000e760  64 57 25 2c 32 30 2c 49  63 45 64 5f 49 63 6f 6e  |dW%,20,IcEd_Icon|
0000e770  25 3d 2d 34 29 0d 07 14  27 f2 73 68 61 64 65 69  |%=-4)...'.shadei|
0000e780  63 6f 6e 28 49 63 45 64  57 25 2c 32 31 2c 49 63  |con(IcEdW%,21,Ic|
0000e790  45 64 5f 49 63 6f 6e 25  3d 2d 34 29 0d 07 15 10  |Ed_Icon%=-4)....|
0000e7a0  e3 20 69 25 3d 32 37 20  b8 20 33 32 0d 07 16 29  |. i%=27 . 32...)|
0000e7b0  20 20 f2 73 68 61 64 65  69 63 6f 6e 28 49 63 45  |  .shadeicon(IcE|
0000e7c0  64 57 25 2c 69 25 2c 49  63 45 64 5f 49 63 6f 6e  |dW%,i%,IcEd_Icon|
0000e7d0  25 3d 2d 34 29 0d 07 17  08 ed 20 69 25 0d 07 18  |%=-4)..... i%...|
0000e7e0  27 f2 73 68 61 64 65 69  63 6f 6e 28 49 63 45 64  |'.shadeicon(IcEd|
0000e7f0  57 25 2c 33 39 2c 49 63  45 64 5f 49 63 6f 6e 25  |W%,39,IcEd_Icon%|
0000e800  3d 2d 34 29 0d 07 19 18  f2 69 63 65 64 5f 73 68  |=-4).....iced_sh|
0000e810  61 64 65 69 63 6f 6e 73  28 2d 31 29 0d 07 1a 19  |adeicons(-1)....|
0000e820  f2 6f 70 65 6e 77 69 6e  64 6f 77 28 49 63 45 64  |.openwindow(IcEd|
0000e830  57 25 2c 30 29 0d 07 1b  0f 63 61 72 65 74 74 6f  |W%,0)....caretto|
0000e840  25 3d 2d 31 0d 07 1c 16  e7 20 49 63 45 64 5f 49  |%=-1..... IcEd_I|
0000e850  63 6f 6e 25 3c 3e 2d 31  20 8c 0d 07 1d 1c 20 20  |con%<>-1 .....  |
0000e860  e7 20 69 6e 64 69 72 25  20 8c 20 63 61 72 65 74  |. indir% . caret|
0000e870  74 6f 25 3d 32 35 0d 07  1e 1d 20 20 e7 20 73 70  |to%=25....  . sp|
0000e880  72 69 74 65 25 20 8c 20  63 61 72 65 74 74 6f 25  |rite% . caretto%|
0000e890  3d 32 34 0d 07 1f 1b 20  20 e7 20 74 65 78 74 25  |=24....  . text%|
0000e8a0  20 8c 20 63 61 72 65 74  74 6f 25 3d 32 33 0d 07  | . caretto%=23..|
0000e8b0  20 05 cd 0d 07 21 1e f2  73 65 74 63 61 72 65 74  | ....!..setcaret|
0000e8c0  28 49 63 45 64 57 25 2c  63 61 72 65 74 74 6f 25  |(IcEdW%,caretto%|
0000e8d0  29 0d 07 22 05 e1 0d 07  23 04 0d 07 24 22 dd 20  |).."....#...$". |
0000e8e0  f2 69 63 65 64 5f 73 68  61 64 65 69 63 6f 6e 73  |.iced_shadeicons|
0000e8f0  28 63 6c 69 63 6b 65 64  6f 6e 25 29 0d 07 25 1d  |(clickedon%)..%.|
0000e900  ea 20 74 25 2c 73 25 2c  69 25 2c 66 25 2c 6c 6f  |. t%,s%,i%,f%,lo|
0000e910  63 6b 61 73 70 65 63 74  25 0d 07 26 16 e7 20 49  |ckaspect%..&.. I|
0000e920  63 45 64 5f 49 63 6f 6e  25 3c 3e 2d 31 20 8c 0d  |cEd_Icon%<>-1 ..|
0000e930  07 27 2c 20 20 e7 20 28  63 6c 69 63 6b 65 64 6f  |.',  . (clickedo|
0000e940  6e 25 3d 2d 31 29 20 84  20 28 63 6c 69 63 6b 65  |n%=-1) . (clicke|
0000e950  64 6f 6e 25 3c 3d 31 34  29 20 8c 0d 07 28 23 20  |don%<=14) ...(# |
0000e960  20 20 20 74 25 3d a4 69  63 6f 6e 73 65 6c 65 63  |   t%=.iconselec|
0000e970  74 65 64 28 49 63 45 64  57 25 2c 31 32 29 0d 07  |ted(IcEdW%,12)..|
0000e980  29 23 20 20 20 20 73 25  3d a4 69 63 6f 6e 73 65  |)#    s%=.iconse|
0000e990  6c 65 63 74 65 64 28 49  63 45 64 57 25 2c 31 33  |lected(IcEdW%,13|
0000e9a0  29 0d 07 2a 23 20 20 20  20 69 25 3d a4 69 63 6f  |)..*#    i%=.ico|
0000e9b0  6e 73 65 6c 65 63 74 65  64 28 49 63 45 64 57 25  |nselected(IcEdW%|
0000e9c0  2c 31 34 29 0d 07 2b 22  20 20 20 20 f2 73 68 61  |,14)..+"    .sha|
0000e9d0  64 65 69 63 6f 6e 28 49  63 45 64 57 25 2c 32 33  |deicon(IcEdW%,23|
0000e9e0  2c ac 20 74 25 29 0d 07  2c 30 20 20 20 20 f2 73  |,. t%)..,0    .s|
0000e9f0  68 61 64 65 69 63 6f 6e  28 49 63 45 64 57 25 2c  |hadeicon(IcEdW%,|
0000ea00  32 34 2c 28 ac 20 73 25  29 20 84 20 28 74 25 20  |24,(. s%) . (t% |
0000ea10  80 20 69 25 29 29 0d 07  2d 28 20 20 20 20 f2 73  |. i%))..-(    .s|
0000ea20  68 61 64 65 69 63 6f 6e  28 49 63 45 64 57 25 2c  |hadeicon(IcEdW%,|
0000ea30  32 35 2c ac 28 74 25 20  80 20 69 25 29 29 0d 07  |25,.(t% . i%))..|
0000ea40  2e 22 20 20 20 20 f2 73  68 61 64 65 69 63 6f 6e  |."    .shadeicon|
0000ea50  28 49 63 45 64 57 25 2c  32 36 2c ac 20 69 25 29  |(IcEdW%,26,. i%)|
0000ea60  0d 07 2f 07 20 20 cd 0d  07 30 05 cd 0d 07 31 1f  |../.  ...0....1.|
0000ea70  66 25 3d a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |f%=.iconselected|
0000ea80  28 49 63 45 64 57 25 2c  34 31 29 0d 07 32 28 6c  |(IcEdW%,41)..2(l|
0000ea90  6f 63 6b 61 73 70 65 63  74 25 3d a4 69 63 6f 6e  |ockaspect%=.icon|
0000eaa0  73 65 6c 65 63 74 65 64  28 49 63 45 64 57 25 2c  |selected(IcEdW%,|
0000eab0  35 33 29 0d 07 33 29 e7  20 28 63 6c 69 63 6b 65  |53)..3). (clicke|
0000eac0  64 6f 6e 25 3d 2d 31 29  20 84 20 28 63 6c 69 63  |don%=-1) . (clic|
0000ead0  6b 65 64 6f 6e 25 3d 34  31 29 20 8c 0d 07 34 12  |kedon%=41) ...4.|
0000eae0  20 20 e3 20 69 25 3d 33  33 20 b8 20 33 38 0d 07  |  . i%=33 . 38..|
0000eaf0  35 20 20 20 20 20 f2 73  68 61 64 65 69 63 6f 6e  |5     .shadeicon|
0000eb00  28 49 63 45 64 57 25 2c  69 25 2c 66 25 29 0d 07  |(IcEdW%,i%,f%)..|
0000eb10  36 0a 20 20 ed 20 69 25  0d 07 37 12 20 20 e3 20  |6.  . i%..7.  . |
0000eb20  69 25 3d 34 35 20 b8 20  34 39 0d 07 38 22 20 20  |i%=45 . 49..8"  |
0000eb30  20 20 f2 73 68 61 64 65  69 63 6f 6e 28 49 63 45  |  .shadeicon(IcE|
0000eb40  64 57 25 2c 69 25 2c ac  20 66 25 29 0d 07 39 0a  |dW%,i%,. f%)..9.|
0000eb50  20 20 ed 20 69 25 0d 07  3a 20 20 20 f2 73 68 61  |  . i%..:   .sha|
0000eb60  64 65 69 63 6f 6e 28 49  63 45 64 57 25 2c 35 33  |deicon(IcEdW%,53|
0000eb70  2c ac 20 66 25 29 0d 07  3b 05 cd 0d 07 3c 3b e7  |,. f%)..;....<;.|
0000eb80  20 28 63 6c 69 63 6b 65  64 6f 6e 25 3d 2d 31 29  | (clickedon%=-1)|
0000eb90  20 84 20 28 63 6c 69 63  6b 65 64 6f 6e 25 3d 34  | . (clickedon%=4|
0000eba0  31 29 20 84 20 28 63 6c  69 63 6b 65 64 6f 6e 25  |1) . (clickedon%|
0000ebb0  3d 35 33 29 20 8c 0d 07  3d 12 20 20 e3 20 69 25  |=53) ...=.  . i%|
0000ebc0  3d 35 30 20 b8 20 35 32  0d 07 3e 32 20 20 20 20  |=50 . 52..>2    |
0000ebd0  f2 73 68 61 64 65 69 63  6f 6e 28 49 63 45 64 57  |.shadeicon(IcEdW|
0000ebe0  25 2c 69 25 2c 28 ac 20  66 25 29 20 84 20 6c 6f  |%,i%,(. f%) . lo|
0000ebf0  63 6b 61 73 70 65 63 74  25 29 0d 07 3f 0a 20 20  |ckaspect%)..?.  |
0000ec00  ed 20 69 25 0d 07 40 05  cd 0d 07 41 29 c8 99 20  |. i%..@....A).. |
0000ec10  22 57 69 6d 70 5f 47 65  74 43 61 72 65 74 50 6f  |"Wimp_GetCaretPo|
0000ec20  73 69 74 69 6f 6e 22 2c  2c 53 63 72 61 70 42 6c  |sition",,ScrapBl|
0000ec30  6b 25 0d 07 42 2c e7 20  a4 69 63 6f 6e 73 68 61  |k%..B,. .iconsha|
0000ec40  64 65 64 28 53 63 72 61  70 42 6c 6b 25 21 30 2c  |ded(ScrapBlk%!0,|
0000ec50  53 63 72 61 70 42 6c 6b  25 21 34 29 20 8c 0d 07  |ScrapBlk%!4) ...|
0000ec60  43 3a 20 20 f2 73 65 74  63 61 72 65 74 28 49 63  |C:  .setcaret(Ic|
0000ec70  45 64 57 25 2c 2d 31 29  20 3a 20 f4 20 6d 6f 76  |EdW%,-1) : . mov|
0000ec80  65 20 63 61 72 65 74 20  66 72 6f 6d 20 73 68 61  |e caret from sha|
0000ec90  64 65 64 20 69 63 6f 6e  0d 07 44 05 cd 0d 07 45  |ded icon..D....E|
0000eca0  05 e1 0d 07 46 04 0d 07  47 1a dd 20 f2 69 63 65  |....F...G.. .ice|
0000ecb0  64 5f 72 65 61 64 77 69  6e 28 6d 61 73 6b 25 29  |d_readwin(mask%)|
0000ecc0  0d 07 48 30 ea 20 66 6c  61 67 73 25 2c 66 6c 61  |..H0. flags%,fla|
0000ecd0  67 70 74 72 25 2c 64 61  74 61 25 2c 69 62 25 2c  |gptr%,data%,ib%,|
0000ece0  63 62 70 25 2c 78 73 69  7a 65 2c 79 73 69 7a 65  |cbp%,xsize,ysize|
0000ecf0  0d 07 49 20 ea 20 78 73  69 7a 65 31 36 25 2c 79  |..I . xsize16%,y|
0000ed00  73 69 7a 65 31 36 25 2c  66 68 61 6e 64 6c 65 25  |size16%,fhandle%|
0000ed10  0d 07 4a 21 ea 20 69 25  2c 74 25 2c 73 25 2c 64  |..J!. i%,t%,s%,d|
0000ed20  65 66 6c 65 6e 25 2c 6d  61 78 6c 65 6e 25 2c 70  |eflen%,maxlen%,p|
0000ed30  25 0d 07 4b 17 57 69 6e  42 6c 6b 25 21 30 3d 49  |%..K.WinBlk%!0=I|
0000ed40  63 45 64 5f 57 69 6e 25  0d 07 4c 24 c8 99 20 22  |cEd_Win%..L$.. "|
0000ed50  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 49 6e  |Wimp_GetWindowIn|
0000ed60  66 6f 22 2c 2c 57 69 6e  42 6c 6b 25 0d 07 4d 13  |fo",,WinBlk%..M.|
0000ed70  c8 8e 20 49 63 45 64 5f  49 63 6f 6e 25 20 ca 0d  |.. IcEd_Icon% ..|
0000ed80  07 4e 26 20 20 c9 20 2d  34 20 20 3a 20 f4 20 65  |.N&  . -4  : . e|
0000ed90  64 69 74 69 6e 67 20 74  69 74 6c 65 20 62 61 72  |diting title bar|
0000eda0  20 69 63 6f 6e 0d 07 4f  1b 20 20 20 20 66 6c 61  | icon..O.    fla|
0000edb0  67 70 74 72 25 3d 57 69  6e 42 6c 6b 25 2b 36 30  |gptr%=WinBlk%+60|
0000edc0  0d 07 50 18 20 20 20 20  64 61 74 61 25 3d 57 69  |..P.    data%=Wi|
0000edd0  6e 42 6c 6b 25 2b 37 36  0d 07 51 3e 20 20 c9 20  |nBlk%+76..Q>  . |
0000ede0  2d 31 20 20 3a 20 f4 20  65 64 69 74 69 6e 67 20  |-1  : . editing |
0000edf0  73 65 6c 65 63 74 69 6f  6e 20 28 72 65 61 64 20  |selection (read |
0000ee00  66 6c 61 67 73 20 66 72  6f 6d 20 66 69 72 73 74  |flags from first|
0000ee10  20 69 63 6f 6e 29 0d 07  52 1b 20 20 20 20 f2 73  | icon)..R.    .s|
0000ee20  65 6c 5f 67 65 74 28 49  63 45 64 5f 57 69 6e 25  |el_get(IcEd_Win%|
0000ee30  29 0d 07 53 2d 20 20 20  20 66 6c 61 67 70 74 72  |)..S-    flagptr|
0000ee40  25 3d 57 69 6e 42 6c 6b  25 2b 39 32 2b 33 32 2a  |%=WinBlk%+92+32*|
0000ee50  28 53 65 6c 42 6c 6b 25  21 30 29 2b 31 36 0d 07  |(SelBlk%!0)+16..|
0000ee60  54 2a 20 20 20 20 64 61  74 61 25 3d 57 69 6e 42  |T*    data%=WinB|
0000ee70  6c 6b 25 2b 39 32 2b 33  32 2a 28 53 65 6c 42 6c  |lk%+92+32*(SelBl|
0000ee80  6b 25 21 30 29 2b 32 30  0d 07 55 1f 20 20 7f 20  |k%!0)+20..U.  . |
0000ee90  3a 20 f4 20 65 64 69 74  69 6e 67 20 73 69 6e 67  |: . editing sing|
0000eea0  6c 65 20 69 63 6f 6e 0d  07 56 19 20 20 20 20 e7  |le icon..V.    .|
0000eeb0  20 49 63 45 64 5f 49 63  6f 6e 25 3e 3d 30 20 8c  | IcEd_Icon%>=0 .|
0000eec0  0d 07 57 2e 20 20 20 20  20 20 66 6c 61 67 70 74  |..W.      flagpt|
0000eed0  72 25 3d 57 69 6e 42 6c  6b 25 2b 39 32 2b 33 32  |r%=WinBlk%+92+32|
0000eee0  2a 49 63 45 64 5f 49 63  6f 6e 25 2b 31 36 0d 07  |*IcEd_Icon%+16..|
0000eef0  58 2b 20 20 20 20 20 20  64 61 74 61 25 3d 57 69  |X+      data%=Wi|
0000ef00  6e 42 6c 6b 25 2b 39 32  2b 33 32 2a 49 63 45 64  |nBlk%+92+32*IcEd|
0000ef10  5f 49 63 6f 6e 25 2b 32  30 0d 07 59 26 20 20 20  |_Icon%+20..Y&   |
0000ef20  20 20 20 69 62 25 3d 57  69 6e 42 6c 6b 25 2b 39  |   ib%=WinBlk%+9|
0000ef30  32 2b 33 32 2a 49 63 45  64 5f 49 63 6f 6e 25 0d  |2+32*IcEd_Icon%.|
0000ef40  07 5a 09 20 20 20 20 cd  0d 07 5b 05 cb 0d 07 5c  |.Z.    ...[....\|
0000ef50  13 63 62 70 25 3d 57 69  6e 42 6c 6b 25 21 36 38  |.cbp%=WinBlk%!68|
0000ef60  0d 07 5d 3d f4 20 63 6f  6e 73 74 72 75 63 74 20  |..]=. construct |
0000ef70  6e 65 77 20 66 6c 61 67  73 2c 20 62 75 74 20 64  |new flags, but d|
0000ef80  6f 20 6e 6f 74 20 63 68  61 6e 67 65 20 22 73 65  |o not change "se|
0000ef90  6c 65 63 74 65 64 22 20  73 74 61 74 65 0d 07 5e  |lected" state..^|
0000efa0  21 66 6c 61 67 73 25 3d  28 66 6c 61 67 70 74 72  |!flags%=(flagptr|
0000efb0  25 21 30 29 20 80 20 28  31 3c 3c 32 31 29 0d 07  |%!0) . (1<<21)..|
0000efc0  5f 2f e7 20 a4 69 63 6f  6e 73 65 6c 65 63 74 65  |_/. .iconselecte|
0000efd0  64 28 49 63 45 64 57 25  2c 31 35 29 20 8c 20 66  |d(IcEdW%,15) . f|
0000efe0  6c 61 67 73 25 2b 3d 28  31 3c 3c 32 29 0d 07 60  |lags%+=(1<<2)..`|
0000eff0  2f e7 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |/. .iconselected|
0000f000  28 49 63 45 64 57 25 2c  31 36 29 20 8c 20 66 6c  |(IcEdW%,16) . fl|
0000f010  61 67 73 25 2b 3d 28 31  3c 3c 35 29 0d 07 61 2f  |ags%+=(1<<5)..a/|
0000f020  e7 20 a4 69 63 6f 6e 73  65 6c 65 63 74 65 64 28  |. .iconselected(|
0000f030  49 63 45 64 57 25 2c 31  37 29 20 8c 20 66 6c 61  |IcEdW%,17) . fla|
0000f040  67 73 25 2b 3d 28 31 3c  3c 33 29 0d 07 62 2f e7  |gs%+=(1<<3)..b/.|
0000f050  20 a4 69 63 6f 6e 73 65  6c 65 63 74 65 64 28 49  | .iconselected(I|
0000f060  63 45 64 57 25 2c 31 38  29 20 8c 20 66 6c 61 67  |cEdW%,18) . flag|
0000f070  73 25 2b 3d 28 31 3c 3c  34 29 0d 07 63 2f e7 20  |s%+=(1<<4)..c/. |
0000f080  a4 69 63 6f 6e 73 65 6c  65 63 74 65 64 28 49 63  |.iconselected(Ic|
0000f090  45 64 57 25 2c 31 39 29  20 8c 20 66 6c 61 67 73  |EdW%,19) . flags|
0000f0a0  25 2b 3d 28 31 3c 3c 39  29 0d 07 64 2f e7 20 a4  |%+=(1<<9)..d/. .|
0000f0b0  69 63 6f 6e 73 65 6c 65  63 74 65 64 28 49 63 45  |iconselected(IcE|
0000f0c0  64 57 25 2c 32 30 29 20  8c 20 66 6c 61 67 73 25  |dW%,20) . flags%|
0000f0d0  2b 3d 28 31 3c 3c 37 29  0d 07 65 30 e7 20 a4 69  |+=(1<<7)..e0. .i|
0000f0e0  63 6f 6e 73 65 6c 65 63  74 65 64 28 49 63 45 64  |conselected(IcEd|
0000f0f0  57 25 2c 32 31 29 20 8c  20 66 6c 61 67 73 25 2b  |W%,21) . flags%+|
0000f100  3d 28 31 3c 3c 31 30 29  0d 07 66 30 e7 20 a4 69  |=(1<<10)..f0. .i|
0000f110  63 6f 6e 73 65 6c 65 63  74 65 64 28 49 63 45 64  |conselected(IcEd|
0000f120  57 25 2c 32 32 29 20 8c  20 66 6c 61 67 73 25 2b  |W%,22) . flags%+|
0000f130  3d 28 31 3c 3c 31 31 29  0d 07 67 30 e7 20 a4 69  |=(1<<11)..g0. .i|
0000f140  63 6f 6e 73 65 6c 65 63  74 65 64 28 49 63 45 64  |conselected(IcEd|
0000f150  57 25 2c 33 39 29 20 8c  20 66 6c 61 67 73 25 2b  |W%,39) . flags%+|
0000f160  3d 28 31 3c 3c 32 32 29  0d 07 68 1e 66 6c 61 67  |=(1<<22)..h.flag|
0000f170  73 25 2b 3d 28 49 63 45  64 5f 42 75 74 74 6f 6e  |s%+=(IcEd_Button|
0000f180  25 3c 3c 31 32 29 0d 07  69 1b 66 6c 61 67 73 25  |%<<12)..i.flags%|
0000f190  2b 3d 28 49 63 45 64 5f  45 73 67 25 3c 3c 31 36  |+=(IcEd_Esg%<<16|
0000f1a0  29 0d 07 6a 20 e7 20 a4  69 63 6f 6e 73 65 6c 65  |)..j . .iconsele|
0000f1b0  63 74 65 64 28 49 63 45  64 57 25 2c 34 31 29 20  |cted(IcEdW%,41) |
0000f1c0  8c 0d 07 6b 14 20 20 66  6c 61 67 73 25 2b 3d 28  |...k.  flags%+=(|
0000f1d0  31 3c 3c 36 29 0d 07 6c  1f 20 20 78 73 69 7a 65  |1<<6)..l.  xsize|
0000f1e0  31 36 25 3d a8 28 49 63  45 64 5f 58 73 69 7a 65  |16%=.(IcEd_Xsize|
0000f1f0  2a 31 36 29 0d 07 6d 1f  20 20 79 73 69 7a 65 31  |*16)..m.  ysize1|
0000f200  36 25 3d a8 28 49 63 45  64 5f 59 73 69 7a 65 2a  |6%=.(IcEd_Ysize*|
0000f210  31 36 29 0d 07 6e 24 20  20 e7 20 78 73 69 7a 65  |16)..n$  . xsize|
0000f220  31 36 25 3c 3d 30 20 8c  20 78 73 69 7a 65 31 36  |16%<=0 . xsize16|
0000f230  25 3d 31 32 2a 31 36 0d  07 6f 24 20 20 e7 20 79  |%=12*16..o$  . y|
0000f240  73 69 7a 65 31 36 25 3c  3d 30 20 8c 20 79 73 69  |size16%<=0 . ysi|
0000f250  7a 65 31 36 25 3d 31 32  2a 31 36 0d 07 70 48 20  |ze16%=12*16..pH |
0000f260  20 c8 99 20 22 46 6f 6e  74 5f 46 69 6e 64 46 6f  | .. "Font_FindFo|
0000f270  6e 74 22 2c 2c 49 63 6f  6e 54 65 78 74 25 28 31  |nt",,IconText%(1|
0000f280  39 29 2c 78 73 69 7a 65  31 36 25 2c 79 73 69 7a  |9),xsize16%,ysiz|
0000f290  65 31 36 25 2c 30 2c 30  20 b8 20 66 68 61 6e 64  |e16%,0,0 . fhand|
0000f2a0  6c 65 25 0d 07 71 20 20  20 e7 20 46 6f 6e 74 55  |le%..q   . FontU|
0000f2b0  73 61 67 65 25 28 66 68  61 6e 64 6c 65 25 29 3e  |sage%(fhandle%)>|
0000f2c0  30 20 8c 0d 07 72 3f 20  20 20 20 c8 99 20 22 46  |0 ...r?    .. "F|
0000f2d0  6f 6e 74 5f 4c 6f 73 65  46 6f 6e 74 22 2c 66 68  |ont_LoseFont",fh|
0000f2e0  61 6e 64 6c 65 25 20 3a  20 f4 20 66 6f 6e 74 20  |andle% : . font |
0000f2f0  77 61 73 20 61 6c 72 65  61 64 79 20 69 6e 20 75  |was already in u|
0000f300  73 65 0d 07 73 07 20 20  cd 0d 07 74 1d 20 20 46  |se..s.  ...t.  F|
0000f310  6f 6e 74 55 73 61 67 65  25 28 66 68 61 6e 64 6c  |ontUsage%(fhandl|
0000f320  65 25 29 2b 3d 31 0d 07  75 1c 20 20 66 6c 61 67  |e%)+=1..u.  flag|
0000f330  73 25 2b 3d 28 66 68 61  6e 64 6c 65 25 3c 3c 32  |s%+=(fhandle%<<2|
0000f340  34 29 0d 07 76 05 cc 0d  07 77 1f 20 20 66 6c 61  |4)..v....w.  fla|
0000f350  67 73 25 2b 3d 28 49 63  45 64 5f 46 67 63 6f 6c  |gs%+=(IcEd_Fgcol|
0000f360  25 3c 3c 32 34 29 0d 07  78 1f 20 20 66 6c 61 67  |%<<24)..x.  flag|
0000f370  73 25 2b 3d 28 49 63 45  64 5f 42 67 63 6f 6c 25  |s%+=(IcEd_Bgcol%|
0000f380  3c 3c 32 38 29 0d 07 79  05 cd 0d 07 7a 27 e7 20  |<<28)..y....z'. |
0000f390  28 49 63 45 64 5f 49 63  6f 6e 25 3e 3d 30 29 84  |(IcEd_Icon%>=0).|
0000f3a0  28 49 63 45 64 5f 49 63  6f 6e 25 3d 2d 34 29 20  |(IcEd_Icon%=-4) |
0000f3b0  8c 0d 07 7b 24 20 20 f2  69 63 6f 6e 72 65 6c 65  |...{$  .iconrele|
0000f3c0  61 73 65 28 66 6c 61 67  70 74 72 25 21 30 2c 64  |ase(flagptr%!0,d|
0000f3d0  61 74 61 25 29 0d 07 7c  21 20 20 74 25 3d a4 69  |ata%)..|!  t%=.i|
0000f3e0  63 6f 6e 73 65 6c 65 63  74 65 64 28 49 63 45 64  |conselected(IcEd|
0000f3f0  57 25 2c 31 32 29 0d 07  7d 21 20 20 73 25 3d a4  |W%,12)..}!  s%=.|
0000f400  69 63 6f 6e 73 65 6c 65  63 74 65 64 28 49 63 45  |iconselected(IcE|
0000f410  64 57 25 2c 31 33 29 0d  07 7e 21 20 20 69 25 3d  |dW%,13)..~!  i%=|
0000f420  a4 69 63 6f 6e 73 65 6c  65 63 74 65 64 28 49 63  |.iconselected(Ic|
0000f430  45 64 57 25 2c 31 34 29  0d 07 7f 15 20 20 e7 20  |EdW%,14)....  . |
0000f440  73 25 20 80 20 28 ac 20  74 25 29 20 8c 0d 07 80  |s% . (. t%) ....|
0000f450  3d 20 20 20 20 64 65 66  6c 65 6e 25 3d a9 28 24  |=    deflen%=.($|
0000f460  28 49 63 6f 6e 54 65 78  74 25 28 31 29 29 29 2b  |(IconText%(1)))+|
0000f470  31 20 3a 20 f4 20 64 65  66 61 75 6c 74 20 6d 61  |1 : . default ma|
0000f480  78 69 6d 75 6d 20 73 69  7a 65 0d 07 81 07 20 20  |ximum size....  |
0000f490  cc 0d 07 82 24 20 20 20  20 64 65 66 6c 65 6e 25  |....$    deflen%|
0000f4a0  3d a9 28 24 28 49 63 6f  6e 54 65 78 74 25 28 30  |=.($(IconText%(0|
0000f4b0  29 29 29 2b 31 0d 07 83  07 20 20 cd 0d 07 84 0c  |)))+1....  .....|
0000f4c0  20 20 e7 20 69 25 20 8c  0d 07 85 22 20 20 20 20  |  . i% ...."    |
0000f4d0  6d 61 78 6c 65 6e 25 3d  bb 28 24 28 49 63 6f 6e  |maxlen%=.($(Icon|
0000f4e0  54 65 78 74 25 28 33 29  29 29 0d 07 86 07 20 20  |Text%(3)))....  |
0000f4f0  cc 0d 07 87 12 20 20 20  20 6d 61 78 6c 65 6e 25  |.....    maxlen%|
0000f500  3d 31 32 0d 07 88 07 20  20 cd 0d 07 89 19 20 20  |=12....  .....  |
0000f510  e7 20 6d 61 78 6c 65 6e  25 3c 64 65 66 6c 65 6e  |. maxlen%<deflen|
0000f520  25 20 8c 0d 07 8a 4e 20  20 20 20 6d 61 78 6c 65  |% ....N    maxle|
0000f530  6e 25 3d 64 65 66 6c 65  6e 25 20 20 20 20 20 20  |n%=deflen%      |
0000f540  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 69 6e  |          : . in|
0000f550  63 72 65 61 73 65 20 6d  61 78 20 73 69 7a 65 20  |crease max size |
0000f560  69 66 20 74 65 78 74 20  69 73 20 6c 6f 6e 67 65  |if text is longe|
0000f570  72 0d 07 8b 22 20 20 20  20 f2 73 65 74 69 63 6f  |r..."    .setico|
0000f580  6e 74 65 78 74 28 33 2c  c3 28 6d 61 78 6c 65 6e  |ntext(3,.(maxlen|
0000f590  25 29 29 0d 07 8c 07 20  20 cd 0d 07 8d 1f 20 20  |%))....  .....  |
0000f5a0  e7 20 28 ac 20 69 25 29  20 80 20 28 64 65 66 6c  |. (. i%) . (defl|
0000f5b0  65 6e 25 3e 31 32 29 20  8c 0d 07 8e 45 20 20 20  |en%>12) ....E   |
0000f5c0  20 f2 73 65 6c 65 63 74  69 63 6f 6e 28 49 63 45  | .selecticon(IcE|
0000f5d0  64 57 25 2c 31 34 2c 31  29 20 20 20 20 3a 20 f4  |dW%,14,1)    : .|
0000f5e0  20 6d 61 6b 65 20 69 6e  64 69 72 65 63 74 65 64  | make indirected|
0000f5f0  20 69 66 20 3e 20 31 32  20 63 68 61 72 73 0d 07  | if > 12 chars..|
0000f600  8f 41 20 20 20 20 f2 73  65 74 69 63 6f 6e 74 65  |.A    .seticonte|
0000f610  78 74 28 32 2c 22 22 29  20 20 20 20 20 20 20 20  |xt(2,"")        |
0000f620  20 20 3a 20 f4 20 64 65  66 61 75 6c 74 20 76 61  |  : . default va|
0000f630  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 0d  |lidation string.|
0000f640  07 90 1c 20 20 20 20 f2  69 63 65 64 5f 73 68 61  |...    .iced_sha|
0000f650  64 65 69 63 6f 6e 73 28  31 34 29 0d 07 91 0c 20  |deicons(14).... |
0000f660  20 20 20 69 25 3d b9 0d  07 92 07 20 20 cd 0d 07  |   i%=.....  ...|
0000f670  93 1b 20 20 e7 20 74 25  20 8c 20 66 6c 61 67 73  |..  . t% . flags|
0000f680  25 2b 3d 28 31 3c 3c 30  29 0d 07 94 1b 20 20 e7  |%+=(1<<0)....  .|
0000f690  20 73 25 20 8c 20 66 6c  61 67 73 25 2b 3d 28 31  | s% . flags%+=(1|
0000f6a0  3c 3c 31 29 0d 07 95 1b  20 20 e7 20 69 25 20 8c  |<<1)....  . i% .|
0000f6b0  20 66 6c 61 67 73 25 2b  3d 28 31 3c 3c 38 29 0d  | flags%+=(1<<8).|
0000f6c0  07 96 0c 20 20 e7 20 69  25 20 8c 0d 07 97 17 20  |...  . i% ..... |
0000f6d0  20 20 20 e7 20 73 25 20  80 20 28 ac 20 74 25 29  |   . s% . (. t%)|
0000f6e0  20 8c 0d 07 98 1e 20 20  20 20 20 20 64 61 74 61  | .....      data|
0000f6f0  25 21 30 3d 49 63 6f 6e  54 65 78 74 25 28 31 29  |%!0=IconText%(1)|
0000f700  0d 07 99 44 20 20 20 20  20 20 64 61 74 61 25 21  |...D      data%!|
0000f710  34 3d 63 62 70 25 20 3a  20 f4 20 77 69 6e 64 6f  |4=cbp% : . windo|
0000f720  77 20 43 42 50 20 61 73  20 64 65 66 61 75 6c 74  |w CBP as default|
0000f730  20 73 70 72 69 74 65 20  61 72 65 61 20 70 6f 69  | sprite area poi|
0000f740  6e 74 65 72 0d 07 9a 09  20 20 20 20 cd 0d 07 9b  |nter....    ....|
0000f750  0e 20 20 20 20 e7 20 74  25 20 8c 0d 07 9c 1e 20  |.    . t% ..... |
0000f760  20 20 20 20 20 64 61 74  61 25 21 30 3d 49 63 6f  |     data%!0=Ico|
0000f770  6e 54 65 78 74 25 28 30  29 0d 07 9d 22 20 20 20  |nText%(0)..."   |
0000f780  20 20 20 e7 20 a9 28 24  28 49 63 6f 6e 54 65 78  |   . .($(IconTex|
0000f790  74 25 28 32 29 29 29 3e  30 20 8c 0d 07 9e 20 20  |t%(2)))>0 ....  |
0000f7a0  20 20 20 20 20 20 20 64  61 74 61 25 21 34 3d 49  |       data%!4=I|
0000f7b0  63 6f 6e 54 65 78 74 25  28 32 29 0d 07 9f 0b 20  |conText%(2).... |
0000f7c0  20 20 20 20 20 cc 0d 07  a0 32 20 20 20 20 20 20  |     ....2      |
0000f7d0  20 20 64 61 74 61 25 21  34 3d 2d 31 20 3a 20 f4  |  data%!4=-1 : .|
0000f7e0  20 65 6d 70 74 79 20 76  61 6c 69 64 61 74 69 6f  | empty validatio|
0000f7f0  6e 20 73 74 72 69 6e 67  0d 07 a1 0b 20 20 20 20  |n string....    |
0000f800  20 20 cd 0d 07 a2 09 20  20 20 20 cd 0d 07 a3 17  |  .....    .....|
0000f810  20 20 20 20 64 61 74 61  25 21 38 3d 6d 61 78 6c  |    data%!8=maxl|
0000f820  65 6e 25 0d 07 a4 07 20  20 cc 0d 07 a5 0e 20 20  |en%....  .....  |
0000f830  20 20 e7 20 74 25 20 8c  0d 07 a6 22 20 20 20 20  |  . t% ...."    |
0000f840  20 20 24 28 64 61 74 61  25 29 3d 24 28 49 63 6f  |  $(data%)=$(Ico|
0000f850  6e 54 65 78 74 25 28 30  29 29 0d 07 a7 09 20 20  |nText%(0))....  |
0000f860  20 20 cc 0d 07 a8 10 20  20 20 20 20 20 e7 20 73  |  .....      . s|
0000f870  25 20 8c 0d 07 a9 24 20  20 20 20 20 20 20 20 24  |% ....$        $|
0000f880  28 64 61 74 61 25 29 3d  24 28 49 63 6f 6e 54 65  |(data%)=$(IconTe|
0000f890  78 74 25 28 31 29 29 0d  07 aa 0b 20 20 20 20 20  |xt%(1))....     |
0000f8a0  20 cd 0d 07 ab 09 20 20  20 20 cd 0d 07 ac 07 20  | .....    ..... |
0000f8b0  20 cd 0d 07 ad 17 20 20  66 6c 61 67 70 74 72 25  | .....  flagptr%|
0000f8c0  21 30 3d 66 6c 61 67 73  25 0d 07 ae 22 20 20 f2  |!0=flags%..."  .|
0000f8d0  69 63 6f 6e 72 65 61 6c  6c 6f 63 28 66 6c 61 67  |iconrealloc(flag|
0000f8e0  70 74 72 25 2c 64 61 74  61 25 29 0d 07 af 05 cd  |ptr%,data%).....|
0000f8f0  0d 07 b0 13 c8 8e 20 49  63 45 64 5f 49 63 6f 6e  |...... IcEd_Icon|
0000f900  25 20 ca 0d 07 b1 0a 20  20 c9 20 2d 34 0d 07 b2  |% .....  . -4...|
0000f910  1e 20 20 20 20 57 69 6e  42 6c 6b 25 3f 33 36 3d  |.    WinBlk%?36=|
0000f920  49 63 45 64 5f 46 67 63  6f 6c 25 0d 07 b3 1e 20  |IcEd_Fgcol%.... |
0000f930  20 20 20 57 69 6e 42 6c  6b 25 3f 33 37 3d 49 63  |   WinBlk%?37=Ic|
0000f940  45 64 5f 42 67 63 6f 6c  25 0d 07 b4 2c 20 20 20  |Ed_Bgcol%...,   |
0000f950  20 49 63 45 64 5f 57 69  6e 25 3d a4 72 65 64 65  | IcEd_Win%=.rede|
0000f960  66 69 6e 65 77 69 6e 64  6f 77 28 57 69 6e 42 6c  |finewindow(WinBl|
0000f970  6b 25 2c 31 29 0d 07 b5  0a 20 20 c9 20 2d 31 0d  |k%,1)....  . -1.|
0000f980  07 b6 41 20 20 20 20 f4  20 64 6f 20 6e 6f 74 20  |..A    . do not |
0000f990  63 68 61 6e 67 65 20 74  65 78 74 2c 20 73 70 72  |change text, spr|
0000f9a0  69 74 65 20 61 6e 64 20  69 6e 64 69 72 20 66 6c  |ite and indir fl|
0000f9b0  61 67 73 20 6f 66 20 73  65 6c 65 63 74 69 6f 6e  |ags of selection|
0000f9c0  0d 07 b7 1e 20 20 20 20  6d 61 73 6b 25 3d 6d 61  |....    mask%=ma|
0000f9d0  73 6b 25 20 80 20 28 ac  20 26 31 30 33 29 0d 07  |sk% . (. &103)..|
0000f9e0  b8 19 20 20 20 20 e7 20  4e 72 53 65 6c 65 63 74  |..    . NrSelect|
0000f9f0  65 64 25 3e 30 20 8c 0d  07 b9 20 20 20 20 20 20  |ed%>0 ....      |
0000fa00  20 e3 20 69 25 3d 30 20  b8 20 4e 72 53 65 6c 65  | . i%=0 . NrSele|
0000fa10  63 74 65 64 25 2d 31 0d  07 ba 48 20 20 20 20 20  |cted%-1...H     |
0000fa20  20 20 20 f2 73 65 74 69  63 6f 6e 73 74 61 74 65  |   .seticonstate|
0000fa30  28 49 63 45 64 5f 57 69  6e 25 2c 53 65 6c 42 6c  |(IcEd_Win%,SelBl|
0000fa40  6b 25 21 28 34 2a 69 25  29 2c 66 6c 61 67 73 25  |k%!(4*i%),flags%|
0000fa50  20 80 20 6d 61 73 6b 25  2c 6d 61 73 6b 25 29 0d  | . mask%,mask%).|
0000fa60  07 bb 0e 20 20 20 20 20  20 ed 20 69 25 0d 07 bc  |...      . i%...|
0000fa70  09 20 20 20 20 cc 0d 07  bd 1c 20 20 20 20 20 20  |.    .....      |
0000fa80  f2 64 69 61 6c 6f 67 75  65 28 39 2c 22 22 2c 22  |.dialogue(9,"","|
0000fa90  22 29 0d 07 be 09 20 20  20 20 cd 0d 07 bf 07 20  |")....    ..... |
0000faa0  20 7f 0d 07 c0 19 20 20  20 20 e7 20 49 63 45 64  | .....    . IcEd|
0000fab0  5f 49 63 6f 6e 25 3e 3d  30 20 8c 0d 07 c1 3e 20  |_Icon%>=0 ....> |
0000fac0  20 20 20 20 20 49 63 45  64 5f 49 63 6f 6e 25 3d  |     IcEd_Icon%=|
0000fad0  a4 72 65 64 65 66 69 6e  65 69 63 6f 6e 28 49 63  |.redefineicon(Ic|
0000fae0  45 64 5f 57 69 6e 25 2c  49 63 45 64 5f 49 63 6f  |Ed_Win%,IcEd_Ico|
0000faf0  6e 25 2c 69 62 25 2d 38  29 0d 07 c2 09 20 20 20  |n%,ib%-8)....   |
0000fb00  20 cc 0d 07 c3 1c 20 20  20 20 20 20 f2 64 69 61  | .....      .dia|
0000fb10  6c 6f 67 75 65 28 34 2c  22 22 2c 22 22 29 0d 07  |logue(4,"","")..|
0000fb20  c4 09 20 20 20 20 cd 0d  07 c5 05 cb 0d 07 c6 20  |..    ......... |
0000fb30  e7 20 a4 69 63 6f 6e 73  65 6c 65 63 74 65 64 28  |. .iconselected(|
0000fb40  49 63 45 64 57 25 2c 34  31 29 20 8c 0d 07 c7 41  |IcEdW%,41) ....A|
0000fb50  20 20 f4 20 66 6f 6e 74  20 63 6f 75 6e 74 20 77  |  . font count w|
0000fb60  61 73 20 69 6e 63 72 65  61 73 65 64 20 65 61 72  |as increased ear|
0000fb70  6c 69 65 72 20 77 68 65  6e 20 66 69 6e 64 69 6e  |lier when findin|
0000fb80  67 20 66 6f 6e 74 20 68  61 6e 64 6c 65 0d 07 c8  |g font handle...|
0000fb90  1a 20 20 f2 66 6f 6e 74  5f 6c 6f 73 65 28 66 68  |.  .font_lose(fh|
0000fba0  61 6e 64 6c 65 25 29 0d  07 c9 05 cd 0d 07 ca 12  |andle%).........|
0000fbb0  f2 73 65 74 63 68 61 6e  67 65 64 28 b9 29 0d 07  |.setchanged(.)..|
0000fbc0  cb 05 e1 0d 07 cc 04 0d  07 cd 18 f4 20 2a 2a 2a  |............ ***|
0000fbd0  20 6d 65 6e 75 20 70 72  6f 63 73 20 2a 2a 2a 0d  | menu procs ***.|
0000fbe0  07 ce 04 0d 07 cf 27 dd  20 a4 6d 65 6e 75 5f 61  |......'. .menu_a|
0000fbf0  64 64 28 74 65 78 74 24  2c 73 75 62 6d 65 6e 75  |dd(text$,submenu|
0000fc00  25 2c 67 65 6e 6d 73 67  25 29 0d 07 d0 0d ea 20  |%,genmsg%)..... |
0000fc10  68 61 6e 64 6c 65 25 0d  07 d1 26 c8 99 20 22 4d  |handle%...&.. "M|
0000fc20  65 6e 75 55 74 69 6c 5f  41 64 64 22 2c 2c 74 65  |enuUtil_Add",,te|
0000fc30  78 74 24 20 b8 20 68 61  6e 64 6c 65 25 0d 07 d2  |xt$ . handle%...|
0000fc40  3b e7 20 73 75 62 6d 65  6e 75 25 3c 3e 2d 31 20  |;. submenu%<>-1 |
0000fc50  8c 20 c8 99 20 22 4d 65  6e 75 55 74 69 6c 5f 53  |. .. "MenuUtil_S|
0000fc60  75 62 4d 65 6e 75 22 2c  68 61 6e 64 6c 65 25 2c  |ubMenu",handle%,|
0000fc70  73 75 62 6d 65 6e 75 25  0d 07 d3 2f e7 20 67 65  |submenu%.../. ge|
0000fc80  6e 6d 73 67 25 20 8c 20  c8 99 20 22 4d 65 6e 75  |nmsg% . .. "Menu|
0000fc90  55 74 69 6c 5f 57 61 72  6e 69 6e 67 22 2c 68 61  |Util_Warning",ha|
0000fca0  6e 64 6c 65 25 2c 31 0d  07 d4 0c 3d 68 61 6e 64  |ndle%,1....=hand|
0000fcb0  6c 65 25 0d 07 d5 04 0d  07 d6 2a dd 20 a4 6d 65  |le%.......*. .me|
0000fcc0  6e 75 5f 61 64 64 77 72  69 74 61 62 6c 65 28 6d  |nu_addwritable(m|
0000fcd0  61 78 6c 65 6e 25 2c 76  61 6c 69 64 73 74 72 25  |axlen%,validstr%|
0000fce0  29 0d 07 d7 0d ea 20 68  61 6e 64 6c 65 25 0d 07  |)..... handle%..|
0000fcf0  d8 23 c8 99 20 22 4d 65  6e 75 55 74 69 6c 5f 41  |.#.. "MenuUtil_A|
0000fd00  64 64 22 2c 2c 22 22 20  b8 20 68 61 6e 64 6c 65  |dd",,"" . handle|
0000fd10  25 0d 07 d9 2f c8 99 20  22 4d 65 6e 75 55 74 69  |%.../.. "MenuUti|
0000fd20  6c 5f 57 72 69 74 61 62  6c 65 22 2c 2c 31 2c 6d  |l_Writable",,1,m|
0000fd30  61 78 6c 65 6e 25 2c 76  61 6c 69 64 73 74 72 25  |axlen%,validstr%|
0000fd40  0d 07 da 0c 3d 68 61 6e  64 6c 65 25 0d 07 db 04  |....=handle%....|
0000fd50  0d 07 dc 13 dd 20 f2 70  72 65 70 61 72 65 6d 65  |..... .prepareme|
0000fd60  6e 75 73 0d 07 dd 08 ea  20 69 25 0d 07 de 22 c8  |nus..... i%...".|
0000fd70  99 20 22 4d 65 6e 75 55  74 69 6c 5f 49 6e 69 74  |. "MenuUtil_Init|
0000fd80  69 61 6c 69 73 65 22 2c  30 31 30 2c 30 0d 07 df  |ialise",010,0...|
0000fd90  2f c8 99 20 22 4d 65 6e  75 55 74 69 6c 5f 4e 65  |/.. "MenuUtil_Ne|
0000fda0  77 22 2c 2c 22 53 70 72  69 74 65 73 22 20 b8 20  |w",,"Sprites" . |
0000fdb0  53 70 72 69 74 65 73 4d  65 6e 75 25 0d 07 e0 2d  |SpritesMenu%...-|
0000fdc0  69 74 65 6d 5f 73 70 72  76 69 65 77 25 3d a4 6d  |item_sprview%=.m|
0000fdd0  65 6e 75 5f 61 64 64 28  22 56 69 65 77 2f 45 64  |enu_add("View/Ed|
0000fde0  69 74 22 2c 2d 31 2c 30  29 0d 07 e1 2d 69 74 65  |it",-1,0)...-ite|
0000fdf0  6d 5f 73 70 72 72 65 6c  6f 61 64 25 3d a4 6d 65  |m_sprreload%=.me|
0000fe00  6e 75 5f 61 64 64 28 22  52 65 2d 6c 6f 61 64 22  |nu_add("Re-load"|
0000fe10  2c 2d 31 2c 30 29 0d 07  e2 2a 69 74 65 6d 5f 73  |,-1,0)...*item_s|
0000fe20  70 72 72 65 73 65 74 25  3d a4 6d 65 6e 75 5f 61  |prreset%=.menu_a|
0000fe30  64 64 28 22 52 65 73 65  74 22 2c 2d 31 2c 30 29  |dd("Reset",-1,0)|
0000fe40  0d 07 e3 16 f4 20 2d 2d  2d 20 69 63 6f 6e 62 61  |..... --- iconba|
0000fe50  72 20 6d 65 6e 75 0d 07  e4 28 c8 99 20 22 4d 65  |r menu...(.. "Me|
0000fe60  6e 75 55 74 69 6c 5f 4e  65 77 22 2c 2c 41 70 70  |nuUtil_New",,App|
0000fe70  6c 24 20 b8 20 4d 61 69  6e 4d 65 6e 75 25 0d 07  |l$ . MainMenu%..|
0000fe80  e5 29 69 74 65 6d 5f 69  6e 66 6f 25 3d a4 6d 65  |.)item_info%=.me|
0000fe90  6e 75 5f 61 64 64 28 22  49 6e 66 6f 22 2c 49 6e  |nu_add("Info",In|
0000fea0  66 6f 57 25 2c 30 29 0d  07 e6 2e 69 74 65 6d 5f  |foW%,0)....item_|
0000feb0  6f 70 74 69 6f 6e 73 25  3d a4 6d 65 6e 75 5f 61  |options%=.menu_a|
0000fec0  64 64 28 22 4f 70 74 69  6f 6e 73 2e 2e 2e 22 2c  |dd("Options...",|
0000fed0  2d 31 2c 30 29 0d 07 e7  2f 69 74 65 6d 5f 73 74  |-1,0).../item_st|
0000fee0  61 74 73 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |ats%=.menu_add("|
0000fef0  53 74 61 74 69 73 74 69  63 73 2e 2e 2e 22 2c 2d  |Statistics...",-|
0000ff00  31 2c 30 29 0d 07 e8 42  69 74 65 6d 5f 63 75 73  |1,0)...Bitem_cus|
0000ff10  74 6f 6d 73 70 72 69 74  65 73 25 3d a4 6d 65 6e  |tomsprites%=.men|
0000ff20  75 5f 61 64 64 28 22 43  75 73 74 6f 6d 20 73 70  |u_add("Custom sp|
0000ff30  72 69 74 65 73 22 2c 53  70 72 69 74 65 73 4d 65  |rites",SpritesMe|
0000ff40  6e 75 25 2c 30 29 0d 07  e9 25 69 74 65 6d 5f 71  |nu%,0)...%item_q|
0000ff50  75 69 74 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |uit%=.menu_add("|
0000ff60  51 75 69 74 22 2c 2d 31  2c 30 29 0d 07 ea 1c f4  |Quit",-1,0).....|
0000ff70  20 2d 2d 2d 20 74 65 6d  70 6c 61 74 65 2d 6e 61  | --- template-na|
0000ff80  6d 65 20 6d 65 6e 75 0d  07 eb 35 c8 99 20 22 4d  |me menu...5.. "M|
0000ff90  65 6e 75 55 74 69 6c 5f  4e 65 77 22 2c 2c 22 20  |enuUtil_New",," |
0000ffa0  20 20 4e 61 6d 65 3a 20  20 20 22 20 b8 20 54 65  |  Name:   " . Te|
0000ffb0  6d 70 6c 4e 61 6d 65 6d  65 6e 75 25 0d 07 ec 2b  |mplNamemenu%...+|
0000ffc0  69 74 65 6d 5f 74 65 6d  70 6c 6e 61 6d 65 25 3d  |item_templname%=|
0000ffd0  a4 6d 65 6e 75 5f 61 64  64 77 72 69 74 61 62 6c  |.menu_addwritabl|
0000ffe0  65 28 31 32 2c 30 29 0d  07 ed 1a f4 20 2d 2d 2d  |e(12,0)..... ---|
0000fff0  20 74 65 6d 70 6c 61 74  65 20 73 75 62 6d 65 6e  | template submen|
00010000  75 0d 07 ee 29 c8 99 20  22 4d 65 6e 75 55 74 69  |u...).. "MenuUti|
00010010  6c 5f 4e 65 77 22 2c 2c  22 22 20 b8 20 54 65 6d  |l_New",,"" . Tem|
00010020  70 6c 53 75 62 6d 65 6e  75 25 0d 07 ef 36 69 74  |plSubmenu%...6it|
00010030  65 6d 5f 63 6f 70 79 74  65 6d 70 6c 25 3d a4 6d  |em_copytempl%=.m|
00010040  65 6e 75 5f 61 64 64 28  22 43 6f 70 79 22 2c 54  |enu_add("Copy",T|
00010050  65 6d 70 6c 4e 61 6d 65  6d 65 6e 75 25 2c 31 29  |emplNamemenu%,1)|
00010060  0d 07 f0 3a 69 74 65 6d  5f 72 65 6e 61 6d 65 74  |...:item_renamet|
00010070  65 6d 70 6c 25 3d a4 6d  65 6e 75 5f 61 64 64 28  |empl%=.menu_add(|
00010080  22 52 65 6e 61 6d 65 22  2c 54 65 6d 70 6c 4e 61  |"Rename",TemplNa|
00010090  6d 65 6d 65 6e 75 25 2c  31 29 0d 07 f1 2e 69 74  |memenu%,1)....it|
000100a0  65 6d 5f 64 65 6c 65 74  65 74 65 6d 70 6c 25 3d  |em_deletetempl%=|
000100b0  a4 6d 65 6e 75 5f 61 64  64 28 22 44 65 6c 65 74  |.menu_add("Delet|
000100c0  65 22 2c 2d 31 2c 30 29  0d 07 f2 2e 69 74 65 6d  |e",-1,0)....item|
000100d0  5f 73 61 76 65 74 65 6d  70 6c 25 3d a4 6d 65 6e  |_savetempl%=.men|
000100e0  75 5f 61 64 64 28 22 53  61 76 65 22 2c 53 61 76  |u_add("Save",Sav|
000100f0  65 57 25 2c 31 29 0d 07  f3 2a 69 74 65 6d 5f 6f  |eW%,1)...*item_o|
00010100  70 65 6e 74 65 6d 70 6c  25 3d a4 6d 65 6e 75 5f  |pentempl%=.menu_|
00010110  61 64 64 28 22 4f 70 65  6e 22 2c 2d 31 2c 30 29  |add("Open",-1,0)|
00010120  0d 07 f4 2c 69 74 65 6d  5f 63 6c 6f 73 65 74 65  |...,item_closete|
00010130  6d 70 6c 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |mpl%=.menu_add("|
00010140  43 6c 6f 73 65 22 2c 2d  31 2c 30 29 0d 07 f5 17  |Close",-1,0)....|
00010150  f4 20 2d 2d 2d 20 74 65  6d 70 6c 61 74 65 20 6d  |. --- template m|
00010160  65 6e 75 0d 07 f6 29 c8  99 20 22 4d 65 6e 75 55  |enu...).. "MenuU|
00010170  74 69 6c 5f 4e 65 77 22  2c 2c 41 70 70 6c 24 20  |til_New",,Appl$ |
00010180  b8 20 54 65 6d 70 6c 4d  65 6e 75 25 0d 07 f7 3a  |. TemplMenu%...:|
00010190  69 74 65 6d 5f 63 72 65  61 74 65 74 65 6d 70 6c  |item_createtempl|
000101a0  25 3d a4 6d 65 6e 75 5f  61 64 64 28 22 43 72 65  |%=.menu_add("Cre|
000101b0  61 74 65 22 2c 54 65 6d  70 6c 4e 61 6d 65 6d 65  |ate",TemplNameme|
000101c0  6e 75 25 2c 31 29 0d 07  f8 30 69 74 65 6d 5f 74  |nu%,1)...0item_t|
000101d0  65 6d 70 6c 61 74 65 25  3d a4 6d 65 6e 75 5f 61  |emplate%=.menu_a|
000101e0  64 64 28 22 22 2c 54 65  6d 70 6c 53 75 62 6d 65  |dd("",TemplSubme|
000101f0  6e 75 25 2c 30 29 0d 07  f9 32 69 74 65 6d 5f 73  |nu%,0)...2item_s|
00010200  65 6c 61 6c 6c 74 65 6d  70 6c 25 3d a4 6d 65 6e  |elalltempl%=.men|
00010210  75 5f 61 64 64 28 22 53  65 6c 65 63 74 20 61 6c  |u_add("Select al|
00010220  6c 22 2c 2d 31 2c 30 29  0d 07 fa 39 69 74 65 6d  |l",-1,0)...9item|
00010230  5f 63 6c 65 61 72 73 65  6c 74 65 6d 70 6c 25 3d  |_clearseltempl%=|
00010240  a4 6d 65 6e 75 5f 61 64  64 28 22 43 6c 65 61 72  |.menu_add("Clear|
00010250  20 73 65 6c 65 63 74 69  6f 6e 22 2c 2d 31 2c 30  | selection",-1,0|
00010260  29 0d 07 fb 30 69 74 65  6d 5f 64 65 6c 65 74 65  |)...0item_delete|
00010270  61 6c 6c 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |all%=.menu_add("|
00010280  44 65 6c 65 74 65 20 61  6c 6c 22 2c 2d 31 2c 30  |Delete all",-1,0|
00010290  29 0d 07 fc 34 69 74 65  6d 5f 73 6f 72 74 74 65  |)...4item_sortte|
000102a0  6d 70 6c 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |mpl%=.menu_add("|
000102b0  53 6f 72 74 20 74 65 6d  70 6c 61 74 65 73 22 2c  |Sort templates",|
000102c0  2d 31 2c 30 29 0d 07 fd  29 69 74 65 6d 5f 73 61  |-1,0)...)item_sa|
000102d0  76 65 25 3d a4 6d 65 6e  75 5f 61 64 64 28 22 53  |ve%=.menu_add("S|
000102e0  61 76 65 22 2c 53 61 76  65 57 25 2c 31 29 0d 07  |ave",SaveW%,1)..|
000102f0  fe 29 f4 20 2d 2d 2d 20  64 69 72 65 63 74 69 6f  |.). --- directio|
00010300  6e 20 6d 65 6e 75 20 66  6f 72 20 69 63 6f 6e 20  |n menu for icon |
00010310  63 6f 70 79 69 6e 67 0d  07 ff 28 c8 99 20 22 4d  |copying...(.. "M|
00010320  65 6e 75 55 74 69 6c 5f  4e 65 77 22 2c 2c 22 43  |enuUtil_New",,"C|
00010330  6f 70 79 22 20 b8 20 44  69 72 4d 65 6e 75 25 0d  |opy" . DirMenu%.|
00010340  08 00 27 69 74 65 6d 5f  75 70 25 3d a4 6d 65 6e  |..'item_up%=.men|
00010350  75 5f 61 64 64 28 22 55  70 20 20 20 20 5e 55 22  |u_add("Up    ^U"|
00010360  2c 2d 31 2c 30 29 0d 08  01 29 69 74 65 6d 5f 64  |,-1,0)...)item_d|
00010370  6f 77 6e 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |own%=.menu_add("|
00010380  44 6f 77 6e 20 20 5e 44  22 2c 2d 31 2c 30 29 0d  |Down  ^D",-1,0).|
00010390  08 02 29 69 74 65 6d 5f  6c 65 66 74 25 3d a4 6d  |..)item_left%=.m|
000103a0  65 6e 75 5f 61 64 64 28  22 4c 65 66 74 20 20 5e  |enu_add("Left  ^|
000103b0  4c 22 2c 2d 31 2c 30 29  0d 08 03 2a 69 74 65 6d  |L",-1,0)...*item|
000103c0  5f 72 69 67 68 74 25 3d  a4 6d 65 6e 75 5f 61 64  |_right%=.menu_ad|
000103d0  64 28 22 52 69 67 68 74  20 5e 52 22 2c 2d 31 2c  |d("Right ^R",-1,|
000103e0  30 29 0d 08 04 23 f4 20  2d 2d 2d 20 6d 65 6e 75  |0)...#. --- menu|
000103f0  20 66 6f 72 20 69 63 6f  6e 20 72 65 6e 75 6d 62  | for icon renumb|
00010400  65 72 69 6e 67 0d 08 05  2b c8 99 20 22 4d 65 6e  |ering...+.. "Men|
00010410  75 55 74 69 6c 5f 4e 65  77 22 2c 2c 22 4e 6f 2e  |uUtil_New",,"No.|
00010420  3a 22 20 b8 20 49 63 6f  6e 4e 72 6d 65 6e 75 25  |:" . IconNrmenu%|
00010430  0d 08 06 32 69 74 65 6d  5f 69 63 6f 6e 6e 72 25  |...2item_iconnr%|
00010440  3d a4 6d 65 6e 75 5f 61  64 64 77 72 69 74 61 62  |=.menu_addwritab|
00010450  6c 65 28 34 2c 4e 75 6d  56 61 6c 69 64 53 74 72  |le(4,NumValidStr|
00010460  25 29 0d 08 07 1a f4 20  2d 2d 2d 20 22 64 69 6d  |%)..... --- "dim|
00010470  65 6e 73 69 6f 6e 22 20  6d 65 6e 75 0d 08 08 2e  |ension" menu....|
00010480  c8 99 20 22 4d 65 6e 75  55 74 69 6c 5f 4e 65 77  |.. "MenuUtil_New|
00010490  22 2c 2c 22 44 69 6d 2e  22 20 b8 20 44 69 6d 65  |",,"Dim." . Dime|
000104a0  6e 73 69 6f 6e 4d 65 6e  75 25 0d 08 09 25 69 74  |nsionMenu%...%it|
000104b0  65 6d 5f 62 6f 74 68 25  3d a4 6d 65 6e 75 5f 61  |em_both%=.menu_a|
000104c0  64 64 28 22 42 6f 74 68  22 2c 2d 31 2c 30 29 0d  |dd("Both",-1,0).|
000104d0  08 0a 22 69 74 65 6d 5f  78 64 69 6d 25 3d a4 6d  |.."item_xdim%=.m|
000104e0  65 6e 75 5f 61 64 64 28  22 58 22 2c 2d 31 2c 30  |enu_add("X",-1,0|
000104f0  29 0d 08 0b 22 69 74 65  6d 5f 79 64 69 6d 25 3d  |)..."item_ydim%=|
00010500  a4 6d 65 6e 75 5f 61 64  64 28 22 59 22 2c 2d 31  |.menu_add("Y",-1|
00010510  2c 30 29 0d 08 0c 1f f4  20 2d 2d 2d 20 75 73 65  |,0)..... --- use|
00010520  72 2d 74 65 6d 70 6c 61  74 65 20 73 75 62 6d 65  |r-template subme|
00010530  6e 75 0d 08 0d 28 c8 99  20 22 4d 65 6e 75 55 74  |nu...(.. "MenuUt|
00010540  69 6c 5f 4e 65 77 22 2c  2c 22 22 20 b8 20 55 73  |il_New",,"" . Us|
00010550  65 72 53 75 62 6d 65 6e  75 25 0d 08 0e 37 69 74  |erSubmenu%...7it|
00010560  65 6d 5f 63 6f 70 79 69  63 6f 6e 25 3d a4 6d 65  |em_copyicon%=.me|
00010570  6e 75 5f 61 64 64 28 22  43 6f 70 79 20 20 20 20  |nu_add("Copy    |
00010580  20 20 5e 43 22 2c 44 69  72 4d 65 6e 75 25 2c 30  |  ^C",DirMenu%,0|
00010590  29 0d 08 0f 3a 69 74 65  6d 5f 72 65 6e 75 6d 62  |)...:item_renumb|
000105a0  65 72 69 63 6f 6e 25 3d  a4 6d 65 6e 75 5f 61 64  |ericon%=.menu_ad|
000105b0  64 28 22 52 65 6e 75 6d  62 65 72 22 2c 49 63 6f  |d("Renumber",Ico|
000105c0  6e 4e 72 6d 65 6e 75 25  2c 30 29 0d 08 10 33 69  |nNrmenu%,0)...3i|
000105d0  74 65 6d 5f 64 65 6c 65  74 65 69 63 6f 6e 25 3d  |tem_deleteicon%=|
000105e0  a4 6d 65 6e 75 5f 61 64  64 28 22 44 65 6c 65 74  |.menu_add("Delet|
000105f0  65 20 20 20 20 5e 58 22  2c 2d 31 2c 30 29 0d 08  |e    ^X",-1,0)..|
00010600  11 31 69 74 65 6d 5f 65  64 69 74 69 63 6f 6e 25  |.1item_editicon%|
00010610  3d a4 6d 65 6e 75 5f 61  64 64 28 22 45 64 69 74  |=.menu_add("Edit|
00010620  2e 2e 2e 20 20 20 5e 45  22 2c 2d 31 2c 30 29 0d  |...   ^E",-1,0).|
00010630  08 12 19 c8 99 20 22 4d  65 6e 75 55 74 69 6c 5f  |..... "MenuUtil_|
00010640  44 6f 74 73 22 2c 2c 31  0d 08 13 33 69 74 65 6d  |Dots",,1...3item|
00010650  5f 61 6c 69 67 6e 25 3d  a4 6d 65 6e 75 5f 61 64  |_align%=.menu_ad|
00010660  64 28 22 41 6c 69 67 6e  20 20 20 20 20 5e 4a 22  |d("Align     ^J"|
00010670  2c 41 6c 69 67 6e 57 25  2c 30 29 0d 08 14 36 69  |,AlignW%,0)...6i|
00010680  74 65 6d 5f 73 70 61 63  65 6f 75 74 25 3d a4 6d  |tem_spaceout%=.m|
00010690  65 6e 75 5f 61 64 64 28  22 53 70 61 63 65 20 6f  |enu_add("Space o|
000106a0  75 74 20 5e 4b 22 2c 53  70 61 63 65 57 25 2c 30  |ut ^K",SpaceW%,0|
000106b0  29 0d 08 15 39 69 74 65  6d 5f 6d 69 6e 73 69 7a  |)...9item_minsiz|
000106c0  65 25 3d a4 6d 65 6e 75  5f 61 64 64 28 22 4d 69  |e%=.menu_add("Mi|
000106d0  6e 2e 20 73 69 7a 65 22  2c 44 69 6d 65 6e 73 69  |n. size",Dimensi|
000106e0  6f 6e 4d 65 6e 75 25 2c  30 29 0d 08 16 39 69 74  |onMenu%,0)...9it|
000106f0  65 6d 5f 63 65 6e 74 65  72 69 63 6f 6e 25 3d a4  |em_centericon%=.|
00010700  6d 65 6e 75 5f 61 64 64  28 22 43 65 6e 74 65 72  |menu_add("Center|
00010710  22 2c 44 69 6d 65 6e 73  69 6f 6e 4d 65 6e 75 25  |",DimensionMenu%|
00010720  2c 30 29 0d 08 17 3a 69  74 65 6d 5f 73 61 6d 65  |,0)...:item_same|
00010730  73 69 7a 65 25 3d a4 6d  65 6e 75 5f 61 64 64 28  |size%=.menu_add(|
00010740  22 53 61 6d 65 20 73 69  7a 65 22 2c 44 69 6d 65  |"Same size",Dime|
00010750  6e 73 69 6f 6e 4d 65 6e  75 25 2c 30 29 0d 08 18  |nsionMenu%,0)...|
00010760  1a f4 20 2d 2d 2d 20 73  70 72 69 74 65 20 61 72  |.. --- sprite ar|
00010770  65 61 20 6d 65 6e 75 0d  08 19 38 c8 99 20 22 4d  |ea menu...8.. "M|
00010780  65 6e 75 55 74 69 6c 5f  4e 65 77 22 2c 2c 22 53  |enuUtil_New",,"S|
00010790  70 72 69 74 65 73 20 66  72 6f 6d 22 20 b8 20 53  |prites from" . S|
000107a0  70 72 69 74 65 41 72 65  61 4d 65 6e 75 25 20 0d  |priteAreaMenu% .|
000107b0  08 1a 2e 69 74 65 6d 5f  77 69 6d 70 61 72 65 61  |...item_wimparea|
000107c0  25 3d a4 6d 65 6e 75 5f  61 64 64 28 22 57 69 6d  |%=.menu_add("Wim|
000107d0  70 20 61 72 65 61 22 2c  2d 31 2c 30 29 0d 08 1b  |p area",-1,0)...|
000107e0  32 69 74 65 6d 5f 63 75  73 74 6f 6d 61 72 65 61  |2item_customarea|
000107f0  25 3d a4 6d 65 6e 75 5f  61 64 64 28 22 43 75 73  |%=.menu_add("Cus|
00010800  74 6f 6d 20 61 72 65 61  22 2c 2d 31 2c 30 29 0d  |tom area",-1,0).|
00010810  08 1c 18 f4 20 2d 2d 2d  20 22 4d 69 73 63 22 20  |.... --- "Misc" |
00010820  73 75 62 6d 65 6e 75 0d  08 1d 29 c8 99 20 22 4d  |submenu...).. "M|
00010830  65 6e 75 55 74 69 6c 5f  4e 65 77 22 2c 2c 22 4d  |enuUtil_New",,"M|
00010840  69 73 63 22 20 b8 20 4d  69 73 63 4d 65 6e 75 25  |isc" . MiscMenu%|
00010850  0d 08 1e 36 69 74 65 6d  5f 63 65 6e 74 65 72 77  |...6item_centerw|
00010860  69 6e 25 3d a4 6d 65 6e  75 5f 61 64 64 28 22 43  |in%=.menu_add("C|
00010870  65 6e 74 65 72 20 74 6f  20 73 63 72 65 65 6e 22  |enter to screen"|
00010880  2c 2d 31 2c 30 29 0d 08  1f 3f 69 74 65 6d 5f 73  |,-1,0)...?item_s|
00010890  70 72 69 74 65 61 72 65  61 25 3d a4 6d 65 6e 75  |pritearea%=.menu|
000108a0  5f 61 64 64 28 22 53 70  72 69 74 65 20 61 72 65  |_add("Sprite are|
000108b0  61 22 2c 53 70 72 69 74  65 41 72 65 61 4d 65 6e  |a",SpriteAreaMen|
000108c0  75 25 2c 30 29 0d 08 20  30 69 74 65 6d 5f 74 69  |u%,0).. 0item_ti|
000108d0  64 79 69 63 6f 6e 73 25  3d a4 6d 65 6e 75 5f 61  |dyicons%=.menu_a|
000108e0  64 64 28 22 54 69 64 79  20 69 63 6f 6e 73 22 2c  |dd("Tidy icons",|
000108f0  2d 31 2c 30 29 0d 08 21  1c f4 20 2d 2d 2d 20 75  |-1,0)..!.. --- u|
00010900  73 65 72 2d 74 65 6d 70  6c 61 74 65 20 6d 65 6e  |ser-template men|
00010910  75 0d 08 22 15 f2 73 74  61 6e 64 61 72 64 69 63  |u.."..standardic|
00010920  6f 6e 6d 65 6e 75 0d 08  23 2b c8 99 20 22 4d 65  |onmenu..#+.. "Me|
00010930  6e 75 55 74 69 6c 5f 4e  65 77 22 2c 2c 22 57 69  |nuUtil_New",,"Wi|
00010940  6e 64 6f 77 22 20 b8 20  55 73 65 72 4d 65 6e 75  |ndow" . UserMenu|
00010950  25 0d 08 24 15 e7 20 4e  72 53 74 64 49 63 6f 6e  |%..$.. NrStdIcon|
00010960  73 25 3d 30 20 8c 0d 08  25 34 20 20 69 74 65 6d  |s%=0 ...%4  item|
00010970  5f 63 72 65 61 74 65 69  63 6f 6e 25 3d a4 6d 65  |_createicon%=.me|
00010980  6e 75 5f 61 64 64 28 22  43 72 65 61 74 65 20 69  |nu_add("Create i|
00010990  63 6f 6e 22 2c 2d 31 2c  30 29 0d 08 26 05 cc 0d  |con",-1,0)..&...|
000109a0  08 27 3e 20 20 69 74 65  6d 5f 63 72 65 61 74 65  |.'>  item_create|
000109b0  69 63 6f 6e 25 3d a4 6d  65 6e 75 5f 61 64 64 28  |icon%=.menu_add(|
000109c0  22 43 72 65 61 74 65 20  69 63 6f 6e 22 2c 53 74  |"Create icon",St|
000109d0  64 49 63 6f 6e 4d 65 6e  75 25 2c 30 29 0d 08 28  |dIconMenu%,0)..(|
000109e0  05 cd 0d 08 29 2b 69 74  65 6d 5f 69 63 6f 6e 25  |....)+item_icon%|
000109f0  3d a4 6d 65 6e 75 5f 61  64 64 28 22 22 2c 55 73  |=.menu_add("",Us|
00010a00  65 72 53 75 62 6d 65 6e  75 25 2c 30 29 0d 08 2a  |erSubmenu%,0)..*|
00010a10  3b 69 74 65 6d 5f 73 65  6c 61 6c 6c 69 63 6f 6e  |;item_selallicon|
00010a20  73 25 3d a4 6d 65 6e 75  5f 61 64 64 28 22 53 65  |s%=.menu_add("Se|
00010a30  6c 65 63 74 20 61 6c 6c  20 20 20 20 20 20 20 5e  |lect all       ^|
00010a40  41 22 2c 2d 31 2c 30 29  0d 08 2b 3d 69 74 65 6d  |A",-1,0)..+=item|
00010a50  5f 63 6c 65 61 72 73 65  6c 69 63 6f 6e 73 25 3d  |_clearselicons%=|
00010a60  a4 6d 65 6e 75 5f 61 64  64 28 22 43 6c 65 61 72  |.menu_add("Clear|
00010a70  20 73 65 6c 65 63 74 69  6f 6e 20 20 5e 5a 22 2c  | selection  ^Z",|
00010a80  2d 31 2c 30 29 0d 08 2c  2c c8 99 20 22 4d 65 6e  |-1,0)..,,.. "Men|
00010a90  75 55 74 69 6c 5f 44 6f  74 73 22 2c 69 74 65 6d  |uUtil_Dots",item|
00010aa0  5f 63 6c 65 61 72 73 65  6c 69 63 6f 6e 73 25 2c  |_clearselicons%,|
00010ab0  31 0d 08 2d 32 69 74 65  6d 5f 77 6f 72 6b 61 72  |1..-2item_workar|
00010ac0  65 61 25 3d a4 6d 65 6e  75 5f 61 64 64 28 22 57  |ea%=.menu_add("W|
00010ad0  6f 72 6b 20 61 72 65 61  22 2c 57 6f 72 6b 57 25  |ork area",WorkW%|
00010ae0  2c 31 29 0d 08 2e 3a 69  74 65 6d 5f 65 64 69 74  |,1)...:item_edit|
00010af0  77 69 6e 64 6f 77 25 3d  a4 6d 65 6e 75 5f 61 64  |window%=.menu_ad|
00010b00  64 28 22 45 64 69 74 20  77 69 6e 64 6f 77 2e 2e  |d("Edit window..|
00010b10  2e 20 20 20 5e 57 22 2c  2d 31 2c 30 29 0d 08 2f  |.   ^W",-1,0)../|
00010b20  39 69 74 65 6d 5f 65 64  69 74 74 69 74 6c 65 25  |9item_edittitle%|
00010b30  3d a4 6d 65 6e 75 5f 61  64 64 28 22 45 64 69 74  |=.menu_add("Edit|
00010b40  20 74 69 74 6c 65 2e 2e  2e 20 20 20 20 5e 54 22  | title...    ^T"|
00010b50  2c 2d 31 2c 30 29 0d 08  30 2c 69 74 65 6d 5f 6d  |,-1,0)..0,item_m|
00010b60  69 73 63 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |isc%=.menu_add("|
00010b70  4d 69 73 63 22 2c 4d 69  73 63 4d 65 6e 75 25 2c  |Misc",MiscMenu%,|
00010b80  30 29 0d 08 31 38 69 74  65 6d 5f 63 6c 6f 73 65  |0)..18item_close|
00010b90  77 69 6e 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |win%=.menu_add("|
00010ba0  43 6c 6f 73 65 20 77 69  6e 64 6f 77 20 20 20 20  |Close window    |
00010bb0  20 5e 51 22 2c 2d 31 2c  30 29 0d 08 32 25 f4 20  | ^Q",-1,0)..2%. |
00010bc0  2d 2d 2d 20 6d 65 6e 75  20 77 69 74 68 20 69 63  |--- menu with ic|
00010bd0  6f 6e 20 62 75 74 74 6f  6e 2d 74 79 70 65 73 0d  |on button-types.|
00010be0  08 33 34 c8 99 20 22 4d  65 6e 75 55 74 69 6c 5f  |.34.. "MenuUtil_|
00010bf0  4e 65 77 22 2c 2c 22 42  75 74 74 6f 6e 20 74 79  |New",,"Button ty|
00010c00  70 65 22 20 b8 20 49 63  42 75 74 74 6f 6e 4d 65  |pe" . IcButtonMe|
00010c10  6e 75 25 0d 08 34 0f e3  20 69 25 3d 30 20 b8 20  |nu%..4.. i%=0 . |
00010c20  31 35 0d 08 35 2f 20 20  64 75 6d 6d 79 25 3d a4  |15..5/  dummy%=.|
00010c30  6d 65 6e 75 5f 61 64 64  28 24 28 49 63 42 75 74  |menu_add($(IcBut|
00010c40  74 6f 6e 25 2b 32 30 2a  69 25 29 2c 2d 31 2c 30  |ton%+20*i%),-1,0|
00010c50  29 0d 08 36 08 ed 20 69  25 0d 08 37 27 f4 20 2d  |)..6.. i%..7'. -|
00010c60  2d 2d 20 6d 65 6e 75 20  77 69 74 68 20 77 69 6e  |-- menu with win|
00010c70  64 6f 77 20 62 75 74 74  6f 6e 2d 74 79 70 65 73  |dow button-types|
00010c80  0d 08 38 35 c8 99 20 22  4d 65 6e 75 55 74 69 6c  |..85.. "MenuUtil|
00010c90  5f 4e 65 77 22 2c 2c 22  42 75 74 74 6f 6e 20 74  |_New",,"Button t|
00010ca0  79 70 65 22 20 b8 20 57  69 6e 42 75 74 74 6f 6e  |ype" . WinButton|
00010cb0  4d 65 6e 75 25 0d 08 39  0f e3 20 69 25 3d 30 20  |Menu%..9.. i%=0 |
00010cc0  b8 20 31 35 0d 08 3a 30  20 20 64 75 6d 6d 79 25  |. 15..:0  dummy%|
00010cd0  3d a4 6d 65 6e 75 5f 61  64 64 28 24 28 57 69 6e  |=.menu_add($(Win|
00010ce0  42 75 74 74 6f 6e 25 2b  32 30 2a 69 25 29 2c 2d  |Button%+20*i%),-|
00010cf0  31 2c 30 29 0d 08 3b 08  ed 20 69 25 0d 08 3c 37  |1,0)..;.. i%..<7|
00010d00  f4 20 2d 2d 2d 20 61 63  74 75 61 6c 20 45 53 47  |. --- actual ESG|
00010d10  20 6d 65 6e 75 20 69 73  20 62 75 69 6c 74 20 77  | menu is built w|
00010d20  68 65 6e 20 4d 65 6e 75  20 69 73 20 63 6c 69 63  |hen Menu is clic|
00010d30  6b 65 64 0d 08 3d 0e 45  73 67 4d 65 6e 75 25 3d  |ked..=.EsgMenu%=|
00010d40  30 0d 08 3e 3a f4 20 2d  2d 2d 20 61 63 74 75 61  |0..>:. --- actua|
00010d50  6c 20 63 6f 6c 6f 75 72  20 6d 65 6e 75 20 69 73  |l colour menu is|
00010d60  20 62 75 69 6c 74 20 77  68 65 6e 20 4d 65 6e 75  | built when Menu|
00010d70  20 69 73 20 63 6c 69 63  6b 65 64 0d 08 3f 11 43  | is clicked..?.C|
00010d80  6f 6c 6f 75 72 4d 65 6e  75 25 3d 30 0d 08 40 13  |olourMenu%=0..@.|
00010d90  f4 20 2d 2d 2d 20 66 6f  6e 74 20 6d 65 6e 75 0d  |. --- font menu.|
00010da0  08 41 0d f2 66 6f 6e 74  6d 65 6e 75 0d 08 42 18  |.A..fontmenu..B.|
00010db0  f4 20 2d 2d 2d 20 66 6f  6e 74 20 73 69 7a 65 20  |. --- font size |
00010dc0  6d 65 6e 75 0d 08 43 2d  c8 99 20 22 4d 65 6e 75  |menu..C-.. "Menu|
00010dd0  55 74 69 6c 5f 4e 65 77  22 2c 2c 22 53 69 7a 65  |Util_New",,"Size|
00010de0  22 20 b8 20 46 6f 6e 74  53 69 7a 65 6d 65 6e 75  |" . FontSizemenu|
00010df0  25 0d 08 44 1d c8 99 20  22 4d 65 6e 75 55 74 69  |%..D... "MenuUti|
00010e00  6c 5f 41 64 64 22 2c 2c  22 31 30 70 74 22 0d 08  |l_Add",,"10pt"..|
00010e10  45 1d c8 99 20 22 4d 65  6e 75 55 74 69 6c 5f 41  |E... "MenuUtil_A|
00010e20  64 64 22 2c 2c 22 31 32  70 74 22 0d 08 46 1d c8  |dd",,"12pt"..F..|
00010e30  99 20 22 4d 65 6e 75 55  74 69 6c 5f 41 64 64 22  |. "MenuUtil_Add"|
00010e40  2c 2c 22 31 36 70 74 22  0d 08 47 1d c8 99 20 22  |,,"16pt"..G... "|
00010e50  4d 65 6e 75 55 74 69 6c  5f 41 64 64 22 2c 2c 22  |MenuUtil_Add",,"|
00010e60  32 30 70 74 22 0d 08 48  1d c8 99 20 22 4d 65 6e  |20pt"..H... "Men|
00010e70  75 55 74 69 6c 5f 41 64  64 22 2c 2c 22 32 34 70  |uUtil_Add",,"24p|
00010e80  74 22 0d 08 49 1d c8 99  20 22 4d 65 6e 75 55 74  |t"..I... "MenuUt|
00010e90  69 6c 5f 41 64 64 22 2c  2c 22 33 36 70 74 22 0d  |il_Add",,"36pt".|
00010ea0  08 4a 36 69 74 65 6d 5f  66 6f 6e 74 73 69 7a 65  |.J6item_fontsize|
00010eb0  25 3d a4 6d 65 6e 75 5f  61 64 64 77 72 69 74 61  |%=.menu_addwrita|
00010ec0  62 6c 65 28 35 2c 46 70  4e 75 6d 56 61 6c 69 64  |ble(5,FpNumValid|
00010ed0  53 74 72 25 29 0d 08 4b  22 f4 20 2d 2d 2d 20 22  |Str%)..K". --- "|
00010ee0  70 61 72 74 69 61 6c 20  75 70 64 61 74 65 22 20  |partial update" |
00010ef0  73 75 62 6d 65 6e 75 0d  08 4c 2f c8 99 20 22 4d  |submenu..L/.. "M|
00010f00  65 6e 75 55 74 69 6c 5f  4e 65 77 22 2c 2c 22 4f  |enuUtil_New",,"O|
00010f10  74 68 65 72 22 20 b8 20  55 70 64 61 74 65 53 75  |ther" . UpdateSu|
00010f20  62 6d 65 6e 75 25 0d 08  4d 28 69 74 65 6d 5f 75  |bmenu%..M(item_u|
00010f30  70 64 62 6f 25 3d a4 6d  65 6e 75 5f 61 64 64 28  |pdbo%=.menu_add(|
00010f40  22 42 6f 72 64 65 72 22  2c 2d 31 2c 30 29 0d 08  |"Border",-1,0)..|
00010f50  4e 28 69 74 65 6d 5f 75  70 64 66 69 25 3d a4 6d  |N(item_updfi%=.m|
00010f60  65 6e 75 5f 61 64 64 28  22 46 69 6c 6c 65 64 22  |enu_add("Filled"|
00010f70  2c 2d 31 2c 30 29 0d 08  4f 2a 69 74 65 6d 5f 75  |,-1,0)..O*item_u|
00010f80  70 64 68 63 25 3d a4 6d  65 6e 75 5f 61 64 64 28  |pdhc%=.menu_add(|
00010f90  22 48 20 63 65 6e 74 72  65 22 2c 2d 31 2c 30 29  |"H centre",-1,0)|
00010fa0  0d 08 50 2a 69 74 65 6d  5f 75 70 64 76 63 25 3d  |..P*item_updvc%=|
00010fb0  a4 6d 65 6e 75 5f 61 64  64 28 22 56 20 63 65 6e  |.menu_add("V cen|
00010fc0  74 72 65 22 2c 2d 31 2c  30 29 0d 08 51 2d 69 74  |tre",-1,0)..Q-it|
00010fd0  65 6d 5f 75 70 64 72 6a  25 3d a4 6d 65 6e 75 5f  |em_updrj%=.menu_|
00010fe0  61 64 64 28 22 52 20 6a  75 73 74 69 66 69 65 64  |add("R justified|
00010ff0  22 2c 2d 31 2c 30 29 0d  08 52 2c 69 74 65 6d 5f  |",-1,0)..R,item_|
00011000  75 70 64 6e 68 25 3d a4  6d 65 6e 75 5f 61 64 64  |updnh%=.menu_add|
00011010  28 22 4e 65 65 64 73 20  68 65 6c 70 22 2c 2d 31  |("Needs help",-1|
00011020  2c 30 29 0d 08 53 2e 69  74 65 6d 5f 75 70 64 61  |,0)..S.item_upda|
00011030  61 25 3d a4 6d 65 6e 75  5f 61 64 64 28 22 41 6c  |a%=.menu_add("Al|
00011040  6c 6f 77 20 61 64 6a 75  73 74 22 2c 2d 31 2c 30  |low adjust",-1,0|
00011050  29 0d 08 54 2b 69 74 65  6d 5f 75 70 64 68 73 25  |)..T+item_updhs%|
00011060  3d a4 6d 65 6e 75 5f 61  64 64 28 22 48 61 6c 66  |=.menu_add("Half|
00011070  20 73 69 7a 65 22 2c 2d  31 2c 30 29 0d 08 55 28  | size",-1,0)..U(|
00011080  69 74 65 6d 5f 75 70 64  73 68 25 3d a4 6d 65 6e  |item_updsh%=.men|
00011090  75 5f 61 64 64 28 22 53  68 61 64 65 64 22 2c 2d  |u_add("Shaded",-|
000110a0  31 2c 30 29 0d 08 56 1f  f4 20 2d 2d 2d 20 22 70  |1,0)..V.. --- "p|
000110b0  61 72 74 69 61 6c 20 75  70 64 61 74 65 22 20 6d  |artial update" m|
000110c0  65 6e 75 0d 08 57 2d c8  99 20 22 4d 65 6e 75 55  |enu..W-.. "MenuU|
000110d0  74 69 6c 5f 4e 65 77 22  2c 2c 22 55 70 64 61 74  |til_New",,"Updat|
000110e0  65 22 20 b8 20 55 70 64  61 74 65 6d 65 6e 75 25  |e" . Updatemenu%|
000110f0  0d 08 58 2d 69 74 65 6d  5f 75 70 64 62 74 25 3d  |..X-item_updbt%=|
00011100  a4 6d 65 6e 75 5f 61 64  64 28 22 42 75 74 74 6f  |.menu_add("Butto|
00011110  6e 20 74 79 70 65 22 2c  2d 31 2c 30 29 0d 08 59  |n type",-1,0)..Y|
00011120  26 69 74 65 6d 5f 75 70  64 65 73 67 25 3d a4 6d  |&item_updesg%=.m|
00011130  65 6e 75 5f 61 64 64 28  22 45 53 47 22 2c 2d 31  |enu_add("ESG",-1|
00011140  2c 30 29 0d 08 5a 28 69  74 65 6d 5f 75 70 64 66  |,0)..Z(item_updf|
00011150  67 25 3d a4 6d 65 6e 75  5f 61 64 64 28 22 46 67  |g%=.menu_add("Fg|
00011160  20 63 6f 6c 22 2c 2d 31  2c 30 29 0d 08 5b 28 69  | col",-1,0)..[(i|
00011170  74 65 6d 5f 75 70 64 62  67 25 3d a4 6d 65 6e 75  |tem_updbg%=.menu|
00011180  5f 61 64 64 28 22 42 67  20 63 6f 6c 22 2c 2d 31  |_add("Bg col",-1|
00011190  2c 30 29 0d 08 5c 28 69  74 65 6d 5f 75 70 64 66  |,0)..\(item_updf|
000111a0  6f 6e 74 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |ont%=.menu_add("|
000111b0  46 6f 6e 74 22 2c 2d 31  2c 30 29 0d 08 5d 3b 69  |Font",-1,0)..];i|
000111c0  74 65 6d 5f 75 70 64 72  65 73 74 25 3d a4 6d 65  |tem_updrest%=.me|
000111d0  6e 75 5f 61 64 64 28 22  4f 74 68 65 72 20 66 6c  |nu_add("Other fl|
000111e0  61 67 73 22 2c 55 70 64  61 74 65 53 75 62 6d 65  |ags",UpdateSubme|
000111f0  6e 75 25 2c 30 29 0d 08  5e 05 e1 0d 08 5f 04 0d  |nu%,0)..^...._..|
00011200  08 60 0f dd 20 f2 6d 61  69 6e 6d 65 6e 75 0d 08  |.`.. .mainmenu..|
00011210  61 31 c8 99 20 22 4d 65  6e 75 55 74 69 6c 5f 46  |a1.. "MenuUtil_F|
00011220  61 64 65 22 2c 69 74 65  6d 5f 73 74 61 74 73 25  |ade",item_stats%|
00011230  2c 4e 72 54 65 6d 70 6c  61 74 65 73 25 3d 30 0d  |,NrTemplates%=0.|
00011240  08 62 39 c8 99 20 22 4d  65 6e 75 55 74 69 6c 5f  |.b9.. "MenuUtil_|
00011250  46 61 64 65 22 2c 69 74  65 6d 5f 63 75 73 74 6f  |Fade",item_custo|
00011260  6d 73 70 72 69 74 65 73  25 2c 55 73 65 72 53 70  |msprites%,UserSp|
00011270  72 69 74 65 73 25 3d 31  0d 08 63 05 e1 0d 08 64  |rites%=1..c....d|
00011280  04 0d 08 65 2a dd 20 f2  74 65 6d 70 6c 61 74 65  |...e*. .template|
00011290  6d 65 6e 75 28 f8 20 78  70 6f 73 25 2c f8 20 79  |menu(. xpos%,. y|
000112a0  70 6f 73 25 2c 69 63 6f  6e 25 29 0d 08 66 08 ea  |pos%,icon%)..f..|
000112b0  20 74 24 0d 08 67 15 f2  73 65 6c 5f 67 65 74 28  | t$..g..sel_get(|
000112c0  54 65 6d 70 6c 57 25 29  0d 08 68 24 e7 20 28 4e  |TemplW%)..h$. (N|
000112d0  72 53 65 6c 65 63 74 65  64 25 3d 30 29 20 80 20  |rSelected%=0) . |
000112e0  28 69 63 6f 6e 25 3e 3d  30 29 20 8c 0d 08 69 22  |(icon%>=0) ...i"|
000112f0  20 20 f2 73 65 6c 65 63  74 69 63 6f 6e 28 54 65  |  .selecticon(Te|
00011300  6d 70 6c 57 25 2c 69 63  6f 6e 25 2c 31 29 0d 08  |mplW%,icon%,1)..|
00011310  6a 15 20 20 53 65 6c 42  6c 6b 25 21 30 3d 69 63  |j.  SelBlk%!0=ic|
00011320  6f 6e 25 0d 08 6b 13 20  20 4e 72 53 65 6c 65 63  |on%..k.  NrSelec|
00011330  74 65 64 25 3d 31 0d 08  6c 44 20 20 54 65 6d 70  |ted%=1..lD  Temp|
00011340  6c 4d 65 6e 75 5f 44 65  73 65 6c 65 63 74 25 3d  |lMenu_Deselect%=|
00011350  b9 20 20 3a 20 f4 20 64  65 73 65 6c 65 63 74 20  |.  : . deselect |
00011360  69 63 6f 6e 20 77 68 65  6e 20 6d 65 6e 75 20 69  |icon when menu i|
00011370  73 20 72 65 6d 6f 76 65  64 3f 0d 08 6d 05 cc 0d  |s removed?..m...|
00011380  08 6e 1b 20 20 54 65 6d  70 6c 4d 65 6e 75 5f 44  |.n.  TemplMenu_D|
00011390  65 73 65 6c 65 63 74 25  3d a3 0d 08 6f 05 cd 0d  |eselect%=...o...|
000113a0  08 70 09 74 24 3d 22 22  0d 08 71 15 e7 20 4e 72  |.p.t$=""..q.. Nr|
000113b0  53 65 6c 65 63 74 65 64  25 3e 31 20 8c 0d 08 72  |Selected%>1 ...r|
000113c0  14 20 20 74 24 3d 22 53  65 6c 65 63 74 69 6f 6e  |.  t$="Selection|
000113d0  22 0d 08 73 05 cc 0d 08  74 17 20 20 e7 20 4e 72  |"..s....t.  . Nr|
000113e0  53 65 6c 65 63 74 65 64  25 3d 31 20 8c 0d 08 75  |Selected%=1 ...u|
000113f0  28 20 20 20 20 74 24 3d  24 28 54 65 6d 70 6c 4e  |(    t$=$(TemplN|
00011400  61 6d 65 73 25 2b 32 38  2a 28 53 65 6c 42 6c 6b  |ames%+28*(SelBlk|
00011410  25 21 30 29 29 0d 08 76  07 20 20 cd 0d 08 77 05  |%!0))..v.  ...w.|
00011420  cd 0d 08 78 27 c8 99 20  22 4d 65 6e 75 55 74 69  |...x'.. "MenuUti|
00011430  6c 5f 54 65 78 74 22 2c  54 65 6d 70 6c 53 75 62  |l_Text",TemplSub|
00011440  6d 65 6e 75 25 2c 74 24  0d 08 79 35 c8 99 20 22  |menu%,t$..y5.. "|
00011450  4d 65 6e 75 55 74 69 6c  5f 46 61 64 65 22 2c 69  |MenuUtil_Fade",i|
00011460  74 65 6d 5f 63 6f 70 79  74 65 6d 70 6c 25 2c 4e  |tem_copytempl%,N|
00011470  72 53 65 6c 65 63 74 65  64 25 3c 3e 31 0d 08 7a  |rSelected%<>1..z|
00011480  37 c8 99 20 22 4d 65 6e  75 55 74 69 6c 5f 46 61  |7.. "MenuUtil_Fa|
00011490  64 65 22 2c 69 74 65 6d  5f 72 65 6e 61 6d 65 74  |de",item_renamet|
000114a0  65 6d 70 6c 25 2c 4e 72  53 65 6c 65 63 74 65 64  |empl%,NrSelected|
000114b0  25 3c 3e 31 0d 08 7b 10  53 65 6c 46 4e 61 6d 65  |%<>1..{.SelFName|
000114c0  24 3d 74 24 0d 08 7c 15  e7 20 4e 72 53 65 6c 65  |$=t$..|.. NrSele|
000114d0  63 74 65 64 25 3e 31 20  8c 0d 08 7d 33 20 20 c8  |cted%>1 ...}3  .|
000114e0  99 20 22 4d 65 6e 75 55  74 69 6c 5f 54 65 78 74  |. "MenuUtil_Text|
000114f0  22 2c 69 74 65 6d 5f 74  65 6d 70 6c 61 74 65 25  |",item_template%|
00011500  2c 22 53 65 6c 65 63 74  69 6f 6e 22 0d 08 7e 05  |,"Selection"..~.|
00011510  cc 0d 08 7f 3b 20 20 c8  99 20 22 4d 65 6e 75 55  |....;  .. "MenuU|
00011520  74 69 6c 5f 54 65 78 74  22 2c 69 74 65 6d 5f 74  |til_Text",item_t|
00011530  65 6d 70 6c 61 74 65 25  2c 22 54 65 6d 70 6c 61  |emplate%,"Templa|
00011540  74 65 20 27 22 2b 74 24  2b 22 27 22 0d 08 80 05  |te '"+t$+"'"....|
00011550  cd 0d 08 81 2d c8 99 20  22 4d 65 6e 75 55 74 69  |....-.. "MenuUti|
00011560  6c 5f 46 61 64 65 22 2c  69 74 65 6d 5f 74 65 6d  |l_Fade",item_tem|
00011570  70 6c 61 74 65 25 2c a9  28 74 24 29 3d 30 0d 08  |plate%,.(t$)=0..|
00011580  82 37 c8 99 20 22 4d 65  6e 75 55 74 69 6c 5f 46  |.7.. "MenuUtil_F|
00011590  61 64 65 22 2c 69 74 65  6d 5f 73 65 6c 61 6c 6c  |ade",item_selall|
000115a0  74 65 6d 70 6c 25 2c 4e  72 54 65 6d 70 6c 61 74  |templ%,NrTemplat|
000115b0  65 73 25 3d 30 0d 08 83  38 c8 99 20 22 4d 65 6e  |es%=0...8.. "Men|
000115c0  75 55 74 69 6c 5f 46 61  64 65 22 2c 69 74 65 6d  |uUtil_Fade",item|
000115d0  5f 63 6c 65 61 72 73 65  6c 74 65 6d 70 6c 25 2c  |_clearseltempl%,|
000115e0  4e 72 53 65 6c 65 63 74  65 64 25 3d 30 0d 08 84  |NrSelected%=0...|
000115f0  35 c8 99 20 22 4d 65 6e  75 55 74 69 6c 5f 46 61  |5.. "MenuUtil_Fa|
00011600  64 65 22 2c 69 74 65 6d  5f 64 65 6c 65 74 65 61  |de",item_deletea|
00011610  6c 6c 25 2c 4e 72 54 65  6d 70 6c 61 74 65 73 25  |ll%,NrTemplates%|
00011620  3d 30 0d 08 85 35 c8 99  20 22 4d 65 6e 75 55 74  |=0...5.. "MenuUt|
00011630  69 6c 5f 46 61 64 65 22  2c 69 74 65 6d 5f 73 6f  |il_Fade",item_so|
00011640  72 74 74 65 6d 70 6c 25  2c 4e 72 54 65 6d 70 6c  |rttempl%,NrTempl|
00011650  61 74 65 73 25 3d 30 0d  08 86 30 c8 99 20 22 4d  |ates%=0...0.. "M|
00011660  65 6e 75 55 74 69 6c 5f  46 61 64 65 22 2c 69 74  |enuUtil_Fade",it|
00011670  65 6d 5f 73 61 76 65 25  2c 4e 72 54 65 6d 70 6c  |em_save%,NrTempl|
00011680  61 74 65 73 25 3d 30 0d  08 87 14 51 75 69 74 41  |ates%=0....QuitA|
00011690  66 74 65 72 53 61 76 65  25 3d a3 0d 08 88 0d 78  |fterSave%=.....x|
000116a0  70 6f 73 25 2d 3d 36 34  0d 08 89 15 e7 20 4e 72  |pos%-=64..... Nr|
000116b0  53 65 6c 65 63 74 65 64  25 3d 30 20 8c 0d 08 8a  |Selected%=0 ....|
000116c0  0f 20 20 79 70 6f 73 25  2b 3d 32 32 0d 08 8b 05  |.  ypos%+=22....|
000116d0  cc 0d 08 8c 0f 20 20 79  70 6f 73 25 2b 3d 36 36  |.....  ypos%+=66|
000116e0  0d 08 8d 05 cd 0d 08 8e  05 e1 0d 08 8f 04 0d 08  |................|
000116f0  90 2e dd 20 f2 75 73 65  72 6d 65 6e 75 28 f8 20  |... .usermenu(. |
00011700  78 70 6f 73 25 2c f8 20  79 70 6f 73 25 2c 77 69  |xpos%,. ypos%,wi|
00011710  6e 64 6f 77 25 2c 69 63  6f 6e 25 29 0d 08 91 0c  |ndow%,icon%)....|
00011720  ea 20 74 24 2c 73 74 24  0d 08 92 15 f2 73 65 6c  |. t$,st$.....sel|
00011730  5f 67 65 74 28 77 69 6e  64 6f 77 25 29 0d 08 93  |_get(window%)...|
00011740  24 e7 20 28 4e 72 53 65  6c 65 63 74 65 64 25 3d  |$. (NrSelected%=|
00011750  30 29 20 80 20 28 69 63  6f 6e 25 3e 3d 30 29 20  |0) . (icon%>=0) |
00011760  8c 0d 08 94 15 20 20 53  65 6c 42 6c 6b 25 21 30  |.....  SelBlk%!0|
00011770  3d 69 63 6f 6e 25 0d 08  95 13 20 20 4e 72 53 65  |=icon%....  NrSe|
00011780  6c 65 63 74 65 64 25 3d  31 0d 08 96 05 cd 0d 08  |lected%=1.......|
00011790  97 14 c8 8e 20 4e 72 53  65 6c 65 63 74 65 64 25  |.... NrSelected%|
000117a0  20 ca 0d 08 98 09 20 20  c9 20 30 0d 08 99 14 20  | .....  . 0.... |
000117b0  20 20 20 74 24 3d 22 4e  6f 20 69 63 6f 6e 22 0d  |   t$="No icon".|
000117c0  08 9a 0e 20 20 20 20 73  74 24 3d 74 24 0d 08 9b  |...    st$=t$...|
000117d0  09 20 20 c9 20 31 0d 08  9c 20 20 20 20 20 74 24  |.  . 1...     t$|
000117e0  3d 22 49 63 6f 6e 20 23  22 2b c3 28 53 65 6c 42  |="Icon #"+.(SelB|
000117f0  6c 6b 25 21 30 29 0d 08  9d 0e 20 20 20 20 73 74  |lk%!0)....    st|
00011800  24 3d 74 24 0d 08 9e 07  20 20 7f 0d 08 9f 16 20  |$=t$....  ..... |
00011810  20 20 20 74 24 3d 22 53  65 6c 65 63 74 69 6f 6e  |   t$="Selection|
00011820  22 0d 08 a0 23 20 20 20  20 73 74 24 3d c3 28 4e  |"...#    st$=.(N|
00011830  72 53 65 6c 65 63 74 65  64 25 29 2b 22 20 69 63  |rSelected%)+" ic|
00011840  6f 6e 73 22 0d 08 a1 05  cb 0d 08 a2 27 c8 99 20  |ons"........'.. |
00011850  22 4d 65 6e 75 55 74 69  6c 5f 54 65 78 74 22 2c  |"MenuUtil_Text",|
00011860  55 73 65 72 53 75 62 6d  65 6e 75 25 2c 73 74 24  |UserSubmenu%,st$|
00011870  0d 08 a3 37 c8 99 20 22  4d 65 6e 75 55 74 69 6c  |...7.. "MenuUtil|
00011880  5f 46 61 64 65 22 2c 69  74 65 6d 5f 72 65 6e 75  |_Fade",item_renu|
00011890  6d 62 65 72 69 63 6f 6e  25 2c 4e 72 53 65 6c 65  |mbericon%,NrSele|
000118a0  63 74 65 64 25 3d 30 0d  08 a4 30 c8 99 20 22 4d  |cted%=0...0.. "M|
000118b0  65 6e 75 55 74 69 6c 5f  46 61 64 65 22 2c 69 74  |enuUtil_Fade",it|
000118c0  65 6d 5f 61 6c 69 67 6e  25 2c 4e 72 53 65 6c 65  |em_align%,NrSele|
000118d0  63 74 65 64 25 3c 32 0d  08 a5 33 c8 99 20 22 4d  |cted%<2...3.. "M|
000118e0  65 6e 75 55 74 69 6c 5f  46 61 64 65 22 2c 69 74  |enuUtil_Fade",it|
000118f0  65 6d 5f 73 70 61 63 65  6f 75 74 25 2c 4e 72 53  |em_spaceout%,NrS|
00011900  65 6c 65 63 74 65 64 25  3c 32 0d 08 a6 32 c8 99  |elected%<2...2..|
00011910  20 22 4d 65 6e 75 55 74  69 6c 5f 54 65 78 74 22  | "MenuUtil_Text"|
00011920  2c 69 74 65 6d 5f 69 63  6f 6e 6e 72 25 2c c3 28  |,item_iconnr%,.(|
00011930  4e 65 78 74 49 63 6f 6e  4e 72 25 29 0d 08 a7 33  |NextIconNr%)...3|
00011940  c8 99 20 22 4d 65 6e 75  55 74 69 6c 5f 46 61 64  |.. "MenuUtil_Fad|
00011950  65 22 2c 69 74 65 6d 5f  73 61 6d 65 73 69 7a 65  |e",item_samesize|
00011960  25 2c 4e 72 53 65 6c 65  63 74 65 64 25 3c 32 0d  |%,NrSelected%<2.|
00011970  08 a8 15 57 69 6e 42 6c  6b 25 21 30 3d 77 69 6e  |...WinBlk%!0=win|
00011980  64 6f 77 25 0d 08 a9 24  c8 99 20 22 57 69 6d 70  |dow%...$.. "Wimp|
00011990  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
000119a0  2c 57 69 6e 42 6c 6b 25  0d 08 aa 14 e7 20 57 69  |,WinBlk%..... Wi|
000119b0  6e 42 6c 6b 25 21 36 38  3d 31 20 8c 0d 08 ab 2e  |nBlk%!68=1 .....|
000119c0  20 20 c8 99 20 22 4d 65  6e 75 55 74 69 6c 5f 54  |  .. "MenuUtil_T|
000119d0  69 63 6b 4f 6e 6c 79 22  2c 53 70 72 69 74 65 41  |ickOnly",SpriteA|
000119e0  72 65 61 4d 65 6e 75 25  2c 30 0d 08 ac 05 cc 0d  |reaMenu%,0......|
000119f0  08 ad 2e 20 20 c8 99 20  22 4d 65 6e 75 55 74 69  |...  .. "MenuUti|
00011a00  6c 5f 54 69 63 6b 4f 6e  6c 79 22 2c 53 70 72 69  |l_TickOnly",Spri|
00011a10  74 65 41 72 65 61 4d 65  6e 75 25 2c 31 0d 08 ae  |teAreaMenu%,1...|
00011a20  05 cd 0d 08 af 24 c8 99  20 22 4d 65 6e 75 55 74  |.....$.. "MenuUt|
00011a30  69 6c 5f 54 65 78 74 22  2c 69 74 65 6d 5f 69 63  |il_Text",item_ic|
00011a40  6f 6e 25 2c 74 24 0d 08  b0 2f c8 99 20 22 4d 65  |on%,t$.../.. "Me|
00011a50  6e 75 55 74 69 6c 5f 46  61 64 65 22 2c 69 74 65  |nuUtil_Fade",ite|
00011a60  6d 5f 69 63 6f 6e 25 2c  4e 72 53 65 6c 65 63 74  |m_icon%,NrSelect|
00011a70  65 64 25 3d 30 0d 08 b1  35 c8 99 20 22 4d 65 6e  |ed%=0...5.. "Men|
00011a80  75 55 74 69 6c 5f 46 61  64 65 22 2c 69 74 65 6d  |uUtil_Fade",item|
00011a90  5f 73 65 6c 61 6c 6c 69  63 6f 6e 73 25 2c 57 69  |_selallicons%,Wi|
00011aa0  6e 42 6c 6b 25 21 38 38  3d 30 0d 08 b2 38 c8 99  |nBlk%!88=0...8..|
00011ab0  20 22 4d 65 6e 75 55 74  69 6c 5f 46 61 64 65 22  | "MenuUtil_Fade"|
00011ac0  2c 69 74 65 6d 5f 63 6c  65 61 72 73 65 6c 69 63  |,item_clearselic|
00011ad0  6f 6e 73 25 2c 4e 72 53  65 6c 65 63 74 65 64 25  |ons%,NrSelected%|
00011ae0  3d 30 0d 08 b3 33 c8 99  20 22 4d 65 6e 75 55 74  |=0...3.. "MenuUt|
00011af0  69 6c 5f 46 61 64 65 22  2c 69 74 65 6d 5f 74 69  |il_Fade",item_ti|
00011b00  64 79 69 63 6f 6e 73 25  2c 57 69 6e 42 6c 6b 25  |dyicons%,WinBlk%|
00011b10  21 38 38 3d 30 0d 08 b4  36 c8 99 20 22 4d 65 6e  |!88=0...6.. "Men|
00011b20  75 55 74 69 6c 5f 46 61  64 65 22 2c 69 74 65 6d  |uUtil_Fade",item|
00011b30  5f 73 70 72 69 74 65 61  72 65 61 25 2c 55 73 65  |_spritearea%,Use|
00011b40  72 53 70 72 69 74 65 73  25 3d 31 0d 08 b5 0d 78  |rSprites%=1....x|
00011b50  70 6f 73 25 2d 3d 36 34  0d 08 b6 15 e7 20 4e 72  |pos%-=64..... Nr|
00011b60  53 65 6c 65 63 74 65 64  25 3d 30 20 8c 0d 08 b7  |Selected%=0 ....|
00011b70  0f 20 20 79 70 6f 73 25  2b 3d 32 32 0d 08 b8 05  |.  ypos%+=22....|
00011b80  cc 0d 08 b9 0f 20 20 79  70 6f 73 25 2b 3d 36 36  |.....  ypos%+=66|
00011b90  0d 08 ba 05 cd 0d 08 bb  05 e1 0d 08 bc 04 0d 08  |................|
00011ba0  bd 24 dd 20 f2 69 63 62  75 74 74 6f 6e 6d 65 6e  |.$. .icbuttonmen|
00011bb0  75 28 f8 20 78 70 6f 73  25 2c f8 20 79 70 6f 73  |u(. xpos%,. ypos|
00011bc0  25 29 0d 08 be 35 c8 99  20 22 4d 65 6e 75 55 74  |%)...5.. "MenuUt|
00011bd0  69 6c 5f 54 69 63 6b 4f  6e 6c 79 22 2c 49 63 42  |il_TickOnly",IcB|
00011be0  75 74 74 6f 6e 4d 65 6e  75 25 2c 49 63 45 64 5f  |uttonMenu%,IcEd_|
00011bf0  42 75 74 74 6f 6e 25 0d  08 bf 0d 78 70 6f 73 25  |Button%....xpos%|
00011c00  2b 3d 31 36 0d 08 c0 1d  79 70 6f 73 25 2b 3d 32  |+=16....ypos%+=2|
00011c10  32 2b 49 63 45 64 5f 42  75 74 74 6f 6e 25 2a 34  |2+IcEd_Button%*4|
00011c20  34 0d 08 c1 05 e1 0d 08  c2 04 0d 08 c3 25 dd 20  |4............%. |
00011c30  f2 77 69 6e 62 75 74 74  6f 6e 6d 65 6e 75 28 f8  |.winbuttonmenu(.|
00011c40  20 78 70 6f 73 25 2c f8  20 79 70 6f 73 25 29 0d  | xpos%,. ypos%).|
00011c50  08 c4 37 c8 99 20 22 4d  65 6e 75 55 74 69 6c 5f  |..7.. "MenuUtil_|
00011c60  54 69 63 6b 4f 6e 6c 79  22 2c 57 69 6e 42 75 74  |TickOnly",WinBut|
00011c70  74 6f 6e 4d 65 6e 75 25  2c 57 69 6e 45 64 5f 42  |tonMenu%,WinEd_B|
00011c80  75 74 74 6f 6e 25 0d 08  c5 0d 78 70 6f 73 25 2b  |utton%....xpos%+|
00011c90  3d 31 36 0d 08 c6 1e 79  70 6f 73 25 2b 3d 32 32  |=16....ypos%+=22|
00011ca0  2b 57 69 6e 45 64 5f 42  75 74 74 6f 6e 25 2a 34  |+WinEd_Button%*4|
00011cb0  34 0d 08 c7 05 e1 0d 08  c8 04 0d 08 c9 1f dd 20  |4.............. |
00011cc0  f2 65 73 67 6d 65 6e 75  28 f8 20 78 70 6f 73 25  |.esgmenu(. xpos%|
00011cd0  2c f8 20 79 70 6f 73 25  29 0d 08 ca 33 e7 20 45  |,. ypos%)...3. E|
00011ce0  73 67 4d 65 6e 75 25 3c  3e 30 20 8c 20 c8 99 20  |sgMenu%<>0 . .. |
00011cf0  22 4d 65 6e 75 55 74 69  6c 5f 44 65 6c 65 74 65  |"MenuUtil_Delete|
00011d00  22 2c 45 73 67 4d 65 6e  75 25 2c a3 0d 08 cb 13  |",EsgMenu%,.....|
00011d10  e7 20 53 75 70 70 6f 72  74 41 45 48 25 20 8c 0d  |. SupportAEH% ..|
00011d20  08 cc 29 20 20 c8 99 20  22 4d 65 6e 75 55 74 69  |..)  .. "MenuUti|
00011d30  6c 5f 4e 65 77 22 2c 2c  22 45 53 47 22 20 b8 20  |l_New",,"ESG" . |
00011d40  45 73 67 4d 65 6e 75 25  0d 08 cd 2e 20 20 64 75  |EsgMenu%....  du|
00011d50  6d 6d 79 25 3d a4 6d 65  6e 75 5f 61 64 64 77 72  |mmy%=.menu_addwr|
00011d60  69 74 61 62 6c 65 28 33  2c 4e 75 6d 56 61 6c 69  |itable(3,NumVali|
00011d70  64 53 74 72 25 29 0d 08  ce 26 20 20 c8 99 20 22  |dStr%)...&  .. "|
00011d80  4d 65 6e 75 55 74 69 6c  5f 54 65 78 74 22 2c 2c  |MenuUtil_Text",,|
00011d90  c3 28 49 63 45 64 5f 45  73 67 25 29 0d 08 cf 2a  |.(IcEd_Esg%)...*|
00011da0  20 20 64 75 6d 6d 79 25  3d a4 6d 65 6e 75 5f 61  |  dummy%=.menu_a|
00011db0  64 64 28 22 31 36 20 28  41 63 74 69 6f 6e 29 22  |dd("16 (Action)"|
00011dc0  2c 2d 31 2c 30 29 0d 08  d0 32 20 20 64 75 6d 6d  |,-1,0)...2  dumm|
00011dd0  79 25 3d a4 6d 65 6e 75  5f 61 64 64 28 22 31 38  |y%=.menu_add("18|
00011de0  20 28 44 65 66 61 75 6c  74 20 61 63 74 69 6f 6e  | (Default action|
00011df0  29 22 2c 2d 31 2c 30 29  0d 08 d1 2c 20 20 64 75  |)",-1,0)...,  du|
00011e00  6d 6d 79 25 3d a4 6d 65  6e 75 5f 61 64 64 28 22  |mmy%=.menu_add("|
00011e10  31 39 20 28 57 72 69 74  61 62 6c 65 29 22 2c 2d  |19 (Writable)",-|
00011e20  31 2c 30 29 0d 08 d2 2b  20 20 64 75 6d 6d 79 25  |1,0)...+  dummy%|
00011e30  3d a4 6d 65 6e 75 5f 61  64 64 28 22 32 30 20 28  |=.menu_add("20 (|
00011e40  44 69 73 70 6c 61 79 29  22 2c 2d 31 2c 30 29 0d  |Display)",-1,0).|
00011e50  08 d3 2d 20 20 64 75 6d  6d 79 25 3d a4 6d 65 6e  |..-  dummy%=.men|
00011e60  75 5f 61 64 64 28 22 32  31 20 28 47 72 6f 75 70  |u_add("21 (Group|
00011e70  20 62 6f 78 29 22 2c 2d  31 2c 30 29 0d 08 d4 30  | box)",-1,0)...0|
00011e80  20 20 64 75 6d 6d 79 25  3d a4 6d 65 6e 75 5f 61  |  dummy%=.menu_a|
00011e90  64 64 28 22 32 34 20 28  32 34 62 69 74 20 63 6f  |dd("24 (24bit co|
00011ea0  6c 6f 75 72 29 22 2c 2d  31 2c 30 29 0d 08 d5 2a  |lour)",-1,0)...*|
00011eb0  20 20 64 75 6d 6d 79 25  3d a4 6d 65 6e 75 5f 61  |  dummy%=.menu_a|
00011ec0  64 64 28 22 32 35 20 28  53 6c 69 64 65 72 29 22  |dd("25 (Slider)"|
00011ed0  2c 2d 31 2c 30 29 0d 08  d6 0f 20 20 79 70 6f 73  |,-1,0)....  ypos|
00011ee0  25 2b 3d 32 32 0d 08 d7  05 cc 0d 08 d8 29 20 20  |%+=22........)  |
00011ef0  c8 99 20 22 4d 65 6e 75  55 74 69 6c 5f 4e 65 77  |.. "MenuUtil_New|
00011f00  22 2c 2c 22 45 53 47 22  20 b8 20 45 73 67 4d 65  |",,"ESG" . EsgMe|
00011f10  6e 75 25 0d 08 d9 11 20  20 e3 20 69 25 3d 30 20  |nu%....  . i%=0 |
00011f20  b8 20 31 35 0d 08 da 24  20 20 20 20 64 75 6d 6d  |. 15...$    dumm|
00011f30  79 25 3d a4 6d 65 6e 75  5f 61 64 64 28 c3 28 69  |y%=.menu_add(.(i|
00011f40  25 29 2c 2d 31 2c 30 29  0d 08 db 0a 20 20 ed 20  |%),-1,0)....  . |
00011f50  69 25 0d 08 dc 0f 20 20  79 70 6f 73 25 2b 3d 32  |i%....  ypos%+=2|
00011f60  32 0d 08 dd 17 20 20 e7  20 49 63 45 64 5f 45 73  |2....  . IcEd_Es|
00011f70  67 25 3c 3d 31 35 20 8c  0d 08 de 31 20 20 20 20  |g%<=15 ....1    |
00011f80  c8 99 20 22 4d 65 6e 75  55 74 69 6c 5f 54 69 63  |.. "MenuUtil_Tic|
00011f90  6b 4f 6e 6c 79 22 2c 45  73 67 4d 65 6e 75 25 2c  |kOnly",EsgMenu%,|
00011fa0  49 63 45 64 5f 45 73 67  25 0d 08 df 1b 20 20 20  |IcEd_Esg%....   |
00011fb0  20 79 70 6f 73 25 2b 3d  49 63 45 64 5f 45 73 67  | ypos%+=IcEd_Esg|
00011fc0  25 2a 34 34 0d 08 e0 07  20 20 cd 0d 08 e1 05 cd  |%*44....  ......|
00011fd0  0d 08 e2 0d 78 70 6f 73  25 2b 3d 31 36 0d 08 e3  |....xpos%+=16...|
00011fe0  05 e1 0d 08 e4 04 0d 08  e5 30 dd 20 f2 63 6f 6c  |.........0. .col|
00011ff0  6f 75 72 6d 65 6e 75 28  f8 20 78 70 6f 73 25 2c  |ourmenu(. xpos%,|
00012000  f8 20 79 70 6f 73 25 2c  77 69 6e 64 6f 77 25 2c  |. ypos%,window%,|
00012010  69 63 6f 6e 25 29 0d 08  e6 2a ea 20 69 25 2c 66  |icon%)...*. i%,f|
00012020  6c 61 67 73 25 2c 63 75  72 72 65 6e 74 25 2c 62  |lags%,current%,b|
00012030  69 67 72 61 6e 67 65 25  2c 74 72 61 6e 73 70 25  |igrange%,transp%|
00012040  0d 08 e7 39 e7 20 43 6f  6c 6f 75 72 4d 65 6e 75  |...9. ColourMenu|
00012050  25 3c 3e 30 20 8c 20 c8  99 20 22 4d 65 6e 75 55  |%<>0 . .. "MenuU|
00012060  74 69 6c 5f 44 65 6c 65  74 65 22 2c 43 6f 6c 6f  |til_Delete",Colo|
00012070  75 72 4d 65 6e 75 25 2c  a3 0d 08 e8 10 c8 8e 20  |urMenu%,....... |
00012080  77 69 6e 64 6f 77 25 20  ca 0d 08 e9 0e 20 20 c9  |window% .....  .|
00012090  20 49 63 45 64 57 25 0d  08 ea 12 20 20 20 20 c8  | IcEdW%....    .|
000120a0  8e 20 69 63 6f 6e 25 20  ca 0d 08 eb 25 20 20 20  |. icon% ....%   |
000120b0  20 20 20 c9 20 33 34 20  3a 20 63 75 72 72 65 6e  |   . 34 : curren|
000120c0  74 25 3d 49 63 45 64 5f  46 67 63 6f 6c 25 0d 08  |t%=IcEd_Fgcol%..|
000120d0  ec 25 20 20 20 20 20 20  c9 20 33 37 20 3a 20 63  |.%      . 37 : c|
000120e0  75 72 72 65 6e 74 25 3d  49 63 45 64 5f 42 67 63  |urrent%=IcEd_Bgc|
000120f0  6f 6c 25 0d 08 ed 09 20  20 20 20 cb 0d 08 ee 13  |ol%....    .....|
00012100  20 20 20 20 62 69 67 72  61 6e 67 65 25 3d a3 0d  |    bigrange%=..|
00012110  08 ef 11 20 20 20 20 74  72 61 6e 73 70 25 3d a3  |...    transp%=.|
00012120  0d 08 f0 0f 20 20 c9 20  57 69 6e 45 64 57 25 0d  |....  . WinEdW%.|
00012130  08 f1 2a 20 20 20 20 62  69 67 72 61 6e 67 65 25  |..*    bigrange%|
00012140  3d a4 69 63 6f 6e 73 65  6c 65 63 74 65 64 28 57  |=.iconselected(W|
00012150  69 6e 45 64 57 25 2c 39  29 0d 08 f2 25 20 20 20  |inEdW%,9)...%   |
00012160  20 74 72 61 6e 73 70 25  3d 28 69 63 6f 6e 25 3d  | transp%=(icon%=|
00012170  32 37 29 84 28 69 63 6f  6e 25 3d 33 39 29 0d 08  |27).(icon%=39)..|
00012180  f3 29 20 20 20 20 63 75  72 72 65 6e 74 25 3d 57  |.)    current%=W|
00012190  69 6e 45 64 5f 43 6f 6c  25 28 28 69 63 6f 6e 25  |inEd_Col%((icon%|
000121a0  2d 32 37 29 81 34 29 0d  08 f4 05 cb 0d 08 f5 11  |-27).4).........|
000121b0  e7 20 62 69 67 72 61 6e  67 65 25 20 8c 0d 08 f6  |. bigrange% ....|
000121c0  3b 20 20 f4 20 63 6f 6c  6f 75 72 20 6d 65 6e 75  |;  . colour menu|
000121d0  20 66 6f 72 20 63 6f 6c  6f 75 72 20 6e 75 6d 62  | for colour numb|
000121e0  65 72 73 20 30 2d 32 35  35 20 28 47 43 4f 4c 20  |ers 0-255 (GCOL |
000121f0  63 6f 6c 6f 75 72 73 29  0d 08 f7 2c 20 20 c8 99  |colours)...,  ..|
00012200  20 22 4d 65 6e 75 55 74  69 6c 5f 4e 65 77 22 2c  | "MenuUtil_New",|
00012210  2c 22 43 6f 6c 22 20 b8  20 43 6f 6c 6f 75 72 4d  |,"Col" . ColourM|
00012220  65 6e 75 25 0d 08 f8 2e  20 20 64 75 6d 6d 79 25  |enu%....  dummy%|
00012230  3d a4 6d 65 6e 75 5f 61  64 64 77 72 69 74 61 62  |=.menu_addwritab|
00012240  6c 65 28 34 2c 4e 75 6d  56 61 6c 69 64 53 74 72  |le(4,NumValidStr|
00012250  25 29 0d 08 f9 25 20 20  c8 99 20 22 4d 65 6e 75  |%)...%  .. "Menu|
00012260  55 74 69 6c 5f 54 65 78  74 22 2c 2c c3 28 63 75  |Util_Text",,.(cu|
00012270  72 72 65 6e 74 25 29 0d  08 fa 11 20 20 e7 20 74  |rrent%)....  . t|
00012280  72 61 6e 73 70 25 20 8c  0d 08 fb 21 20 20 20 20  |ransp% ....!    |
00012290  c8 99 20 22 4d 65 6e 75  55 74 69 6c 5f 41 64 64  |.. "MenuUtil_Add|
000122a0  22 2c 2c 22 4e 6f 6e 65  22 0d 08 fc 28 20 20 20  |",,"None"...(   |
000122b0  20 c8 99 20 22 4d 65 6e  75 55 74 69 6c 5f 54 69  | .. "MenuUtil_Ti|
000122c0  63 6b 22 2c 2c 63 75 72  72 65 6e 74 25 3d 32 35  |ck",,current%=25|
000122d0  35 0d 08 fd 07 20 20 cd  0d 08 fe 05 cc 0d 08 ff  |5....  .........|
000122e0  2b 20 20 f4 20 63 6f 6c  6f 75 72 20 6d 65 6e 75  |+  . colour menu|
000122f0  20 66 6f 72 20 63 6f 6c  6f 75 72 20 6e 75 6d 62  | for colour numb|
00012300  65 72 73 20 30 2d 31 35  0d 09 00 2c 20 20 c8 99  |ers 0-15...,  ..|
00012310  20 22 4d 65 6e 75 55 74  69 6c 5f 4e 65 77 22 2c  | "MenuUtil_New",|
00012320  2c 22 43 6f 6c 22 20 b8  20 43 6f 6c 6f 75 72 4d  |,"Col" . ColourM|
00012330  65 6e 75 25 0d 09 01 11  20 20 e3 20 69 25 3d 30  |enu%....  . i%=0|
00012340  20 b8 20 31 35 0d 09 02  20 20 20 20 20 c8 99 20  | . 15...     .. |
00012350  22 4d 65 6e 75 55 74 69  6c 5f 41 64 64 22 2c 2c  |"MenuUtil_Add",,|
00012360  c3 28 69 25 29 0d 09 03  34 20 20 20 20 c8 99 20  |.(i%)...4    .. |
00012370  22 4d 65 6e 75 55 74 69  6c 5f 43 6f 6c 6f 75 72  |"MenuUtil_Colour|
00012380  73 22 2c 2c 49 6e 76 65  72 73 65 43 6f 6c 6f 75  |s",,InverseColou|
00012390  72 25 28 69 25 29 2c 69  25 0d 09 04 0a 20 20 ed  |r%(i%),i%....  .|
000123a0  20 69 25 0d 09 05 11 20  20 e7 20 74 72 61 6e 73  | i%....  . trans|
000123b0  70 25 20 8c 0d 09 06 1d  20 20 20 20 c8 99 20 22  |p% .....    .. "|
000123c0  4d 65 6e 75 55 74 69 6c  5f 44 6f 74 73 22 2c 2c  |MenuUtil_Dots",,|
000123d0  31 0d 09 07 21 20 20 20  20 c8 99 20 22 4d 65 6e  |1...!    .. "Men|
000123e0  75 55 74 69 6c 5f 41 64  64 22 2c 2c 22 4e 6f 6e  |uUtil_Add",,"Non|
000123f0  65 22 0d 09 08 07 20 20  cd 0d 09 09 16 20 20 e7  |e"....  .....  .|
00012400  20 63 75 72 72 65 6e 74  25 3d 32 35 35 20 8c 0d  | current%=255 ..|
00012410  09 0a 2d 20 20 20 20 c8  99 20 22 4d 65 6e 75 55  |..-    .. "MenuU|
00012420  74 69 6c 5f 54 69 63 6b  4f 6e 6c 79 22 2c 43 6f  |til_TickOnly",Co|
00012430  6c 6f 75 72 4d 65 6e 75  25 2c 31 36 0d 09 0b 07  |lourMenu%,16....|
00012440  20 20 cc 0d 09 0c 33 20  20 20 20 c8 99 20 22 4d  |  ....3    .. "M|
00012450  65 6e 75 55 74 69 6c 5f  54 69 63 6b 4f 6e 6c 79  |enuUtil_TickOnly|
00012460  22 2c 43 6f 6c 6f 75 72  4d 65 6e 75 25 2c 63 75  |",ColourMenu%,cu|
00012470  72 72 65 6e 74 25 0d 09  0d 07 20 20 cd 0d 09 0e  |rrent%....  ....|
00012480  05 cd 0d 09 0f 0d 78 70  6f 73 25 2b 3d 31 36 0d  |......xpos%+=16.|
00012490  09 10 0d 79 70 6f 73 25  2b 3d 32 32 0d 09 11 15  |...ypos%+=22....|
000124a0  e7 20 28 ac 20 62 69 67  72 61 6e 67 65 25 29 20  |. (. bigrange%) |
000124b0  8c 0d 09 12 16 20 20 e7  20 63 75 72 72 65 6e 74  |.....  . current|
000124c0  25 3d 32 35 35 20 8c 0d  09 13 17 20 20 20 20 79  |%=255 .....    y|
000124d0  70 6f 73 25 2b 3d 31 36  2a 34 34 2b 32 32 0d 09  |pos%+=16*44+22..|
000124e0  14 07 20 20 cc 0d 09 15  1a 20 20 20 20 79 70 6f  |..  .....    ypo|
000124f0  73 25 2b 3d 63 75 72 72  65 6e 74 25 2a 34 34 0d  |s%+=current%*44.|
00012500  09 16 07 20 20 cd 0d 09  17 05 cd 0d 09 18 05 e1  |...  ...........|
00012510  0d 09 19 04 0d 09 1a 0f  dd 20 f2 66 6f 6e 74 6d  |......... .fontm|
00012520  65 6e 75 0d 09 1b 2f ea  20 6e 65 78 74 25 2c 66  |enu.../. next%,f|
00012530  6f 6e 74 24 2c 66 61 6d  24 2c 73 74 79 6c 65 24  |ont$,fam$,style$|
00012540  2c 70 25 2c 73 75 62 6d  65 6e 75 25 2c 69 74 65  |,p%,submenu%,ite|
00012550  6d 25 0d 09 1c 29 c8 99  20 22 4d 65 6e 75 55 74  |m%...).. "MenuUt|
00012560  69 6c 5f 4e 65 77 22 2c  2c 22 46 6f 6e 74 22 20  |il_New",,"Font" |
00012570  b8 20 46 6f 6e 74 4d 65  6e 75 25 0d 09 1d 0b 66  |. FontMenu%....f|
00012580  61 6d 24 3d 22 22 0d 09  1e 0b 6e 65 78 74 25 3d  |am$=""....next%=|
00012590  30 0d 09 1f 05 f5 0d 09  20 11 20 20 66 24 3d c4  |0....... .  f$=.|
000125a0  34 30 2c 22 20 22 29 0d  09 21 37 20 20 c8 99 20  |40," ")..!7  .. |
000125b0  22 46 6f 6e 74 5f 4c 69  73 74 46 6f 6e 74 73 22  |"Font_ListFonts"|
000125c0  2c 2c 46 6f 6e 74 44 61  74 61 25 2c 6e 65 78 74  |,,FontData%,next|
000125d0  25 2c 2d 31 20 b8 20 2c  2c 6e 65 78 74 25 0d 09  |%,-1 . ,,next%..|
000125e0  22 13 20 20 e7 20 6e 65  78 74 25 3c 3e 2d 31 20  |".  . next%<>-1 |
000125f0  8c 0d 09 23 17 20 20 20  20 66 24 3d 24 28 46 6f  |...#.    f$=$(Fo|
00012600  6e 74 44 61 74 61 25 29  0d 09 24 13 20 20 20 20  |ntData%)..$.    |
00012610  70 25 3d a7 66 24 2c 22  2e 22 29 0d 09 25 10 20  |p%=.f$,".")..%. |
00012620  20 20 20 e7 20 70 25 3e  30 20 8c 0d 09 26 1a 20  |   . p%>0 ...&. |
00012630  20 20 20 20 20 73 74 79  6c 65 24 3d c1 66 24 2c  |     style$=.f$,|
00012640  70 25 2b 31 29 0d 09 27  16 20 20 20 20 20 20 66  |p%+1)..'.      f|
00012650  24 3d c0 66 24 2c 70 25  2d 31 29 0d 09 28 09 20  |$=.f$,p%-1)..(. |
00012660  20 20 20 cc 0d 09 29 1c  20 20 20 20 20 20 73 74  |   ...).      st|
00012670  79 6c 65 24 3d 22 28 52  65 67 75 6c 61 72 29 22  |yle$="(Regular)"|
00012680  0d 09 2a 09 20 20 20 20  cd 0d 09 2b 24 20 20 20  |..*.    ...+$   |
00012690  20 e7 20 28 66 24 3c 3e  66 61 6d 24 29 20 80 20  | . (f$<>fam$) . |
000126a0  28 6e 65 78 74 25 3c 3e  2d 31 29 20 8c 0d 09 2c  |(next%<>-1) ...,|
000126b0  1b 20 20 20 20 20 20 f4  20 6e 65 77 20 66 6f 6e  |.      . new fon|
000126c0  74 20 66 61 6d 69 6c 79  0d 09 2d 11 20 20 20 20  |t family..-.    |
000126d0  20 20 66 61 6d 24 3d 66  24 0d 09 2e 32 20 20 20  |  fam$=f$...2   |
000126e0  20 20 20 c8 99 20 22 4d  65 6e 75 55 74 69 6c 5f  |   .. "MenuUtil_|
000126f0  41 64 64 22 2c 46 6f 6e  74 4d 65 6e 75 25 2c 66  |Add",FontMenu%,f|
00012700  61 6d 24 20 b8 20 69 74  65 6d 25 0d 09 2f 2c 20  |am$ . item%../, |
00012710  20 20 20 20 20 c8 99 20  22 4d 65 6e 75 55 74 69  |     .. "MenuUti|
00012720  6c 5f 4e 65 77 22 2c 2c  66 61 6d 24 20 b8 20 73  |l_New",,fam$ . s|
00012730  75 62 6d 65 6e 75 25 0d  09 30 2e 20 20 20 20 20  |ubmenu%..0.     |
00012740  20 c8 99 20 22 4d 65 6e  75 55 74 69 6c 5f 53 75  | .. "MenuUtil_Su|
00012750  62 4d 65 6e 75 22 2c 69  74 65 6d 25 2c 73 75 62  |bMenu",item%,sub|
00012760  6d 65 6e 75 25 0d 09 31  09 20 20 20 20 cd 0d 09  |menu%..1.    ...|
00012770  32 29 20 20 20 20 c8 99  20 22 4d 65 6e 75 55 74  |2)    .. "MenuUt|
00012780  69 6c 5f 41 64 64 22 2c  73 75 62 6d 65 6e 75 25  |il_Add",submenu%|
00012790  2c 73 74 79 6c 65 24 0d  09 33 07 20 20 cd 0d 09  |,style$..3.  ...|
000127a0  34 0e fd 20 6e 65 78 74  25 3d 2d 31 0d 09 35 05  |4.. next%=-1..5.|
000127b0  e1 0d 09 36 04 0d 09 37  32 dd 20 f2 66 6f 6e 74  |...6...72. .font|
000127c0  73 69 7a 65 6d 65 6e 75  28 f8 20 78 70 6f 73 25  |sizemenu(. xpos%|
000127d0  2c f8 20 79 70 6f 73 25  2c 77 69 6e 64 6f 77 25  |,. ypos%,window%|
000127e0  2c 69 63 6f 6e 25 29 0d  09 38 10 e7 20 69 63 6f  |,icon%)..8.. ico|
000127f0  6e 25 3d 34 38 20 8c 0d  09 39 39 20 20 c8 99 20  |n%=48 ...99  .. |
00012800  22 4d 65 6e 75 55 74 69  6c 5f 54 65 78 74 22 2c  |"MenuUtil_Text",|
00012810  69 74 65 6d 5f 66 6f 6e  74 73 69 7a 65 25 2c c0  |item_fontsize%,.|
00012820  c3 28 49 63 45 64 5f 58  73 69 7a 65 29 2c 35 29  |.(IcEd_Xsize),5)|
00012830  0d 09 3a 05 cc 0d 09 3b  39 20 20 c8 99 20 22 4d  |..:....;9  .. "M|
00012840  65 6e 75 55 74 69 6c 5f  54 65 78 74 22 2c 69 74  |enuUtil_Text",it|
00012850  65 6d 5f 66 6f 6e 74 73  69 7a 65 25 2c c0 c3 28  |em_fontsize%,..(|
00012860  49 63 45 64 5f 59 73 69  7a 65 29 2c 35 29 0d 09  |IcEd_Ysize),5)..|
00012870  3c 05 cd 0d 09 3d 0f 79  70 6f 73 25 2b 3d 37 2a  |<....=.ypos%+=7*|
00012880  34 34 0d 09 3e 05 e1 0d  09 3f 04 0d 09 40 30 dd  |44..>....?...@0.|
00012890  20 f2 75 70 64 61 74 65  6d 65 6e 75 28 f8 20 78  | .updatemenu(. x|
000128a0  70 6f 73 25 2c f8 20 79  70 6f 73 25 2c 77 69 6e  |pos%,. ypos%,win|
000128b0  64 6f 77 25 2c 69 63 6f  6e 25 29 0d 09 41 0b ea  |dow%,icon%)..A..|
000128c0  20 66 6f 6e 74 25 0d 09  42 22 66 6f 6e 74 25 3d  | font%..B"font%=|
000128d0  a4 69 63 6f 6e 73 65 6c  65 63 74 65 64 28 49 63  |.iconselected(Ic|
000128e0  45 64 57 25 2c 34 31 29  0d 09 43 28 c8 99 20 22  |EdW%,41)..C(.. "|
000128f0  4d 65 6e 75 55 74 69 6c  5f 46 61 64 65 22 2c 69  |MenuUtil_Fade",i|
00012900  74 65 6d 5f 75 70 64 66  67 25 2c 66 6f 6e 74 25  |tem_updfg%,font%|
00012910  0d 09 44 28 c8 99 20 22  4d 65 6e 75 55 74 69 6c  |..D(.. "MenuUtil|
00012920  5f 46 61 64 65 22 2c 69  74 65 6d 5f 75 70 64 62  |_Fade",item_updb|
00012930  67 25 2c 66 6f 6e 74 25  0d 09 45 2c c8 99 20 22  |g%,font%..E,.. "|
00012940  4d 65 6e 75 55 74 69 6c  5f 46 61 64 65 22 2c 69  |MenuUtil_Fade",i|
00012950  74 65 6d 5f 75 70 64 66  6f 6e 74 25 2c ac 20 66  |tem_updfont%,. f|
00012960  6f 6e 74 25 0d 09 46 0d  79 70 6f 73 25 2b 3d 32  |ont%..F.ypos%+=2|
00012970  32 0d 09 47 05 e1 0d 09  48 04 0d 09 49 2c dd 20  |2..G....H...I,. |
00012980  f2 63 72 65 61 74 65 6d  65 6e 75 28 78 70 6f 73  |.createmenu(xpos|
00012990  25 2c 79 70 6f 73 25 2c  77 69 6e 64 6f 77 25 2c  |%,ypos%,window%,|
000129a0  69 63 6f 6e 25 29 0d 09  4a 15 4c 61 73 74 4d 65  |icon%)..J.LastMe|
000129b0  6e 75 5f 58 25 3d 78 70  6f 73 25 0d 09 4b 15 4c  |nu_X%=xpos%..K.L|
000129c0  61 73 74 4d 65 6e 75 5f  59 25 3d 79 70 6f 73 25  |astMenu_Y%=ypos%|
000129d0  0d 09 4c 19 4c 61 73 74  4d 65 6e 75 5f 57 69 6e  |..L.LastMenu_Win|
000129e0  25 3d 77 69 6e 64 6f 77  25 0d 09 4d 18 4c 61 73  |%=window%..M.Las|
000129f0  74 4d 65 6e 75 5f 49 63  6f 6e 25 3d 69 63 6f 6e  |tMenu_Icon%=icon|
00012a00  25 0d 09 4e 10 4c 61 73  74 4d 65 6e 75 25 3d 2d  |%..N.LastMenu%=-|
00012a10  31 0d 09 4f 10 c8 8e 20  77 69 6e 64 6f 77 25 20  |1..O... window% |
00012a20  ca 0d 09 50 0a 20 20 c9  20 2d 32 0d 09 51 11 20  |...P.  . -2..Q. |
00012a30  20 20 20 f2 6d 61 69 6e  6d 65 6e 75 0d 09 52 1b  |   .mainmenu..R.|
00012a40  20 20 20 20 4c 61 73 74  4d 65 6e 75 25 3d 4d 61  |    LastMenu%=Ma|
00012a50  69 6e 4d 65 6e 75 25 0d  09 53 0f 20 20 c9 20 54  |inMenu%..S.  . T|
00012a60  65 6d 70 6c 57 25 0d 09  54 28 20 20 20 20 f2 74  |emplW%..T(    .t|
00012a70  65 6d 70 6c 61 74 65 6d  65 6e 75 28 78 70 6f 73  |emplatemenu(xpos|
00012a80  25 2c 79 70 6f 73 25 2c  69 63 6f 6e 25 29 0d 09  |%,ypos%,icon%)..|
00012a90  55 1c 20 20 20 20 4c 61  73 74 4d 65 6e 75 25 3d  |U.    LastMenu%=|
00012aa0  54 65 6d 70 6c 4d 65 6e  75 25 0d 09 56 0e 20 20  |TemplMenu%..V.  |
00012ab0  c9 20 49 63 45 64 57 25  0d 09 57 12 20 20 20 20  |. IcEdW%..W.    |
00012ac0  c8 8e 20 69 63 6f 6e 25  20 ca 0d 09 58 10 20 20  |.. icon% ...X.  |
00012ad0  20 20 20 20 c9 20 39 2c  31 30 0d 09 59 1d 20 20  |    . 9,10..Y.  |
00012ae0  20 20 20 20 20 20 e7 20  49 63 45 64 5f 49 63 6f  |      . IcEd_Ico|
00012af0  6e 25 3d 2d 31 20 8c 0d  09 5a 34 20 20 20 20 20  |n%=-1 ...Z4     |
00012b00  20 20 20 20 20 f2 75 70  64 61 74 65 6d 65 6e 75  |     .updatemenu|
00012b10  28 78 70 6f 73 25 2c 79  70 6f 73 25 2c 77 69 6e  |(xpos%,ypos%,win|
00012b20  64 6f 77 25 2c 69 63 6f  6e 25 29 0d 09 5b 23 20  |dow%,icon%)..[# |
00012b30  20 20 20 20 20 20 20 20  20 4c 61 73 74 4d 65 6e  |         LastMen|
00012b40  75 25 3d 55 70 64 61 74  65 6d 65 6e 75 25 0d 09  |u%=Updatemenu%..|
00012b50  5c 0d 20 20 20 20 20 20  20 20 cd 0d 09 5d 0e 20  |\.        ...]. |
00012b60  20 20 20 20 20 c9 20 32  38 0d 09 5e 26 20 20 20  |     . 28..^&   |
00012b70  20 20 20 20 20 f2 69 63  62 75 74 74 6f 6e 6d 65  |     .icbuttonme|
00012b80  6e 75 28 78 70 6f 73 25  2c 79 70 6f 73 25 29 0d  |nu(xpos%,ypos%).|
00012b90  09 5f 23 20 20 20 20 20  20 20 20 4c 61 73 74 4d  |._#        LastM|
00012ba0  65 6e 75 25 3d 49 63 42  75 74 74 6f 6e 4d 65 6e  |enu%=IcButtonMen|
00012bb0  75 25 0d 09 60 0e 20 20  20 20 20 20 c9 20 33 31  |u%..`.      . 31|
00012bc0  0d 09 61 21 20 20 20 20  20 20 20 20 f2 65 73 67  |..a!        .esg|
00012bd0  6d 65 6e 75 28 78 70 6f  73 25 2c 79 70 6f 73 25  |menu(xpos%,ypos%|
00012be0  29 0d 09 62 1e 20 20 20  20 20 20 20 20 4c 61 73  |)..b.        Las|
00012bf0  74 4d 65 6e 75 25 3d 45  73 67 4d 65 6e 75 25 0d  |tMenu%=EsgMenu%.|
00012c00  09 63 11 20 20 20 20 20  20 c9 20 33 34 2c 33 37  |.c.      . 34,37|
00012c10  0d 09 64 32 20 20 20 20  20 20 20 20 f2 63 6f 6c  |..d2        .col|
00012c20  6f 75 72 6d 65 6e 75 28  78 70 6f 73 25 2c 79 70  |ourmenu(xpos%,yp|
00012c30  6f 73 25 2c 77 69 6e 64  6f 77 25 2c 69 63 6f 6e  |os%,window%,icon|
00012c40  25 29 0d 09 65 21 20 20  20 20 20 20 20 20 4c 61  |%)..e!        La|
00012c50  73 74 4d 65 6e 75 25 3d  43 6f 6c 6f 75 72 4d 65  |stMenu%=ColourMe|
00012c60  6e 75 25 0d 09 66 11 20  20 20 20 20 20 c9 20 34  |nu%..f.      . 4|
00012c70  35 2c 34 36 0d 09 67 15  20 20 20 20 20 20 20 20  |5,46..g.        |
00012c80  78 70 6f 73 25 2b 3d 31  36 0d 09 68 15 20 20 20  |xpos%+=16..h.   |
00012c90  20 20 20 20 20 79 70 6f  73 25 2b 3d 32 32 0d 09  |     ypos%+=22..|
00012ca0  69 1f 20 20 20 20 20 20  20 20 4c 61 73 74 4d 65  |i.        LastMe|
00012cb0  6e 75 25 3d 46 6f 6e 74  4d 65 6e 75 25 0d 09 6a  |nu%=FontMenu%..j|
00012cc0  11 20 20 20 20 20 20 c9  20 34 38 2c 35 31 0d 09  |.      . 48,51..|
00012cd0  6b 34 20 20 20 20 20 20  20 20 f2 66 6f 6e 74 73  |k4        .fonts|
00012ce0  69 7a 65 6d 65 6e 75 28  78 70 6f 73 25 2c 79 70  |izemenu(xpos%,yp|
00012cf0  6f 73 25 2c 77 69 6e 64  6f 77 25 2c 69 63 6f 6e  |os%,window%,icon|
00012d00  25 29 0d 09 6c 23 20 20  20 20 20 20 20 20 4c 61  |%)..l#        La|
00012d10  73 74 4d 65 6e 75 25 3d  46 6f 6e 74 53 69 7a 65  |stMenu%=FontSize|
00012d20  6d 65 6e 75 25 0d 09 6d  09 20 20 20 20 cb 0d 09  |menu%..m.    ...|
00012d30  6e 0f 20 20 c9 20 57 69  6e 45 64 57 25 0d 09 6f  |n.  . WinEdW%..o|
00012d40  12 20 20 20 20 c8 8e 20  69 63 6f 6e 25 20 ca 0d  |.    .. icon% ..|
00012d50  09 70 0e 20 20 20 20 20  20 c9 20 32 33 0d 09 71  |.p.      . 23..q|
00012d60  27 20 20 20 20 20 20 20  20 f2 77 69 6e 62 75 74  |'        .winbut|
00012d70  74 6f 6e 6d 65 6e 75 28  78 70 6f 73 25 2c 79 70  |tonmenu(xpos%,yp|
00012d80  6f 73 25 29 0d 09 72 24  20 20 20 20 20 20 20 20  |os%)..r$        |
00012d90  4c 61 73 74 4d 65 6e 75  25 3d 57 69 6e 42 75 74  |LastMenu%=WinBut|
00012da0  74 6f 6e 4d 65 6e 75 25  0d 09 73 20 20 20 20 20  |tonMenu%..s     |
00012db0  20 20 c9 20 32 37 2c 33  31 2c 33 35 2c 33 39 2c  |  . 27,31,35,39,|
00012dc0  34 33 2c 34 37 2c 35 31  0d 09 74 32 20 20 20 20  |43,47,51..t2    |
00012dd0  20 20 20 20 f2 63 6f 6c  6f 75 72 6d 65 6e 75 28  |    .colourmenu(|
00012de0  78 70 6f 73 25 2c 79 70  6f 73 25 2c 77 69 6e 64  |xpos%,ypos%,wind|
00012df0  6f 77 25 2c 69 63 6f 6e  25 29 0d 09 75 21 20 20  |ow%,icon%)..u!  |
00012e00  20 20 20 20 20 20 4c 61  73 74 4d 65 6e 75 25 3d  |      LastMenu%=|
00012e10  43 6f 6c 6f 75 72 4d 65  6e 75 25 0d 09 76 09 20  |ColourMenu%..v. |
00012e20  20 20 20 cb 0d 09 77 07  20 20 7f 0d 09 78 26 20  |   ...w.  ...x& |
00012e30  20 20 20 e7 20 a4 77 68  69 63 68 74 65 6d 70 6c  |   . .whichtempl|
00012e40  61 74 65 28 77 69 6e 64  6f 77 25 29 3e 3d 30 20  |ate(window%)>=0 |
00012e50  8c 0d 09 79 2e 20 20 20  20 20 20 f2 75 73 65 72  |...y.      .user|
00012e60  6d 65 6e 75 28 78 70 6f  73 25 2c 79 70 6f 73 25  |menu(xpos%,ypos%|
00012e70  2c 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |,window%,icon%).|
00012e80  09 7a 1d 20 20 20 20 20  20 4c 61 73 74 4d 65 6e  |.z.      LastMen|
00012e90  75 25 3d 55 73 65 72 4d  65 6e 75 25 0d 09 7b 09  |u%=UserMenu%..{.|
00012ea0  20 20 20 20 cd 0d 09 7c  05 cb 0d 09 7d 15 e7 20  |    ...|....}.. |
00012eb0  4c 61 73 74 4d 65 6e 75  25 3c 3e 2d 31 20 8c 0d  |LastMenu%<>-1 ..|
00012ec0  09 7e 17 20 20 53 63 72  61 70 42 6c 6b 25 21 30  |.~.  ScrapBlk%!0|
00012ed0  3d 78 70 6f 73 25 0d 09  7f 17 20 20 53 63 72 61  |=xpos%....  Scra|
00012ee0  70 42 6c 6b 25 21 34 3d  79 70 6f 73 25 0d 09 80  |pBlk%!4=ypos%...|
00012ef0  1a 20 20 53 63 72 61 70  42 6c 6b 25 21 31 32 3d  |.  ScrapBlk%!12=|
00012f00  77 69 6e 64 6f 77 25 0d  09 81 2c 20 20 c8 99 20  |window%...,  .. |
00012f10  22 4d 65 6e 75 55 74 69  6c 5f 53 68 6f 77 22 2c  |"MenuUtil_Show",|
00012f20  4c 61 73 74 4d 65 6e 75  25 2c 53 63 72 61 70 42  |LastMenu%,ScrapB|
00012f30  6c 6b 25 0d 09 82 05 cd  0d 09 83 05 e1 0d 09 84  |lk%.............|
00012f40  04 0d 09 85 37 f4 20 2a  2a 2a 20 64 72 61 67 20  |....7. *** drag |
00012f50  70 72 6f 63 73 3b 20 66  6f 72 20 6d 6f 76 69 6e  |procs; for movin|
00012f60  67 20 61 6e 64 20 72 65  73 69 7a 69 6e 67 20 69  |g and resizing i|
00012f70  63 6f 6e 73 20 2a 2a 2a  0d 09 86 04 0d 09 87 2a  |cons ***.......*|
00012f80  dd 20 f2 66 69 6e 69 73  68 64 72 61 67 28 78 6d  |. .finishdrag(xm|
00012f90  69 6e 25 2c 79 6d 69 6e  25 2c 78 6d 61 78 25 2c  |in%,ymin%,xmax%,|
00012fa0  79 6d 61 78 25 29 0d 09  88 26 ea 20 77 69 6e 30  |ymax%)...&. win0|
00012fb0  78 25 2c 77 69 6e 30 79  25 2c 69 25 2c 69 63 6f  |x%,win0y%,i%,ico|
00012fc0  6e 62 6c 6b 25 2c 69 6e  62 6f 78 25 0d 09 89 48  |nblk%,inbox%...H|
00012fd0  f2 73 65 74 6d 6f 75 73  65 73 68 61 70 65 28 30  |.setmouseshape(0|
00012fe0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00012ff0  20 20 20 3a 20 f4 20 72  65 73 74 6f 72 65 20 64  |   : . restore d|
00013000  65 66 61 75 6c 74 20 70  6f 69 6e 74 65 72 20 73  |efault pointer s|
00013010  68 61 70 65 0d 09 8a 22  e7 20 78 6d 69 6e 25 3e  |hape...". xmin%>|
00013020  78 6d 61 78 25 20 8c 20  c8 94 20 78 6d 69 6e 25  |xmax% . .. xmin%|
00013030  2c 78 6d 61 78 25 0d 09  8b 22 e7 20 79 6d 69 6e  |,xmax%...". ymin|
00013040  25 3e 79 6d 61 78 25 20  8c 20 c8 94 20 79 6d 69  |%>ymax% . .. ymi|
00013050  6e 25 2c 79 6d 61 78 25  0d 09 8c 26 c8 99 20 22  |n%,ymax%...&.. "|
00013060  57 69 6d 70 5f 47 65 74  50 6f 69 6e 74 65 72 49  |Wimp_GetPointerI|
00013070  6e 66 6f 22 2c 2c 50 74  72 49 6e 66 6f 25 0d 09  |nfo",,PtrInfo%..|
00013080  8d 13 c8 8e 20 44 72 61  67 5f 54 79 70 65 25 20  |.... Drag_Type% |
00013090  ca 0d 09 8e 25 20 20 c9  20 30 2c 31 20 3a 20 f4  |....%  . 0,1 : .|
000130a0  20 6d 6f 76 65 20 2f 20  72 65 73 69 7a 65 20 69  | move / resize i|
000130b0  63 6f 6e 28 73 29 0d 09  8f 2a 20 20 20 20 e7 20  |con(s)...*    . |
000130c0  a4 77 68 69 63 68 74 65  6d 70 6c 61 74 65 28 50  |.whichtemplate(P|
000130d0  74 72 49 6e 66 6f 25 21  31 32 29 3e 3d 30 20 8c  |trInfo%!12)>=0 .|
000130e0  0d 09 90 1f 20 20 20 20  20 20 57 69 6e 42 6c 6b  |....      WinBlk|
000130f0  25 21 30 3d 50 74 72 49  6e 66 6f 25 21 31 32 0d  |%!0=PtrInfo%!12.|
00013100  09 91 2a 20 20 20 20 20  20 c8 99 20 22 57 69 6d  |..*      .. "Wim|
00013110  70 5f 47 65 74 57 69 6e  64 6f 77 49 6e 66 6f 22  |p_GetWindowInfo"|
00013120  2c 2c 57 69 6e 42 6c 6b  25 0d 09 92 25 20 20 20  |,,WinBlk%...%   |
00013130  20 20 20 77 69 6e 30 78  25 3d 57 69 6e 42 6c 6b  |   win0x%=WinBlk|
00013140  25 21 34 2d 57 69 6e 42  6c 6b 25 21 32 30 0d 09  |%!4-WinBlk%!20..|
00013150  93 26 20 20 20 20 20 20  77 69 6e 30 79 25 3d 57  |.&      win0y%=W|
00013160  69 6e 42 6c 6b 25 21 31  36 2d 57 69 6e 42 6c 6b  |inBlk%!16-WinBlk|
00013170  25 21 32 34 0d 09 94 49  20 20 20 20 20 20 78 6d  |%!24...I      xm|
00013180  69 6e 25 2d 3d 77 69 6e  30 78 25 20 3a 20 f4 20  |in%-=win0x% : . |
00013190  74 72 61 6e 73 6c 61 74  65 20 66 72 6f 6d 20 73  |translate from s|
000131a0  63 72 65 65 6e 20 63 6f  6f 72 64 73 20 74 6f 20  |creen coords to |
000131b0  77 69 6e 64 6f 77 20 63  6f 6f 72 64 73 0d 09 95  |window coords...|
000131c0  17 20 20 20 20 20 20 79  6d 69 6e 25 2d 3d 77 69  |.      ymin%-=wi|
000131d0  6e 30 79 25 0d 09 96 17  20 20 20 20 20 20 78 6d  |n0y%....      xm|
000131e0  61 78 25 2d 3d 77 69 6e  30 78 25 0d 09 97 17 20  |ax%-=win0x%.... |
000131f0  20 20 20 20 20 79 6d 61  78 25 2d 3d 77 69 6e 30  |     ymax%-=win0|
00013200  79 25 0d 09 98 4f 20 20  20 20 20 20 f2 6d 6f 76  |y%...O      .mov|
00013210  65 72 65 73 69 7a 65 28  44 72 61 67 5f 57 69 6e  |eresize(Drag_Win|
00013220  25 2c 44 72 61 67 5f 49  63 6f 6e 25 2c 50 74 72  |%,Drag_Icon%,Ptr|
00013230  49 6e 66 6f 25 21 31 32  2c 78 6d 69 6e 25 2c 79  |Info%!12,xmin%,y|
00013240  6d 69 6e 25 2c 78 6d 61  78 25 2c 79 6d 61 78 25  |min%,xmax%,ymax%|
00013250  29 0d 09 99 09 20 20 20  20 cc 0d 09 9a 2d 20 20  |)....    ....-  |
00013260  20 20 20 20 e7 20 44 65  6c 65 74 65 4f 75 74 73  |    . DeleteOuts|
00013270  69 64 65 25 20 80 20 28  44 72 61 67 5f 54 79 70  |ide% . (Drag_Typ|
00013280  65 25 3d 30 29 20 8c 0d  09 9b 44 20 20 20 20 20  |e%=0) ....D     |
00013290  20 20 20 f4 20 6d 6f 76  65 64 20 69 63 6f 6e 73  |   . moved icons|
000132a0  20 6f 75 74 73 69 64 65  20 77 69 6e 64 6f 77 20  | outside window |
000132b0  2d 20 64 65 6c 65 74 65  20 74 68 65 6d 20 69 66  |- delete them if|
000132c0  20 6f 70 74 69 6f 6e 20  73 65 74 0d 09 9c 22 20  | option set..." |
000132d0  20 20 20 20 20 20 20 e3  20 69 25 3d 30 20 b8 20  |       . i%=0 . |
000132e0  4e 72 53 65 6c 65 63 74  65 64 25 2d 31 0d 09 9d  |NrSelected%-1...|
000132f0  35 20 20 20 20 20 20 20  20 20 20 f2 64 65 6c 65  |5          .dele|
00013300  74 65 69 63 6f 6e 28 6f  6c 64 77 69 6e 25 2c 53  |teicon(oldwin%,S|
00013310  65 6c 42 6c 6b 25 21 28  34 2a 69 25 29 2c 31 2c  |elBlk%!(4*i%),1,|
00013320  31 29 0d 09 9e 10 20 20  20 20 20 20 20 20 ed 20  |1)....        . |
00013330  69 25 0d 09 9f 0b 20 20  20 20 20 20 cd 0d 09 a0  |i%....      ....|
00013340  09 20 20 20 20 cd 0d 09  a1 36 20 20 c9 20 32 2c  |.    ....6  . 2,|
00013350  33 20 3a 20 f4 20 64 72  61 67 2d 73 65 6c 65 63  |3 : . drag-selec|
00013360  74 20 69 63 6f 6e 73 20  28 77 69 74 68 20 53 65  |t icons (with Se|
00013370  6c 65 63 74 2f 41 64 6a  75 73 74 29 0d 09 a2 1b  |lect/Adjust)....|
00013380  20 20 20 20 57 69 6e 42  6c 6b 25 21 30 3d 44 72  |    WinBlk%!0=Dr|
00013390  61 67 5f 57 69 6e 25 0d  09 a3 28 20 20 20 20 c8  |ag_Win%...(    .|
000133a0  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
000133b0  77 49 6e 66 6f 22 2c 2c  57 69 6e 42 6c 6b 25 0d  |wInfo",,WinBlk%.|
000133c0  09 a4 23 20 20 20 20 77  69 6e 30 78 25 3d 57 69  |..#    win0x%=Wi|
000133d0  6e 42 6c 6b 25 21 34 2d  57 69 6e 42 6c 6b 25 21  |nBlk%!4-WinBlk%!|
000133e0  32 30 0d 09 a5 24 20 20  20 20 77 69 6e 30 79 25  |20...$    win0y%|
000133f0  3d 57 69 6e 42 6c 6b 25  21 31 36 2d 57 69 6e 42  |=WinBlk%!16-WinB|
00013400  6c 6b 25 21 32 34 0d 09  a6 15 20 20 20 20 78 6d  |lk%!24....    xm|
00013410  69 6e 25 2d 3d 77 69 6e  30 78 25 0d 09 a7 15 20  |in%-=win0x%.... |
00013420  20 20 20 78 6d 61 78 25  2d 3d 77 69 6e 30 78 25  |   xmax%-=win0x%|
00013430  0d 09 a8 15 20 20 20 20  79 6d 69 6e 25 2d 3d 77  |....    ymin%-=w|
00013440  69 6e 30 79 25 0d 09 a9  15 20 20 20 20 79 6d 61  |in0y%....    yma|
00013450  78 25 2d 3d 77 69 6e 30  79 25 0d 09 aa 3e 20 20  |x%-=win0y%...>  |
00013460  20 20 e7 20 28 57 69 6e  42 6c 6b 25 21 38 38 3e  |  . (WinBlk%!88>|
00013470  30 29 20 80 20 28 28 78  6d 61 78 25 2d 78 6d 69  |0) . ((xmax%-xmi|
00013480  6e 25 29 2b 28 79 6d 61  78 25 2d 79 6d 69 6e 25  |n%)+(ymax%-ymin%|
00013490  29 3e 3d 33 32 29 20 8c  0d 09 ab 1f 20 20 20 20  |)>=32) .....    |
000134a0  20 20 e3 20 69 25 3d 30  20 b8 20 57 69 6e 42 6c  |  . i%=0 . WinBl|
000134b0  6b 25 21 38 38 2d 31 0d  09 ac 25 20 20 20 20 20  |k%!88-1...%     |
000134c0  20 20 20 69 63 6f 6e 62  6c 6b 25 3d 57 69 6e 42  |   iconblk%=WinB|
000134d0  6c 6b 25 2b 39 32 2b 69  25 2a 33 32 0d 09 ad 3b  |lk%+92+i%*32...;|
000134e0  20 20 20 20 20 20 20 20  69 6e 62 6f 78 25 3d 28  |        inbox%=(|
000134f0  69 63 6f 6e 62 6c 6b 25  21 30 3c 78 6d 61 78 25  |iconblk%!0<xmax%|
00013500  29 20 80 20 28 69 63 6f  6e 62 6c 6b 25 21 38 3e  |) . (iconblk%!8>|
00013510  3d 78 6d 69 6e 25 29 0d  09 ae 45 20 20 20 20 20  |=xmin%)...E     |
00013520  20 20 20 69 6e 62 6f 78  25 3d 69 6e 62 6f 78 25  |   inbox%=inbox%|
00013530  20 80 20 28 69 63 6f 6e  62 6c 6b 25 21 34 3c 79  | . (iconblk%!4<y|
00013540  6d 61 78 25 29 20 80 20  28 69 63 6f 6e 62 6c 6b  |max%) . (iconblk|
00013550  25 21 31 32 3e 3d 79 6d  69 6e 25 29 0d 09 af 29  |%!12>=ymin%)...)|
00013560  20 20 20 20 20 20 20 20  e7 20 69 6e 62 6f 78 25  |        . inbox%|
00013570  20 80 20 28 69 25 3c 3e  44 72 61 67 5f 49 63 6f  | . (i%<>Drag_Ico|
00013580  6e 25 29 20 8c 0d 09 b0  1e 20 20 20 20 20 20 20  |n%) .....       |
00013590  20 20 20 e7 20 44 72 61  67 5f 54 79 70 65 25 3d  |   . Drag_Type%=|
000135a0  32 20 8c 0d 09 b1 2b 20  20 20 20 20 20 20 20 20  |2 ....+         |
000135b0  20 20 20 f2 73 65 6c 65  63 74 69 63 6f 6e 28 44  |   .selecticon(D|
000135c0  72 61 67 5f 57 69 6e 25  2c 69 25 2c 31 29 0d 09  |rag_Win%,i%,1)..|
000135d0  b2 0f 20 20 20 20 20 20  20 20 20 20 cc 0d 09 b3  |..          ....|
000135e0  33 20 20 20 20 20 20 20  20 20 20 20 20 f2 73 65  |3            .se|
000135f0  74 69 63 6f 6e 73 74 61  74 65 28 44 72 61 67 5f  |ticonstate(Drag_|
00013600  57 69 6e 25 2c 69 25 2c  31 3c 3c 32 31 2c 30 29  |Win%,i%,1<<21,0)|
00013610  0d 09 b4 0f 20 20 20 20  20 20 20 20 20 20 cd 0d  |....          ..|
00013620  09 b5 0d 20 20 20 20 20  20 20 20 cd 0d 09 b6 0e  |...        .....|
00013630  20 20 20 20 20 20 ed 20  69 25 0d 09 b7 09 20 20  |      . i%....  |
00013640  20 20 cd 0d 09 b8 20 20  20 c9 20 34 20 3a 20 f4  |  ....   . 4 : .|
00013650  20 64 72 61 67 20 66 72  6f 6d 20 73 61 76 65 2d  | drag from save-|
00013660  62 6f 78 0d 09 b9 2e 20  20 20 20 e7 20 44 72 61  |box....    . Dra|
00013670  67 41 53 70 72 69 74 65  25 20 8c 20 c8 99 20 22  |gASprite% . .. "|
00013680  44 72 61 67 41 53 70 72  69 74 65 5f 53 74 6f 70  |DragASprite_Stop|
00013690  22 0d 09 ba 11 20 20 20  20 42 6c 6b 25 21 30 3d  |"....    Blk%!0=|
000136a0  36 30 0d 09 bb 11 20 20  20 20 42 6c 6b 25 21 31  |60....    Blk%!1|
000136b0  32 3d 30 0d 09 bc 11 20  20 20 20 42 6c 6b 25 21  |2=0....    Blk%!|
000136c0  31 36 3d 31 0d 09 bd 1b  20 20 20 20 42 6c 6b 25  |16=1....    Blk%|
000136d0  21 32 30 3d 50 74 72 49  6e 66 6f 25 21 31 32 0d  |!20=PtrInfo%!12.|
000136e0  09 be 1b 20 20 20 20 42  6c 6b 25 21 32 34 3d 50  |...    Blk%!24=P|
000136f0  74 72 49 6e 66 6f 25 21  31 36 0d 09 bf 1a 20 20  |trInfo%!16....  |
00013700  20 20 42 6c 6b 25 21 32  38 3d 50 74 72 49 6e 66  |  Blk%!28=PtrInf|
00013710  6f 25 21 30 0d 09 c0 1a  20 20 20 20 42 6c 6b 25  |o%!0....    Blk%|
00013720  21 33 32 3d 50 74 72 49  6e 66 6f 25 21 34 0d 09  |!32=PtrInfo%!4..|
00013730  c1 4b 20 20 20 20 42 6c  6b 25 21 33 36 3d 32 30  |.K    Blk%!36=20|
00013740  2b 31 31 32 2a 4e 72 54  65 6d 70 6c 61 74 65 73  |+112*NrTemplates|
00013750  25 20 3a 20 f4 20 74 68  69 73 20 69 73 20 61 20  |% : . this is a |
00013760  6c 6f 77 20 65 73 74 69  6d 61 74 65 20 6f 66 20  |low estimate of |
00013770  66 69 6c 65 20 73 69 7a  65 0d 09 c2 14 20 20 20  |file size....   |
00013780  20 42 6c 6b 25 21 34 30  3d 26 46 45 43 0d 09 c3  | Blk%!40=&FEC...|
00013790  1c 20 20 20 20 e7 20 53  61 76 69 6e 67 53 65 6c  |.    . SavingSel|
000137a0  65 63 74 69 6f 6e 25 20  8c 0d 09 c4 29 20 20 20  |ection% ....)   |
000137b0  20 20 20 24 28 42 6c 6b  25 2b 34 34 29 3d a4 6c  |   $(Blk%+44)=.l|
000137c0  65 61 66 6e 61 6d 65 28  53 65 6c 46 4e 61 6d 65  |eafname(SelFName|
000137d0  24 29 0d 09 c5 09 20 20  20 20 cc 0d 09 c6 2a 20  |$)....    ....* |
000137e0  20 20 20 20 20 24 28 42  6c 6b 25 2b 34 34 29 3d  |     $(Blk%+44)=|
000137f0  a4 6c 65 61 66 6e 61 6d  65 28 4d 61 69 6e 46 4e  |.leafname(MainFN|
00013800  61 6d 65 24 29 0d 09 c7  09 20 20 20 20 cd 0d 09  |ame$)....    ...|
00013810  c8 3d 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 53  |.=    .. "Wimp_S|
00013820  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 37 2c 42  |endMessage",17,B|
00013830  6c 6b 25 2c 50 74 72 49  6e 66 6f 25 21 31 32 2c  |lk%,PtrInfo%!12,|
00013840  50 74 72 49 6e 66 6f 25  21 31 36 0d 09 c9 0b 20  |PtrInfo%!16.... |
00013850  20 c9 20 35 2c 36 0d 09  ca 38 20 20 20 20 f4 20  | . 5,6...8    . |
00013860  77 69 6e 64 6f 77 20 6d  6f 76 65 2f 72 65 73 69  |window move/resi|
00013870  7a 65 20 2d 20 64 6f 20  6e 6f 74 68 69 6e 67 2c  |ze - do nothing,|
00013880  20 6e 6f 20 64 72 61 67  20 65 76 65 6e 74 0d 09  | no drag event..|
00013890  cb 05 cb 0d 09 cc 11 44  72 61 67 5f 54 79 70 65  |.......Drag_Type|
000138a0  25 3d 2d 31 0d 09 cd 05  e1 0d 09 ce 04 0d 09 cf  |%=-1............|
000138b0  32 dd 20 f2 69 6e 69 74  64 72 61 67 28 74 79 70  |2. .initdrag(typ|
000138c0  65 25 2c 77 69 6e 64 6f  77 25 2c 69 63 6f 6e 25  |e%,window%,icon%|
000138d0  2c 62 6f 78 30 78 25 2c  62 6f 78 30 79 25 29 0d  |,box0x%,box0y%).|
000138e0  09 d0 08 ea 20 62 25 0d  09 d1 4c c8 99 20 22 4f  |.... b%...L.. "O|
000138f0  53 5f 42 79 74 65 22 2c  31 36 31 2c 26 31 43 20  |S_Byte",161,&1C |
00013900  b8 20 2c 2c 62 25 20 3a  20 f4 20 72 65 61 64 20  |. ,,b% : . read |
00013910  22 64 72 61 67 61 73 70  72 69 74 65 22 20 62 69  |"dragasprite" bi|
00013920  74 20 69 6e 20 43 4d 4f  53 20 52 41 4d 20 28 52  |t in CMOS RAM (R|
00013930  4f 33 29 0d 09 d2 1c 44  72 61 67 41 53 70 72 69  |O3)....DragASpri|
00013940  74 65 25 3d 28 62 25 20  80 20 32 29 3c 3e 30 0d  |te%=(b% . 2)<>0.|
00013950  09 d3 20 e7 20 44 72 61  67 41 53 70 72 69 74 65  |.. . DragASprite|
00013960  25 20 80 20 28 74 79 70  65 25 3d 34 29 20 8c 0d  |% . (type%=4) ..|
00013970  09 d4 44 20 20 c8 99 20  22 44 72 61 67 41 53 70  |..D  .. "DragASp|
00013980  72 69 74 65 5f 53 74 61  72 74 22 2c 26 41 31 2c  |rite_Start",&A1,|
00013990  31 2c 22 66 69 6c 65 5f  66 65 63 22 2c 44 72 61  |1,"file_fec",Dra|
000139a0  67 42 6c 6b 25 2b 38 2c  44 72 61 67 42 6c 6b 25  |gBlk%+8,DragBlk%|
000139b0  2b 32 34 0d 09 d5 05 cc  0d 09 d6 22 20 20 c8 99  |+24........"  ..|
000139c0  20 22 57 69 6d 70 5f 44  72 61 67 42 6f 78 22 2c  | "Wimp_DragBox",|
000139d0  31 2c 44 72 61 67 42 6c  6b 25 0d 09 d7 05 cd 0d  |1,DragBlk%......|
000139e0  09 d8 3d 44 72 61 67 5f  54 79 70 65 25 3d 74 79  |..=Drag_Type%=ty|
000139f0  70 65 25 20 20 20 3a 20  f4 20 69 73 20 6e 6f 74  |pe%   : . is not|
00013a00  20 74 68 65 20 73 61 6d  65 20 61 73 20 57 69 6d  | the same as Wim|
00013a10  70 20 64 72 61 67 20 74  79 70 65 21 0d 09 d9 15  |p drag type!....|
00013a20  44 72 61 67 5f 57 69 6e  25 3d 77 69 6e 64 6f 77  |Drag_Win%=window|
00013a30  25 0d 09 da 14 44 72 61  67 5f 49 63 6f 6e 25 3d  |%....Drag_Icon%=|
00013a40  69 63 6f 6e 25 0d 09 db  44 44 72 61 67 5f 42 6f  |icon%...DDrag_Bo|
00013a50  78 30 78 25 3d 62 6f 78  30 78 25 20 3a 20 f4 20  |x0x%=box0x% : . |
00013a60  77 69 6e 64 6f 77 20 63  6f 6f 72 64 73 20 6f 66  |window coords of|
00013a70  20 62 6f 74 74 6f 6d 6c  65 66 74 20 63 6f 72 6e  | bottomleft corn|
00013a80  65 72 20 6f 66 20 62 6f  78 0d 09 dc 16 44 72 61  |er of box....Dra|
00013a90  67 5f 42 6f 78 30 79 25  3d 62 6f 78 30 79 25 0d  |g_Box0y%=box0y%.|
00013aa0  09 dd 2c 44 72 61 67 5f  42 6f 78 53 69 7a 65 78  |..,Drag_BoxSizex|
00013ab0  25 3d 94 28 44 72 61 67  42 6c 6b 25 21 31 36 2d  |%=.(DragBlk%!16-|
00013ac0  44 72 61 67 42 6c 6b 25  21 38 29 0d 09 de 2d 44  |DragBlk%!8)...-D|
00013ad0  72 61 67 5f 42 6f 78 53  69 7a 65 79 25 3d 94 28  |rag_BoxSizey%=.(|
00013ae0  44 72 61 67 42 6c 6b 25  21 32 30 2d 44 72 61 67  |DragBlk%!20-Drag|
00013af0  42 6c 6b 25 21 31 32 29  0d 09 df 26 c8 99 20 22  |Blk%!12)...&.. "|
00013b00  57 69 6d 70 5f 47 65 74  50 6f 69 6e 74 65 72 49  |Wimp_GetPointerI|
00013b10  6e 66 6f 22 2c 2c 50 74  72 49 6e 66 6f 25 0d 09  |nfo",,PtrInfo%..|
00013b20  e0 19 44 72 61 67 5f 50  74 72 78 25 3d 50 74 72  |..Drag_Ptrx%=Ptr|
00013b30  49 6e 66 6f 25 21 30 0d  09 e1 19 44 72 61 67 5f  |Info%!0....Drag_|
00013b40  50 74 72 79 25 3d 50 74  72 49 6e 66 6f 25 21 34  |Ptry%=PtrInfo%!4|
00013b50  0d 09 e2 05 e1 0d 09 e3  04 0d 09 e4 10 dd 20 f2  |.............. .|
00013b60  61 62 6f 72 74 64 72 61  67 0d 09 e5 20 e7 20 44  |abortdrag... . D|
00013b70  72 61 67 41 53 70 72 69  74 65 25 20 80 20 28 74  |ragASprite% . (t|
00013b80  79 70 65 25 3d 34 29 20  8c 0d 09 e6 1b 20 20 c8  |ype%=4) .....  .|
00013b90  99 20 22 44 72 61 67 41  53 70 72 69 74 65 5f 53  |. "DragASprite_S|
00013ba0  74 6f 70 22 0d 09 e7 05  cc 0d 09 e8 1b 20 20 c8  |top".........  .|
00013bb0  99 20 22 57 69 6d 70 5f  44 72 61 67 42 6f 78 22  |. "Wimp_DragBox"|
00013bc0  2c 2c 2d 31 0d 09 e9 05  cd 0d 09 ea 40 f2 73 65  |,,-1........@.se|
00013bd0  74 6d 6f 75 73 65 73 68  61 70 65 28 30 29 20 20  |tmouseshape(0)  |
00013be0  20 20 20 20 20 20 20 20  3a 20 f4 20 72 65 73 74  |        : . rest|
00013bf0  6f 72 65 20 64 65 66 61  75 6c 74 20 70 6f 69 6e  |ore default poin|
00013c00  74 65 72 20 73 68 61 70  65 0d 09 eb 11 44 72 61  |ter shape....Dra|
00013c10  67 5f 54 79 70 65 25 3d  2d 31 0d 09 ec 05 e1 0d  |g_Type%=-1......|
00013c20  09 ed 04 0d 09 ee 1f dd  20 f2 73 74 61 72 74 77  |........ .startw|
00013c30  69 6e 64 6f 77 6d 6f 76  65 28 77 69 6e 64 6f 77  |indowmove(window|
00013c40  25 29 0d 09 ef 16 44 72  61 67 42 6c 6b 25 21 30  |%)....DragBlk%!0|
00013c50  3d 77 69 6e 64 6f 77 25  0d 09 f0 10 44 72 61 67  |=window%....Drag|
00013c60  42 6c 6b 25 21 34 3d 31  0d 09 f1 1a f2 69 6e 69  |Blk%!4=1.....ini|
00013c70  74 64 72 61 67 28 35 2c  2d 31 2c 2d 31 2c 30 2c  |tdrag(5,-1,-1,0,|
00013c80  30 29 0d 09 f2 05 e1 0d  09 f3 04 0d 09 f4 21 dd  |0)............!.|
00013c90  20 f2 73 74 61 72 74 77  69 6e 64 6f 77 72 65 73  | .startwindowres|
00013ca0  69 7a 65 28 77 69 6e 64  6f 77 25 29 0d 09 f5 16  |ize(window%)....|
00013cb0  44 72 61 67 42 6c 6b 25  21 30 3d 77 69 6e 64 6f  |DragBlk%!0=windo|
00013cc0  77 25 0d 09 f6 10 44 72  61 67 42 6c 6b 25 21 34  |w%....DragBlk%!4|
00013cd0  3d 32 0d 09 f7 1a f2 69  6e 69 74 64 72 61 67 28  |=2.....initdrag(|
00013ce0  36 2c 2d 31 2c 2d 31 2c  30 2c 30 29 0d 09 f8 05  |6,-1,-1,0,0)....|
00013cf0  e1 0d 09 f9 04 0d 09 fa  2b dd 20 f2 73 74 61 72  |........+. .star|
00013d00  74 69 63 6f 6e 64 72 61  67 28 62 75 74 74 6f 6e  |ticondrag(button|
00013d10  25 2c 77 69 6e 64 6f 77  25 2c 69 63 6f 6e 25 29  |%,window%,icon%)|
00013d20  0d 09 fb 10 c8 8e 20 62  75 74 74 6f 6e 25 20 ca  |...... button% .|
00013d30  0d 09 fc 0d 20 20 c9 20  31 2c 32 35 36 0d 09 fd  |....  . 1,256...|
00013d40  19 20 20 20 20 f2 73 65  6c 5f 67 65 74 28 77 69  |.    .sel_get(wi|
00013d50  6e 64 6f 77 25 29 0d 09  fe 19 20 20 20 20 e7 20  |ndow%)....    . |
00013d60  4e 72 53 65 6c 65 63 74  65 64 25 3e 30 20 8c 0d  |NrSelected%>0 ..|
00013d70  09 ff 26 20 20 20 20 20  20 f2 73 74 61 72 74 69  |..&      .starti|
00013d80  63 6f 6e 72 65 73 69 7a  65 28 77 69 6e 64 6f 77  |conresize(window|
00013d90  25 2c 2d 31 29 0d 0a 00  09 20 20 20 20 cc 0d 0a  |%,-1)....    ...|
00013da0  01 36 20 20 20 20 20 20  e7 20 69 63 6f 6e 25 3e  |.6      . icon%>|
00013db0  3d 30 20 8c 20 f2 73 74  61 72 74 69 63 6f 6e 72  |=0 . .starticonr|
00013dc0  65 73 69 7a 65 28 77 69  6e 64 6f 77 25 2c 69 63  |esize(window%,ic|
00013dd0  6f 6e 25 29 0d 0a 02 09  20 20 20 20 cd 0d 0a 03  |on%)....    ....|
00013de0  0e 20 20 c9 20 34 2c 31  30 32 34 0d 0a 04 19 20  |.  . 4,1024.... |
00013df0  20 20 20 f2 73 65 6c 5f  67 65 74 28 77 69 6e 64  |   .sel_get(wind|
00013e00  6f 77 25 29 0d 0a 05 19  20 20 20 20 e7 20 4e 72  |ow%)....    . Nr|
00013e10  53 65 6c 65 63 74 65 64  25 3e 30 20 8c 0d 0a 06  |Selected%>0 ....|
00013e20  24 20 20 20 20 20 20 f2  73 74 61 72 74 69 63 6f  |$      .startico|
00013e30  6e 6d 6f 76 65 28 77 69  6e 64 6f 77 25 2c 2d 31  |nmove(window%,-1|
00013e40  29 0d 0a 07 09 20 20 20  20 cc 0d 0a 08 34 20 20  |)....    ....4  |
00013e50  20 20 20 20 e7 20 69 63  6f 6e 25 3e 3d 30 20 8c  |    . icon%>=0 .|
00013e60  20 f2 73 74 61 72 74 69  63 6f 6e 6d 6f 76 65 28  | .starticonmove(|
00013e70  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 29 0d 0a  |window%,icon%)..|
00013e80  09 09 20 20 20 20 cd 0d  0a 0a 05 cb 0d 0a 0b 05  |..    ..........|
00013e90  e1 0d 0a 0c 04 0d 0a 0d  23 dd 20 f2 73 74 61 72  |........#. .star|
00013ea0  74 69 63 6f 6e 6d 6f 76  65 28 77 69 6e 64 6f 77  |ticonmove(window|
00013eb0  25 2c 69 63 6f 6e 25 29  0d 0a 0e 2b ea 20 77 69  |%,icon%)...+. wi|
00013ec0  6e 30 78 25 2c 77 69 6e  30 79 25 2c 78 6d 69 6e  |n0x%,win0y%,xmin|
00013ed0  25 2c 78 6d 61 78 25 2c  79 6d 69 6e 25 2c 79 6d  |%,xmax%,ymin%,ym|
00013ee0  61 78 25 0d 0a 0f 15 57  69 6e 42 6c 6b 25 21 30  |ax%....WinBlk%!0|
00013ef0  3d 77 69 6e 64 6f 77 25  0d 0a 10 25 c8 99 20 22  |=window%...%.. "|
00013f00  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
00013f10  61 74 65 22 2c 2c 57 69  6e 42 6c 6b 25 0d 0a 11  |ate",,WinBlk%...|
00013f20  1f 77 69 6e 30 78 25 3d  57 69 6e 42 6c 6b 25 21  |.win0x%=WinBlk%!|
00013f30  34 2d 57 69 6e 42 6c 6b  25 21 32 30 0d 0a 12 20  |4-WinBlk%!20... |
00013f40  77 69 6e 30 79 25 3d 57  69 6e 42 6c 6b 25 21 31  |win0y%=WinBlk%!1|
00013f50  36 2d 57 69 6e 42 6c 6b  25 21 32 34 0d 0a 13 10  |6-WinBlk%!24....|
00013f60  e7 20 69 63 6f 6e 25 3e  3d 30 20 8c 0d 0a 14 36  |. icon%>=0 ....6|
00013f70  20 20 53 65 6c 42 6c 6b  25 21 30 3d 69 63 6f 6e  |  SelBlk%!0=icon|
00013f80  25 20 3a 20 f4 20 73 69  6d 75 6c 61 74 65 20 73  |% : . simulate s|
00013f90  65 6c 65 63 74 69 6f 6e  20 6f 66 20 31 20 69 63  |election of 1 ic|
00013fa0  6f 6e 0d 0a 15 13 20 20  4e 72 53 65 6c 65 63 74  |on....  NrSelect|
00013fb0  65 64 25 3d 31 0d 0a 16  05 cc 0d 0a 17 17 20 20  |ed%=1.........  |
00013fc0  f2 73 65 6c 5f 67 65 74  28 77 69 6e 64 6f 77 25  |.sel_get(window%|
00013fd0  29 0d 0a 18 05 cd 0d 0a  19 2d f2 73 65 6c 5f 62  |)........-.sel_b|
00013fe0  6f 78 28 77 69 6e 64 6f  77 25 2c 78 6d 69 6e 25  |ox(window%,xmin%|
00013ff0  2c 79 6d 69 6e 25 2c 78  6d 61 78 25 2c 79 6d 61  |,ymin%,xmax%,yma|
00014000  78 25 29 0d 0a 1a 26 c8  99 20 22 57 69 6d 70 5f  |x%)...&.. "Wimp_|
00014010  47 65 74 50 6f 69 6e 74  65 72 49 6e 66 6f 22 2c  |GetPointerInfo",|
00014020  2c 50 74 72 49 6e 66 6f  25 0d 0a 1b 10 44 72 61  |,PtrInfo%....Dra|
00014030  67 42 6c 6b 25 21 34 3d  35 0d 0a 1c 1b 44 72 61  |gBlk%!4=5....Dra|
00014040  67 42 6c 6b 25 21 38 3d  78 6d 69 6e 25 2b 77 69  |gBlk%!8=xmin%+wi|
00014050  6e 30 78 25 0d 0a 1d 1c  44 72 61 67 42 6c 6b 25  |n0x%....DragBlk%|
00014060  21 31 32 3d 79 6d 69 6e  25 2b 77 69 6e 30 79 25  |!12=ymin%+win0y%|
00014070  0d 0a 1e 1c 44 72 61 67  42 6c 6b 25 21 31 36 3d  |....DragBlk%!16=|
00014080  78 6d 61 78 25 2b 77 69  6e 30 78 25 0d 0a 1f 1c  |xmax%+win0x%....|
00014090  44 72 61 67 42 6c 6b 25  21 32 30 3d 79 6d 61 78  |DragBlk%!20=ymax|
000140a0  25 2b 77 69 6e 30 79 25  0d 0a 20 25 44 72 61 67  |%+win0y%.. %Drag|
000140b0  42 6c 6b 25 21 32 34 3d  44 72 61 67 42 6c 6b 25  |Blk%!24=DragBlk%|
000140c0  21 38 2d 50 74 72 49 6e  66 6f 25 21 30 0d 0a 21  |!8-PtrInfo%!0..!|
000140d0  26 44 72 61 67 42 6c 6b  25 21 32 38 3d 44 72 61  |&DragBlk%!28=Dra|
000140e0  67 42 6c 6b 25 21 31 32  2d 50 74 72 49 6e 66 6f  |gBlk%!12-PtrInfo|
000140f0  25 21 34 0d 0a 22 34 44  72 61 67 42 6c 6b 25 21  |%!4.."4DragBlk%!|
00014100  33 32 3d 53 63 72 65 65  6e 53 69 7a 65 5f 58 25  |32=ScreenSize_X%|
00014110  2b 44 72 61 67 42 6c 6b  25 21 31 36 2d 50 74 72  |+DragBlk%!16-Ptr|
00014120  49 6e 66 6f 25 21 30 0d  0a 23 34 44 72 61 67 42  |Info%!0..#4DragB|
00014130  6c 6b 25 21 33 36 3d 53  63 72 65 65 6e 53 69 7a  |lk%!36=ScreenSiz|
00014140  65 5f 59 25 2b 44 72 61  67 42 6c 6b 25 21 32 30  |e_Y%+DragBlk%!20|
00014150  2d 50 74 72 49 6e 66 6f  25 21 34 0d 0a 24 2a f2  |-PtrInfo%!4..$*.|
00014160  69 6e 69 74 64 72 61 67  28 30 2c 77 69 6e 64 6f  |initdrag(0,windo|
00014170  77 25 2c 69 63 6f 6e 25  2c 78 6d 69 6e 25 2c 79  |w%,icon%,xmin%,y|
00014180  6d 69 6e 25 29 0d 0a 25  15 f2 73 65 74 6d 6f 75  |min%)..%..setmou|
00014190  73 65 73 68 61 70 65 28  31 29 0d 0a 26 05 e1 0d  |seshape(1)..&...|
000141a0  0a 27 04 0d 0a 28 25 dd  20 f2 73 74 61 72 74 69  |.'...(%. .starti|
000141b0  63 6f 6e 72 65 73 69 7a  65 28 77 69 6e 64 6f 77  |conresize(window|
000141c0  25 2c 69 63 6f 6e 25 29  0d 0a 29 25 ea 20 69 62  |%,icon%)..)%. ib|
000141d0  78 6d 69 6e 25 2c 69 62  78 6d 61 78 25 2c 69 62  |xmin%,ibxmax%,ib|
000141e0  79 6d 69 6e 25 2c 69 62  79 6d 61 78 25 0d 0a 2a  |ymin%,ibymax%..*|
000141f0  25 ea 20 70 62 78 6d 69  6e 25 2c 70 62 78 6d 61  |%. pbxmin%,pbxma|
00014200  78 25 2c 70 62 79 6d 69  6e 25 2c 70 62 79 6d 61  |x%,pbymin%,pbyma|
00014210  78 25 0d 0a 2b 0b ea 20  61 2c 62 2c 63 0d 0a 2c  |x%..+.. a,b,c..,|
00014220  2b ea 20 69 62 73 69 7a  65 78 25 2c 69 62 73 69  |+. ibsizex%,ibsi|
00014230  7a 65 79 25 2c 6d 69 6e  73 69 7a 65 78 25 2c 6d  |zey%,minsizex%,m|
00014240  69 6e 73 69 7a 65 79 25  0d 0a 2d 0c ea 20 73 68  |insizey%..-.. sh|
00014250  61 70 65 25 0d 0a 2e 2b  ea 20 77 69 6e 30 78 25  |ape%...+. win0x%|
00014260  2c 77 69 6e 30 79 25 2c  78 6d 69 6e 25 2c 78 6d  |,win0y%,xmin%,xm|
00014270  61 78 25 2c 79 6d 69 6e  25 2c 79 6d 61 78 25 0d  |ax%,ymin%,ymax%.|
00014280  0a 2f 15 57 69 6e 42 6c  6b 25 21 30 3d 77 69 6e  |./.WinBlk%!0=win|
00014290  64 6f 77 25 0d 0a 30 25  c8 99 20 22 57 69 6d 70  |dow%..0%.. "Wimp|
000142a0  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
000142b0  2c 2c 57 69 6e 42 6c 6b  25 0d 0a 31 1f 77 69 6e  |,,WinBlk%..1.win|
000142c0  30 78 25 3d 57 69 6e 42  6c 6b 25 21 34 2d 57 69  |0x%=WinBlk%!4-Wi|
000142d0  6e 42 6c 6b 25 21 32 30  0d 0a 32 20 77 69 6e 30  |nBlk%!20..2 win0|
000142e0  79 25 3d 57 69 6e 42 6c  6b 25 21 31 36 2d 57 69  |y%=WinBlk%!16-Wi|
000142f0  6e 42 6c 6b 25 21 32 34  0d 0a 33 10 e7 20 69 63  |nBlk%!24..3.. ic|
00014300  6f 6e 25 3e 3d 30 20 8c  0d 0a 34 36 20 20 53 65  |on%>=0 ...46  Se|
00014310  6c 42 6c 6b 25 21 30 3d  69 63 6f 6e 25 20 3a 20  |lBlk%!0=icon% : |
00014320  f4 20 73 69 6d 75 6c 61  74 65 20 73 65 6c 65 63  |. simulate selec|
00014330  74 69 6f 6e 20 6f 66 20  31 20 69 63 6f 6e 0d 0a  |tion of 1 icon..|
00014340  35 13 20 20 4e 72 53 65  6c 65 63 74 65 64 25 3d  |5.  NrSelected%=|
00014350  31 0d 0a 36 05 cc 0d 0a  37 17 20 20 f2 73 65 6c  |1..6....7.  .sel|
00014360  5f 67 65 74 28 77 69 6e  64 6f 77 25 29 0d 0a 38  |_get(window%)..8|
00014370  05 cd 0d 0a 39 2d f2 73  65 6c 5f 62 6f 78 28 77  |....9-.sel_box(w|
00014380  69 6e 64 6f 77 25 2c 78  6d 69 6e 25 2c 79 6d 69  |indow%,xmin%,ymi|
00014390  6e 25 2c 78 6d 61 78 25  2c 79 6d 61 78 25 29 0d  |n%,xmax%,ymax%).|
000143a0  0a 3a 46 69 62 78 6d 69  6e 25 3d 77 69 6e 30 78  |.:Fibxmin%=win0x|
000143b0  25 2b 78 6d 69 6e 25 20  3a 20 f4 20 66 6f 72 20  |%+xmin% : . for |
000143c0  69 6e 69 74 69 61 6c 20  62 6f 78 2c 20 63 6f 6e  |initial box, con|
000143d0  76 65 72 74 20 74 6f 20  73 63 72 65 65 6e 20 63  |vert to screen c|
000143e0  6f 6f 72 64 73 0d 0a 3b  18 69 62 79 6d 69 6e 25  |oords..;.ibymin%|
000143f0  3d 77 69 6e 30 79 25 2b  79 6d 69 6e 25 0d 0a 3c  |=win0y%+ymin%..<|
00014400  18 69 62 78 6d 61 78 25  3d 77 69 6e 30 78 25 2b  |.ibxmax%=win0x%+|
00014410  78 6d 61 78 25 0d 0a 3d  18 69 62 79 6d 61 78 25  |xmax%..=.ibymax%|
00014420  3d 77 69 6e 30 79 25 2b  79 6d 61 78 25 0d 0a 3e  |=win0y%+ymax%..>|
00014430  18 69 62 73 69 7a 65 78  25 3d 78 6d 61 78 25 2d  |.ibsizex%=xmax%-|
00014440  78 6d 69 6e 25 0d 0a 3f  18 69 62 73 69 7a 65 79  |xmin%..?.ibsizey|
00014450  25 3d 79 6d 61 78 25 2d  79 6d 69 6e 25 0d 0a 40  |%=ymax%-ymin%..@|
00014460  33 f4 20 61 74 20 66 69  72 73 74 2c 20 73 65 74  |3. at first, set|
00014470  20 70 61 72 65 6e 74 20  62 6f 78 20 65 71 75 61  | parent box equa|
00014480  6c 20 74 6f 20 69 6e 69  74 69 61 6c 20 62 6f 78  |l to initial box|
00014490  0d 0a 41 13 70 62 78 6d  69 6e 25 3d 69 62 78 6d  |..A.pbxmin%=ibxm|
000144a0  69 6e 25 0d 0a 42 13 70  62 79 6d 69 6e 25 3d 69  |in%..B.pbymin%=i|
000144b0  62 79 6d 69 6e 25 0d 0a  43 13 70 62 78 6d 61 78  |bymin%..C.pbxmax|
000144c0  25 3d 69 62 78 6d 61 78  25 0d 0a 44 13 70 62 79  |%=ibxmax%..D.pby|
000144d0  6d 61 78 25 3d 69 62 79  6d 61 78 25 0d 0a 45 43  |max%=ibymax%..EC|
000144e0  f4 20 66 69 78 65 64 20  6d 69 6e 69 6d 75 6d 20  |. fixed minimum |
000144f0  73 69 7a 65 20 6f 66 20  64 72 61 67 20 62 6f 78  |size of drag box|
00014500  20 28 76 65 72 79 20 64  69 66 66 69 63 75 6c 74  | (very difficult|
00014510  20 74 6f 20 63 61 6c 63  75 6c 61 74 65 21 29 0d  | to calculate!).|
00014520  0a 46 10 6d 69 6e 73 69  7a 65 78 25 3d 33 32 0d  |.F.minsizex%=32.|
00014530  0a 47 10 6d 69 6e 73 69  7a 65 79 25 3d 33 32 0d  |.G.minsizey%=32.|
00014540  0a 48 2d e7 20 6d 69 6e  73 69 7a 65 78 25 3e 69  |.H-. minsizex%>i|
00014550  62 73 69 7a 65 78 25 20  8c 20 6d 69 6e 73 69 7a  |bsizex% . minsiz|
00014560  65 78 25 3d 69 62 73 69  7a 65 78 25 0d 0a 49 2d  |ex%=ibsizex%..I-|
00014570  e7 20 6d 69 6e 73 69 7a  65 79 25 3e 69 62 73 69  |. minsizey%>ibsi|
00014580  7a 65 79 25 20 8c 20 6d  69 6e 73 69 7a 65 79 25  |zey% . minsizey%|
00014590  3d 69 62 73 69 7a 65 79  25 0d 0a 4a 26 f4 20 67  |=ibsizey%..J&. g|
000145a0  65 74 20 70 6f 73 69 74  69 6f 6e 20 6f 66 20 77  |et position of w|
000145b0  69 6e 64 6f 77 20 6f 6e  20 73 63 72 65 65 6e 0d  |indow on screen.|
000145c0  0a 4b 15 57 69 6e 42 6c  6b 25 21 30 3d 77 69 6e  |.K.WinBlk%!0=win|
000145d0  64 6f 77 25 0d 0a 4c 25  c8 99 20 22 57 69 6d 70  |dow%..L%.. "Wimp|
000145e0  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
000145f0  2c 2c 57 69 6e 42 6c 6b  25 0d 0a 4d 44 f4 20 64  |,,WinBlk%..MD. d|
00014600  65 74 65 72 6d 69 6e 65  20 77 68 69 63 68 20 73  |etermine which s|
00014610  69 64 65 20 74 6f 20 64  72 61 67 20 2d 20 74 65  |ide to drag - te|
00014620  73 74 20 6d 6f 75 73 65  20 70 6f 73 69 74 69 6f  |st mouse positio|
00014630  6e 20 72 65 6c 61 74 69  76 65 20 74 6f 0d 0a 4e  |n relative to..N|
00014640  16 f4 20 64 69 61 67 6f  6e 61 6c 73 20 6f 66 20  |.. diagonals of |
00014650  62 6f 78 0d 0a 4f 32 f4  20 64 69 61 67 6f 6e 61  |box..O2. diagona|
00014660  6c 20 31 20 28 62 6f 74  74 6f 6d 6c 65 66 74 2d  |l 1 (bottomleft-|
00014670  74 6f 70 72 69 67 68 74  29 20 79 20 3d 20 61 2a  |topright) y = a*|
00014680  78 20 2b 20 62 0d 0a 50  33 f4 20 64 69 61 67 6f  |x + b..P3. diago|
00014690  6e 61 6c 20 32 20 28 74  6f 70 6c 65 66 74 2d 62  |nal 2 (topleft-b|
000146a0  6f 74 74 6f 6d 72 69 67  68 74 29 20 79 20 3d 20  |ottomright) y = |
000146b0  2d 61 2a 78 20 2b 20 63  0d 0a 51 17 61 3d 69 62  |-a*x + c..Q.a=ib|
000146c0  73 69 7a 65 79 25 2f 69  62 73 69 7a 65 78 25 0d  |sizey%/ibsizex%.|
000146d0  0a 52 17 62 3d 69 62 79  6d 69 6e 25 2d 61 2a 69  |.R.b=ibymin%-a*i|
000146e0  62 78 6d 69 6e 25 0d 0a  53 17 63 3d 69 62 79 6d  |bxmin%..S.c=ibym|
000146f0  61 78 25 2b 61 2a 69 62  78 6d 69 6e 25 0d 0a 54  |ax%+a*ibxmin%..T|
00014700  26 c8 99 20 22 57 69 6d  70 5f 47 65 74 50 6f 69  |&.. "Wimp_GetPoi|
00014710  6e 74 65 72 49 6e 66 6f  22 2c 2c 50 74 72 49 6e  |nterInfo",,PtrIn|
00014720  66 6f 25 0d 0a 55 25 e7  20 50 74 72 49 6e 66 6f  |fo%..U%. PtrInfo|
00014730  25 21 34 3e 28 61 2a 28  50 74 72 49 6e 66 6f 25  |%!4>(a*(PtrInfo%|
00014740  21 30 29 2b 62 29 20 8c  0d 0a 56 18 20 20 f4 20  |!0)+b) ...V.  . |
00014750  61 62 6f 76 65 20 64 69  61 67 6f 6e 61 6c 20 31  |above diagonal 1|
00014760  0d 0a 57 28 20 20 e7 20  50 74 72 49 6e 66 6f 25  |..W(  . PtrInfo%|
00014770  21 34 3e 28 2d 61 2a 28  50 74 72 49 6e 66 6f 25  |!4>(-a*(PtrInfo%|
00014780  21 30 29 2b 63 29 20 8c  0d 0a 58 2a 20 20 20 20  |!0)+c) ...X*    |
00014790  f4 20 61 62 6f 76 65 20  64 69 61 67 6f 6e 61 6c  |. above diagonal|
000147a0  20 32 20 2d 20 64 72 61  67 20 74 6f 70 20 73 69  | 2 - drag top si|
000147b0  64 65 0d 0a 59 3a 20 20  20 20 e7 20 57 69 6e 42  |de..Y:    . WinB|
000147c0  6c 6b 25 21 31 36 3e 69  62 79 6d 61 78 25 20 8c  |lk%!16>ibymax% .|
000147d0  20 70 62 79 6d 61 78 25  3d 57 69 6e 42 6c 6b 25  | pbymax%=WinBlk%|
000147e0  21 31 36 2d 69 62 73 69  7a 65 79 25 0d 0a 5a 1a  |!16-ibsizey%..Z.|
000147f0  20 20 20 20 70 62 79 6d  69 6e 25 2b 3d 6d 69 6e  |    pbymin%+=min|
00014800  73 69 7a 65 79 25 0d 0a  5b 10 20 20 20 20 73 68  |sizey%..[.    sh|
00014810  61 70 65 25 3d 32 0d 0a  5c 3f 20 20 20 20 c8 94  |ape%=2..\?    ..|
00014820  20 69 62 79 6d 69 6e 25  2c 69 62 79 6d 61 78 25  | ibymin%,ibymax%|
00014830  20 3a 20 f4 20 74 6f 70  20 73 69 64 65 20 6f 66  | : . top side of|
00014840  20 62 6f 78 20 6d 75 73  74 20 62 65 20 22 72 75  | box must be "ru|
00014850  62 62 65 72 22 0d 0a 5d  07 20 20 cc 0d 0a 5e 2b  |bber"..].  ...^+|
00014860  20 20 20 20 f4 20 62 65  6c 6f 77 20 64 69 61 67  |    . below diag|
00014870  6f 6e 61 6c 20 32 20 2d  20 64 72 61 67 20 6c 65  |onal 2 - drag le|
00014880  66 74 20 73 69 64 65 0d  0a 5f 38 20 20 20 20 e7  |ft side.._8    .|
00014890  20 57 69 6e 42 6c 6b 25  21 34 3c 69 62 78 6d 69  | WinBlk%!4<ibxmi|
000148a0  6e 25 20 8c 20 70 62 78  6d 69 6e 25 3d 57 69 6e  |n% . pbxmin%=Win|
000148b0  42 6c 6b 25 21 34 2b 69  62 73 69 7a 65 78 25 0d  |Blk%!4+ibsizex%.|
000148c0  0a 60 1a 20 20 20 20 70  62 78 6d 61 78 25 2d 3d  |.`.    pbxmax%-=|
000148d0  6d 69 6e 73 69 7a 65 78  25 0d 0a 61 10 20 20 20  |minsizex%..a.   |
000148e0  20 73 68 61 70 65 25 3d  35 0d 0a 62 40 20 20 20  | shape%=5..b@   |
000148f0  20 c8 94 20 69 62 78 6d  69 6e 25 2c 69 62 78 6d  | .. ibxmin%,ibxm|
00014900  61 78 25 20 3a 20 f4 20  6c 65 66 74 20 73 69 64  |ax% : . left sid|
00014910  65 20 6f 66 20 62 6f 78  20 6d 75 73 74 20 62 65  |e of box must be|
00014920  20 22 72 75 62 62 65 72  22 0d 0a 63 07 20 20 cd  | "rubber"..c.  .|
00014930  0d 0a 64 05 cc 0d 0a 65  18 20 20 f4 20 62 65 6c  |..d....e.  . bel|
00014940  6f 77 20 64 69 61 67 6f  6e 61 6c 20 31 0d 0a 66  |ow diagonal 1..f|
00014950  28 20 20 e7 20 50 74 72  49 6e 66 6f 25 21 34 3e  |(  . PtrInfo%!4>|
00014960  28 2d 61 2a 28 50 74 72  49 6e 66 6f 25 21 30 29  |(-a*(PtrInfo%!0)|
00014970  2b 63 29 20 8c 0d 0a 67  2c 20 20 20 20 f4 20 61  |+c) ...g,    . a|
00014980  62 6f 76 65 20 64 69 61  67 6f 6e 61 6c 20 32 20  |bove diagonal 2 |
00014990  2d 20 64 72 61 67 20 72  69 67 68 74 20 73 69 64  |- drag right sid|
000149a0  65 0d 0a 68 31 20 20 20  20 e7 20 70 62 78 6d 61  |e..h1    . pbxma|
000149b0  78 25 3c 57 69 6e 42 6c  6b 25 21 31 32 20 8c 20  |x%<WinBlk%!12 . |
000149c0  70 62 78 6d 61 78 25 3d  57 69 6e 42 6c 6b 25 21  |pbxmax%=WinBlk%!|
000149d0  31 32 0d 0a 69 23 20 20  20 20 70 62 78 6d 69 6e  |12..i#    pbxmin|
000149e0  25 2d 3d 69 62 73 69 7a  65 78 25 2d 6d 69 6e 73  |%-=ibsizex%-mins|
000149f0  69 7a 65 78 25 0d 0a 6a  10 20 20 20 20 73 68 61  |izex%..j.    sha|
00014a00  70 65 25 3d 33 0d 0a 6b  07 20 20 cc 0d 0a 6c 2d  |pe%=3..k.  ...l-|
00014a10  20 20 20 20 f4 20 62 65  6c 6f 77 20 64 69 61 67  |    . below diag|
00014a20  6f 6e 61 6c 20 32 20 2d  20 64 72 61 67 20 62 6f  |onal 2 - drag bo|
00014a30  74 74 6f 6d 20 73 69 64  65 0d 0a 6d 2f 20 20 20  |ttom side..m/   |
00014a40  20 e7 20 70 62 79 6d 69  6e 25 3e 57 69 6e 42 6c  | . pbymin%>WinBl|
00014a50  6b 25 21 38 20 8c 20 70  62 79 6d 69 6e 25 3d 57  |k%!8 . pbymin%=W|
00014a60  69 6e 42 6c 6b 25 21 38  0d 0a 6e 23 20 20 20 20  |inBlk%!8..n#    |
00014a70  70 62 79 6d 61 78 25 2b  3d 69 62 73 69 7a 65 79  |pbymax%+=ibsizey|
00014a80  25 2d 6d 69 6e 73 69 7a  65 79 25 0d 0a 6f 10 20  |%-minsizey%..o. |
00014a90  20 20 20 73 68 61 70 65  25 3d 34 0d 0a 70 07 20  |   shape%=4..p. |
00014aa0  20 cd 0d 0a 71 05 cd 0d  0a 72 10 44 72 61 67 42  | ...q....r.DragB|
00014ab0  6c 6b 25 21 34 3d 36 0d  0a 73 16 44 72 61 67 42  |lk%!4=6..s.DragB|
00014ac0  6c 6b 25 21 38 3d 69 62  78 6d 69 6e 25 0d 0a 74  |lk%!8=ibxmin%..t|
00014ad0  17 44 72 61 67 42 6c 6b  25 21 31 32 3d 69 62 79  |.DragBlk%!12=iby|
00014ae0  6d 69 6e 25 0d 0a 75 17  44 72 61 67 42 6c 6b 25  |min%..u.DragBlk%|
00014af0  21 31 36 3d 69 62 78 6d  61 78 25 0d 0a 76 17 44  |!16=ibxmax%..v.D|
00014b00  72 61 67 42 6c 6b 25 21  32 30 3d 69 62 79 6d 61  |ragBlk%!20=ibyma|
00014b10  78 25 0d 0a 77 17 44 72  61 67 42 6c 6b 25 21 32  |x%..w.DragBlk%!2|
00014b20  34 3d 70 62 78 6d 69 6e  25 0d 0a 78 17 44 72 61  |4=pbxmin%..x.Dra|
00014b30  67 42 6c 6b 25 21 32 38  3d 70 62 79 6d 69 6e 25  |gBlk%!28=pbymin%|
00014b40  0d 0a 79 17 44 72 61 67  42 6c 6b 25 21 33 32 3d  |..y.DragBlk%!32=|
00014b50  70 62 78 6d 61 78 25 0d  0a 7a 17 44 72 61 67 42  |pbxmax%..z.DragB|
00014b60  6c 6b 25 21 33 36 3d 70  62 79 6d 61 78 25 0d 0a  |lk%!36=pbymax%..|
00014b70  7b 2a f2 69 6e 69 74 64  72 61 67 28 31 2c 77 69  |{*.initdrag(1,wi|
00014b80  6e 64 6f 77 25 2c 69 63  6f 6e 25 2c 78 6d 69 6e  |ndow%,icon%,xmin|
00014b90  25 2c 79 6d 69 6e 25 29  0d 0a 7c 1a f2 73 65 74  |%,ymin%)..|..set|
00014ba0  6d 6f 75 73 65 73 68 61  70 65 28 73 68 61 70 65  |mouseshape(shape|
00014bb0  25 29 0d 0a 7d 05 e1 0d  0a 7e 04 0d 0a 7f 1a dd  |%)..}....~......|
00014bc0  20 f2 64 72 61 67 73 65  6c 65 63 74 28 62 75 74  | .dragselect(but|
00014bd0  74 6f 6e 25 29 0d 0a 80  14 e7 20 44 72 61 67 5f  |ton%)..... Drag_|
00014be0  54 79 70 65 25 3c 30 20  8c 0d 0a 81 28 20 20 c8  |Type%<0 ....(  .|
00014bf0  99 20 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |. "Wimp_GetPoint|
00014c00  65 72 49 6e 66 6f 22 2c  2c 50 74 72 49 6e 66 6f  |erInfo",,PtrInfo|
00014c10  25 0d 0a 82 12 20 20 44  72 61 67 42 6c 6b 25 21  |%....  DragBlk%!|
00014c20  34 3d 36 0d 0a 83 1b 20  20 44 72 61 67 42 6c 6b  |4=6....  DragBlk|
00014c30  25 21 38 3d 50 74 72 49  6e 66 6f 25 21 30 0d 0a  |%!8=PtrInfo%!0..|
00014c40  84 1c 20 20 44 72 61 67  42 6c 6b 25 21 31 32 3d  |..  DragBlk%!12=|
00014c50  50 74 72 49 6e 66 6f 25  21 34 0d 0a 85 1c 20 20  |PtrInfo%!4....  |
00014c60  44 72 61 67 42 6c 6b 25  21 31 36 3d 50 74 72 49  |DragBlk%!16=PtrI|
00014c70  6e 66 6f 25 21 30 0d 0a  86 1c 20 20 44 72 61 67  |nfo%!0....  Drag|
00014c80  42 6c 6b 25 21 32 30 3d  50 74 72 49 6e 66 6f 25  |Blk%!20=PtrInfo%|
00014c90  21 34 0d 0a 87 1b 20 20  57 69 6e 42 6c 6b 25 21  |!4....  WinBlk%!|
00014ca0  30 3d 50 74 72 49 6e 66  6f 25 21 31 32 0d 0a 88  |0=PtrInfo%!12...|
00014cb0  27 20 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 57  |'  .. "Wimp_GetW|
00014cc0  69 6e 64 6f 77 53 74 61  74 65 22 2c 2c 57 69 6e  |indowState",,Win|
00014cd0  42 6c 6b 25 0d 0a 89 1b  20 20 44 72 61 67 42 6c  |Blk%....  DragBl|
00014ce0  6b 25 21 32 34 3d 57 69  6e 42 6c 6b 25 21 34 0d  |k%!24=WinBlk%!4.|
00014cf0  0a 8a 1b 20 20 44 72 61  67 42 6c 6b 25 21 32 38  |...  DragBlk%!28|
00014d00  3d 57 69 6e 42 6c 6b 25  21 38 0d 0a 8b 1c 20 20  |=WinBlk%!8....  |
00014d10  44 72 61 67 42 6c 6b 25  21 33 32 3d 57 69 6e 42  |DragBlk%!32=WinB|
00014d20  6c 6b 25 21 31 32 0d 0a  8c 1c 20 20 44 72 61 67  |lk%!12....  Drag|
00014d30  42 6c 6b 25 21 33 36 3d  57 69 6e 42 6c 6b 25 21  |Blk%!36=WinBlk%!|
00014d40  31 36 0d 0a 8d 13 20 20  e7 20 62 75 74 74 6f 6e  |16....  . button|
00014d50  25 3d 31 20 8c 0d 0a 8e  45 20 20 20 20 f2 69 6e  |%=1 ....E    .in|
00014d60  69 74 64 72 61 67 28 33  2c 50 74 72 49 6e 66 6f  |itdrag(3,PtrInfo|
00014d70  25 21 31 32 2c 50 74 72  49 6e 66 6f 25 21 31 36  |%!12,PtrInfo%!16|
00014d80  2c 30 2c 30 29 20 3a 20  f4 20 64 72 61 67 20 77  |,0,0) : . drag w|
00014d90  69 74 68 20 41 64 6a 75  73 74 0d 0a 8f 07 20 20  |ith Adjust....  |
00014da0  cc 0d 0a 90 45 20 20 20  20 f2 69 6e 69 74 64 72  |....E    .initdr|
00014db0  61 67 28 32 2c 50 74 72  49 6e 66 6f 25 21 31 32  |ag(2,PtrInfo%!12|
00014dc0  2c 50 74 72 49 6e 66 6f  25 21 31 36 2c 30 2c 30  |,PtrInfo%!16,0,0|
00014dd0  29 20 3a 20 f4 20 64 72  61 67 20 77 69 74 68 20  |) : . drag with |
00014de0  53 65 6c 65 63 74 0d 0a  91 07 20 20 cd 0d 0a 92  |Select....  ....|
00014df0  05 cd 0d 0a 93 05 e1 0d  0a 94 04 0d 0a 95 14 dd  |................|
00014e00  20 f2 73 74 61 72 74 73  61 76 65 64 72 61 67 0d  | .startsavedrag.|
00014e10  0a 96 13 ea 20 77 69 6e  30 78 25 2c 77 69 6e 30  |.... win0x%,win0|
00014e20  79 25 0d 0a 97 14 57 69  6e 42 6c 6b 25 21 30 3d  |y%....WinBlk%!0=|
00014e30  53 61 76 65 57 25 0d 0a  98 25 c8 99 20 22 57 69  |SaveW%...%.. "Wi|
00014e40  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
00014e50  65 22 2c 2c 57 69 6e 42  6c 6b 25 0d 0a 99 1f 77  |e",,WinBlk%....w|
00014e60  69 6e 30 78 25 3d 57 69  6e 42 6c 6b 25 21 34 2d  |in0x%=WinBlk%!4-|
00014e70  57 69 6e 42 6c 6b 25 21  32 30 0d 0a 9a 20 77 69  |WinBlk%!20... wi|
00014e80  6e 30 79 25 3d 57 69 6e  42 6c 6b 25 21 31 36 2d  |n0y%=WinBlk%!16-|
00014e90  57 69 6e 42 6c 6b 25 21  32 34 0d 0a 9b 16 53 63  |WinBlk%!24....Sc|
00014ea0  72 61 70 42 6c 6b 25 21  30 3d 53 61 76 65 57 25  |rapBlk%!0=SaveW%|
00014eb0  0d 0a 9c 11 53 63 72 61  70 42 6c 6b 25 21 34 3d  |....ScrapBlk%!4=|
00014ec0  32 0d 0a 9d 25 c8 99 20  22 57 69 6d 70 5f 47 65  |2...%.. "Wimp_Ge|
00014ed0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 53 63 72  |tIconState",,Scr|
00014ee0  61 70 42 6c 6b 25 0d 0a  9e 10 44 72 61 67 42 6c  |apBlk%....DragBl|
00014ef0  6b 25 21 34 3d 35 0d 0a  9f 21 44 72 61 67 42 6c  |k%!4=5...!DragBl|
00014f00  6b 25 21 38 3d 53 63 72  61 70 42 6c 6b 25 21 38  |k%!8=ScrapBlk%!8|
00014f10  2b 77 69 6e 30 78 25 0d  0a a0 23 44 72 61 67 42  |+win0x%...#DragB|
00014f20  6c 6b 25 21 31 32 3d 53  63 72 61 70 42 6c 6b 25  |lk%!12=ScrapBlk%|
00014f30  21 31 32 2b 77 69 6e 30  79 25 0d 0a a1 23 44 72  |!12+win0y%...#Dr|
00014f40  61 67 42 6c 6b 25 21 31  36 3d 53 63 72 61 70 42  |agBlk%!16=ScrapB|
00014f50  6c 6b 25 21 31 36 2b 77  69 6e 30 78 25 0d 0a a2  |lk%!16+win0x%...|
00014f60  23 44 72 61 67 42 6c 6b  25 21 32 30 3d 53 63 72  |#DragBlk%!20=Scr|
00014f70  61 70 42 6c 6b 25 21 32  30 2b 77 69 6e 30 79 25  |apBlk%!20+win0y%|
00014f80  0d 0a a3 26 c8 99 20 22  57 69 6d 70 5f 47 65 74  |...&.. "Wimp_Get|
00014f90  50 6f 69 6e 74 65 72 49  6e 66 6f 22 2c 2c 50 74  |PointerInfo",,Pt|
00014fa0  72 49 6e 66 6f 25 0d 0a  a4 25 44 72 61 67 42 6c  |rInfo%...%DragBl|
00014fb0  6b 25 21 32 34 3d 44 72  61 67 42 6c 6b 25 21 38  |k%!24=DragBlk%!8|
00014fc0  2d 50 74 72 49 6e 66 6f  25 21 30 0d 0a a5 26 44  |-PtrInfo%!0...&D|
00014fd0  72 61 67 42 6c 6b 25 21  32 38 3d 44 72 61 67 42  |ragBlk%!28=DragB|
00014fe0  6c 6b 25 21 31 32 2d 50  74 72 49 6e 66 6f 25 21  |lk%!12-PtrInfo%!|
00014ff0  34 0d 0a a6 34 44 72 61  67 42 6c 6b 25 21 33 32  |4...4DragBlk%!32|
00015000  3d 53 63 72 65 65 6e 53  69 7a 65 5f 58 25 2b 44  |=ScreenSize_X%+D|
00015010  72 61 67 42 6c 6b 25 21  31 36 2d 50 74 72 49 6e  |ragBlk%!16-PtrIn|
00015020  66 6f 25 21 30 0d 0a a7  34 44 72 61 67 42 6c 6b  |fo%!0...4DragBlk|
00015030  25 21 33 36 3d 53 63 72  65 65 6e 53 69 7a 65 5f  |%!36=ScreenSize_|
00015040  59 25 2b 44 72 61 67 42  6c 6b 25 21 32 30 2d 50  |Y%+DragBlk%!20-P|
00015050  74 72 49 6e 66 6f 25 21  34 0d 0a a8 1e f2 69 6e  |trInfo%!4.....in|
00015060  69 74 64 72 61 67 28 34  2c 53 61 76 65 57 25 2c  |itdrag(4,SaveW%,|
00015070  2d 31 2c 30 2c 30 29 0d  0a a9 05 e1 0d 0a aa 04  |-1,0,0).........|
00015080  0d 0a ab 3e f4 20 2d 2d  2d 20 6d 6f 76 65 20 6f  |...>. --- move o|
00015090  72 20 72 65 73 69 7a 65  20 69 63 6f 6e 73 2c 20  |r resize icons, |
000150a0  62 61 73 65 64 20 6f 6e  20 6e 65 77 20 63 6f 6f  |based on new coo|
000150b0  72 64 73 20 6f 66 20 62  6f 78 20 2d 2d 2d 0d 0a  |rds of box ---..|
000150c0  ac 40 dd 20 f2 6d 6f 76  65 72 65 73 69 7a 65 28  |.@. .moveresize(|
000150d0  6f 6c 64 77 69 6e 25 2c  69 63 6f 6e 25 2c 6e 65  |oldwin%,icon%,ne|
000150e0  77 77 69 6e 25 2c 78 6d  69 6e 25 2c 79 6d 69 6e  |wwin%,xmin%,ymin|
000150f0  25 2c 78 6d 61 78 25 2c  79 6d 61 78 25 29 0d 0a  |%,xmax%,ymax%)..|
00015100  ad 29 ea 20 6f 6c 64 78  6d 69 6e 25 2c 6f 6c 64  |.). oldxmin%,old|
00015110  79 6d 69 6e 25 2c 6f 6c  64 78 6d 61 78 25 2c 6f  |ymin%,oldxmax%,o|
00015120  6c 64 79 6d 61 78 25 0d  0a ae 1b ea 20 78 73 63  |ldymax%..... xsc|
00015130  61 6c 65 2c 79 73 63 61  6c 65 2c 6e 65 77 25 2c  |ale,yscale,new%,|
00015140  69 25 0d 0a af 10 e7 20  69 63 6f 6e 25 3e 3d 30  |i%..... icon%>=0|
00015150  20 8c 0d 0a b0 36 20 20  53 65 6c 42 6c 6b 25 21  | ....6  SelBlk%!|
00015160  30 3d 69 63 6f 6e 25 20  3a 20 f4 20 73 69 6d 75  |0=icon% : . simu|
00015170  6c 61 74 65 20 73 65 6c  65 63 74 69 6f 6e 20 6f  |late selection o|
00015180  66 20 31 20 69 63 6f 6e  0d 0a b1 13 20 20 4e 72  |f 1 icon....  Nr|
00015190  53 65 6c 65 63 74 65 64  25 3d 31 0d 0a b2 05 cc  |Selected%=1.....|
000151a0  0d 0a b3 17 20 20 f2 73  65 6c 5f 67 65 74 28 6f  |....  .sel_get(o|
000151b0  6c 64 77 69 6e 25 29 0d  0a b4 05 cd 0d 0a b5 39  |ldwin%)........9|
000151c0  f2 73 65 6c 5f 62 6f 78  28 6f 6c 64 77 69 6e 25  |.sel_box(oldwin%|
000151d0  2c 6f 6c 64 78 6d 69 6e  25 2c 6f 6c 64 79 6d 69  |,oldxmin%,oldymi|
000151e0  6e 25 2c 6f 6c 64 78 6d  61 78 25 2c 6f 6c 64 79  |n%,oldxmax%,oldy|
000151f0  6d 61 78 25 29 0d 0a b6  34 f4 20 63 61 6c 63 75  |max%)...4. calcu|
00015200  6c 61 74 65 20 73 63 61  6c 69 6e 67 20 66 61 63  |late scaling fac|
00015210  74 6f 72 73 20 28 77 69  6c 6c 20 62 65 20 31 20  |tors (will be 1 |
00015220  66 6f 72 20 6d 6f 76 65  29 0d 0a b7 2c 78 73 63  |for move)...,xsc|
00015230  61 6c 65 3d 28 78 6d 61  78 25 2d 78 6d 69 6e 25  |ale=(xmax%-xmin%|
00015240  29 2f 28 6f 6c 64 78 6d  61 78 25 2d 6f 6c 64 78  |)/(oldxmax%-oldx|
00015250  6d 69 6e 25 29 0d 0a b8  2c 79 73 63 61 6c 65 3d  |min%)...,yscale=|
00015260  28 79 6d 61 78 25 2d 79  6d 69 6e 25 29 2f 28 6f  |(ymax%-ymin%)/(o|
00015270  6c 64 79 6d 61 78 25 2d  6f 6c 64 79 6d 69 6e 25  |ldymax%-oldymin%|
00015280  29 0d 0a b9 1a e3 20 69  25 3d 30 20 b8 20 4e 72  |)..... i%=0 . Nr|
00015290  53 65 6c 65 63 74 65 64  25 2d 31 0d 0a ba 1a 20  |Selected%-1.... |
000152a0  20 49 63 6f 6e 42 6c 6b  25 21 30 3d 44 72 61 67  | IconBlk%!0=Drag|
000152b0  5f 57 69 6e 25 0d 0a bb  1f 20 20 49 63 6f 6e 42  |_Win%....  IconB|
000152c0  6c 6b 25 21 34 3d 53 65  6c 42 6c 6b 25 21 28 34  |lk%!4=SelBlk%!(4|
000152d0  2a 69 25 29 0d 0a bc 26  20 20 c8 99 20 22 57 69  |*i%)...&  .. "Wi|
000152e0  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
000152f0  2c 2c 49 63 6f 6e 42 6c  6b 25 0d 0a bd 3a 20 20  |,,IconBlk%...:  |
00015300  49 63 6f 6e 42 6c 6b 25  21 38 3d 78 6d 69 6e 25  |IconBlk%!8=xmin%|
00015310  2b a8 28 28 49 63 6f 6e  42 6c 6b 25 21 38 2d 6f  |+.((IconBlk%!8-o|
00015320  6c 64 78 6d 69 6e 25 29  2a 78 73 63 61 6c 65 2b  |ldxmin%)*xscale+|
00015330  30 2e 35 29 0d 0a be 3c  20 20 49 63 6f 6e 42 6c  |0.5)...<  IconBl|
00015340  6b 25 21 31 32 3d 79 6d  69 6e 25 2b a8 28 28 49  |k%!12=ymin%+.((I|
00015350  63 6f 6e 42 6c 6b 25 21  31 32 2d 6f 6c 64 79 6d  |conBlk%!12-oldym|
00015360  69 6e 25 29 2a 79 73 63  61 6c 65 2b 30 2e 35 29  |in%)*yscale+0.5)|
00015370  0d 0a bf 3c 20 20 49 63  6f 6e 42 6c 6b 25 21 31  |...<  IconBlk%!1|
00015380  36 3d 78 6d 69 6e 25 2b  a8 28 28 49 63 6f 6e 42  |6=xmin%+.((IconB|
00015390  6c 6b 25 21 31 36 2d 6f  6c 64 78 6d 69 6e 25 29  |lk%!16-oldxmin%)|
000153a0  2a 78 73 63 61 6c 65 2b  30 2e 35 29 0d 0a c0 3c  |*xscale+0.5)...<|
000153b0  20 20 49 63 6f 6e 42 6c  6b 25 21 32 30 3d 79 6d  |  IconBlk%!20=ym|
000153c0  69 6e 25 2b a8 28 28 49  63 6f 6e 42 6c 6b 25 21  |in%+.((IconBlk%!|
000153d0  32 30 2d 6f 6c 64 79 6d  69 6e 25 29 2a 79 73 63  |20-oldymin%)*ysc|
000153e0  61 6c 65 2b 30 2e 35 29  0d 0a c1 19 20 20 e7 20  |ale+0.5)....  . |
000153f0  6f 6c 64 77 69 6e 25 3d  6e 65 77 77 69 6e 25 20  |oldwin%=newwin% |
00015400  8c 0d 0a c2 26 20 20 20  20 f4 20 6d 6f 76 65 20  |....&    . move |
00015410  2f 20 72 65 73 69 7a 65  20 69 6e 20 73 61 6d 65  |/ resize in same|
00015420  20 77 69 6e 64 6f 77 0d  0a c3 3b 20 20 20 20 6e  | window...;    n|
00015430  65 77 25 3d a4 72 65 64  65 66 69 6e 65 69 63 6f  |ew%=.redefineico|
00015440  6e 28 6f 6c 64 77 69 6e  25 2c 53 65 6c 42 6c 6b  |n(oldwin%,SelBlk|
00015450  25 21 28 34 2a 69 25 29  2c 49 63 6f 6e 42 6c 6b  |%!(4*i%),IconBlk|
00015460  25 29 0d 0a c4 07 20 20  cc 0d 0a c5 31 20 20 20  |%)....  ....1   |
00015470  20 f4 20 6d 6f 76 65 20  74 6f 20 6f 74 68 65 72  | . move to other|
00015480  20 6f 74 68 65 72 20 77  69 6e 64 6f 77 20 3d 20  | other window = |
00015490  63 6f 70 79 20 69 63 6f  6e 73 0d 0a c6 1a 20 20  |copy icons....  |
000154a0  20 20 49 63 6f 6e 42 6c  6b 25 21 34 3d 6e 65 77  |  IconBlk%!4=new|
000154b0  77 69 6e 25 0d 0a c7 46  20 20 20 20 f2 69 63 6f  |win%...F    .ico|
000154c0  6e 72 65 61 6c 6c 6f 63  28 49 63 6f 6e 42 6c 6b  |nrealloc(IconBlk|
000154d0  25 2b 32 34 2c 49 63 6f  6e 42 6c 6b 25 2b 32 38  |%+24,IconBlk%+28|
000154e0  29 20 3a 20 f4 20 63 6f  70 79 20 69 6e 64 69 72  |) : . copy indir|
000154f0  65 63 74 65 64 20 64 61  74 61 0d 0a c8 24 20 20  |ected data...$  |
00015500  20 20 6e 65 77 25 3d a4  63 72 65 61 74 65 69 63  |  new%=.createic|
00015510  6f 6e 28 49 63 6f 6e 42  6c 6b 25 2b 34 29 0d 0a  |on(IconBlk%+4)..|
00015520  c9 07 20 20 cd 0d 0a ca  08 ed 20 69 25 0d 0a cb  |..  ...... i%...|
00015530  05 e1 0d 0a cc 04 0d 0a  cd 35 f4 20 2a 2a 2a 20  |.........5. *** |
00015540  70 72 6f 63 73 20 66 6f  72 20 64 69 61 6c 6f 67  |procs for dialog|
00015550  75 65 20 61 6e 64 20 72  65 70 6f 72 74 69 6e 67  |ue and reporting|
00015560  20 65 72 72 6f 72 73 20  2a 2a 2a 0d 0a ce 04 0d  | errors ***.....|
00015570  0a cf 1a dd 20 a4 65 72  72 62 6f 78 28 65 72 72  |.... .errbox(err|
00015580  24 2c 62 6f 78 65 73 25  29 0d 0a d0 0f 45 72 72  |$,boxes%)....Err|
00015590  42 6c 6b 25 21 30 3d 30  0d 0a d1 18 24 28 45 72  |Blk%!0=0....$(Er|
000155a0  72 42 6c 6b 25 2b 34 29  3d 65 72 72 24 2b bd 30  |rBlk%+4)=err$+.0|
000155b0  0d 0a d2 38 c8 99 20 22  57 69 6d 70 5f 52 65 70  |...8.. "Wimp_Rep|
000155c0  6f 72 74 45 72 72 6f 72  22 2c 45 72 72 42 6c 6b  |ortError",ErrBlk|
000155d0  25 2c 62 6f 78 65 73 25  2c 41 70 70 6c 24 20 b8  |%,boxes%,Appl$ .|
000155e0  20 2c 63 6c 69 63 6b 25  0d 0a d3 0f 3d 28 63 6c  | ,click%....=(cl|
000155f0  69 63 6b 25 3d 31 29 0d  0a d4 04 0d 0a d5 18 dd  |ick%=1).........|
00015600  20 f2 65 72 72 6f 72 28  66 6f 72 63 65 71 75 69  | .error(forcequi|
00015610  74 25 29 0d 0a d6 0d ea  20 62 75 74 74 6f 6e 25  |t%)..... button%|
00015620  0d 0a d7 07 ea 20 85 0d  0a d8 21 ee 20 85 20 ea  |..... ....!. . .|
00015630  20 c8 99 20 22 57 69 6d  70 5f 43 6c 6f 73 65 44  | .. "Wimp_CloseD|
00015640  6f 77 6e 22 20 3a 20 e0  0d 0a d9 18 c8 99 20 22  |own" : ....... "|
00015650  48 6f 75 72 67 6c 61 73  73 5f 53 6d 61 73 68 22  |Hourglass_Smash"|
00015660  0d 0a da 12 e7 20 66 6f  72 63 65 71 75 69 74 25  |..... forcequit%|
00015670  20 8c 0d 0a db 0f 20 20  62 75 74 74 6f 6e 25 3d  | .....  button%=|
00015680  32 0d 0a dc 05 cc 0d 0a  dd 0f 20 20 62 75 74 74  |2.........  butt|
00015690  6f 6e 25 3d 33 0d 0a de  05 cd 0d 0a df 32 e7 20  |on%=3........2. |
000156a0  28 ac 20 a4 65 72 72 62  6f 78 28 f6 24 2b 22 20  |(. .errbox(.$+" |
000156b0  28 6c 69 6e 65 20 22 2b  c3 28 9e 29 2b 22 29 22  |(line "+.(.)+")"|
000156c0  2c 62 75 74 74 6f 6e 25  29 29 20 8c 0d 0a e0 19  |,button%)) .....|
000156d0  20 20 c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |  .. "Wimp_Close|
000156e0  44 6f 77 6e 22 0d 0a e1  07 20 20 e0 0d 0a e2 05  |Down"....  .....|
000156f0  cd 0d 0a e3 05 e1 0d 0a  e4 04 0d 0a e5 15 dd 20  |............... |
00015700  f2 63 6f 6d 70 6c 61 69  6e 28 6d 73 67 24 29 0d  |.complain(msg$).|
00015710  0a e6 0c ea 20 64 75 6d  6d 79 25 0d 0a e7 1b 64  |.... dummy%....d|
00015720  75 6d 6d 79 25 3d a4 65  72 72 62 6f 78 28 6d 73  |ummy%=.errbox(ms|
00015730  67 24 2c 31 37 29 0d 0a  e8 05 e1 0d 0a e9 04 0d  |g$,17)..........|
00015740  0a ea 20 dd 20 f2 64 69  61 6c 6f 67 75 65 28 6e  |.. . .dialogue(n|
00015750  6f 25 2c 61 72 67 31 24  2c 61 72 67 32 24 29 0d  |o%,arg1$,arg2$).|
00015760  0a eb 17 ea 20 62 31 24  2c 62 32 24 2c 62 33 24  |.... b1$,b2$,b3$|
00015770  2c 6d 61 73 6b 25 0d 0a  ec 0a 62 31 24 3d 22 22  |,mask%....b1$=""|
00015780  0d 0a ed 0a 62 32 24 3d  22 22 0d 0a ee 0a 62 33  |....b2$=""....b3|
00015790  24 3d 22 22 0d 0a ef 0c  c8 8e 20 6e 6f 25 20 ca  |$=""...... no% .|
000157a0  0d 0a f0 09 20 20 c9 20  30 0d 0a f1 27 20 20 20  |....  . 0...'   |
000157b0  20 24 44 69 61 6c 5f 4d  73 67 25 3d a4 6d 73 67  | $Dial_Msg%=.msg|
000157c0  5f 6c 6f 6f 6b 75 70 30  28 22 4d 4f 44 30 22 29  |_lookup0("MOD0")|
000157d0  0d 0a f2 20 20 20 20 20  62 31 24 3d a4 6d 73 67  |...     b1$=.msg|
000157e0  5f 6c 6f 6f 6b 75 70 30  28 22 53 41 56 45 22 29  |_lookup0("SAVE")|
000157f0  0d 0a f3 20 20 20 20 20  62 32 24 3d a4 6d 73 67  |...     b2$=.msg|
00015800  5f 6c 6f 6f 6b 75 70 30  28 22 44 43 52 44 22 29  |_lookup0("DCRD")|
00015810  0d 0a f4 20 20 20 20 20  62 33 24 3d a4 6d 73 67  |...     b3$=.msg|
00015820  5f 6c 6f 6f 6b 75 70 30  28 22 43 41 4e 43 22 29  |_lookup0("CANC")|
00015830  0d 0a f5 09 20 20 c9 20  31 0d 0a f6 27 20 20 20  |....  . 1...'   |
00015840  20 24 44 69 61 6c 5f 4d  73 67 25 3d a4 6d 73 67  | $Dial_Msg%=.msg|
00015850  5f 6c 6f 6f 6b 75 70 30  28 22 4d 4f 44 30 22 29  |_lookup0("MOD0")|
00015860  0d 0a f7 20 20 20 20 20  62 31 24 3d a4 6d 73 67  |...     b1$=.msg|
00015870  5f 6c 6f 6f 6b 75 70 30  28 22 44 41 4c 4c 22 29  |_lookup0("DALL")|
00015880  0d 0a f8 20 20 20 20 20  62 33 24 3d a4 6d 73 67  |...     b3$=.msg|
00015890  5f 6c 6f 6f 6b 75 70 30  28 22 43 41 4e 43 22 29  |_lookup0("CANC")|
000158a0  0d 0a f9 09 20 20 c9 20  32 0d 0a fa 27 20 20 20  |....  . 2...'   |
000158b0  20 24 44 69 61 6c 5f 4d  73 67 25 3d a4 6d 73 67  | $Dial_Msg%=.msg|
000158c0  5f 6c 6f 6f 6b 75 70 30  28 22 4d 4f 44 30 22 29  |_lookup0("MOD0")|
000158d0  0d 0a fb 20 20 20 20 20  62 31 24 3d a4 6d 73 67  |...     b1$=.msg|
000158e0  5f 6c 6f 6f 6b 75 70 30  28 22 4c 4e 45 57 22 29  |_lookup0("LNEW")|
000158f0  0d 0a fc 20 20 20 20 20  62 33 24 3d a4 6d 73 67  |...     b3$=.msg|
00015900  5f 6c 6f 6f 6b 75 70 30  28 22 43 41 4e 43 22 29  |_lookup0("CANC")|
00015910  0d 0a fd 09 20 20 c9 20  33 0d 0a fe 2d 20 20 20  |....  . 3...-   |
00015920  20 24 44 69 61 6c 5f 4d  73 67 25 3d a4 6d 73 67  | $Dial_Msg%=.msg|
00015930  5f 6c 6f 6f 6b 75 70 31  28 22 4e 4f 52 4d 22 2c  |_lookup1("NORM",|
00015940  61 72 67 31 24 29 0d 0a  ff 1e 20 20 20 20 62 32  |arg1$)....    b2|
00015950  24 3d a4 6d 73 67 5f 6c  6f 6f 6b 75 70 30 28 22  |$=.msg_lookup0("|
00015960  4f 4b 22 29 0d 0b 00 09  20 20 c9 20 34 0d 0b 01  |OK")....  . 4...|
00015970  27 20 20 20 20 24 44 69  61 6c 5f 4d 73 67 25 3d  |'    $Dial_Msg%=|
00015980  a4 6d 73 67 5f 6c 6f 6f  6b 75 70 30 28 22 4e 55  |.msg_lookup0("NU|
00015990  50 44 22 29 0d 0b 02 1e  20 20 20 20 62 32 24 3d  |PD")....    b2$=|
000159a0  a4 6d 73 67 5f 6c 6f 6f  6b 75 70 30 28 22 4f 4b  |.msg_lookup0("OK|
000159b0  22 29 0d 0b 03 09 20 20  c9 20 35 0d 0b 04 27 20  |")....  . 5...' |
000159c0  20 20 20 24 44 69 61 6c  5f 4d 73 67 25 3d a4 6d  |   $Dial_Msg%=.m|
000159d0  73 67 5f 6c 6f 6f 6b 75  70 30 28 22 4e 53 54 46  |sg_lookup0("NSTF|
000159e0  22 29 0d 0b 05 1e 20 20  20 20 62 32 24 3d a4 6d  |")....    b2$=.m|
000159f0  73 67 5f 6c 6f 6f 6b 75  70 30 28 22 4f 4b 22 29  |sg_lookup0("OK")|
00015a00  0d 0b 06 09 20 20 c9 20  36 0d 0b 07 27 20 20 20  |....  . 6...'   |
00015a10  20 24 44 69 61 6c 5f 4d  73 67 25 3d a4 6d 73 67  | $Dial_Msg%=.msg|
00015a20  5f 6c 6f 6f 6b 75 70 30  28 22 4e 4f 43 48 22 29  |_lookup0("NOCH")|
00015a30  0d 0b 08 1e 20 20 20 20  62 32 24 3d a4 6d 73 67  |....    b2$=.msg|
00015a40  5f 6c 6f 6f 6b 75 70 30  28 22 4f 4b 22 29 0d 0b  |_lookup0("OK")..|
00015a50  09 09 20 20 c9 20 37 0d  0b 0a 33 20 20 20 20 24  |..  . 7...3    $|
00015a60  44 69 61 6c 5f 4d 73 67  25 3d a4 6d 73 67 5f 6c  |Dial_Msg%=.msg_l|
00015a70  6f 6f 6b 75 70 32 28 22  54 49 44 59 22 2c 61 72  |ookup2("TIDY",ar|
00015a80  67 31 24 2c 61 72 67 32  24 29 0d 0b 0b 1e 20 20  |g1$,arg2$)....  |
00015a90  20 20 62 32 24 3d a4 6d  73 67 5f 6c 6f 6f 6b 75  |  b2$=.msg_looku|
00015aa0  70 30 28 22 4f 4b 22 29  0d 0b 0c 09 20 20 c9 20  |p0("OK")....  . |
00015ab0  38 0d 0b 0d 27 20 20 20  20 24 44 69 61 6c 5f 4d  |8...'    $Dial_M|
00015ac0  73 67 25 3d a4 6d 73 67  5f 6c 6f 6f 6b 75 70 30  |sg%=.msg_lookup0|
00015ad0  28 22 4d 4f 44 30 22 29  0d 0b 0e 20 20 20 20 20  |("MOD0")...     |
00015ae0  62 31 24 3d a4 6d 73 67  5f 6c 6f 6f 6b 75 70 30  |b1$=.msg_lookup0|
00015af0  28 22 44 43 52 44 22 29  0d 0b 0f 20 20 20 20 20  |("DCRD")...     |
00015b00  62 33 24 3d a4 6d 73 67  5f 6c 6f 6f 6b 75 70 30  |b3$=.msg_lookup0|
00015b10  28 22 43 41 4e 43 22 29  0d 0b 10 09 20 20 c9 20  |("CANC")....  . |
00015b20  39 0d 0b 11 27 20 20 20  20 24 44 69 61 6c 5f 4d  |9...'    $Dial_M|
00015b30  73 67 25 3d a4 6d 73 67  5f 6c 6f 6f 6b 75 70 30  |sg%=.msg_lookup0|
00015b40  28 22 4e 53 45 4c 22 29  0d 0b 12 1e 20 20 20 20  |("NSEL")....    |
00015b50  62 32 24 3d a4 6d 73 67  5f 6c 6f 6f 6b 75 70 30  |b2$=.msg_lookup0|
00015b60  28 22 4f 4b 22 29 0d 0b  13 05 cb 0d 0b 14 16 24  |("OK").........$|
00015b70  44 69 61 6c 5f 42 75 74  74 6f 6e 31 25 3d 62 31  |Dial_Button1%=b1|
00015b80  24 0d 0b 15 16 24 44 69  61 6c 5f 42 75 74 74 6f  |$....$Dial_Butto|
00015b90  6e 32 25 3d 62 32 24 0d  0b 16 16 24 44 69 61 6c  |n2%=b2$....$Dial|
00015ba0  5f 42 75 74 74 6f 6e 33  25 3d 62 33 24 0d 0b 17  |_Button3%=b3$...|
00015bb0  1a 6d 61 73 6b 25 3d 28  31 3c 3c 32 29 2b 28 26  |.mask%=(1<<2)+(&|
00015bc0  46 46 3c 3c 32 34 29 0d  0b 18 10 e7 20 a9 28 62  |FF<<24)..... .(b|
00015bd0  31 24 29 3d 30 20 8c 0d  0b 19 21 20 20 f4 20 67  |1$)=0 ....!  . g|
00015be0  72 65 79 20 63 6f 6c 6f  75 72 20 2d 3e 20 69 6e  |rey colour -> in|
00015bf0  76 69 73 69 62 6c 65 25  0d 0b 1a 2c 20 20 f2 73  |visible%...,  .s|
00015c00  65 74 69 63 6f 6e 73 74  61 74 65 30 28 44 69 61  |eticonstate0(Dia|
00015c10  6c 57 25 2c 31 2c 26 31  31 3c 3c 32 34 2c 6d 61  |lW%,1,&11<<24,ma|
00015c20  73 6b 25 29 0d 0b 1b 05  cc 0d 0b 1c 35 20 20 f2  |sk%)........5  .|
00015c30  73 65 74 69 63 6f 6e 73  74 61 74 65 30 28 44 69  |seticonstate0(Di|
00015c40  61 6c 57 25 2c 31 2c 44  69 61 6c 5f 42 75 74 74  |alW%,1,Dial_Butt|
00015c50  6f 6e 43 6f 6c 31 25 2c  6d 61 73 6b 25 29 0d 0b  |onCol1%,mask%)..|
00015c60  1d 05 cd 0d 0b 1e 10 e7  20 a9 28 62 32 24 29 3d  |........ .(b2$)=|
00015c70  30 20 8c 0d 0b 1f 2c 20  20 f2 73 65 74 69 63 6f  |0 ....,  .setico|
00015c80  6e 73 74 61 74 65 30 28  44 69 61 6c 57 25 2c 32  |nstate0(DialW%,2|
00015c90  2c 26 31 31 3c 3c 32 34  2c 6d 61 73 6b 25 29 0d  |,&11<<24,mask%).|
00015ca0  0b 20 05 cc 0d 0b 21 35  20 20 f2 73 65 74 69 63  |. ....!5  .setic|
00015cb0  6f 6e 73 74 61 74 65 30  28 44 69 61 6c 57 25 2c  |onstate0(DialW%,|
00015cc0  32 2c 44 69 61 6c 5f 42  75 74 74 6f 6e 43 6f 6c  |2,Dial_ButtonCol|
00015cd0  32 25 2c 6d 61 73 6b 25  29 0d 0b 22 05 cd 0d 0b  |2%,mask%).."....|
00015ce0  23 10 e7 20 a9 28 62 33  24 29 3d 30 20 8c 0d 0b  |#.. .(b3$)=0 ...|
00015cf0  24 2c 20 20 f2 73 65 74  69 63 6f 6e 73 74 61 74  |$,  .seticonstat|
00015d00  65 30 28 44 69 61 6c 57  25 2c 33 2c 26 31 31 3c  |e0(DialW%,3,&11<|
00015d10  3c 32 34 2c 6d 61 73 6b  25 29 0d 0b 25 05 cc 0d  |<24,mask%)..%...|
00015d20  0b 26 35 20 20 f2 73 65  74 69 63 6f 6e 73 74 61  |.&5  .seticonsta|
00015d30  74 65 30 28 44 69 61 6c  57 25 2c 33 2c 44 69 61  |te0(DialW%,3,Dia|
00015d40  6c 5f 42 75 74 74 6f 6e  43 6f 6c 33 25 2c 6d 61  |l_ButtonCol3%,ma|
00015d50  73 6b 25 29 0d 0b 27 05  cd 0d 0b 28 16 53 63 72  |sk%)..'....(.Scr|
00015d60  61 70 42 6c 6b 25 21 30  3d 44 69 61 6c 57 25 0d  |apBlk%!0=DialW%.|
00015d70  0b 29 27 c8 99 20 22 57  69 6d 70 5f 47 65 74 57  |.)'.. "Wimp_GetW|
00015d80  69 6e 64 6f 77 53 74 61  74 65 22 2c 2c 53 63 72  |indowState",,Scr|
00015d90  61 70 42 6c 6b 25 0d 0b  2a 39 c8 99 20 22 57 69  |apBlk%..*9.. "Wi|
00015da0  6d 70 5f 43 72 65 61 74  65 4d 65 6e 75 22 2c 2c  |mp_CreateMenu",,|
00015db0  44 69 61 6c 57 25 2c 53  63 72 61 70 42 6c 6b 25  |DialW%,ScrapBlk%|
00015dc0  21 34 2c 53 63 72 61 70  42 6c 6b 25 21 31 36 0d  |!4,ScrapBlk%!16.|
00015dd0  0b 2b 15 4c 61 73 74 44  69 61 6c 6f 67 75 65 25  |.+.LastDialogue%|
00015de0  3d 6e 6f 25 0d 0b 2c 05  e1 0d 0b 2d 04 0d 0b 2e  |=no%..,....-....|
00015df0  18 f4 20 2a 2a 2a 20 68  65 61 70 20 70 72 6f 63  |.. *** heap proc|
00015e00  73 20 2a 2a 2a 0d 0b 2f  04 0d 0b 30 10 dd 20 f2  |s ***../...0.. .|
00015e10  68 65 61 70 5f 69 6e 69  74 0d 0b 31 3e 48 65 61  |heap_init..1>Hea|
00015e20  70 25 3d 93 20 3a 20 f4  20 68 65 61 70 20 73 74  |p%=. : . heap st|
00015e30  61 72 74 73 20 6a 75 73  74 20 61 66 74 65 72 20  |arts just after |
00015e40  65 6e 64 20 6f 66 20 61  6c 6c 6f 63 61 74 65 64  |end of allocated|
00015e50  20 6d 65 6d 6f 72 79 0d  0b 32 26 c8 99 20 22 4f  | memory..2&.. "O|
00015e60  53 5f 52 65 61 64 4d 65  6d 4d 61 70 49 6e 66 6f  |S_ReadMemMapInfo|
00015e70  22 20 b8 20 50 61 67 65  53 69 7a 65 25 0d 0b 33  |" . PageSize%..3|
00015e80  45 f4 20 65 6e 6c 61 72  67 65 20 77 69 6d 70 73  |E. enlarge wimps|
00015e90  6c 6f 74 20 28 31 20 70  61 67 65 29 20 61 6e 64  |lot (1 page) and|
00015ea0  20 63 72 65 61 74 65 20  70 72 69 76 61 74 65 20  | create private |
00015eb0  68 65 61 70 20 69 6e 20  6e 65 77 20 6d 65 6d 6f  |heap in new memo|
00015ec0  72 79 0d 0b 34 19 53 6c  6f 74 53 69 7a 65 25 3d  |ry..4.SlotSize%=|
00015ed0  48 65 61 70 25 2d 26 38  30 30 30 0d 0b 35 39 c8  |Heap%-&8000..59.|
00015ee0  99 20 22 57 69 6d 70 5f  53 6c 6f 74 53 69 7a 65  |. "Wimp_SlotSize|
00015ef0  22 2c 53 6c 6f 74 53 69  7a 65 25 2b 50 61 67 65  |",SlotSize%+Page|
00015f00  53 69 7a 65 25 2c 2d 31  20 b8 20 53 6c 6f 74 53  |Size%,-1 . SlotS|
00015f10  69 7a 65 25 0d 0b 36 1c  48 65 61 70 45 6e 64 25  |ize%..6.HeapEnd%|
00015f20  3d 53 6c 6f 74 53 69 7a  65 25 2b 26 38 30 30 30  |=SlotSize%+&8000|
00015f30  0d 0b 37 38 e7 20 48 65  61 70 45 6e 64 25 3c 3d  |..78. HeapEnd%<=|
00015f40  48 65 61 70 25 20 8c 20  85 20 30 2c 22 43 61 6e  |Heap% . . 0,"Can|
00015f50  27 74 20 63 6c 61 69 6d  20 73 70 61 63 65 20 66  |'t claim space f|
00015f60  6f 72 20 68 65 61 70 22  0d 0b 38 28 c8 99 20 22  |or heap"..8(.. "|
00015f70  4f 53 5f 48 65 61 70 22  2c 30 2c 48 65 61 70 25  |OS_Heap",0,Heap%|
00015f80  2c 2c 48 65 61 70 45 6e  64 25 2d 48 65 61 70 25  |,,HeapEnd%-Heap%|
00015f90  0d 0b 39 05 e1 0d 0b 3a  04 0d 0b 3b 16 dd 20 a4  |..9....:...;.. .|
00015fa0  68 65 61 70 5f 67 65 74  28 73 69 7a 65 25 29 0d  |heap_get(size%).|
00015fb0  0b 3c 28 ea 20 6d 61 78  66 72 65 65 25 2c 6e 72  |.<(. maxfree%,nr|
00015fc0  70 61 67 65 73 25 2c 6f  6c 64 68 65 61 70 65 6e  |pages%,oldheapen|
00015fd0  64 25 2c 70 74 72 25 0d  0b 3d 25 c8 99 20 22 4f  |d%,ptr%..=%.. "O|
00015fe0  53 5f 48 65 61 70 22 2c  31 2c 48 65 61 70 25 20  |S_Heap",1,Heap% |
00015ff0  b8 20 2c 2c 6d 61 78 66  72 65 65 25 0d 0b 3e 16  |. ,,maxfree%..>.|
00016000  e7 20 73 69 7a 65 25 3e  6d 61 78 66 72 65 65 25  |. size%>maxfree%|
00016010  20 8c 0d 0b 3f 4a 20 20  f4 20 6c 61 72 67 65 73  | ...?J  . larges|
00016020  74 20 66 72 65 65 20 62  6c 6f 63 6b 20 69 73 20  |t free block is |
00016030  74 6f 6f 20 73 6d 61 6c  6c 20 2d 20 74 72 79 20  |too small - try |
00016040  74 6f 20 65 6e 6c 61 72  67 65 20 77 69 6d 70 73  |to enlarge wimps|
00016050  6c 6f 74 20 61 6e 64 20  68 65 61 70 0d 0b 40 43  |lot and heap..@C|
00016060  20 20 6e 72 70 61 67 65  73 25 3d 31 2b 28 73 69  |  nrpages%=1+(si|
00016070  7a 65 25 20 81 20 50 61  67 65 53 69 7a 65 25 29  |ze% . PageSize%)|
00016080  20 3a 20 f4 20 72 65 71  75 69 72 65 64 20 23 20  | : . required # |
00016090  70 61 67 65 73 20 6f 66  20 6d 65 6d 6f 72 79 0d  |pages of memory.|
000160a0  0b 41 44 20 20 c8 99 20  22 57 69 6d 70 5f 53 6c  |.AD  .. "Wimp_Sl|
000160b0  6f 74 53 69 7a 65 22 2c  53 6c 6f 74 53 69 7a 65  |otSize",SlotSize|
000160c0  25 2b 6e 72 70 61 67 65  73 25 2a 50 61 67 65 53  |%+nrpages%*PageS|
000160d0  69 7a 65 25 2c 2d 31 20  b8 20 53 6c 6f 74 53 69  |ize%,-1 . SlotSi|
000160e0  7a 65 25 0d 0b 42 1a 20  20 6f 6c 64 68 65 61 70  |ze%..B.  oldheap|
000160f0  65 6e 64 25 3d 48 65 61  70 45 6e 64 25 0d 0b 43  |end%=HeapEnd%..C|
00016100  1e 20 20 48 65 61 70 45  6e 64 25 3d 53 6c 6f 74  |.  HeapEnd%=Slot|
00016110  53 69 7a 65 25 2b 26 38  30 30 30 0d 0b 44 30 20  |Size%+&8000..D0 |
00016120  20 c8 99 20 22 4f 53 5f  48 65 61 70 22 2c 35 2c  | .. "OS_Heap",5,|
00016130  48 65 61 70 25 2c 2c 48  65 61 70 45 6e 64 25 2d  |Heap%,,HeapEnd%-|
00016140  6f 6c 64 68 65 61 70 65  6e 64 25 0d 0b 45 42 20  |oldheapend%..EB |
00016150  20 c8 99 20 22 4f 53 5f  48 65 61 70 22 2c 31 2c  | .. "OS_Heap",1,|
00016160  48 65 61 70 25 20 b8 20  2c 2c 6d 61 78 66 72 65  |Heap% . ,,maxfre|
00016170  65 25 20 3a 20 f4 20 64  6f 20 77 65 20 68 61 76  |e% : . do we hav|
00016180  65 20 65 6e 6f 75 67 68  20 6e 6f 77 3f 0d 0b 46  |e enough now?..F|
00016190  05 cd 0d 0b 47 16 e7 20  73 69 7a 65 25 3e 6d 61  |....G.. size%>ma|
000161a0  78 66 72 65 65 25 20 8c  0d 0b 48 25 20 20 f2 63  |xfree% ...H%  .c|
000161b0  6f 6d 70 6c 61 69 6e 28  a4 6d 73 67 5f 6c 6f 6f  |omplain(.msg_loo|
000161c0  6b 75 70 30 28 22 4e 4f  48 50 22 29 29 0d 0b 49  |kup0("NOHP"))..I|
000161d0  0d 20 20 70 74 72 25 3d  2d 31 0d 0b 4a 05 cc 0d  |.  ptr%=-1..J...|
000161e0  0b 4b 2a 20 20 c8 99 20  22 4f 53 5f 48 65 61 70  |.K*  .. "OS_Heap|
000161f0  22 2c 32 2c 48 65 61 70  25 2c 2c 73 69 7a 65 25  |",2,Heap%,,size%|
00016200  20 b8 20 2c 2c 70 74 72  25 0d 0b 4c 05 cd 0d 0b  | . ,,ptr%..L....|
00016210  4d 09 3d 70 74 72 25 0d  0b 4e 04 0d 0b 4f 19 dd  |M.=ptr%..N...O..|
00016220  20 f2 68 65 61 70 5f 72  65 6c 65 61 73 65 28 70  | .heap_release(p|
00016230  74 72 25 29 0d 0b 50 1c  ea 20 6d 61 78 66 72 65  |tr%)..P.. maxfre|
00016240  65 25 2c 6e 72 70 61 67  65 73 25 2c 66 6c 67 25  |e%,nrpages%,flg%|
00016250  0d 0b 51 1d c8 99 20 22  4f 53 5f 48 65 61 70 22  |..Q... "OS_Heap"|
00016260  2c 33 2c 48 65 61 70 25  2c 70 74 72 25 0d 0b 52  |,3,Heap%,ptr%..R|
00016270  25 c8 99 20 22 4f 53 5f  48 65 61 70 22 2c 31 2c  |%.. "OS_Heap",1,|
00016280  48 65 61 70 25 20 b8 20  2c 2c 6d 61 78 66 72 65  |Heap% . ,,maxfre|
00016290  65 25 0d 0b 53 1a e7 20  6d 61 78 66 72 65 65 25  |e%..S.. maxfree%|
000162a0  3e 50 61 67 65 53 69 7a  65 25 20 8c 0d 0b 54 41  |>PageSize% ...TA|
000162b0  20 20 f4 20 6d 6f 72 65  20 74 68 61 6e 20 31 20  |  . more than 1 |
000162c0  70 61 67 65 20 66 72 65  65 20 2d 20 74 72 79 20  |page free - try |
000162d0  74 6f 20 73 68 72 69 6e  6b 20 68 65 61 70 20 28  |to shrink heap (|
000162e0  70 61 67 65 20 62 79 20  70 61 67 65 29 0d 0b 55  |page by page)..U|
000162f0  2c 20 20 6e 72 70 61 67  65 73 25 3d 30 20 3a 20  |,  nrpages%=0 : |
00016300  f4 20 23 20 70 61 67 65  73 20 6f 66 20 6d 65 6d  |. # pages of mem|
00016310  6f 72 79 20 66 72 65 65  64 0d 0b 56 07 20 20 f5  |ory freed..V.  .|
00016320  0d 0b 57 31 20 20 20 20  c8 99 20 22 58 4f 53 5f  |..W1    .. "XOS_|
00016330  48 65 61 70 22 2c 35 2c  48 65 61 70 25 2c 2c 2d  |Heap",5,Heap%,,-|
00016340  50 61 67 65 53 69 7a 65  25 20 b8 20 3b 66 6c 67  |PageSize% . ;flg|
00016350  25 0d 0b 58 18 20 20 20  20 e7 20 28 66 6c 67 25  |%..X.    . (flg%|
00016360  20 80 20 31 29 3d 30 20  8c 0d 0b 59 15 20 20 20  | . 1)=0 ...Y.   |
00016370  20 20 20 6e 72 70 61 67  65 73 25 2b 3d 31 0d 0b  |   nrpages%+=1..|
00016380  5a 09 20 20 20 20 cd 0d  0b 5b 15 20 20 fd 20 28  |Z.    ...[.  . (|
00016390  66 6c 67 25 20 80 20 31  29 3c 3e 30 0d 0b 5c 14  |flg% . 1)<>0..\.|
000163a0  20 20 e7 20 6e 72 70 61  67 65 73 25 3e 30 20 8c  |  . nrpages%>0 .|
000163b0  0d 0b 5d 34 20 20 20 20  f4 20 73 75 63 63 65 73  |..]4    . succes|
000163c0  73 66 75 6c 6c 79 20 73  68 72 75 6e 6b 20 68 65  |sfully shrunk he|
000163d0  61 70 20 2d 20 73 68 72  69 6e 6b 20 57 69 6d 70  |ap - shrink Wimp|
000163e0  53 6c 6f 74 0d 0b 5e 46  20 20 20 20 c8 99 20 22  |Slot..^F    .. "|
000163f0  57 69 6d 70 5f 53 6c 6f  74 53 69 7a 65 22 2c 53  |Wimp_SlotSize",S|
00016400  6c 6f 74 53 69 7a 65 25  2d 6e 72 70 61 67 65 73  |lotSize%-nrpages|
00016410  25 2a 50 61 67 65 53 69  7a 65 25 2c 2d 31 20 b8  |%*PageSize%,-1 .|
00016420  20 53 6c 6f 74 53 69 7a  65 25 0d 0b 5f 20 20 20  | SlotSize%.._   |
00016430  20 20 48 65 61 70 45 6e  64 25 3d 53 6c 6f 74 53  |  HeapEnd%=SlotS|
00016440  69 7a 65 25 2b 26 38 30  30 30 0d 0b 60 07 20 20  |ize%+&8000..`.  |
00016450  cd 0d 0b 61 35 20 20 c8  99 20 22 4f 53 5f 48 65  |...a5  .. "OS_He|
00016460  61 70 22 2c 35 2c 48 65  61 70 25 2c 2c 28 48 65  |ap",5,Heap%,,(He|
00016470  61 70 45 6e 64 25 2d 48  65 61 70 25 29 2d 48 65  |apEnd%-Heap%)-He|
00016480  61 70 25 21 31 32 0d 0b  62 05 cd 0d 0b 63 05 e1  |ap%!12..b....c..|
00016490  0d 0b 64 04 0d 0b 65 36  f4 20 2a 2a 2a 20 73 65  |..d...e6. *** se|
000164a0  72 76 69 63 65 20 70 72  6f 63 73 3b 20 69 6e 74  |rvice procs; int|
000164b0  65 72 66 61 63 65 20 77  69 74 68 20 53 57 49 73  |erface with SWIs|
000164c0  2c 20 65 74 63 2e 20 2a  2a 2a 0d 0b 66 04 0d 0b  |, etc. ***..f...|
000164d0  67 4d f4 20 2d 2d 2d 20  63 68 61 6e 67 65 20 61  |gM. --- change a|
000164e0  20 76 61 72 69 61 62 6c  65 20 77 69 74 68 20 67  | variable with g|
000164f0  69 76 65 6e 20 64 69 66  66 65 72 65 6e 63 65 2c  |iven difference,|
00016500  20 62 75 74 20 6b 65 65  70 20 69 6e 73 69 64 65  | but keep inside|
00016510  20 62 6f 75 6e 64 73 20  2d 2d 2d 0d 0b 68 2d dd  | bounds ---..h-.|
00016520  20 a4 63 68 61 6e 67 65  76 61 72 28 f8 20 76 61  | .changevar(. va|
00016530  72 25 2c 64 69 66 66 25  2c 75 70 25 2c 6c 6f 77  |r%,diff%,up%,low|
00016540  25 2c 68 69 67 68 25 29  0d 0b 69 0d ea 20 6f 6c  |%,high%)..i.. ol|
00016550  64 76 61 6c 25 0d 0b 6a  10 6f 6c 64 76 61 6c 25  |dval%..j.oldval%|
00016560  3d 76 61 72 25 0d 0b 6b  0b e7 20 75 70 25 20 8c  |=var%..k.. up% .|
00016570  0d 0b 6c 11 20 20 76 61  72 25 2b 3d 64 69 66 66  |..l.  var%+=diff|
00016580  25 0d 0b 6d 05 cc 0d 0b  6e 11 20 20 76 61 72 25  |%..m....n.  var%|
00016590  2d 3d 64 69 66 66 25 0d  0b 6f 05 cd 0d 0b 70 1d  |-=diff%..o....p.|
000165a0  e7 20 76 61 72 25 3e 68  69 67 68 25 20 8c 20 76  |. var%>high% . v|
000165b0  61 72 25 3d 68 69 67 68  25 0d 0b 71 1b e7 20 76  |ar%=high%..q.. v|
000165c0  61 72 25 3c 6c 6f 77 25  20 8c 20 76 61 72 25 3d  |ar%<low% . var%=|
000165d0  6c 6f 77 25 0d 0b 72 1c  f4 20 72 65 74 75 72 6e  |low%..r.. return|
000165e0  20 54 52 55 45 20 69 66  20 63 68 61 6e 67 65 64  | TRUE if changed|
000165f0  0d 0b 73 15 3d 28 6f 6c  64 76 61 6c 25 3c 3e 76  |..s.=(oldval%<>v|
00016600  61 72 25 29 20 0d 0b 74  04 0d 0b 75 17 dd 20 a4  |ar%) ..t...u.. .|
00016610  72 65 61 64 76 61 72 76  61 6c 28 76 61 72 24 29  |readvarval(var$)|
00016620  0d 0b 76 0a ea 20 6c 65  6e 25 0d 0b 77 32 c8 99  |..v.. len%..w2..|
00016630  20 22 4f 53 5f 52 65 61  64 56 61 72 56 61 6c 22  | "OS_ReadVarVal"|
00016640  2c 76 61 72 24 2c 56 61  72 42 75 66 25 2c 32 35  |,var$,VarBuf%,25|
00016650  36 2c 30 20 b8 20 2c 2c  6c 65 6e 25 0d 0b 78 13  |6,0 . ,,len%..x.|
00016660  56 61 72 42 75 66 25 3f  6c 65 6e 25 3d 31 33 0d  |VarBuf%?len%=13.|
00016670  0b 79 0f 3d 24 28 56 61  72 42 75 66 25 29 0d 0b  |.y.=$(VarBuf%)..|
00016680  7a 04 0d 0b 7b 3e f4 20  2d 2d 2d 20 72 65 74 75  |z...{>. --- retu|
00016690  72 6e 20 6e 61 6d 65 20  6f 66 20 69 63 6f 6e 20  |rn name of icon |
000166a0  74 6f 20 64 69 73 70 6c  61 79 20 69 6e 20 62 72  |to display in br|
000166b0  6f 77 73 65 72 20 77 69  6e 64 6f 77 20 2d 2d 2d  |owser window ---|
000166c0  0d 0b 7c 20 dd 20 a4 77  69 6e 64 6f 77 69 63 6f  |..| . .windowico|
000166d0  6e 28 77 66 6c 61 67 73  25 2c 6f 70 65 6e 25 29  |n(wflags%,open%)|
000166e0  0d 0b 7d 24 ea 20 73 6e  61 6d 65 24 2c 74 62 61  |..}$. sname$,tba|
000166f0  72 25 2c 68 73 63 72 6f  6c 6c 25 2c 76 73 63 72  |r%,hscroll%,vscr|
00016700  6f 6c 6c 25 0d 0b 7e 19  e7 20 77 66 6c 61 67 73  |oll%..~.. wflags|
00016710  25 20 80 20 28 31 3c 3c  33 31 29 20 8c 0d 0b 7f  |% . (1<<31) ....|
00016720  21 20 20 74 62 61 72 25  3d 28 77 66 6c 61 67 73  |!  tbar%=(wflags|
00016730  25 20 80 20 28 31 3c 3c  32 36 29 29 3e 30 0d 0b  |% . (1<<26))>0..|
00016740  80 24 20 20 68 73 63 72  6f 6c 6c 25 3d 28 77 66  |.$  hscroll%=(wf|
00016750  6c 61 67 73 25 20 80 20  28 31 3c 3c 33 30 29 29  |lags% . (1<<30))|
00016760  3e 30 0d 0b 81 24 20 20  76 73 63 72 6f 6c 6c 25  |>0...$  vscroll%|
00016770  3d 28 77 66 6c 61 67 73  25 20 80 20 28 31 3c 3c  |=(wflags% . (1<<|
00016780  32 38 29 29 3e 30 0d 0b  82 05 cc 0d 0b 83 20 20  |28))>0........  |
00016790  20 74 62 61 72 25 3d 28  77 66 6c 61 67 73 25 20  | tbar%=(wflags% |
000167a0  80 20 28 31 3c 3c 30 29  29 3e 30 0d 0b 84 23 20  |. (1<<0))>0...# |
000167b0  20 68 73 63 72 6f 6c 6c  25 3d 28 77 66 6c 61 67  | hscroll%=(wflag|
000167c0  73 25 20 80 20 28 31 3c  3c 33 29 29 3e 30 0d 0b  |s% . (1<<3))>0..|
000167d0  85 23 20 20 76 73 63 72  6f 6c 6c 25 3d 28 77 66  |.#  vscroll%=(wf|
000167e0  6c 61 67 73 25 20 80 20  28 31 3c 3c 32 29 29 3e  |lags% . (1<<2))>|
000167f0  30 0d 0b 86 05 cd 0d 0b  87 12 73 6e 61 6d 65 24  |0.........sname$|
00016800  3d 22 53 77 69 6e 5f 22  0d 0b 88 19 e7 20 74 62  |="Swin_"..... tb|
00016810  61 72 25 20 8c 20 73 6e  61 6d 65 24 2b 3d 22 74  |ar% . sname$+="t|
00016820  22 0d 0b 89 1c e7 20 68  73 63 72 6f 6c 6c 25 20  |"..... hscroll% |
00016830  8c 20 73 6e 61 6d 65 24  2b 3d 22 68 22 0d 0b 8a  |. sname$+="h"...|
00016840  1c e7 20 76 73 63 72 6f  6c 6c 25 20 8c 20 73 6e  |.. vscroll% . sn|
00016850  61 6d 65 24 2b 3d 22 76  22 0d 0b 8b 19 e7 20 6f  |ame$+="v"..... o|
00016860  70 65 6e 25 20 8c 20 73  6e 61 6d 65 24 2b 3d 22  |pen% . sname$+="|
00016870  6f 22 0d 0b 8c 0b 3d 73  6e 61 6d 65 24 0d 0b 8d  |o"....=sname$...|
00016880  04 0d 0b 8e 18 dd 20 a4  6d 6f 64 65 76 61 72 28  |...... .modevar(|
00016890  6d 6f 64 65 25 2c 76 25  29 0d 0b 8f 0a ea 20 76  |mode%,v%)..... v|
000168a0  61 6c 25 0d 0b 90 2e c8  99 20 22 4f 53 5f 52 65  |al%...... "OS_Re|
000168b0  61 64 4d 6f 64 65 56 61  72 69 61 62 6c 65 22 2c  |adModeVariable",|
000168c0  6d 6f 64 65 25 2c 76 25  20 b8 20 2c 2c 76 61 6c  |mode%,v% . ,,val|
000168d0  25 0d 0b 91 09 3d 76 61  6c 25 0d 0b 92 04 0d 0b  |%....=val%......|
000168e0  93 15 dd 20 f2 72 65 61  64 73 63 72 65 65 6e 76  |... .readscreenv|
000168f0  61 72 73 0d 0b 94 23 ea  20 78 65 69 67 25 2c 79  |ars...#. xeig%,y|
00016900  65 69 67 25 2c 78 70 69  78 65 6c 73 25 2c 79 70  |eig%,xpixels%,yp|
00016910  69 78 65 6c 73 25 0d 0b  95 18 78 65 69 67 25 3d  |ixels%....xeig%=|
00016920  a4 6d 6f 64 65 76 61 72  28 2d 31 2c 34 29 0d 0b  |.modevar(-1,4)..|
00016930  96 18 79 65 69 67 25 3d  a4 6d 6f 64 65 76 61 72  |..yeig%=.modevar|
00016940  28 2d 31 2c 35 29 0d 0b  97 1c 78 70 69 78 65 6c  |(-1,5)....xpixel|
00016950  73 25 3d a4 6d 6f 64 65  76 61 72 28 2d 31 2c 31  |s%=.modevar(-1,1|
00016960  31 29 0d 0b 98 1c 79 70  69 78 65 6c 73 25 3d a4  |1)....ypixels%=.|
00016970  6d 6f 64 65 76 61 72 28  2d 31 2c 31 32 29 0d 0b  |modevar(-1,12)..|
00016980  99 39 50 69 78 54 6f 4f  53 5f 58 25 3d 31 3c 3c  |.9PixToOS_X%=1<<|
00016990  78 65 69 67 25 20 3a 20  f4 20 23 20 4f 53 20 75  |xeig% : . # OS u|
000169a0  6e 69 74 73 20 74 68 61  74 20 31 20 70 69 78 65  |nits that 1 pixe|
000169b0  6c 20 74 61 6b 65 73 0d  0b 9a 17 50 69 78 54 6f  |l takes....PixTo|
000169c0  4f 53 5f 59 25 3d 31 3c  3c 79 65 69 67 25 0d 0b  |OS_Y%=1<<yeig%..|
000169d0  9b 45 53 63 72 65 65 6e  53 69 7a 65 5f 58 25 3d  |.EScreenSize_X%=|
000169e0  28 78 70 69 78 65 6c 73  25 2b 31 29 2a 50 69 78  |(xpixels%+1)*Pix|
000169f0  54 6f 4f 53 5f 58 25 20  3a 20 f4 20 73 63 72 65  |ToOS_X% : . scre|
00016a00  65 6e 20 73 69 7a 65 20  69 6e 20 4f 53 20 75 6e  |en size in OS un|
00016a10  69 74 73 0d 0b 9c 29 53  63 72 65 65 6e 53 69 7a  |its...)ScreenSiz|
00016a20  65 5f 59 25 3d 28 79 70  69 78 65 6c 73 25 2b 31  |e_Y%=(ypixels%+1|
00016a30  29 2a 50 69 78 54 6f 4f  53 5f 59 25 0d 0b 9d 38  |)*PixToOS_Y%...8|
00016a40  f4 20 67 72 69 64 20 73  69 7a 65 20 6d 75 73 74  |. grid size must|
00016a50  20 62 65 20 6d 75 6c 74  69 70 6c 65 20 6f 66 20  | be multiple of |
00016a60  23 20 4f 53 20 75 6e 69  74 73 20 70 65 72 20 70  |# OS units per p|
00016a70  69 78 65 6c 0d 0b 9e 1e  e7 20 47 72 69 64 5f 53  |ixel..... Grid_S|
00016a80  69 7a 65 58 25 3c 50 69  78 54 6f 4f 53 5f 58 25  |izeX%<PixToOS_X%|
00016a90  20 8c 0d 0b 9f 1c 20 20  47 72 69 64 5f 53 69 7a  | .....  Grid_Siz|
00016aa0  65 58 25 3d 50 69 78 54  6f 4f 53 5f 58 25 0d 0b  |eX%=PixToOS_X%..|
00016ab0  a0 05 cc 0d 0b a1 2d 20  20 47 72 69 64 5f 53 69  |......-  Grid_Si|
00016ac0  7a 65 58 25 2d 3d 28 47  72 69 64 5f 53 69 7a 65  |zeX%-=(Grid_Size|
00016ad0  58 25 20 83 20 50 69 78  54 6f 4f 53 5f 58 25 29  |X% . PixToOS_X%)|
00016ae0  0d 0b a2 05 cd 0d 0b a3  1e e7 20 47 72 69 64 5f  |.......... Grid_|
00016af0  53 69 7a 65 59 25 3c 50  69 78 54 6f 4f 53 5f 59  |SizeY%<PixToOS_Y|
00016b00  25 20 8c 0d 0b a4 1c 20  20 47 72 69 64 5f 53 69  |% .....  Grid_Si|
00016b10  7a 65 59 25 3d 50 69 78  54 6f 4f 53 5f 59 25 0d  |zeY%=PixToOS_Y%.|
00016b20  0b a5 05 cc 0d 0b a6 2d  20 20 47 72 69 64 5f 53  |.......-  Grid_S|
00016b30  69 7a 65 59 25 2d 3d 28  47 72 69 64 5f 53 69 7a  |izeY%-=(Grid_Siz|
00016b40  65 59 25 20 83 20 50 69  78 54 6f 4f 53 5f 59 25  |eY% . PixToOS_Y%|
00016b50  29 0d 0b a7 05 cd 0d 0b  a8 23 f2 73 65 74 69 63  |)........#.setic|
00016b60  6f 6e 74 65 78 74 28 32  38 2c c3 28 47 72 69 64  |ontext(28,.(Grid|
00016b70  5f 53 69 7a 65 58 25 29  29 0d 0b a9 23 f2 73 65  |_SizeX%))...#.se|
00016b80  74 69 63 6f 6e 74 65 78  74 28 32 39 2c c3 28 47  |ticontext(29,.(G|
00016b90  72 69 64 5f 53 69 7a 65  59 25 29 29 0d 0b aa 1d  |rid_SizeY%))....|
00016ba0  e7 20 47 72 69 64 5f 50  6f 73 58 25 3c 50 69 78  |. Grid_PosX%<Pix|
00016bb0  54 6f 4f 53 5f 58 25 20  8c 0d 0b ab 1b 20 20 47  |ToOS_X% .....  G|
00016bc0  72 69 64 5f 50 6f 73 58  25 3d 50 69 78 54 6f 4f  |rid_PosX%=PixToO|
00016bd0  53 5f 58 25 0d 0b ac 05  cc 0d 0b ad 2b 20 20 47  |S_X%........+  G|
00016be0  72 69 64 5f 50 6f 73 58  25 2d 3d 28 47 72 69 64  |rid_PosX%-=(Grid|
00016bf0  5f 50 6f 73 58 25 20 83  20 50 69 78 54 6f 4f 53  |_PosX% . PixToOS|
00016c00  5f 58 25 29 0d 0b ae 05  cd 0d 0b af 1d e7 20 47  |_X%).......... G|
00016c10  72 69 64 5f 50 6f 73 59  25 3c 50 69 78 54 6f 4f  |rid_PosY%<PixToO|
00016c20  53 5f 59 25 20 8c 0d 0b  b0 1b 20 20 47 72 69 64  |S_Y% .....  Grid|
00016c30  5f 50 6f 73 59 25 3d 50  69 78 54 6f 4f 53 5f 59  |_PosY%=PixToOS_Y|
00016c40  25 0d 0b b1 05 cc 0d 0b  b2 2b 20 20 47 72 69 64  |%........+  Grid|
00016c50  5f 50 6f 73 59 25 2d 3d  28 47 72 69 64 5f 50 6f  |_PosY%-=(Grid_Po|
00016c60  73 59 25 20 83 20 50 69  78 54 6f 4f 53 5f 59 25  |sY% . PixToOS_Y%|
00016c70  29 0d 0b b3 05 cd 0d 0b  b4 22 f2 73 65 74 69 63  |)........".setic|
00016c80  6f 6e 74 65 78 74 28 33  30 2c c3 28 47 72 69 64  |ontext(30,.(Grid|
00016c90  5f 50 6f 73 58 25 29 29  0d 0b b5 22 f2 73 65 74  |_PosX%))...".set|
00016ca0  69 63 6f 6e 74 65 78 74  28 33 31 2c c3 28 47 72  |icontext(31,.(Gr|
00016cb0  69 64 5f 50 6f 73 59 25  29 29 0d 0b b6 36 54 65  |id_PosY%))...6Te|
00016cc0  6d 70 6c 57 5f 4d 61 78  43 6f 6c 25 3d 28 53 63  |mplW_MaxCol%=(Sc|
00016cd0  72 65 65 6e 53 69 7a 65  5f 58 25 2d 31 30 30 29  |reenSize_X%-100)|
00016ce0  20 81 20 54 65 6d 70 6c  57 5f 49 63 6f 6e 58 25  | . TemplW_IconX%|
00016cf0  0d 0b b7 05 e1 0d 0b b8  04 0d 0b b9 1e dd 20 f2  |.............. .|
00016d00  73 65 74 63 61 72 65 74  28 77 69 6e 64 6f 77 25  |setcaret(window%|
00016d10  2c 69 63 6f 6e 25 29 0d  0b ba 08 ea 20 6c 25 0d  |,icon%)..... l%.|
00016d20  0b bb 10 e7 20 69 63 6f  6e 25 3e 3d 30 20 8c 0d  |.... icon%>=0 ..|
00016d30  0b bc 19 20 20 53 63 72  61 70 42 6c 6b 25 21 30  |...  ScrapBlk%!0|
00016d40  3d 77 69 6e 64 6f 77 25  0d 0b bd 17 20 20 53 63  |=window%....  Sc|
00016d50  72 61 70 42 6c 6b 25 21  34 3d 69 63 6f 6e 25 0d  |rapBlk%!4=icon%.|
00016d60  0b be 27 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |..'  .. "Wimp_Ge|
00016d70  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 53 63 72  |tIconState",,Scr|
00016d80  61 70 42 6c 6b 25 0d 0b  bf 1b 20 20 6c 25 3d a9  |apBlk%....  l%=.|
00016d90  28 24 28 53 63 72 61 70  42 6c 6b 25 21 32 38 29  |($(ScrapBlk%!28)|
00016da0  29 0d 0b c0 36 20 20 c8  99 20 22 57 69 6d 70 5f  |)...6  .. "Wimp_|
00016db0  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
00016dc0  22 2c 77 69 6e 64 6f 77  25 2c 69 63 6f 6e 25 2c  |",window%,icon%,|
00016dd0  2c 2c 2d 31 2c 6c 25 0d  0b c1 05 cc 0d 0b c2 17  |,,-1,l%.........|
00016de0  20 20 f4 20 69 6e 76 69  73 69 62 6c 65 20 63 61  |  . invisible ca|
00016df0  72 65 74 0d 0b c3 35 20  20 c8 99 20 22 57 69 6d  |ret...5  .. "Wim|
00016e00  70 5f 53 65 74 43 61 72  65 74 50 6f 73 69 74 69  |p_SetCaretPositi|
00016e10  6f 6e 22 2c 77 69 6e 64  6f 77 25 2c 2d 31 2c 30  |on",window%,-1,0|
00016e20  2c 30 2c 31 3c 3c 32 35  0d 0b c4 05 cd 0d 0b c5  |,0,1<<25........|
00016e30  05 e1 0d 0b c6 04 0d 0b  c7 18 dd 20 f2 73 65 74  |........... .set|
00016e40  6d 6f 75 73 65 73 68 61  70 65 28 69 25 29 0d 0b  |mouseshape(i%)..|
00016e50  c8 14 ea 20 6e 24 2c 78  6f 66 66 25 2c 79 6f 66  |... n$,xoff%,yof|
00016e60  66 25 0d 0b c9 0b c8 8e  20 69 25 20 ca 0d 0b ca  |f%...... i% ....|
00016e70  23 20 20 c9 20 30 20 3a  20 f4 20 64 65 66 61 75  |#  . 0 : . defau|
00016e80  6c 74 20 70 6f 69 6e 74  65 72 20 73 68 61 70 65  |lt pointer shape|
00016e90  0d 0b cb 18 20 20 20 20  6e 24 3d 22 70 74 72 5f  |....    n$="ptr_|
00016ea0  64 65 66 61 75 6c 74 22  0d 0b cc 0f 20 20 20 20  |default"....    |
00016eb0  78 6f 66 66 25 3d 30 0d  0b cd 0f 20 20 20 20 79  |xoff%=0....    y|
00016ec0  6f 66 66 25 3d 30 0d 0b  ce 2b 20 20 c9 20 31 20  |off%=0...+  . 1 |
00016ed0  3a 20 f4 20 68 61 6e 64  20 70 6f 69 6e 74 65 72  |: . hand pointer|
00016ee0  20 66 6f 72 20 6d 6f 76  69 6e 67 20 69 63 6f 6e  | for moving icon|
00016ef0  73 0d 0b cf 15 20 20 20  20 6e 24 3d 22 70 74 72  |s....    n$="ptr|
00016f00  5f 68 61 6e 64 22 0d 0b  d0 0f 20 20 20 20 78 6f  |_hand"....    xo|
00016f10  66 66 25 3d 37 0d 0b d1  0f 20 20 20 20 79 6f 66  |ff%=7....    yof|
00016f20  66 25 3d 36 0d 0b d2 3b  20 20 c9 20 32 20 3a 20  |f%=6...;  . 2 : |
00016f30  f4 20 70 6f 69 6e 74 65  72 20 66 6f 72 20 72 65  |. pointer for re|
00016f40  73 69 7a 69 6e 67 20 69  63 6f 6e 73 2c 20 64 72  |sizing icons, dr|
00016f50  61 67 67 69 6e 67 20 74  6f 70 20 73 69 64 65 0d  |agging top side.|
00016f60  0b d3 16 20 20 20 20 6e  24 3d 22 70 74 72 5f 73  |...    n$="ptr_s|
00016f70  69 7a 65 74 22 0d 0b d4  0f 20 20 20 20 78 6f 66  |izet"....    xof|
00016f80  66 25 3d 37 0d 0b d5 0f  20 20 20 20 79 6f 66 66  |f%=7....    yoff|
00016f90  25 3d 36 0d 0b d6 3d 20  20 c9 20 33 20 3a 20 f4  |%=6...=  . 3 : .|
00016fa0  20 70 6f 69 6e 74 65 72  20 66 6f 72 20 72 65 73  | pointer for res|
00016fb0  69 7a 69 6e 67 20 69 63  6f 6e 73 2c 20 64 72 61  |izing icons, dra|
00016fc0  67 67 69 6e 67 20 72 69  67 68 74 20 73 69 64 65  |gging right side|
00016fd0  0d 0b d7 16 20 20 20 20  6e 24 3d 22 70 74 72 5f  |....    n$="ptr_|
00016fe0  73 69 7a 65 72 22 0d 0b  d8 0f 20 20 20 20 78 6f  |sizer"....    xo|
00016ff0  66 66 25 3d 35 0d 0b d9  0f 20 20 20 20 79 6f 66  |ff%=5....    yof|
00017000  66 25 3d 35 0d 0b da 3e  20 20 c9 20 34 20 3a 20  |f%=5...>  . 4 : |
00017010  f4 20 70 6f 69 6e 74 65  72 20 66 6f 72 20 72 65  |. pointer for re|
00017020  73 69 7a 69 6e 67 20 69  63 6f 6e 73 2c 20 64 72  |sizing icons, dr|
00017030  61 67 67 69 6e 67 20 62  6f 74 74 6f 6d 20 73 69  |agging bottom si|
00017040  64 65 0d 0b db 16 20 20  20 20 6e 24 3d 22 70 74  |de....    n$="pt|
00017050  72 5f 73 69 7a 65 62 22  0d 0b dc 0f 20 20 20 20  |r_sizeb"....    |
00017060  78 6f 66 66 25 3d 37 0d  0b dd 0f 20 20 20 20 79  |xoff%=7....    y|
00017070  6f 66 66 25 3d 34 0d 0b  de 3c 20 20 c9 20 35 20  |off%=4...<  . 5 |
00017080  3a 20 f4 20 70 6f 69 6e  74 65 72 20 66 6f 72 20  |: . pointer for |
00017090  72 65 73 69 7a 69 6e 67  20 69 63 6f 6e 73 2c 20  |resizing icons, |
000170a0  64 72 61 67 67 69 6e 67  20 6c 65 66 74 20 73 69  |dragging left si|
000170b0  64 65 0d 0b df 16 20 20  20 20 6e 24 3d 22 70 74  |de....    n$="pt|
000170c0  72 5f 73 69 7a 65 6c 22  0d 0b e0 10 20 20 20 20  |r_sizel"....    |
000170d0  78 6f 66 66 25 3d 31 30  0d 0b e1 0f 20 20 20 20  |xoff%=10....    |
000170e0  79 6f 66 66 25 3d 35 0d  0b e2 05 cb 0d 0b e3 1a  |yoff%=5.........|
000170f0  4d 6f 75 73 65 5f 50 74  74 25 21 30 3d 26 30 33  |Mouse_Ptt%!0=&03|
00017100  30 32 30 31 30 30 0d 0b  e4 0c e7 20 69 25 3d 30  |020100..... i%=0|
00017110  20 8c 0d 0b e5 3b 20 20  c8 99 20 22 57 69 6d 70  | ....;  .. "Wimp|
00017120  5f 53 70 72 69 74 65 4f  70 22 2c 33 36 2c 2c 6e  |_SpriteOp",36,,n|
00017130  24 2c 26 32 2c 78 6f 66  66 25 2c 79 6f 66 66 25  |$,&2,xoff%,yoff%|
00017140  2c 30 2c 4d 6f 75 73 65  5f 50 74 74 25 0d 0b e6  |,0,Mouse_Ptt%...|
00017150  05 cc 0d 0b e7 49 20 20  c8 99 20 22 4f 53 5f 53  |.....I  .. "OS_S|
00017160  70 72 69 74 65 4f 70 22  2c 26 31 30 30 2b 33 36  |priteOp",&100+36|
00017170  2c 53 79 73 53 70 72 69  74 65 73 25 2c 6e 24 2c  |,SysSprites%,n$,|
00017180  26 32 2c 78 6f 66 66 25  2c 79 6f 66 66 25 2c 30  |&2,xoff%,yoff%,0|
00017190  2c 4d 6f 75 73 65 5f 50  74 74 25 0d 0b e8 05 cd  |,Mouse_Ptt%.....|
000171a0  0d 0b e9 12 4d 6f 75 73  65 53 68 61 70 65 25 3d  |....MouseShape%=|
000171b0  69 25 0d 0b ea 05 e1 0d  0b eb 04 0d 0b ec 46 f4  |i%............F.|
000171c0  20 2d 2d 2d 20 72 65 2d  61 6c 6c 6f 63 61 74 65  | --- re-allocate|
000171d0  20 69 6e 64 69 72 65 63  74 65 64 20 69 63 6f 6e  | indirected icon|
000171e0  20 64 61 74 61 20 61 6e  64 20 69 6e 63 72 65 61  | data and increa|
000171f0  73 65 20 66 6f 6e 74 20  63 6f 75 6e 74 20 2d 2d  |se font count --|
00017200  2d 0d 0b ed 22 dd 20 f2  69 63 6f 6e 72 65 61 6c  |-...". .iconreal|
00017210  6c 6f 63 28 66 6c 61 67  70 74 72 25 2c 64 61 74  |loc(flagptr%,dat|
00017220  61 25 29 0d 0b ee 17 ea  20 66 6c 61 67 73 25 2c  |a%)..... flags%,|
00017230  73 24 2c 73 25 2c 6c 65  6e 25 0d 0b ef 15 66 6c  |s$,s%,len%....fl|
00017240  61 67 73 25 3d 66 6c 61  67 70 74 72 25 21 30 0d  |ags%=flagptr%!0.|
00017250  0b f0 1f e7 20 28 66 6c  61 67 73 25 20 80 20 26  |.... (flags% . &|
00017260  38 30 30 31 30 30 29 3d  26 31 30 30 20 8c 0d 0b  |800100)=&100 ...|
00017270  f1 16 20 20 73 24 3d a4  73 74 72 28 64 61 74 61  |..  s$=.str(data|
00017280  25 21 30 29 0d 0b f2 3f  20 20 6c 65 6e 25 3d 64  |%!0)...?  len%=d|
00017290  61 74 61 25 21 38 20 20  20 20 20 20 20 20 20 20  |ata%!8          |
000172a0  20 20 20 20 3a 20 f4 20  64 6f 6e 27 74 20 61 6c  |    : . don't al|
000172b0  6c 6f 63 61 74 65 20 61  63 74 75 61 6c 20 73 69  |locate actual si|
000172c0  7a 65 21 0d 0b f3 41 20  20 e7 20 6c 65 6e 25 3e  |ze!...A  . len%>|
000172d0  32 35 36 20 8c 20 6c 65  6e 25 3d 32 35 36 20 3a  |256 . len%=256 :|
000172e0  20 f4 20 42 61 73 69 63  20 63 61 6e 27 74 20 68  | . Basic can't h|
000172f0  61 6e 64 6c 65 20 6c 6f  6e 67 65 72 20 73 74 72  |andle longer str|
00017300  69 6e 67 73 0d 0b f4 18  20 20 73 25 3d a4 68 65  |ings....  s%=.he|
00017310  61 70 5f 67 65 74 28 6c  65 6e 25 29 0d 0b f5 0e  |ap_get(len%)....|
00017320  20 20 e7 20 73 25 3e 30  20 8c 0d 0b f6 19 20 20  |  . s%>0 .....  |
00017330  20 20 24 28 73 25 29 3d  c0 73 24 2c 6c 65 6e 25  |  $(s%)=.s$,len%|
00017340  2d 31 29 0d 0b f7 12 20  20 20 20 64 61 74 61 25  |-1)....    data%|
00017350  21 30 3d 73 25 0d 0b f8  28 20 20 20 20 e7 20 28  |!0=s%...(    . (|
00017360  66 6c 61 67 73 25 20 80  20 31 29 20 80 20 28 64  |flags% . 1) . (d|
00017370  61 74 61 25 21 34 3c 3e  2d 31 29 20 8c 0d 0b f9  |ata%!4<>-1) ....|
00017380  29 20 20 20 20 20 20 f4  20 72 65 2d 61 6c 6c 6f  |)      . re-allo|
00017390  63 61 74 65 20 76 61 6c  69 64 61 74 69 6f 6e 20  |cate validation |
000173a0  73 74 72 69 6e 67 0d 0b  fa 1a 20 20 20 20 20 20  |string....      |
000173b0  73 24 3d a4 73 74 72 28  64 61 74 61 25 21 34 29  |s$=.str(data%!4)|
000173c0  0d 0b fb 1d 20 20 20 20  20 20 73 25 3d a4 68 65  |....      s%=.he|
000173d0  61 70 5f 67 65 74 28 a9  73 24 2b 31 29 0d 0b fc  |ap_get(.s$+1)...|
000173e0  12 20 20 20 20 20 20 e7  20 73 25 3e 30 20 8c 0d  |.      . s%>0 ..|
000173f0  0b fd 14 20 20 20 20 20  20 20 20 24 28 73 25 29  |...        $(s%)|
00017400  3d 73 24 0d 0b fe 16 20  20 20 20 20 20 20 20 64  |=s$....        d|
00017410  61 74 61 25 21 34 3d 73  25 0d 0b ff 0b 20 20 20  |ata%!4=s%....   |
00017420  20 20 20 cc 0d 0c 00 16  20 20 20 20 20 20 20 20  |   .....        |
00017430  64 61 74 61 25 21 34 3d  2d 31 0d 0c 01 0b 20 20  |data%!4=-1....  |
00017440  20 20 20 20 cd 0d 0c 02  09 20 20 20 20 cd 0d 0c  |    .....    ...|
00017450  03 07 20 20 cc 0d 0c 04  47 20 20 20 20 f4 20 61  |..  ....G    . a|
00017460  6c 6c 6f 63 61 74 69 6f  6e 20 66 61 69 6c 65 64  |llocation failed|
00017470  20 2d 20 6d 61 6b 65 20  6e 6f 6e 2d 69 6e 64 69  | - make non-indi|
00017480  72 65 63 74 65 64 20 61  6e 64 20 73 74 6f 72 65  |rected and store|
00017490  20 66 69 72 73 74 20 63  68 61 72 73 0d 0c 05 2a  | first chars...*|
000174a0  20 20 20 20 66 6c 61 67  70 74 72 25 21 30 3d 66  |    flagptr%!0=f|
000174b0  6c 61 67 70 74 72 25 21  30 20 80 20 28 ac 20 28  |lagptr%!0 . (. (|
000174c0  31 3c 3c 38 29 29 0d 0c  06 16 20 20 20 20 24 64  |1<<8))....    $d|
000174d0  61 74 61 25 3d c0 73 24  2c 31 31 29 0d 0c 07 07  |ata%=.s$,11)....|
000174e0  20 20 cd 0d 0c 08 05 cd  0d 0c 09 1e e7 20 28 66  |  ........... (f|
000174f0  6c 61 67 73 25 20 80 20  26 38 30 30 30 34 30 29  |lags% . &800040)|
00017500  3d 26 34 30 20 8c 0d 0c  0a 21 20 20 46 6f 6e 74  |=&40 ....!  Font|
00017510  55 73 61 67 65 25 28 28  66 6c 61 67 73 25 29 3e  |Usage%((flags%)>|
00017520  3e 32 34 29 2b 3d 31 0d  0c 0b 05 cd 0d 0c 0c 05  |>24)+=1.........|
00017530  e1 0d 0c 0d 04 0d 0c 0e  42 f4 20 2d 2d 2d 20 72  |........B. --- r|
00017540  65 6c 65 61 73 65 20 69  6e 64 69 72 65 63 74 65  |elease indirecte|
00017550  64 20 69 63 6f 6e 20 64  61 74 61 20 61 6e 64 20  |d icon data and |
00017560  64 65 63 72 65 61 73 65  20 66 6f 6e 74 20 63 6f  |decrease font co|
00017570  75 6e 74 20 2d 2d 2d 0d  0c 0f 20 dd 20 f2 69 63  |unt ---... . .ic|
00017580  6f 6e 72 65 6c 65 61 73  65 28 66 6c 61 67 73 25  |onrelease(flags%|
00017590  2c 64 61 74 61 25 29 0d  0c 10 1f e7 20 28 66 6c  |,data%)..... (fl|
000175a0  61 67 73 25 20 80 20 26  38 30 30 31 30 30 29 3d  |ags% . &800100)=|
000175b0  26 31 30 30 20 8c 0d 0c  11 1c 20 20 f2 68 65 61  |&100 .....  .hea|
000175c0  70 5f 72 65 6c 65 61 73  65 28 64 61 74 61 25 21  |p_release(data%!|
000175d0  30 29 0d 0c 12 28 20 20  e7 20 28 66 6c 61 67 73  |0)...(  . (flags|
000175e0  25 20 80 20 31 29 20 80  20 28 64 61 74 61 25 21  |% . 1) . (data%!|
000175f0  28 34 29 3c 3e 2d 31 29  20 8c 0d 0c 13 23 20 20  |(4)<>-1) ....#  |
00017600  20 20 f4 20 72 65 6c 65  61 73 65 20 76 61 6c 69  |  . release vali|
00017610  64 61 74 69 6f 6e 20 73  74 72 69 6e 67 0d 0c 14  |dation string...|
00017620  1e 20 20 20 20 f2 68 65  61 70 5f 72 65 6c 65 61  |.    .heap_relea|
00017630  73 65 28 64 61 74 61 25  21 34 29 0d 0c 15 07 20  |se(data%!4).... |
00017640  20 cd 0d 0c 16 05 cd 0d  0c 17 1e e7 20 28 66 6c  | ........... (fl|
00017650  61 67 73 25 20 80 20 26  38 30 30 30 34 30 29 3d  |ags% . &800040)=|
00017660  26 34 30 20 8c 0d 0c 18  1c 20 20 f2 66 6f 6e 74  |&40 .....  .font|
00017670  5f 6c 6f 73 65 28 66 6c  61 67 73 25 3e 3e 32 34  |_lose(flags%>>24|
00017680  29 0d 0c 19 05 cd 0d 0c  1a 05 e1 0d 0c 1b 04 0d  |)...............|
00017690  0c 1c 1b f4 20 2d 2d 2d  20 6f 70 65 6e 20 61 20  |.... --- open a |
000176a0  77 69 6e 64 6f 77 20 2d  2d 2d 0d 0c 1d 2b f4 20  |window ---...+. |
000176b0  20 20 20 20 20 20 70 6f  73 25 20 3d 20 30 20 2d  |      pos% = 0 -|
000176c0  3e 20 61 74 20 63 75 72  72 65 6e 74 20 70 6f 73  |> at current pos|
000176d0  69 74 69 6f 6e 0d 0c 1e  2a f4 20 20 20 20 20 20  |ition...*.      |
000176e0  20 20 20 20 20 20 20 20  31 20 2d 3e 20 63 65 6e  |        1 -> cen|
000176f0  74 65 72 65 64 20 74 6f  20 73 63 72 65 65 6e 0d  |tered to screen.|
00017700  0c 1f 34 f4 20 20 20 20  20 20 20 20 20 20 20 20  |..4.            |
00017710  20 20 32 20 2d 3e 20 63  65 6e 74 65 72 65 64 20  |  2 -> centered |
00017720  75 6e 6c 65 73 73 20 61  6c 72 65 61 64 79 20 6f  |unless already o|
00017730  70 65 6e 0d 0c 20 3d f4  20 20 20 20 20 20 20 20  |pen.. =.        |
00017740  20 20 20 20 20 20 33 20  2d 3e 20 69 6e 20 74 6f  |      3 -> in to|
00017750  70 6c 65 66 74 20 63 6f  72 6e 65 72 20 75 6e 6c  |pleft corner unl|
00017760  65 73 73 20 61 6c 72 65  61 64 79 20 6f 70 65 6e  |ess already open|
00017770  0d 0c 21 3e f4 20 20 20  20 20 20 20 20 20 20 20  |..!>.           |
00017780  20 20 20 34 20 2d 3e 20  69 6e 20 74 6f 70 72 69  |   4 -> in topri|
00017790  67 68 74 20 63 6f 72 6e  65 72 20 75 6e 6c 65 73  |ght corner unles|
000177a0  73 20 61 6c 72 65 61 64  79 20 6f 70 65 6e 0d 0c  |s already open..|
000177b0  22 1f dd 20 f2 6f 70 65  6e 77 69 6e 64 6f 77 28  |".. .openwindow(|
000177c0  68 61 6e 64 6c 65 25 2c  70 6f 73 25 29 0d 0c 23  |handle%,pos%)..#|
000177d0  1e ea 20 6e 6f 74 6f 70  65 6e 25 2c 63 78 25 2c  |.. notopen%,cx%,|
000177e0  63 79 25 2c 64 78 25 2c  64 79 25 0d 0c 24 17 53  |cy%,dx%,dy%..$.S|
000177f0  63 72 61 70 42 6c 6b 25  21 30 3d 68 61 6e 64 6c  |crapBlk%!0=handl|
00017800  65 25 0d 0c 25 27 c8 99  20 22 57 69 6d 70 5f 47  |e%..%'.. "Wimp_G|
00017810  65 74 57 69 6e 64 6f 77  53 74 61 74 65 22 2c 2c  |etWindowState",,|
00017820  53 63 72 61 70 42 6c 6b  25 0d 0c 26 29 6e 6f 74  |ScrapBlk%..&)not|
00017830  6f 70 65 6e 25 3d 28 28  53 63 72 61 70 42 6c 6b  |open%=((ScrapBlk|
00017840  25 21 33 32 20 80 20 28  31 3c 3c 31 36 29 29 3d  |%!32 . (1<<16))=|
00017850  30 29 0d 0c 27 09 64 78  25 3d 30 0d 0c 28 09 64  |0)..'.dx%=0..(.d|
00017860  79 25 3d 30 0d 0c 29 0d  c8 8e 20 70 6f 73 25 20  |y%=0..)... pos% |
00017870  ca 0d 0c 2a 0b 20 20 c9  20 31 2c 32 0d 0c 2b 1f  |...*.  . 1,2..+.|
00017880  20 20 20 20 e7 20 28 70  6f 73 25 3d 31 29 20 84  |    . (pos%=1) .|
00017890  20 6e 6f 74 6f 70 65 6e  25 20 8c 0d 0c 2c 23 20  | notopen% ...,# |
000178a0  20 20 20 20 20 f4 20 63  65 6e 74 65 72 20 77 69  |     . center wi|
000178b0  6e 64 6f 77 20 74 6f 20  73 63 72 65 65 6e 0d 0c  |ndow to screen..|
000178c0  2d 1f 20 20 20 20 20 20  63 78 25 3d 53 63 72 65  |-.      cx%=Scre|
000178d0  65 6e 53 69 7a 65 5f 58  25 20 81 20 32 0d 0c 2e  |enSize_X% . 2...|
000178e0  1f 20 20 20 20 20 20 63  79 25 3d 53 63 72 65 65  |.      cy%=Scree|
000178f0  6e 53 69 7a 65 5f 59 25  20 81 20 32 0d 0c 2f 30  |nSize_Y% . 2../0|
00017900  20 20 20 20 20 20 64 78  25 3d 63 78 25 2d 28 53  |      dx%=cx%-(S|
00017910  63 72 61 70 42 6c 6b 25  21 31 32 2b 53 63 72 61  |crapBlk%!12+Scra|
00017920  70 42 6c 6b 25 21 34 29  20 81 20 32 0d 0c 30 30  |pBlk%!4) . 2..00|
00017930  20 20 20 20 20 20 64 79  25 3d 63 79 25 2d 28 53  |      dy%=cy%-(S|
00017940  63 72 61 70 42 6c 6b 25  21 31 36 2b 53 63 72 61  |crapBlk%!16+Scra|
00017950  70 42 6c 6b 25 21 38 29  20 81 20 32 0d 0c 31 09  |pBlk%!8) . 2..1.|
00017960  20 20 20 20 cd 0d 0c 32  09 20 20 c9 20 33 0d 0c  |    ...2.  . 3..|
00017970  33 14 20 20 20 20 e7 20  6e 6f 74 6f 70 65 6e 25  |3.    . notopen%|
00017980  20 8c 0d 0c 34 1a 20 20  20 20 20 20 64 78 25 3d  | ...4.      dx%=|
00017990  2d 53 63 72 61 70 42 6c  6b 25 21 34 0d 0c 35 28  |-ScrapBlk%!4..5(|
000179a0  20 20 20 20 20 20 64 79  25 3d 53 63 72 65 65 6e  |      dy%=Screen|
000179b0  53 69 7a 65 5f 59 25 2d  53 63 72 61 70 42 6c 6b  |Size_Y%-ScrapBlk|
000179c0  25 21 31 36 0d 0c 36 09  20 20 20 20 cd 0d 0c 37  |%!16..6.    ...7|
000179d0  09 20 20 c9 20 34 0d 0c  38 14 20 20 20 20 e7 20  |.  . 4..8.    . |
000179e0  6e 6f 74 6f 70 65 6e 25  20 8c 0d 0c 39 28 20 20  |notopen% ...9(  |
000179f0  20 20 20 20 64 78 25 3d  53 63 72 65 65 6e 53 69  |    dx%=ScreenSi|
00017a00  7a 65 5f 58 25 2d 53 63  72 61 70 42 6c 6b 25 21  |ze_X%-ScrapBlk%!|
00017a10  31 32 0d 0c 3a 28 20 20  20 20 20 20 64 79 25 3d  |12..:(      dy%=|
00017a20  53 63 72 65 65 6e 53 69  7a 65 5f 59 25 2d 53 63  |ScreenSize_Y%-Sc|
00017a30  72 61 70 42 6c 6b 25 21  31 36 0d 0c 3b 09 20 20  |rapBlk%!16..;.  |
00017a40  20 20 cd 0d 0c 3c 05 cb  0d 0c 3d 1f 53 63 72 61  |  ...<....=.Scra|
00017a50  70 42 6c 6b 25 21 34 3d  53 63 72 61 70 42 6c 6b  |pBlk%!4=ScrapBlk|
00017a60  25 21 34 2b 64 78 25 0d  0c 3e 1f 53 63 72 61 70  |%!4+dx%..>.Scrap|
00017a70  42 6c 6b 25 21 38 3d 53  63 72 61 70 42 6c 6b 25  |Blk%!8=ScrapBlk%|
00017a80  21 38 2b 64 79 25 0d 0c  3f 21 53 63 72 61 70 42  |!8+dy%..?!ScrapB|
00017a90  6c 6b 25 21 31 32 3d 53  63 72 61 70 42 6c 6b 25  |lk%!12=ScrapBlk%|
00017aa0  21 31 32 2b 64 78 25 0d  0c 40 21 53 63 72 61 70  |!12+dx%..@!Scrap|
00017ab0  42 6c 6b 25 21 31 36 3d  53 63 72 61 70 42 6c 6b  |Blk%!16=ScrapBlk|
00017ac0  25 21 31 36 2b 64 79 25  0d 0c 41 13 53 63 72 61  |%!16+dy%..A.Scra|
00017ad0  70 42 6c 6b 25 21 32 38  3d 2d 31 0d 0c 42 23 c8  |pBlk%!28=-1..B#.|
00017ae0  99 20 22 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |. "Wimp_OpenWind|
00017af0  6f 77 22 2c 2c 53 63 72  61 70 42 6c 6b 25 0d 0c  |ow",,ScrapBlk%..|
00017b00  43 2e e7 20 68 61 6e 64  6c 65 25 3d 4f 70 74 69  |C.. handle%=Opti|
00017b10  6f 6e 73 57 25 20 8c 20  f2 6f 70 65 6e 70 61 6e  |onsW% . .openpan|
00017b20  65 28 4f 70 74 50 61 6e  65 57 25 29 0d 0c 44 05  |e(OptPaneW%)..D.|
00017b30  e1 0d 0c 45 04 0d 0c 46  1b dd 20 f2 63 6c 6f 73  |...E...F.. .clos|
00017b40  65 77 69 6e 64 6f 77 28  68 61 6e 64 6c 65 25 29  |ewindow(handle%)|
00017b50  0d 0c 47 08 ea 20 69 25  0d 0c 48 17 53 63 72 61  |..G.. i%..H.Scra|
00017b60  70 42 6c 6b 25 21 30 3d  68 61 6e 64 6c 65 25 0d  |pBlk%!0=handle%.|
00017b70  0c 49 24 c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |.I$.. "Wimp_Clos|
00017b80  65 57 69 6e 64 6f 77 22  2c 2c 53 63 72 61 70 42  |eWindow",,ScrapB|
00017b90  6c 6b 25 0d 0c 4a 10 c8  8e 20 68 61 6e 64 6c 65  |lk%..J... handle|
00017ba0  25 20 ca 0d 0c 4b 0f 20  20 c9 20 54 65 6d 70 6c  |% ...K.  . Templ|
00017bb0  57 25 0d 0c 4c 1c 20 20  20 20 53 63 72 61 70 42  |W%..L.    ScrapB|
00017bc0  6c 6b 25 21 30 3d 49 63  49 6e 66 6f 57 25 0d 0c  |lk%!0=IcInfoW%..|
00017bd0  4d 28 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 43  |M(    .. "Wimp_C|
00017be0  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 53 63 72  |loseWindow",,Scr|
00017bf0  61 70 42 6c 6b 25 0d 0c  4e 1a 20 20 20 20 e7 20  |apBlk%..N.    . |
00017c00  4e 72 54 65 6d 70 6c 61  74 65 73 25 3e 30 20 8c  |NrTemplates%>0 .|
00017c10  0d 0c 4f 21 20 20 20 20  20 20 e3 20 69 25 3d 30  |..O!      . i%=0|
00017c20  20 b8 20 4e 72 54 65 6d  70 6c 61 74 65 73 25 2d  | . NrTemplates%-|
00017c30  31 0d 0c 50 1e 20 20 20  20 20 20 20 20 f2 63 6c  |1..P.        .cl|
00017c40  6f 73 65 74 65 6d 70 6c  61 74 65 28 69 25 29 0d  |osetemplate(i%).|
00017c50  0c 51 0e 20 20 20 20 20  20 ed 20 69 25 0d 0c 52  |.Q.      . i%..R|
00017c60  09 20 20 20 20 cd 0d 0c  53 11 20 20 c9 20 4f 70  |.    ...S.  . Op|
00017c70  74 69 6f 6e 73 57 25 0d  0c 54 1d 20 20 20 20 53  |tionsW%..T.    S|
00017c80  63 72 61 70 42 6c 6b 25  21 30 3d 4f 70 74 50 61  |crapBlk%!0=OptPa|
00017c90  6e 65 57 25 0d 0c 55 28  20 20 20 20 c8 99 20 22  |neW%..U(    .. "|
00017ca0  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
00017cb0  22 2c 2c 53 63 72 61 70  42 6c 6b 25 0d 0c 56 05  |",,ScrapBlk%..V.|
00017cc0  cb 0d 0c 57 05 e1 0d 0c  58 04 0d 0c 59 18 dd 20  |...W....X...Y.. |
00017cd0  f2 6f 70 65 6e 70 61 6e  65 28 68 61 6e 64 6c 65  |.openpane(handle|
00017ce0  25 29 0d 0c 5a 13 ea 20  62 65 68 69 6e 64 25 2c  |%)..Z.. behind%,|
00017cf0  78 25 2c 79 25 0d 0c 5b  10 c8 8e 20 68 61 6e 64  |x%,y%..[... hand|
00017d00  6c 65 25 20 ca 0d 0c 5c  11 20 20 c9 20 4f 70 74  |le% ...\.  . Opt|
00017d10  50 61 6e 65 57 25 0d 0c  5d 1d 20 20 20 20 53 63  |PaneW%..].    Sc|
00017d20  72 61 70 42 6c 6b 25 21  30 3d 4f 70 74 69 6f 6e  |rapBlk%!0=Option|
00017d30  73 57 25 0d 0c 5e 40 20  20 20 20 78 25 3d 31 36  |sW%..^@    x%=16|
00017d40  20 20 3a 20 f4 20 64 69  73 74 61 6e 63 65 20 66  |  : . distance f|
00017d50  72 6f 6d 20 74 6f 70 6c  65 66 74 20 63 6f 72 6e  |rom topleft corn|
00017d60  65 72 20 6f 66 20 70 61  72 65 6e 74 20 77 69 6e  |er of parent win|
00017d70  64 6f 77 0d 0c 5f 0e 20  20 20 20 79 25 3d 2d 31  |dow.._.    y%=-1|
00017d80  36 0d 0c 60 05 cb 0d 0c  61 27 c8 99 20 22 57 69  |6..`....a'.. "Wi|
00017d90  6d 70 5f 47 65 74 57 69  6e 64 6f 77 53 74 61 74  |mp_GetWindowStat|
00017da0  65 22 2c 2c 53 63 72 61  70 42 6c 6b 25 0d 0c 62  |e",,ScrapBlk%..b|
00017db0  13 78 25 2b 3d 53 63 72  61 70 42 6c 6b 25 21 34  |.x%+=ScrapBlk%!4|
00017dc0  0d 0c 63 14 79 25 2b 3d  53 63 72 61 70 42 6c 6b  |..c.y%+=ScrapBlk|
00017dd0  25 21 31 36 0d 0c 64 18  62 65 68 69 6e 64 25 3d  |%!16..d.behind%=|
00017de0  53 63 72 61 70 42 6c 6b  25 21 32 38 0d 0c 65 17  |ScrapBlk%!28..e.|
00017df0  53 63 72 61 70 42 6c 6b  25 21 30 3d 68 61 6e 64  |ScrapBlk%!0=hand|
00017e00  6c 65 25 0d 0c 66 27 c8  99 20 22 57 69 6d 70 5f  |le%..f'.. "Wimp_|
00017e10  47 65 74 57 69 6e 64 6f  77 53 74 61 74 65 22 2c  |GetWindowState",|
00017e20  2c 53 63 72 61 70 42 6c  6b 25 0d 0c 67 2e 53 63  |,ScrapBlk%..g.Sc|
00017e30  72 61 70 42 6c 6b 25 21  31 32 3d 78 25 2b 28 53  |rapBlk%!12=x%+(S|
00017e40  63 72 61 70 42 6c 6b 25  21 31 32 2d 53 63 72 61  |crapBlk%!12-Scra|
00017e50  70 42 6c 6b 25 21 34 29  0d 0c 68 2d 53 63 72 61  |pBlk%!4)..h-Scra|
00017e60  70 42 6c 6b 25 21 38 3d  79 25 2d 28 53 63 72 61  |pBlk%!8=y%-(Scra|
00017e70  70 42 6c 6b 25 21 31 36  2d 53 63 72 61 70 42 6c  |pBlk%!16-ScrapBl|
00017e80  6b 25 21 38 29 0d 0c 69  12 53 63 72 61 70 42 6c  |k%!8)..i.ScrapBl|
00017e90  6b 25 21 34 3d 78 25 0d  0c 6a 13 53 63 72 61 70  |k%!4=x%..j.Scrap|
00017ea0  42 6c 6b 25 21 31 36 3d  79 25 0d 0c 6b 18 53 63  |Blk%!16=y%..k.Sc|
00017eb0  72 61 70 42 6c 6b 25 21  32 38 3d 62 65 68 69 6e  |rapBlk%!28=behin|
00017ec0  64 25 0d 0c 6c 23 c8 99  20 22 57 69 6d 70 5f 4f  |d%..l#.. "Wimp_O|
00017ed0  70 65 6e 57 69 6e 64 6f  77 22 2c 2c 53 63 72 61  |penWindow",,Scra|
00017ee0  70 42 6c 6b 25 0d 0c 6d  05 e1 0d 0c 6e 04 0d 0c  |pBlk%..m....n...|
00017ef0  6f 18 dd 20 f2 6f 70 65  6e 74 65 6d 70 6c 61 74  |o.. .opentemplat|
00017f00  65 28 6e 6f 25 29 0d 0c  70 0e e7 20 6e 6f 25 3e  |e(no%)..p.. no%>|
00017f10  3d 30 20 8c 0d 0c 71 23  20 20 53 63 72 61 70 42  |=0 ...q#  ScrapB|
00017f20  6c 6b 25 21 30 3d 54 65  6d 70 6c 48 61 6e 64 6c  |lk%!0=TemplHandl|
00017f30  65 25 28 6e 6f 25 29 0d  0c 72 29 20 20 c8 99 20  |e%(no%)..r)  .. |
00017f40  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00017f50  74 61 74 65 22 2c 2c 53  63 72 61 70 42 6c 6b 25  |tate",,ScrapBlk%|
00017f60  0d 0c 73 24 20 20 e7 20  28 53 63 72 61 70 42 6c  |..s$  . (ScrapBl|
00017f70  6b 25 21 33 32 20 80 20  28 31 3c 3c 31 36 29 29  |k%!32 . (1<<16))|
00017f80  3d 30 20 8c 0d 0c 74 17  20 20 20 20 53 63 72 61  |=0 ...t.    Scra|
00017f90  70 42 6c 6b 25 21 32 38  3d 2d 31 0d 0c 75 27 20  |pBlk%!28=-1..u' |
00017fa0  20 20 20 c8 99 20 22 57  69 6d 70 5f 4f 70 65 6e  |   .. "Wimp_Open|
00017fb0  57 69 6e 64 6f 77 22 2c  2c 53 63 72 61 70 42 6c  |Window",,ScrapBl|
00017fc0  6b 25 0d 0c 76 3c 20 20  20 20 24 28 54 65 6d 70  |k%..v<    $(Temp|
00017fd0  6c 4e 61 6d 65 73 25 2b  32 38 2a 6e 6f 25 2b 31  |lNames%+28*no%+1|
00017fe0  34 29 3d a4 77 69 6e 64  6f 77 69 63 6f 6e 28 53  |4)=.windowicon(S|
00017ff0  63 72 61 70 42 6c 6b 25  21 33 32 2c 31 29 0d 0c  |crapBlk%!32,1)..|
00018000  77 27 20 20 20 20 f2 73  65 74 69 63 6f 6e 73 74  |w'    .seticonst|
00018010  61 74 65 30 28 54 65 6d  70 6c 57 25 2c 6e 6f 25  |ate0(TemplW%,no%|
00018020  2c 30 2c 30 29 0d 0c 78  38 20 20 20 20 e7 20 54  |,0,0)..x8    . T|
00018030  65 6d 70 6c 61 74 65 73  4f 70 65 6e 25 3d 30 20  |emplatesOpen%=0 |
00018040  8c 20 50 6f 6c 6c 4d 61  73 6b 25 3d 50 6f 6c 6c  |. PollMask%=Poll|
00018050  4d 61 73 6b 25 20 80 20  28 ac 20 31 29 0d 0c 79  |Mask% . (. 1)..y|
00018060  19 20 20 20 20 54 65 6d  70 6c 61 74 65 73 4f 70  |.    TemplatesOp|
00018070  65 6e 25 2b 3d 31 0d 0c  7a 27 20 20 20 20 f2 73  |en%+=1..z'    .s|
00018080  65 74 63 61 72 65 74 28  54 65 6d 70 6c 48 61 6e  |etcaret(TemplHan|
00018090  64 6c 65 25 28 6e 6f 25  29 2c 2d 31 29 0d 0c 7b  |dle%(no%),-1)..{|
000180a0  07 20 20 cd 0d 0c 7c 05  cd 0d 0c 7d 05 e1 0d 0c  |.  ...|....}....|
000180b0  7e 04 0d 0c 7f 19 dd 20  f2 63 6c 6f 73 65 74 65  |~...... .closete|
000180c0  6d 70 6c 61 74 65 28 6e  6f 25 29 0d 0c 80 0e e7  |mplate(no%).....|
000180d0  20 6e 6f 25 3e 3d 30 20  8c 0d 0c 81 23 20 20 53  | no%>=0 ....#  S|
000180e0  63 72 61 70 42 6c 6b 25  21 30 3d 54 65 6d 70 6c  |crapBlk%!0=Templ|
000180f0  48 61 6e 64 6c 65 25 28  6e 6f 25 29 0d 0c 82 29  |Handle%(no%)...)|
00018100  20 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 57 69  |  .. "Wimp_GetWi|
00018110  6e 64 6f 77 53 74 61 74  65 22 2c 2c 53 63 72 61  |ndowState",,Scra|
00018120  70 42 6c 6b 25 0d 0c 83  24 20 20 e7 20 28 53 63  |pBlk%...$  . (Sc|
00018130  72 61 70 42 6c 6b 25 21  33 32 20 80 20 28 31 3c  |rapBlk%!32 . (1<|
00018140  3c 31 36 29 29 3e 30 20  8c 0d 0c 84 28 20 20 20  |<16))>0 ....(   |
00018150  20 c8 99 20 22 57 69 6d  70 5f 43 6c 6f 73 65 57  | .. "Wimp_CloseW|
00018160  69 6e 64 6f 77 22 2c 2c  53 63 72 61 70 42 6c 6b  |indow",,ScrapBlk|
00018170  25 0d 0c 85 2b 20 20 20  20 c8 99 20 22 57 69 6d  |%...+    .. "Wim|
00018180  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
00018190  22 2c 2c 53 63 72 61 70  42 6c 6b 25 0d 0c 86 3c  |",,ScrapBlk%...<|
000181a0  20 20 20 20 24 28 54 65  6d 70 6c 4e 61 6d 65 73  |    $(TemplNames|
000181b0  25 2b 32 38 2a 6e 6f 25  2b 31 34 29 3d a4 77 69  |%+28*no%+14)=.wi|
000181c0  6e 64 6f 77 69 63 6f 6e  28 53 63 72 61 70 42 6c  |ndowicon(ScrapBl|
000181d0  6b 25 21 33 32 2c 30 29  0d 0c 87 27 20 20 20 20  |k%!32,0)...'    |
000181e0  f2 73 65 74 69 63 6f 6e  73 74 61 74 65 30 28 54  |.seticonstate0(T|
000181f0  65 6d 70 6c 57 25 2c 6e  6f 25 2c 30 2c 30 29 0d  |emplW%,no%,0,0).|
00018200  0c 88 3c 20 20 20 20 e7  20 54 65 6d 70 6c 48 61  |..<    . TemplHa|
00018210  6e 64 6c 65 25 28 6e 6f  25 29 3d 49 63 45 64 5f  |ndle%(no%)=IcEd_|
00018220  57 69 6e 25 20 8c 20 f2  63 6c 6f 73 65 77 69 6e  |Win% . .closewin|
00018230  64 6f 77 28 49 63 45 64  57 25 29 0d 0c 89 3e 20  |dow(IcEdW%)...> |
00018240  20 20 20 e7 20 54 65 6d  70 6c 48 61 6e 64 6c 65  |   . TemplHandle|
00018250  25 28 6e 6f 25 29 3d 57  69 6e 45 64 5f 57 69 6e  |%(no%)=WinEd_Win|
00018260  25 20 8c 20 f2 63 6c 6f  73 65 77 69 6e 64 6f 77  |% . .closewindow|
00018270  28 57 69 6e 45 64 57 25  29 0d 0c 8a 19 20 20 20  |(WinEdW%)....   |
00018280  20 54 65 6d 70 6c 61 74  65 73 4f 70 65 6e 25 2d  | TemplatesOpen%-|
00018290  3d 31 0d 0c 8b 34 20 20  20 20 e7 20 54 65 6d 70  |=1...4    . Temp|
000182a0  6c 61 74 65 73 4f 70 65  6e 25 3d 30 20 8c 20 50  |latesOpen%=0 . P|
000182b0  6f 6c 6c 4d 61 73 6b 25  3d 50 6f 6c 6c 4d 61 73  |ollMask%=PollMas|
000182c0  6b 25 20 84 20 31 0d 0c  8c 07 20 20 cd 0d 0c 8d  |k% . 1....  ....|
000182d0  05 cd 0d 0c 8e 05 e1 0d  0c 8f 04 0d 0c 90 29 f4  |..............).|
000182e0  20 2d 2d 2d 20 63 6f 6e  76 65 72 74 20 73 74 72  | --- convert str|
000182f0  69 6e 67 20 74 6f 20 75  70 70 65 72 63 61 73 65  |ing to uppercase|
00018300  20 2d 2d 2d 0d 0c 91 11  dd 20 a4 75 70 63 61 73  | ---..... .upcas|
00018310  65 28 73 24 29 0d 0c 92  08 ea 20 69 25 0d 0c 93  |e(s$)..... i%...|
00018320  12 e3 20 69 25 3d 31 20  b8 20 a9 28 73 24 29 0d  |.. i%=1 . .(s$).|
00018330  0c 94 15 20 20 61 25 3d  97 28 c1 73 24 2c 69 25  |...  a%=.(.s$,i%|
00018340  2c 31 29 29 0d 0c 95 1c  20 20 e7 20 28 61 25 3e  |,1))....  . (a%>|
00018350  3d 39 37 29 80 28 61 25  3c 3d 31 32 32 29 20 8c  |=97).(a%<=122) .|
00018360  0d 0c 96 1a 20 20 20 20  c1 73 24 2c 69 25 2c 31  |....    .s$,i%,1|
00018370  29 3d bd 28 61 25 2d 33  32 29 0d 0c 97 07 20 20  |)=.(a%-32)....  |
00018380  cd 0d 0c 98 08 ed 20 69  25 0d 0c 99 07 3d 73 24  |...... i%....=s$|
00018390  0d 0c 9a 04 0d 0c 9b 31  f4 20 2d 2d 2d 20 73 70  |.......1. --- sp|
000183a0  6c 69 74 20 6f 66 66 20  6c 65 61 66 20 6e 61 6d  |lit off leaf nam|
000183b0  65 20 66 72 6f 6d 20 61  20 66 69 6c 65 6e 61 6d  |e from a filenam|
000183c0  65 20 2d 2d 2d 0d 0c 9c  13 dd 20 a4 6c 65 61 66  |e ---..... .leaf|
000183d0  6e 61 6d 65 28 66 24 29  0d 0c 9d 0b ea 20 70 25  |name(f$)..... p%|
000183e0  2c 71 25 0d 0c 9e 08 71  25 3d 30 0d 0c 9f 05 f5  |,q%....q%=0.....|
000183f0  0d 0c a0 0d 20 20 70 25  3d 71 25 2b 31 0d 0c a1  |....  p%=q%+1...|
00018400  14 20 20 71 25 3d a7 66  24 2c 22 2e 22 2c 70 25  |.  q%=.f$,".",p%|
00018410  29 0d 0c a2 0a fd 20 71  25 3d 30 0d 0c a3 0c 3d  |)..... q%=0....=|
00018420  c1 66 24 2c 70 25 29 0d  0c a4 04 0d 0c a5 36 f4  |.f$,p%).......6.|
00018430  20 2d 2d 2d 20 73 70 6c  69 74 20 6f 66 66 20 64  | --- split off d|
00018440  69 72 65 63 74 6f 72 79  20 6e 61 6d 65 20 66 72  |irectory name fr|
00018450  6f 6d 20 61 20 66 69 6c  65 6e 61 6d 65 20 2d 2d  |om a filename --|
00018460  2d 0d 0c a6 12 dd 20 a4  64 69 72 6e 61 6d 65 28  |-..... .dirname(|
00018470  66 24 29 0d 0c a7 0b ea  20 70 25 2c 71 25 0d 0c  |f$)..... p%,q%..|
00018480  a8 08 70 25 3d 31 0d 0c  a9 05 f5 0d 0c aa 13 20  |..p%=1......... |
00018490  71 25 3d a7 66 24 2c 22  2e 22 2c 70 25 29 0d 0c  |q%=.f$,".",p%)..|
000184a0  ab 17 20 e7 20 71 25 20  3e 20 30 20 8c 20 70 25  |.. . q% > 0 . p%|
000184b0  3d 71 25 2b 31 0d 0c ac  0a fd 20 71 25 3d 30 0d  |=q%+1..... q%=0.|
000184c0  0c ad 0e 3d c0 66 24 2c  70 25 2d 32 29 0d 0c ae  |...=.f$,p%-2)...|
000184d0  04 0d 0c af 44 f4 20 2d  2d 2d 20 67 65 74 20 74  |....D. --- get t|
000184e0  68 65 20 63 6f 6e 74 72  6f 6c 2d 74 65 72 6d 69  |he control-termi|
000184f0  6e 61 74 65 64 20 73 74  72 69 6e 67 20 61 74 20  |nated string at |
00018500  74 68 65 20 67 69 76 65  6e 20 61 64 64 72 65 73  |the given addres|
00018510  73 20 2d 2d 2d 0d 0c b0  0e dd 20 a4 73 74 72 28  |s ---..... .str(|
00018520  73 25 29 0d 0c b1 0b ea  20 69 25 2c 6e 24 0d 0c  |s%)..... i%,n$..|
00018530  b2 08 69 25 3d 30 0d 0c  b3 1d c8 95 20 28 73 25  |..i%=0...... (s%|
00018540  3f 69 25 3e 3d 33 32 29  20 80 20 28 69 25 3c 32  |?i%>=32) . (i%<2|
00018550  35 35 29 0d 0c b4 12 20  20 6e 24 2b 3d bd 28 73  |55)....  n$+=.(s|
00018560  25 3f 69 25 29 0d 0c b5  0b 20 20 69 25 2b 3d 31  |%?i%)....  i%+=1|
00018570  0d 0c b6 05 ce 0d 0c b7  07 3d 6e 24 0d 0c b8 04  |.........=n$....|
00018580  0d 0c b9 15 dd 20 a4 66  69 6c 65 65 78 69 73 74  |..... .fileexist|
00018590  73 28 66 24 29 0d 0c ba  0b ea 20 74 79 70 65 25  |s(f$)..... type%|
000185a0  0d 0c bb 0b 74 79 70 65  25 3d 30 0d 0c bc 0f e7  |....type%=0.....|
000185b0  20 a9 28 66 24 29 3e 30  20 8c 0d 0c bd 20 20 20  | .(f$)>0 ....   |
000185c0  c8 99 20 22 4f 53 5f 46  69 6c 65 22 2c 31 37 2c  |.. "OS_File",17,|
000185d0  66 24 20 b8 20 74 79 70  65 25 0d 0c be 05 cd 0d  |f$ . type%......|
000185e0  0c bf 0e 3d 28 74 79 70  65 25 3d 31 29 0d 0c c0  |...=(type%=1)...|
000185f0  04 0d 0c c1 31 f4 20 2d  2d 2d 20 73 65 74 20 69  |....1. --- set i|
00018600  63 6f 6e 20 73 74 61 74  65 20 69 6e 20 61 20 74  |con state in a t|
00018610  65 6d 70 6c 61 74 65 20  77 69 6e 64 6f 77 20 2d  |emplate window -|
00018620  2d 2d 0d 0c c2 2c dd 20  f2 73 65 74 69 63 6f 6e  |--...,. .seticon|
00018630  73 74 61 74 65 28 77 69  6e 64 6f 77 25 2c 69 63  |state(window%,ic|
00018640  6f 6e 25 2c 65 6f 72 25  2c 63 6c 72 25 29 0d 0c  |on%,eor%,clr%)..|
00018650  c3 19 ea 20 6f 6c 64 66  6c 61 67 73 25 2c 6e 65  |... oldflags%,ne|
00018660  77 66 6c 61 67 73 25 0d  0c c4 17 53 63 72 61 70  |wflags%....Scrap|
00018670  42 6c 6b 25 21 30 3d 77  69 6e 64 6f 77 25 0d 0c  |Blk%!0=window%..|
00018680  c5 15 53 63 72 61 70 42  6c 6b 25 21 34 3d 69 63  |..ScrapBlk%!4=ic|
00018690  6f 6e 25 0d 0c c6 25 f4  20 63 68 65 63 6b 20 69  |on%...%. check i|
000186a0  66 20 66 6f 6e 74 20 75  73 61 67 65 20 69 73 20  |f font usage is |
000186b0  63 68 61 6e 67 69 6e 67  0d 0c c7 25 c8 99 20 22  |changing...%.. "|
000186c0  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
000186d0  65 22 2c 2c 53 63 72 61  70 42 6c 6b 25 0d 0c c8  |e",,ScrapBlk%...|
000186e0  1a 6f 6c 64 66 6c 61 67  73 25 3d 53 63 72 61 70  |.oldflags%=Scrap|
000186f0  42 6c 6b 25 21 32 34 0d  0c c9 29 6e 65 77 66 6c  |Blk%!24...)newfl|
00018700  61 67 73 25 3d 28 6f 6c  64 66 6c 61 67 73 25 20  |ags%=(oldflags% |
00018710  80 20 ac 20 63 6c 72 25  29 20 82 20 65 6f 72 25  |. . clr%) . eor%|
00018720  0d 0c ca 21 e7 20 28 6e  65 77 66 6c 61 67 73 25  |...!. (newflags%|
00018730  20 80 20 26 38 30 30 30  34 30 29 3d 26 34 30 20  | . &800040)=&40 |
00018740  8c 0d 0c cb 22 20 20 46  6f 6e 74 55 73 61 67 65  |...."  FontUsage|
00018750  25 28 6e 65 77 66 6c 61  67 73 25 3e 3e 32 34 29  |%(newflags%>>24)|
00018760  2b 3d 31 0d 0c cc 05 cd  0d 0c cd 21 e7 20 28 6f  |+=1........!. (o|
00018770  6c 64 66 6c 61 67 73 25  20 80 20 26 38 30 30 30  |ldflags% . &8000|
00018780  34 30 29 3d 26 34 30 20  8c 0d 0c ce 1f 20 20 f2  |40)=&40 .....  .|
00018790  66 6f 6e 74 5f 6c 6f 73  65 28 6f 6c 64 66 6c 61  |font_lose(oldfla|
000187a0  67 73 25 3e 3e 32 34 29  0d 0c cf 05 cd 0d 0c d0  |gs%>>24)........|
000187b0  14 53 63 72 61 70 42 6c  6b 25 21 38 3d 65 6f 72  |.ScrapBlk%!8=eor|
000187c0  25 0d 0c d1 15 53 63 72  61 70 42 6c 6b 25 21 31  |%....ScrapBlk%!1|
000187d0  32 3d 63 6c 72 25 0d 0c  d2 13 e7 20 53 75 70 70  |2=clr%..... Supp|
000187e0  6f 72 74 41 45 48 25 20  8c 0d 0c d3 25 20 c8 99  |ortAEH% ....% ..|
000187f0  20 22 41 45 48 5f 53 65  74 49 63 6f 6e 53 74 61  | "AEH_SetIconSta|
00018800  74 65 22 2c 2c 53 63 72  61 70 42 6c 6b 25 0d 0c  |te",,ScrapBlk%..|
00018810  d4 05 cc 0d 0c d5 26 20  c8 99 20 22 57 69 6d 70  |......& .. "Wimp|
00018820  5f 53 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_SetIconState",,|
00018830  53 63 72 61 70 42 6c 6b  25 0d 0c d6 05 cd 0d 0c  |ScrapBlk%.......|
00018840  d7 05 e1 0d 0c d8 04 0d  0c d9 3c f4 20 2d 2d 2d  |..........<. ---|
00018850  20 73 65 74 20 69 63 6f  6e 20 73 74 61 74 65 20  | set icon state |
00018860  69 6e 20 6f 6e 65 20 6f  66 20 54 65 6d 70 6c 45  |in one of TemplE|
00018870  64 27 73 20 6f 77 6e 20  77 69 6e 64 6f 77 73 20  |d's own windows |
00018880  2d 2d 2d 0d 0c da 2d dd  20 f2 73 65 74 69 63 6f  |---...-. .setico|
00018890  6e 73 74 61 74 65 30 28  77 69 6e 64 6f 77 25 2c  |nstate0(window%,|
000188a0  69 63 6f 6e 25 2c 65 6f  72 25 2c 63 6c 72 25 29  |icon%,eor%,clr%)|
000188b0  0d 0c db 19 ea 20 6f 6c  64 66 6c 61 67 73 25 2c  |..... oldflags%,|
000188c0  6e 65 77 66 6c 61 67 73  25 0d 0c dc 17 53 63 72  |newflags%....Scr|
000188d0  61 70 42 6c 6b 25 21 30  3d 77 69 6e 64 6f 77 25  |apBlk%!0=window%|
000188e0  0d 0c dd 15 53 63 72 61  70 42 6c 6b 25 21 34 3d  |....ScrapBlk%!4=|
000188f0  69 63 6f 6e 25 0d 0c de  14 53 63 72 61 70 42 6c  |icon%....ScrapBl|
00018900  6b 25 21 38 3d 65 6f 72  25 0d 0c df 15 53 63 72  |k%!8=eor%....Scr|
00018910  61 70 42 6c 6b 25 21 31  32 3d 63 6c 72 25 0d 0c  |apBlk%!12=clr%..|
00018920  e0 25 c8 99 20 22 57 69  6d 70 5f 53 65 74 49 63  |.%.. "Wimp_SetIc|
00018930  6f 6e 53 74 61 74 65 22  2c 2c 53 63 72 61 70 42  |onState",,ScrapB|
00018940  6c 6b 25 0d 0c e1 05 e1  0d 0c e2 04 0d 0c e3 23  |lk%............#|
00018950  dd 20 f2 73 65 6c 65 63  74 69 63 6f 6e 28 77 69  |. .selecticon(wi|
00018960  6e 64 6f 77 25 2c 69 63  6f 6e 25 2c 66 25 29 0d  |ndow%,icon%,f%).|
00018970  0c e4 0e ea 20 6f 6c 64  66 6c 61 67 25 0d 0c e5  |.... oldflag%...|
00018980  17 53 63 72 61 70 42 6c  6b 25 21 30 3d 77 69 6e  |.ScrapBlk%!0=win|
00018990  64 6f 77 25 0d 0c e6 15  53 63 72 61 70 42 6c 6b  |dow%....ScrapBlk|
000189a0  25 21 34 3d 69 63 6f 6e  25 0d 0c e7 25 c8 99 20  |%!4=icon%...%.. |
000189b0  22 57 69 6d 70 5f 47 65  74 49 63 6f 6e 53 74 61  |"Wimp_GetIconSta|
000189c0  74 65 22 2c 2c 53 63 72  61 70 42 6c 6b 25 0d 0c  |te",,ScrapBlk%..|
000189d0  e8 25 6f 6c 64 66 6c 61  67 25 3d 28 53 63 72 61  |.%oldflag%=(Scra|
000189e0  70 42 6c 6b 25 21 32 34  29 20 80 20 28 31 3c 3c  |pBlk%!24) . (1<<|
000189f0  32 31 29 0d 0c e9 0a e7  20 66 25 20 8c 0d 0c ea  |21)..... f% ....|
00018a00  17 20 20 53 63 72 61 70  42 6c 6b 25 21 38 3d 31  |.  ScrapBlk%!8=1|
00018a10  3c 3c 32 31 0d 0c eb 05  cc 0d 0c ec 13 20 20 53  |<<21.........  S|
00018a20  63 72 61 70 42 6c 6b 25  21 38 3d 30 0d 0c ed 05  |crapBlk%!8=0....|
00018a30  cd 0d 0c ee 16 53 63 72  61 70 42 6c 6b 25 21 31  |.....ScrapBlk%!1|
00018a40  32 3d 31 3c 3c 32 31 0d  0c ef 1d e7 20 6f 6c 64  |2=1<<21..... old|
00018a50  66 6c 61 67 25 3c 3e 53  63 72 61 70 42 6c 6b 25  |flag%<>ScrapBlk%|
00018a60  21 38 20 8c 0d 0c f0 1e  20 20 f4 20 6f 6e 6c 79  |!8 .....  . only|
00018a70  20 73 65 74 20 77 68 65  6e 20 63 68 61 6e 67 69  | set when changi|
00018a80  6e 67 0d 0c f1 15 20 20  e7 20 53 75 70 70 6f 72  |ng....  . Suppor|
00018a90  74 41 45 48 25 20 8c 0d  0c f2 27 20 20 20 c8 99  |tAEH% ....'   ..|
00018aa0  20 22 41 45 48 5f 53 65  74 49 63 6f 6e 53 74 61  | "AEH_SetIconSta|
00018ab0  74 65 22 2c 2c 53 63 72  61 70 42 6c 6b 25 0d 0c  |te",,ScrapBlk%..|
00018ac0  f3 07 20 20 cc 0d 0c f4  28 20 20 20 c8 99 20 22  |..  ....(   .. "|
00018ad0  57 69 6d 70 5f 53 65 74  49 63 6f 6e 53 74 61 74  |Wimp_SetIconStat|
00018ae0  65 22 2c 2c 53 63 72 61  70 42 6c 6b 25 0d 0c f5  |e",,ScrapBlk%...|
00018af0  07 20 20 cd 0d 0c f6 05  cd 0d 0c f7 05 e1 0d 0c  |.  .............|
00018b00  f8 04 0d 0c f9 22 dd 20  a4 69 63 6f 6e 73 65 6c  |.....". .iconsel|
00018b10  65 63 74 65 64 28 77 69  6e 64 6f 77 25 2c 69 63  |ected(window%,ic|
00018b20  6f 6e 25 29 0d 0c fa 17  53 63 72 61 70 42 6c 6b  |on%)....ScrapBlk|
00018b30  25 21 30 3d 77 69 6e 64  6f 77 25 0d 0c fb 15 53  |%!0=window%....S|
00018b40  63 72 61 70 42 6c 6b 25  21 34 3d 69 63 6f 6e 25  |crapBlk%!4=icon%|
00018b50  0d 0c fc 25 c8 99 20 22  57 69 6d 70 5f 47 65 74  |...%.. "Wimp_Get|
00018b60  49 63 6f 6e 53 74 61 74  65 22 2c 2c 53 63 72 61  |IconState",,Scra|
00018b70  70 42 6c 6b 25 0d 0c fd  23 3d 28 28 53 63 72 61  |pBlk%...#=((Scra|
00018b80  70 42 6c 6b 25 21 32 34  29 20 80 20 28 31 3c 3c  |pBlk%!24) . (1<<|
00018b90  32 31 29 29 20 3e 20 30  0d 0c fe 04 0d 0c ff 22  |21)) > 0......."|
00018ba0  dd 20 f2 73 68 61 64 65  69 63 6f 6e 28 77 69 6e  |. .shadeicon(win|
00018bb0  64 6f 77 25 2c 69 63 6f  6e 25 2c 66 25 29 0d 0d  |dow%,icon%,f%)..|
00018bc0  00 0e ea 20 6f 6c 64 66  6c 61 67 25 0d 0d 01 17  |... oldflag%....|
00018bd0  53 63 72 61 70 42 6c 6b  25 21 30 3d 77 69 6e 64  |ScrapBlk%!0=wind|
00018be0  6f 77 25 0d 0d 02 15 53  63 72 61 70 42 6c 6b 25  |ow%....ScrapBlk%|
00018bf0  21 34 3d 69 63 6f 6e 25  0d 0d 03 25 c8 99 20 22  |!4=icon%...%.. "|
00018c00  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
00018c10  65 22 2c 2c 53 63 72 61  70 42 6c 6b 25 0d 0d 04  |e",,ScrapBlk%...|
00018c20  25 6f 6c 64 66 6c 61 67  25 3d 28 53 63 72 61 70  |%oldflag%=(Scrap|
00018c30  42 6c 6b 25 21 32 34 29  20 80 20 28 31 3c 3c 32  |Blk%!24) . (1<<2|
00018c40  32 29 0d 0d 05 0a e7 20  66 25 20 8c 0d 0d 06 19  |2)..... f% .....|
00018c50  20 20 53 63 72 61 70 42  6c 6b 25 21 38 3d 28 31  |  ScrapBlk%!8=(1|
00018c60  3c 3c 32 32 29 0d 0d 07  05 cc 0d 0d 08 13 20 20  |<<22).........  |
00018c70  53 63 72 61 70 42 6c 6b  25 21 38 3d 30 0d 0d 09  |ScrapBlk%!8=0...|
00018c80  05 cd 0d 0d 0a 16 53 63  72 61 70 42 6c 6b 25 21  |......ScrapBlk%!|
00018c90  31 32 3d 31 3c 3c 32 32  0d 0d 0b 1d e7 20 6f 6c  |12=1<<22..... ol|
00018ca0  64 66 6c 61 67 25 3c 3e  53 63 72 61 70 42 6c 6b  |dflag%<>ScrapBlk|
00018cb0  25 21 38 20 8c 0d 0d 0c  1e 20 20 f4 20 6f 6e 6c  |%!8 .....  . onl|
00018cc0  79 20 73 65 74 20 77 68  65 6e 20 63 68 61 6e 67  |y set when chang|
00018cd0  69 6e 67 0d 0d 0d 15 20  20 e7 20 53 75 70 70 6f  |ing....  . Suppo|
00018ce0  72 74 41 45 48 25 20 8c  0d 0d 0e 27 20 20 20 c8  |rtAEH% ....'   .|
00018cf0  99 20 22 41 45 48 5f 53  65 74 49 63 6f 6e 53 74  |. "AEH_SetIconSt|
00018d00  61 74 65 22 2c 2c 53 63  72 61 70 42 6c 6b 25 0d  |ate",,ScrapBlk%.|
00018d10  0d 0f 07 20 20 cc 0d 0d  10 28 20 20 20 c8 99 20  |...  ....(   .. |
00018d20  22 57 69 6d 70 5f 53 65  74 49 63 6f 6e 53 74 61  |"Wimp_SetIconSta|
00018d30  74 65 22 2c 2c 53 63 72  61 70 42 6c 6b 25 0d 0d  |te",,ScrapBlk%..|
00018d40  11 07 20 20 cd 0d 0d 12  05 cd 0d 0d 13 05 e1 0d  |..  ............|
00018d50  0d 14 04 0d 0d 15 20 dd  20 a4 69 63 6f 6e 73 68  |...... . .iconsh|
00018d60  61 64 65 64 28 77 69 6e  64 6f 77 25 2c 69 63 6f  |aded(window%,ico|
00018d70  6e 25 29 0d 0d 16 17 53  63 72 61 70 42 6c 6b 25  |n%)....ScrapBlk%|
00018d80  21 30 3d 77 69 6e 64 6f  77 25 0d 0d 17 15 53 63  |!0=window%....Sc|
00018d90  72 61 70 42 6c 6b 25 21  34 3d 69 63 6f 6e 25 0d  |rapBlk%!4=icon%.|
00018da0  0d 18 25 c8 99 20 22 57  69 6d 70 5f 47 65 74 49  |..%.. "Wimp_GetI|
00018db0  63 6f 6e 53 74 61 74 65  22 2c 2c 53 63 72 61 70  |conState",,Scrap|
00018dc0  42 6c 6b 25 0d 0d 19 23  3d 28 28 53 63 72 61 70  |Blk%...#=((Scrap|
00018dd0  42 6c 6b 25 21 32 34 29  20 80 20 28 31 3c 3c 32  |Blk%!24) . (1<<2|
00018de0  32 29 29 20 3e 20 30 0d  0d 1a 04 0d 0d 1b 50 f4  |2)) > 0.......P.|
00018df0  20 2d 2d 2d 20 73 74 6f  72 65 20 70 6f 69 6e 74  | --- store point|
00018e00  65 72 20 74 6f 20 69 6e  64 69 72 65 63 74 65 64  |er to indirected|
00018e10  20 74 65 78 74 20 69 63  6f 6e 20 28 66 6f 72 20  | text icon (for |
00018e20  75 73 65 20 69 6e 20 50  52 4f 43 73 65 74 69 63  |use in PROCsetic|
00018e30  6f 6e 74 65 78 74 29 20  2d 2d 2d 0d 0d 1c 27 dd  |ontext) ---...'.|
00018e40  20 f2 6c 69 6e 6b 69 63  6f 6e 74 65 78 74 28 69  | .linkicontext(i|
00018e50  6e 64 65 78 25 2c 77 62  75 66 25 2c 69 63 6f 6e  |ndex%,wbuf%,icon|
00018e60  25 29 0d 0d 1d 2c 49 63  6f 6e 54 65 78 74 25 28  |%)...,IconText%(|
00018e70  69 6e 64 65 78 25 29 3d  77 62 75 66 25 21 28 39  |index%)=wbuf%!(9|
00018e80  32 2b 69 63 6f 6e 25 2a  33 32 2b 32 30 29 0d 0d  |2+icon%*32+20)..|
00018e90  1e 21 49 63 6f 6e 54 65  78 74 57 68 64 6c 25 28  |.!IconTextWhdl%(|
00018ea0  69 6e 64 65 78 25 29 3d  77 62 75 66 25 21 30 0d  |index%)=wbuf%!0.|
00018eb0  0d 1f 1f 49 63 6f 6e 54  65 78 74 49 68 64 6c 25  |...IconTextIhdl%|
00018ec0  28 69 6e 64 65 78 25 29  3d 69 63 6f 6e 25 0d 0d  |(index%)=icon%..|
00018ed0  20 05 e1 0d 0d 21 04 0d  0d 22 20 dd 20 f2 73 65  | ....!..." . .se|
00018ee0  74 69 63 6f 6e 74 65 78  74 28 69 6e 64 65 78 25  |ticontext(index%|
00018ef0  2c 74 65 78 74 24 29 0d  0d 23 1e 24 28 49 63 6f  |,text$)..#.$(Ico|
00018f00  6e 54 65 78 74 25 28 69  6e 64 65 78 25 29 29 3d  |nText%(index%))=|
00018f10  74 65 78 74 24 0d 0d 24  43 f2 73 65 74 69 63 6f  |text$..$C.setico|
00018f20  6e 73 74 61 74 65 30 28  49 63 6f 6e 54 65 78 74  |nstate0(IconText|
00018f30  57 68 64 6c 25 28 69 6e  64 65 78 25 29 2c 49 63  |Whdl%(index%),Ic|
00018f40  6f 6e 54 65 78 74 49 68  64 6c 25 28 69 6e 64 65  |onTextIhdl%(inde|
00018f50  78 25 29 2c 30 2c 30 29  0d 0d 25 05 e1 0d 0d 26  |x%),0,0)..%....&|
00018f60  04 0d 0d 27 38 f4 20 2d  2d 2d 20 73 74 6f 72 65  |...'8. --- store|
00018f70  20 70 6f 69 6e 74 65 72  20 74 6f 20 74 65 78 74  | pointer to text|
00018f80  20 6f 66 20 63 6f 6c 6f  75 72 2d 73 65 6c 65 63  | of colour-selec|
00018f90  74 2d 62 6f 78 20 2d 2d  2d 0d 0d 28 27 dd 20 f2  |t-box ---..('. .|
00018fa0  6c 69 6e 6b 63 73 65 6c  74 65 78 74 28 69 6e 64  |linkcseltext(ind|
00018fb0  65 78 25 2c 77 62 75 66  25 2c 69 63 6f 6e 25 29  |ex%,wbuf%,icon%)|
00018fc0  0d 0d 29 2c 43 73 65 6c  54 65 78 74 25 28 69 6e  |..),CselText%(in|
00018fd0  64 65 78 25 29 3d 77 62  75 66 25 21 28 39 32 2b  |dex%)=wbuf%!(92+|
00018fe0  69 63 6f 6e 25 2a 33 32  2b 32 30 29 0d 0d 2a 21  |icon%*32+20)..*!|
00018ff0  43 73 65 6c 54 65 78 74  57 68 64 6c 25 28 69 6e  |CselTextWhdl%(in|
00019000  64 65 78 25 29 3d 77 62  75 66 25 21 30 0d 0d 2b  |dex%)=wbuf%!0..+|
00019010  1f 43 73 65 6c 54 65 78  74 49 68 64 6c 25 28 69  |.CselTextIhdl%(i|
00019020  6e 64 65 78 25 29 3d 69  63 6f 6e 25 0d 0d 2c 05  |ndex%)=icon%..,.|
00019030  e1 0d 0d 2d 04 0d 0d 2e  34 f4 20 2d 2d 2d 20 73  |...-....4. --- s|
00019040  65 74 20 63 6f 6c 6f 75  72 20 6e 75 6d 62 65 72  |et colour number|
00019050  20 69 6e 20 63 6f 6c 6f  75 72 2d 73 65 6c 65 63  | in colour-selec|
00019060  74 2d 62 6f 78 20 2d 2d  2d 0d 0d 2f 23 dd 20 f2  |t-box ---../#. .|
00019070  73 65 74 63 6f 6c 6f 75  72 62 6f 78 28 69 6e 64  |setcolourbox(ind|
00019080  65 78 25 2c 63 6f 6c 6f  75 72 25 29 0d 0d 30 10  |ex%,colour%)..0.|
00019090  ea 20 63 24 2c 62 6f 78  63 6f 6c 25 0d 0d 31 11  |. c$,boxcol%..1.|
000190a0  63 24 3d c3 28 63 6f 6c  6f 75 72 25 29 0d 0d 32  |c$=.(colour%)..2|
000190b0  1b e7 20 63 6f 6c 6f 75  72 25 3d 26 46 46 20 8c  |.. colour%=&FF .|
000190c0  20 63 24 3d 22 2d 2d 22  0d 0d 33 1b 24 28 43 73  | c$="--"..3.$(Cs|
000190d0  65 6c 54 65 78 74 25 28  69 6e 64 65 78 25 29 29  |elText%(index%))|
000190e0  3d 63 24 0d 0d 34 0f 62  6f 78 63 6f 6c 25 3d 26  |=c$..4.boxcol%=&|
000190f0  30 37 0d 0d 35 12 e7 20  63 6f 6c 6f 75 72 25 3c  |07..5.. colour%<|
00019100  31 36 20 8c 0d 0d 36 32  20 20 62 6f 78 63 6f 6c  |16 ...62  boxcol|
00019110  25 3d 28 63 6f 6c 6f 75  72 25 3c 3c 34 29 2b 49  |%=(colour%<<4)+I|
00019120  6e 76 65 72 73 65 43 6f  6c 6f 75 72 25 28 63 6f  |nverseColour%(co|
00019130  6c 6f 75 72 25 29 0d 0d  37 05 cd 0d 0d 38 17 62  |lour%)..7....8.b|
00019140  6f 78 63 6f 6c 25 3d 62  6f 78 63 6f 6c 25 3c 3c  |oxcol%=boxcol%<<|
00019150  32 34 0d 0d 39 4f f2 73  65 74 69 63 6f 6e 73 74  |24..9O.seticonst|
00019160  61 74 65 30 28 43 73 65  6c 54 65 78 74 57 68 64  |ate0(CselTextWhd|
00019170  6c 25 28 69 6e 64 65 78  25 29 2c 43 73 65 6c 54  |l%(index%),CselT|
00019180  65 78 74 49 68 64 6c 25  28 69 6e 64 65 78 25 29  |extIhdl%(index%)|
00019190  2c 62 6f 78 63 6f 6c 25  2c 26 46 46 3c 3c 32 34  |,boxcol%,&FF<<24|
000191a0  29 0d 0d 3a 05 e1 0d 0d  3b 04 0d 0d 3c 22 f4 20  |)..:....;...<". |
000191b0  2d 2d 2d 20 63 68 61 6e  67 65 20 63 6f 6c 6f 75  |--- change colou|
000191c0  72 20 6e 75 6d 62 65 72  20 2d 2d 2d 0d 0d 3d 3c  |r number ---..=<|
000191d0  dd 20 f2 63 68 61 6e 67  65 63 6f 6c 6f 75 72 62  |. .changecolourb|
000191e0  6f 78 28 69 6e 64 65 78  25 2c f8 20 63 6f 6c 6f  |ox(index%,. colo|
000191f0  75 72 25 2c 64 69 66 66  25 2c 75 70 25 2c 62 69  |ur%,diff%,up%,bi|
00019200  67 72 61 6e 67 65 25 29  0d 0d 3e 10 ea 20 6e 65  |grange%)..>.. ne|
00019210  77 63 6f 6c 6f 75 72 25  0d 0d 3f 0b e7 20 75 70  |wcolour%..?.. up|
00019220  25 20 8c 0d 0d 40 1e 20  20 6e 65 77 63 6f 6c 6f  |% ...@.  newcolo|
00019230  75 72 25 3d 63 6f 6c 6f  75 72 25 2b 64 69 66 66  |ur%=colour%+diff|
00019240  25 0d 0d 41 05 cc 0d 0d  42 1e 20 20 6e 65 77 63  |%..A....B.  newc|
00019250  6f 6c 6f 75 72 25 3d 63  6f 6c 6f 75 72 25 2d 64  |olour%=colour%-d|
00019260  69 66 66 25 0d 0d 43 05  cd 0d 0d 44 3a e7 20 28  |iff%..C....D:. (|
00019270  6e 65 77 63 6f 6c 6f 75  72 25 20 80 20 26 46 46  |newcolour% . &FF|
00019280  29 3d 32 35 35 20 8c 20  6e 65 77 63 6f 6c 6f 75  |)=255 . newcolou|
00019290  72 25 3d 6e 65 77 63 6f  6c 6f 75 72 25 2b 64 69  |r%=newcolour%+di|
000192a0  66 66 25 0d 0d 45 11 e7  20 62 69 67 72 61 6e 67  |ff%..E.. bigrang|
000192b0  65 25 20 8c 0d 0d 46 45  20 20 6e 65 77 63 6f 6c  |e% ...FE  newcol|
000192c0  6f 75 72 25 3d 6e 65 77  63 6f 6c 6f 75 72 25 20  |our%=newcolour% |
000192d0  80 20 26 46 46 20 20 20  20 20 20 20 20 3a 20 f4  |. &FF        : .|
000192e0  20 63 6f 6c 6f 75 72 73  20 72 61 6e 67 65 20 66  | colours range f|
000192f0  72 6f 6d 20 30 2d 32 35  35 0d 0d 47 05 cc 0d 0d  |rom 0-255..G....|
00019300  48 42 20 20 e7 20 6e 65  77 63 6f 6c 6f 75 72 25  |HB  . newcolour%|
00019310  3c 30 20 8c 20 6e 65 77  63 6f 6c 6f 75 72 25 3d  |<0 . newcolour%=|
00019320  30 20 20 20 20 3a 20 f4  20 63 6f 6c 6f 75 72 73  |0    : . colours|
00019330  20 72 61 6e 67 65 20 66  72 6f 6d 20 30 2d 31 35  | range from 0-15|
00019340  0d 0d 49 25 20 20 e7 20  6e 65 77 63 6f 6c 6f 75  |..I%  . newcolou|
00019350  72 25 3e 26 46 20 8c 20  6e 65 77 63 6f 6c 6f 75  |r%>&F . newcolou|
00019360  72 25 3d 26 46 0d 0d 4a  05 cd 0d 0d 4b 1b e7 20  |r%=&F..J....K.. |
00019370  6e 65 77 63 6f 6c 6f 75  72 25 3c 3e 63 6f 6c 6f  |newcolour%<>colo|
00019380  75 72 25 20 8c 0d 0d 4c  18 20 20 63 6f 6c 6f 75  |ur% ...L.  colou|
00019390  72 25 3d 6e 65 77 63 6f  6c 6f 75 72 25 0d 0d 4d  |r%=newcolour%..M|
000193a0  23 20 20 f2 73 65 74 63  6f 6c 6f 75 72 62 6f 78  |#  .setcolourbox|
000193b0  28 69 6e 64 65 78 25 2c  63 6f 6c 6f 75 72 25 29  |(index%,colour%)|
000193c0  0d 0d 4e 05 cd 0d 0d 4f  05 e1 0d 0d 50 04 0d 0d  |..N....O....P...|
000193d0  51 48 f4 20 2d 2d 2d 20  66 69 6e 64 20 6e 75 6d  |QH. --- find num|
000193e0  62 65 72 20 6f 66 20 74  65 6d 70 6c 61 74 65 20  |ber of template |
000193f0  63 6f 72 72 65 73 70 6f  6e 64 69 6e 67 20 77 69  |corresponding wi|
00019400  74 68 20 61 20 77 69 6e  64 6f 77 20 68 61 6e 64  |th a window hand|
00019410  6c 65 20 2d 2d 2d 0d 0d  52 1d dd 20 a4 77 68 69  |le ---..R.. .whi|
00019420  63 68 74 65 6d 70 6c 61  74 65 28 68 61 6e 64 6c  |chtemplate(handl|
00019430  65 25 29 0d 0d 53 08 ea  20 69 25 0d 0d 54 08 69  |e%)..S.. i%..T.i|
00019440  25 3d 30 0d 0d 55 36 c8  95 20 28 54 65 6d 70 6c  |%=0..U6.. (Templ|
00019450  48 61 6e 64 6c 65 25 28  69 25 29 3c 3e 68 61 6e  |Handle%(i%)<>han|
00019460  64 6c 65 25 29 20 80 20  28 69 25 3c 4e 72 54 65  |dle%) . (i%<NrTe|
00019470  6d 70 6c 61 74 65 73 25  29 0d 0d 56 0b 20 20 69  |mplates%)..V.  i|
00019480  25 2b 3d 31 0d 0d 57 05  ce 0d 0d 58 4b e7 20 69  |%+=1..W....XK. i|
00019490  25 3d 4e 72 54 65 6d 70  6c 61 74 65 73 25 20 8c  |%=NrTemplates% .|
000194a0  20 69 25 3d 2d 31 20 3a  20 f4 20 68 61 6e 64 6c  | i%=-1 : . handl|
000194b0  65 20 64 6f 65 73 20 6e  6f 74 20 62 65 6c 6f 6e  |e does not belon|
000194c0  67 20 74 6f 20 74 65 6d  70 6c 61 74 65 20 77 69  |g to template wi|
000194d0  6e 64 6f 77 0d 0d 59 07  3d 69 25 0d 0d 5a 04 0d  |ndow..Y.=i%..Z..|
000194e0  0d 5b 2b dd 20 f2 73 65  74 74 69 74 6c 65 62 61  |.[+. .settitleba|
000194f0  72 28 68 61 6e 64 6c 65  25 2c 74 65 78 74 70 74  |r(handle%,textpt|
00019500  72 25 2c 74 69 74 6c 65  24 29 0d 0d 5c 11 ea 20  |r%,title$)..\.. |
00019510  78 6d 61 78 25 2c 79 6d  61 78 25 0d 0d 5d 16 24  |xmax%,ymax%..].$|
00019520  28 74 65 78 74 70 74 72  25 29 3d 74 69 74 6c 65  |(textptr%)=title|
00019530  24 0d 0d 5e 17 53 63 72  61 70 42 6c 6b 25 21 30  |$..^.ScrapBlk%!0|
00019540  3d 68 61 6e 64 6c 65 25  0d 0d 5f 29 c8 99 20 22  |=handle%.._).. "|
00019550  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 4f 75  |Wimp_GetWindowOu|
00019560  74 6c 69 6e 65 22 2c 2c  53 63 72 61 70 42 6c 6b  |tline",,ScrapBlk|
00019570  25 0d 0d 60 16 78 6d 61  78 25 3d 53 63 72 61 70  |%..`.xmax%=Scrap|
00019580  42 6c 6b 25 21 31 32 0d  0d 61 16 79 6d 61 78 25  |Blk%!12..a.ymax%|
00019590  3d 53 63 72 61 70 42 6c  6b 25 21 31 36 0d 0d 62  |=ScrapBlk%!16..b|
000195a0  27 c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |'.. "Wimp_GetWin|
000195b0  64 6f 77 53 74 61 74 65  22 2c 2c 53 63 72 61 70  |dowState",,Scrap|
000195c0  42 6c 6b 25 0d 0d 63 20  e7 20 28 53 63 72 61 70  |Blk%..c . (Scrap|
000195d0  42 6c 6b 25 21 33 32 20  80 20 28 31 3c 3c 31 36  |Blk%!32 . (1<<16|
000195e0  29 29 20 8c 0d 0d 64 43  20 20 c8 99 20 22 57 69  |)) ...dC  .. "Wi|
000195f0  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00019600  2d 31 2c 53 63 72 61 70  42 6c 6b 25 21 34 2c 53  |-1,ScrapBlk%!4,S|
00019610  63 72 61 70 42 6c 6b 25  21 31 36 2c 78 6d 61 78  |crapBlk%!16,xmax|
00019620  25 2c 79 6d 61 78 25 0d  0d 65 05 cd 0d 0d 66 05  |%,ymax%..e....f.|
00019630  e1 0d 0d 67 04 0d 0d 68  33 f4 20 2d 2d 2d 20 64  |...g...h3. --- d|
00019640  65 6c 65 74 65 20 61 6c  6c 20 73 65 6c 65 63 74  |elete all select|
00019650  65 64 20 69 63 6f 6e 73  20 69 6e 20 61 20 77 69  |ed icons in a wi|
00019660  6e 64 6f 77 20 2d 2d 2d  0d 0d 69 26 dd 20 f2 64  |ndow ---..i&. .d|
00019670  65 6c 65 74 65 69 63 6f  6e 73 65 6c 28 77 69 6e  |eleteiconsel(win|
00019680  64 6f 77 25 2c 64 65 66  61 75 6c 74 25 29 0d 0d  |dow%,default%)..|
00019690  6a 08 ea 20 69 25 0d 0d  6b 15 f2 73 65 6c 5f 67  |j.. i%..k..sel_g|
000196a0  65 74 28 77 69 6e 64 6f  77 25 29 0d 0d 6c 15 e7  |et(window%)..l..|
000196b0  20 4e 72 53 65 6c 65 63  74 65 64 25 3e 30 20 8c  | NrSelected%>0 .|
000196c0  0d 0d 6d 1c 20 20 e3 20  69 25 3d 30 20 b8 20 4e  |..m.  . i%=0 . N|
000196d0  72 53 65 6c 65 63 74 65  64 25 2d 31 0d 0d 6e 2f  |rSelected%-1..n/|
000196e0  20 20 20 20 f2 64 65 6c  65 74 65 69 63 6f 6e 28  |    .deleteicon(|
000196f0  77 69 6e 64 6f 77 25 2c  53 65 6c 42 6c 6b 25 21  |window%,SelBlk%!|
00019700  28 34 2a 69 25 29 2c 31  2c 31 29 0d 0d 6f 0a 20  |(4*i%),1,1)..o. |
00019710  20 ed 20 69 25 0d 0d 70  05 cc 0d 0d 71 35 20 20  | . i%..p....q5  |
00019720  f4 20 6e 6f 74 68 69 6e  67 20 73 65 6c 65 63 74  |. nothing select|
00019730  65 64 20 2d 20 64 65 6c  65 74 65 20 69 63 6f 6e  |ed - delete icon|
00019740  20 6e 6f 2e 20 3c 64 65  66 61 75 6c 74 25 3e 0d  | no. <default%>.|
00019750  0d 72 37 20 20 e7 20 64  65 66 61 75 6c 74 25 3e  |.r7  . default%>|
00019760  3d 30 20 8c 20 f2 64 65  6c 65 74 65 69 63 6f 6e  |=0 . .deleteicon|
00019770  28 77 69 6e 64 6f 77 25  2c 64 65 66 61 75 6c 74  |(window%,default|
00019780  25 2c 31 2c 31 29 0d 0d  73 05 cd 0d 0d 74 11 4e  |%,1,1)..s....t.N|
00019790  72 53 65 6c 65 63 74 65  64 25 3d 30 0d 0d 75 05  |rSelected%=0..u.|
000197a0  e1 0d 0d 76 04 0d 0d 77  32 dd 20 f2 64 65 6c 65  |...v...w2. .dele|
000197b0  74 65 69 63 6f 6e 28 77  69 6e 25 2c 69 63 6f 6e  |teicon(win%,icon|
000197c0  25 2c 72 65 6c 65 61 73  65 25 2c 61 64 6a 75 73  |%,release%,adjus|
000197d0  74 76 61 72 73 25 29 0d  0d 78 14 53 63 72 61 70  |tvars%)..x.Scrap|
000197e0  42 6c 6b 25 21 30 3d 77  69 6e 25 0d 0d 79 15 53  |Blk%!0=win%..y.S|
000197f0  63 72 61 70 42 6c 6b 25  21 34 3d 69 63 6f 6e 25  |crapBlk%!4=icon%|
00019800  0d 0d 7a 25 c8 99 20 22  57 69 6d 70 5f 47 65 74  |..z%.. "Wimp_Get|
00019810  49 63 6f 6e 53 74 61 74  65 22 2c 2c 53 63 72 61  |IconState",,Scra|
00019820  70 42 6c 6b 25 0d 0d 7b  10 e7 20 72 65 6c 65 61  |pBlk%..{.. relea|
00019830  73 65 25 20 8c 0d 0d 7c  2d 20 20 f2 69 63 6f 6e  |se% ...|-  .icon|
00019840  72 65 6c 65 61 73 65 28  53 63 72 61 70 42 6c 6b  |release(ScrapBlk|
00019850  25 21 32 34 2c 53 63 72  61 70 42 6c 6b 25 2b 32  |%!24,ScrapBlk%+2|
00019860  38 29 0d 0d 7d 05 cd 0d  0d 7e 23 c8 99 20 22 57  |8)..}....~#.. "W|
00019870  69 6d 70 5f 44 65 6c 65  74 65 49 63 6f 6e 22 2c  |imp_DeleteIcon",|
00019880  2c 53 63 72 61 70 42 6c  6b 25 0d 0d 7f 5d c8 99  |,ScrapBlk%...]..|
00019890  20 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  | "Wimp_ForceRedr|
000198a0  61 77 22 2c 77 69 6e 25  2c 53 63 72 61 70 42 6c  |aw",win%,ScrapBl|
000198b0  6b 25 21 38 2d 32 30 2c  53 63 72 61 70 42 6c 6b  |k%!8-20,ScrapBlk|
000198c0  25 21 31 32 2d 32 30 2c  53 63 72 61 70 42 6c 6b  |%!12-20,ScrapBlk|
000198d0  25 21 31 36 2b 32 30 2c  53 63 72 61 70 42 6c 6b  |%!16+20,ScrapBlk|
000198e0  25 21 32 30 2b 32 30 0d  0d 80 13 e7 20 61 64 6a  |%!20+20..... adj|
000198f0  75 73 74 76 61 72 73 25  20 8c 0d 0d 81 2f 20 20  |ustvars% ..../  |
00019900  e7 20 28 77 69 6e 25 3d  49 63 45 64 5f 57 69 6e  |. (win%=IcEd_Win|
00019910  25 29 20 80 20 28 69 63  6f 6e 25 3d 49 63 45 64  |%) . (icon%=IcEd|
00019920  5f 49 63 6f 6e 25 29 20  8c 0d 0d 82 18 20 20 20  |_Icon%) .....   |
00019930  20 49 63 45 64 5f 49 63  6f 6e 25 3d 2d 31 30 30  | IcEd_Icon%=-100|
00019940  30 0d 0d 83 07 20 20 cd  0d 0d 84 37 20 20 e7 20  |0....  ....7  . |
00019950  28 77 69 6e 25 3d 4c 61  73 74 4d 65 6e 75 5f 57  |(win%=LastMenu_W|
00019960  69 6e 25 29 20 80 20 28  69 63 6f 6e 25 3d 4c 61  |in%) . (icon%=La|
00019970  73 74 4d 65 6e 75 5f 49  63 6f 6e 25 29 20 8c 0d  |stMenu_Icon%) ..|
00019980  0d 85 19 20 20 20 20 4c  61 73 74 4d 65 6e 75 5f  |...    LastMenu_|
00019990  49 63 6f 6e 25 3d 2d 31  0d 0d 86 07 20 20 cd 0d  |Icon%=-1....  ..|
000199a0  0d 87 05 cd 0d 0d 88 12  f2 73 65 74 63 68 61 6e  |.........setchan|
000199b0  67 65 64 28 b9 29 0d 0d  89 05 e1 0d 0d 8a 04 0d  |ged(.)..........|
000199c0  0d 8b 17 dd 20 a4 63 72  65 61 74 65 69 63 6f 6e  |.... .createicon|
000199d0  28 62 6c 6b 25 29 0d 0d  8c 29 ea 20 64 78 6d 69  |(blk%)...). dxmi|
000199e0  6e 25 2c 64 79 6d 69 6e  25 2c 64 78 6d 61 78 25  |n%,dymin%,dxmax%|
000199f0  2c 64 79 6d 61 78 25 2c  68 61 6e 64 6c 65 25 0d  |,dymax%,handle%.|
00019a00  0d 8d 15 e7 20 47 72 69  64 5f 50 6f 73 4c 6f 63  |.... Grid_PosLoc|
00019a10  6b 25 20 8c 0d 0d 8e 29  20 20 64 78 6d 69 6e 25  |k% ....)  dxmin%|
00019a20  3d a4 67 72 69 64 64 69  66 66 28 62 6c 6b 25 21  |=.griddiff(blk%!|
00019a30  34 2c 47 72 69 64 5f 50  6f 73 58 25 29 0d 0d 8f  |4,Grid_PosX%)...|
00019a40  29 20 20 64 79 6d 69 6e  25 3d a4 67 72 69 64 64  |)  dymin%=.gridd|
00019a50  69 66 66 28 62 6c 6b 25  21 38 2c 47 72 69 64 5f  |iff(blk%!8,Grid_|
00019a60  50 6f 73 59 25 29 0d 0d  90 1a 20 20 62 6c 6b 25  |PosY%)....  blk%|
00019a70  21 34 3d 62 6c 6b 25 21  34 2d 64 78 6d 69 6e 25  |!4=blk%!4-dxmin%|
00019a80  0d 0d 91 1a 20 20 62 6c  6b 25 21 38 3d 62 6c 6b  |....  blk%!8=blk|
00019a90  25 21 38 2d 64 79 6d 69  6e 25 0d 0d 92 1c 20 20  |%!8-dymin%....  |
00019aa0  62 6c 6b 25 21 31 32 3d  62 6c 6b 25 21 31 32 2d  |blk%!12=blk%!12-|
00019ab0  64 78 6d 69 6e 25 0d 0d  93 1c 20 20 62 6c 6b 25  |dxmin%....  blk%|
00019ac0  21 31 36 3d 62 6c 6b 25  21 31 36 2d 64 79 6d 69  |!16=blk%!16-dymi|
00019ad0  6e 25 0d 0d 94 05 cd 0d  0d 95 16 e7 20 47 72 69  |n%.......... Gri|
00019ae0  64 5f 53 69 7a 65 4c 6f  63 6b 25 20 8c 0d 0d 96  |d_SizeLock% ....|
00019af0  2a 20 20 64 78 6d 69 6e  25 3d a4 67 72 69 64 64  |*  dxmin%=.gridd|
00019b00  69 66 66 28 62 6c 6b 25  21 34 2c 47 72 69 64 5f  |iff(blk%!4,Grid_|
00019b10  53 69 7a 65 58 25 29 0d  0d 97 2a 20 20 64 79 6d  |SizeX%)...*  dym|
00019b20  69 6e 25 3d a4 67 72 69  64 64 69 66 66 28 62 6c  |in%=.griddiff(bl|
00019b30  6b 25 21 38 2c 47 72 69  64 5f 53 69 7a 65 59 25  |k%!8,Grid_SizeY%|
00019b40  29 0d 0d 98 2b 20 20 64  78 6d 61 78 25 3d a4 67  |)...+  dxmax%=.g|
00019b50  72 69 64 64 69 66 66 28  62 6c 6b 25 21 31 32 2c  |riddiff(blk%!12,|
00019b60  47 72 69 64 5f 53 69 7a  65 58 25 29 0d 0d 99 2b  |Grid_SizeX%)...+|
00019b70  20 20 64 79 6d 61 78 25  3d a4 67 72 69 64 64 69  |  dymax%=.griddi|
00019b80  66 66 28 62 6c 6b 25 21  31 36 2c 47 72 69 64 5f  |ff(blk%!16,Grid_|
00019b90  53 69 7a 65 59 25 29 0d  0d 9a 05 cc 0d 0d 9b 4a  |SizeY%)........J|
00019ba0  20 20 64 78 6d 69 6e 25  3d a4 67 72 69 64 64 69  |  dxmin%=.griddi|
00019bb0  66 66 28 62 6c 6b 25 21  34 2c 50 69 78 54 6f 4f  |ff(blk%!4,PixToO|
00019bc0  53 5f 58 25 29 3a 20 f4  20 72 6f 75 6e 64 20 63  |S_X%): . round c|
00019bd0  6f 6f 72 64 73 20 74 6f  20 73 63 72 65 65 6e 20  |oords to screen |
00019be0  70 69 78 65 6c 73 0d 0d  9c 29 20 20 64 79 6d 69  |pixels...)  dymi|
00019bf0  6e 25 3d a4 67 72 69 64  64 69 66 66 28 62 6c 6b  |n%=.griddiff(blk|
00019c00  25 21 38 2c 50 69 78 54  6f 4f 53 5f 59 25 29 0d  |%!8,PixToOS_Y%).|
00019c10  0d 9d 2a 20 20 64 78 6d  61 78 25 3d a4 67 72 69  |..*  dxmax%=.gri|
00019c20  64 64 69 66 66 28 62 6c  6b 25 21 31 32 2c 50 69  |ddiff(blk%!12,Pi|
00019c30  78 54 6f 4f 53 5f 58 25  29 0d 0d 9e 2a 20 20 64  |xToOS_X%)...*  d|
00019c40  79 6d 61 78 25 3d a4 67  72 69 64 64 69 66 66 28  |ymax%=.griddiff(|
00019c50  62 6c 6b 25 21 31 36 2c  50 69 78 54 6f 4f 53 5f  |blk%!16,PixToOS_|
00019c60  59 25 29 0d 0d 9f 05 cd  0d 0d a0 18 62 6c 6b 25  |Y%).........blk%|
00019c70  21 34 3d 62 6c 6b 25 21  34 2d 64 78 6d 69 6e 25  |!4=blk%!4-dxmin%|
00019c80  0d 0d a1 18 62 6c 6b 25  21 38 3d 62 6c 6b 25 21  |....blk%!8=blk%!|
00019c90  38 2d 64 79 6d 69 6e 25  0d 0d a2 1a 62 6c 6b 25  |8-dymin%....blk%|
00019ca0  21 31 32 3d 62 6c 6b 25  21 31 32 2d 64 78 6d 61  |!12=blk%!12-dxma|
00019cb0  78 25 0d 0d a3 1a 62 6c  6b 25 21 31 36 3d 62 6c  |x%....blk%!16=bl|
00019cc0  6b 25 21 31 36 2d 64 79  6d 61 78 25 0d 0d a4 28  |k%!16-dymax%...(|
00019cd0  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 49  |.. "Wimp_CreateI|
00019ce0  63 6f 6e 22 2c 2c 62 6c  6b 25 20 b8 20 68 61 6e  |con",,blk% . han|
00019cf0  64 6c 65 25 0d 0d a5 4a  c8 99 20 22 57 69 6d 70  |dle%...J.. "Wimp|
00019d00  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 62 6c  |_ForceRedraw",bl|
00019d10  6b 25 21 30 2c 62 6c 6b  25 21 34 2d 31 32 2c 62  |k%!0,blk%!4-12,b|
00019d20  6c 6b 25 21 38 2d 31 32  2c 62 6c 6b 25 21 31 32  |lk%!8-12,blk%!12|
00019d30  2b 31 32 2c 62 6c 6b 25  21 31 36 2b 31 32 0d 0d  |+12,blk%!16+12..|
00019d40  a6 39 e7 20 68 61 6e 64  6c 65 25 3e 4d 61 78 49  |.9. handle%>MaxI|
00019d50  63 6f 6e 73 25 20 8c 20  f2 63 6f 6d 70 6c 61 69  |cons% . .complai|
00019d60  6e 28 a4 6d 73 67 5f 6c  6f 6f 6b 75 70 30 28 22  |n(.msg_lookup0("|
00019d70  4d 49 43 58 22 29 29 0d  0d a7 12 f2 73 65 74 63  |MICX")).....setc|
00019d80  68 61 6e 67 65 64 28 b9  29 0d 0d a8 0c 3d 68 61  |hanged(.)....=ha|
00019d90  6e 64 6c 65 25 0d 0d a9  04 0d 0d aa 37 f4 20 2d  |ndle%.......7. -|
00019da0  2d 2d 20 63 61 6c 63 75  6c 61 74 65 20 64 69 73  |-- calculate dis|
00019db0  74 61 6e 63 65 20 66 72  6f 6d 20 6e 65 61 72 65  |tance from neare|
00019dc0  73 74 20 67 72 69 64 70  6f 69 6e 74 20 2d 2d 2d  |st gridpoint ---|
00019dd0  0d 0d ab 1d dd 20 a4 67  72 69 64 64 69 66 66 28  |..... .griddiff(|
00019de0  63 25 2c 67 72 69 64 73  69 7a 65 25 29 0d 0d ac  |c%,gridsize%)...|
00019df0  0b ea 20 64 69 66 66 25  0d 0d ad 18 64 69 66 66  |.. diff%....diff|
00019e00  25 3d 63 25 20 83 20 67  72 69 64 73 69 7a 65 25  |%=c% . gridsize%|
00019e10  0d 0d ae 0c e7 20 63 25  3c 30 20 8c 0d 0d af 32  |..... c%<0 ....2|
00019e20  20 20 e7 20 28 2d 64 69  66 66 25 29 3e 28 67 72  |  . (-diff%)>(gr|
00019e30  69 64 73 69 7a 65 25 3e  3e 31 29 20 8c 20 64 69  |idsize%>>1) . di|
00019e40  66 66 25 2b 3d 67 72 69  64 73 69 7a 65 25 0d 0d  |ff%+=gridsize%..|
00019e50  b0 05 cc 0d 0d b1 2f 20  20 e7 20 64 69 66 66 25  |....../  . diff%|
00019e60  3e 28 67 72 69 64 73 69  7a 65 25 3e 3e 31 29 20  |>(gridsize%>>1) |
00019e70  8c 20 64 69 66 66 25 2d  3d 67 72 69 64 73 69 7a  |. diff%-=gridsiz|
00019e80  65 25 0d 0d b2 05 cd 0d  0d b3 0a 3d 64 69 66 66  |e%.........=diff|
00019e90  25 0d 0d b4 04 0d 0d b5  31 f4 20 2d 2d 2d 20 63  |%.......1. --- c|
00019ea0  6f 70 79 20 61 6c 6c 20  73 65 6c 65 63 74 65 64  |opy all selected|
00019eb0  20 69 63 6f 6e 73 20 69  6e 20 61 20 77 69 6e 64  | icons in a wind|
00019ec0  6f 77 20 2d 2d 2d 0d 0d  b6 28 dd 20 f2 63 6f 70  |ow ---...(. .cop|
00019ed0  79 69 63 6f 6e 73 65 6c  28 77 69 6e 64 6f 77 25  |yiconsel(window%|
00019ee0  2c f8 20 69 63 6f 6e 25  2c 64 69 72 25 29 0d 0d  |,. icon%,dir%)..|
00019ef0  b7 30 ea 20 69 25 2c 78  6d 69 6e 25 2c 79 6d 69  |.0. i%,xmin%,ymi|
00019f00  6e 25 2c 78 6d 61 78 25  2c 79 6d 61 78 25 2c 64  |n%,xmax%,ymax%,d|
00019f10  78 25 2c 64 79 25 2c 68  61 6e 64 6c 65 25 0d 0d  |x%,dy%,handle%..|
00019f20  b8 15 f2 73 65 6c 5f 67  65 74 28 77 69 6e 64 6f  |...sel_get(windo|
00019f30  77 25 29 0d 0d b9 24 e7  20 28 4e 72 53 65 6c 65  |w%)...$. (NrSele|
00019f40  63 74 65 64 25 3d 30 29  20 80 20 28 69 63 6f 6e  |cted%=0) . (icon|
00019f50  25 3e 3d 30 29 20 8c 0d  0d ba 15 20 20 53 65 6c  |%>=0) .....  Sel|
00019f60  42 6c 6b 25 21 30 3d 69  63 6f 6e 25 0d 0d bb 13  |Blk%!0=icon%....|
00019f70  20 20 4e 72 53 65 6c 65  63 74 65 64 25 3d 31 0d  |  NrSelected%=1.|
00019f80  0d bc 05 cd 0d 0d bd 2d  f2 73 65 6c 5f 62 6f 78  |.......-.sel_box|
00019f90  28 77 69 6e 64 6f 77 25  2c 78 6d 69 6e 25 2c 79  |(window%,xmin%,y|
00019fa0  6d 69 6e 25 2c 78 6d 61  78 25 2c 79 6d 61 78 25  |min%,xmax%,ymax%|
00019fb0  29 0d 0d be 0d c8 8e 20  64 69 72 25 20 ca 0d 0d  |)...... dir% ...|
00019fc0  bf 4a 20 20 c9 20 30 20  3a 20 64 78 25 3d 31 36  |.J  . 0 : dx%=16|
00019fd0  20 3a 20 64 79 25 3d 2d  31 36 20 20 20 20 20 20  | : dy%=-16      |
00019fe0  20 20 3a 20 f4 20 66 69  78 65 64 20 64 69 73 74  |  : . fixed dist|
00019ff0  61 6e 63 65 20 28 61 20  62 69 74 20 6c 6f 77 65  |ance (a bit lowe|
0001a000  72 2b 72 69 67 68 74 29  0d 0d c0 2f 20 20 c9 20  |r+right).../  . |
0001a010  31 20 3a 20 64 78 25 3d  30 20 3a 20 64 79 25 3d  |1 : dx%=0 : dy%=|
0001a020  79 6d 61 78 25 2d 79 6d  69 6e 25 20 3a 20 f4 20  |ymax%-ymin% : . |
0001a030  63 6f 70 79 20 75 70 0d  0d c1 31 20 20 c9 20 32  |copy up...1  . 2|
0001a040  20 3a 20 64 78 25 3d 30  20 3a 20 64 79 25 3d 79  | : dx%=0 : dy%=y|
0001a050  6d 69 6e 25 2d 79 6d 61  78 25 20 3a 20 f4 20 63  |min%-ymax% : . c|
0001a060  6f 70 79 20 64 6f 77 6e  0d 0d c2 31 20 20 c9 20  |opy down...1  . |
0001a070  33 20 3a 20 64 78 25 3d  78 6d 69 6e 25 2d 78 6d  |3 : dx%=xmin%-xm|
0001a080  61 78 25 20 3a 20 64 79  25 3d 30 20 3a 20 f4 20  |ax% : dy%=0 : . |
0001a090  63 6f 70 79 20 6c 65 66  74 0d 0d c3 32 20 20 c9  |copy left...2  .|
0001a0a0  20 34 20 3a 20 64 78 25  3d 78 6d 61 78 25 2d 78  | 4 : dx%=xmax%-x|
0001a0b0  6d 69 6e 25 20 3a 20 64  79 25 3d 30 20 3a 20 f4  |min% : dy%=0 : .|
0001a0c0  20 63 6f 70 79 20 72 69  67 68 74 0d 0d c4 05 cb  | copy right.....|
0001a0d0  0d 0d c5 15 e7 20 4e 72  53 65 6c 65 63 74 65 64  |..... NrSelected|
0001a0e0  25 3e 30 20 8c 0d 0d c6  1c 20 20 e3 20 69 25 3d  |%>0 .....  . i%=|
0001a0f0  30 20 b8 20 4e 72 53 65  6c 65 63 74 65 64 25 2d  |0 . NrSelected%-|
0001a100  31 0d 0d c7 13 20 20 20  20 f4 20 63 6f 70 79 20  |1....    . copy |
0001a110  69 63 6f 6e 0d 0d c8 1b  20 20 20 20 53 63 72 61  |icon....    Scra|
0001a120  70 42 6c 6b 25 21 30 3d  77 69 6e 64 6f 77 25 0d  |pBlk%!0=window%.|
0001a130  0d c9 22 20 20 20 20 53  63 72 61 70 42 6c 6b 25  |.."    ScrapBlk%|
0001a140  21 34 3d 53 65 6c 42 6c  6b 25 21 28 34 2a 69 25  |!4=SelBlk%!(4*i%|
0001a150  29 0d 0d ca 29 20 20 20  20 c8 99 20 22 57 69 6d  |)...)    .. "Wim|
0001a160  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
0001a170  2c 53 63 72 61 70 42 6c  6b 25 0d 0d cb 1b 20 20  |,ScrapBlk%....  |
0001a180  20 20 53 63 72 61 70 42  6c 6b 25 21 34 3d 77 69  |  ScrapBlk%!4=wi|
0001a190  6e 64 6f 77 25 0d 0d cc  23 20 20 20 20 53 63 72  |ndow%...#    Scr|
0001a1a0  61 70 42 6c 6b 25 21 38  3d 53 63 72 61 70 42 6c  |apBlk%!8=ScrapBl|
0001a1b0  6b 25 21 38 2b 64 78 25  0d 0d cd 25 20 20 20 20  |k%!8+dx%...%    |
0001a1c0  53 63 72 61 70 42 6c 6b  25 21 31 32 3d 53 63 72  |ScrapBlk%!12=Scr|
0001a1d0  61 70 42 6c 6b 25 21 31  32 2b 64 79 25 0d 0d ce  |apBlk%!12+dy%...|
0001a1e0  25 20 20 20 20 53 63 72  61 70 42 6c 6b 25 21 31  |%    ScrapBlk%!1|
0001a1f0  36 3d 53 63 72 61 70 42  6c 6b 25 21 31 36 2b 64  |6=ScrapBlk%!16+d|
0001a200  78 25 0d 0d cf 25 20 20  20 20 53 63 72 61 70 42  |x%...%    ScrapB|
0001a210  6c 6b 25 21 32 30 3d 53  63 72 61 70 42 6c 6b 25  |lk%!20=ScrapBlk%|
0001a220  21 32 30 2b 64 79 25 0d  0d d0 48 20 20 20 20 f2  |!20+dy%...H    .|
0001a230  69 63 6f 6e 72 65 61 6c  6c 6f 63 28 53 63 72 61  |iconrealloc(Scra|
0001a240  70 42 6c 6b 25 2b 32 34  2c 53 63 72 61 70 42 6c  |pBlk%+24,ScrapBl|
0001a250  6b 25 2b 32 38 29 20 3a  20 f4 20 63 6f 70 79 20  |k%+28) : . copy |
0001a260  69 6e 64 69 72 65 63 74  65 64 20 64 61 74 61 0d  |indirected data.|
0001a270  0d d1 28 20 20 20 20 68  61 6e 64 6c 65 25 3d a4  |..(    handle%=.|
0001a280  63 72 65 61 74 65 69 63  6f 6e 28 53 63 72 61 70  |createicon(Scrap|
0001a290  42 6c 6b 25 2b 34 29 0d  0d d2 35 20 20 20 20 f4  |Blk%+4)...5    .|
0001a2a0  20 64 65 73 65 6c 65 63  74 20 6f 72 69 67 69 6e  | deselect origin|
0001a2b0  61 6c 73 20 2d 20 63 6f  70 69 65 73 20 72 65 6d  |als - copies rem|
0001a2c0  61 69 6e 20 73 65 6c 65  63 74 65 64 0d 0d d3 2d  |ain selected...-|
0001a2d0  20 20 20 20 f2 73 65 6c  65 63 74 69 63 6f 6e 28  |    .selecticon(|
0001a2e0  77 69 6e 64 6f 77 25 2c  53 65 6c 42 6c 6b 25 21  |window%,SelBlk%!|
0001a2f0  28 34 2a 69 25 29 2c 30  29 0d 0d d4 0a 20 20 ed  |(4*i%),0)....  .|
0001a300  20 69 25 0d 0d d5 20 20  20 e7 20 69 63 6f 6e 25  | i%...   . icon%|
0001a310  3e 3d 30 20 8c 20 69 63  6f 6e 25 3d 68 61 6e 64  |>=0 . icon%=hand|
0001a320  6c 65 25 0d 0d d6 17 20  20 f2 73 65 6c 5f 67 65  |le%....  .sel_ge|
0001a330  74 28 77 69 6e 64 6f 77  25 29 0d 0d d7 05 cd 0d  |t(window%)......|
0001a340  0d d8 05 e1 0d 0d d9 04  0d 0d da 34 f4 20 2d 2d  |...........4. --|
0001a350  2d 20 72 65 70 6c 61 63  65 20 77 69 6e 64 6f 77  |- replace window|
0001a360  20 64 65 66 69 6e 69 74  69 6f 6e 20 77 69 74 68  | definition with|
0001a370  20 6e 65 77 20 6f 6e 65  20 2d 2d 2d 0d 0d db 28  | new one ---...(|
0001a380  dd 20 a4 72 65 64 65 66  69 6e 65 77 69 6e 64 6f  |. .redefinewindo|
0001a390  77 28 77 62 75 66 25 2c  73 65 74 63 68 61 6e 67  |w(wbuf%,setchang|
0001a3a0  65 64 25 29 0d 0d dc 28  ea 20 6f 6c 64 68 61 6e  |ed%)...(. oldhan|
0001a3b0  64 6c 65 25 2c 6e 6f 25  2c 77 61 73 6f 70 65 6e  |dle%,no%,wasopen|
0001a3c0  25 2c 6e 65 77 68 61 6e  64 6c 65 25 0d 0d dd 16  |%,newhandle%....|
0001a3d0  6f 6c 64 68 61 6e 64 6c  65 25 3d 77 62 75 66 25  |oldhandle%=wbuf%|
0001a3e0  21 30 0d 0d de 22 6e 6f  25 3d a4 77 68 69 63 68  |!0..."no%=.which|
0001a3f0  74 65 6d 70 6c 61 74 65  28 6f 6c 64 68 61 6e 64  |template(oldhand|
0001a400  6c 65 25 29 0d 0d df 1a  53 63 72 61 70 42 6c 6b  |le%)....ScrapBlk|
0001a410  25 21 30 3d 6f 6c 64 68  61 6e 64 6c 65 25 0d 0d  |%!0=oldhandle%..|
0001a420  e0 27 c8 99 20 22 57 69  6d 70 5f 47 65 74 57 69  |.'.. "Wimp_GetWi|
0001a430  6e 64 6f 77 53 74 61 74  65 22 2c 2c 53 63 72 61  |ndowState",,Scra|
0001a440  70 42 6c 6b 25 0d 0d e1  25 77 61 73 6f 70 65 6e  |pBlk%...%wasopen|
0001a450  25 3d 28 53 63 72 61 70  42 6c 6b 25 21 33 32 29  |%=(ScrapBlk%!32)|
0001a460  20 80 20 28 31 3c 3c 31  36 29 0d 0d e2 21 c8 99  | . (1<<16)...!..|
0001a470  20 22 57 69 6d 70 5f 44  65 6c 65 74 65 57 69 6e  | "Wimp_DeleteWin|
0001a480  64 6f 77 22 2c 2c 77 62  75 66 25 0d 0d e3 30 c8  |dow",,wbuf%...0.|
0001a490  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 57 69  |. "Wimp_CreateWi|
0001a4a0  6e 64 6f 77 22 2c 2c 77  62 75 66 25 2b 34 20 b8  |ndow",,wbuf%+4 .|
0001a4b0  20 6e 65 77 68 61 6e 64  6c 65 25 0d 0d e4 16 77  | newhandle%....w|
0001a4c0  62 75 66 25 21 30 3d 6e  65 77 68 61 6e 64 6c 65  |buf%!0=newhandle|
0001a4d0  25 0d 0d e5 0f e7 20 6e  6f 25 3c 3e 2d 31 20 8c  |%..... no%<>-1 .|
0001a4e0  0d 0d e6 22 20 20 54 65  6d 70 6c 48 61 6e 64 6c  |..."  TemplHandl|
0001a4f0  65 25 28 6e 6f 25 29 3d  6e 65 77 68 61 6e 64 6c  |e%(no%)=newhandl|
0001a500  65 25 0d 0d e7 05 cd 0d  0d e8 1c e7 20 6f 6c 64  |e%.......... old|
0001a510  68 61 6e 64 6c 65 25 3d  49 63 45 64 5f 57 69 6e  |handle%=IcEd_Win|
0001a520  25 20 8c 0d 0d e9 1a 20  20 49 63 45 64 5f 57 69  |% .....  IcEd_Wi|
0001a530  6e 25 3d 6e 65 77 68 61  6e 64 6c 65 25 0d 0d ea  |n%=newhandle%...|
0001a540  17 20 20 e7 20 49 63 45  64 5f 49 63 6f 6e 25 3e  |.  . IcEd_Icon%>|
0001a550  3d 30 20 8c 0d 0d eb 33  20 20 20 20 49 63 45 64  |=0 ....3    IcEd|
0001a560  5f 49 63 6f 6e 25 3d 2d  31 30 30 30 20 3a 20 f4  |_Icon%=-1000 : .|
0001a570  20 69 6e 76 61 6c 69 64  61 74 65 20 69 63 6f 6e  | invalidate icon|
0001a580  20 68 61 6e 64 6c 65 0d  0d ec 07 20 20 cd 0d 0d  | handle....  ...|
0001a590  ed 05 cd 0d 0d ee 33 e7  20 6f 6c 64 68 61 6e 64  |......3. oldhand|
0001a5a0  6c 65 25 3d 57 69 6e 45  64 5f 57 69 6e 25 20 8c  |le%=WinEd_Win% .|
0001a5b0  20 57 69 6e 45 64 5f 57  69 6e 25 3d 6e 65 77 68  | WinEd_Win%=newh|
0001a5c0  61 6e 64 6c 65 25 0d 0d  ef 20 e7 20 6f 6c 64 68  |andle%... . oldh|
0001a5d0  61 6e 64 6c 65 25 3d 4c  61 73 74 4d 65 6e 75 5f  |andle%=LastMenu_|
0001a5e0  57 69 6e 25 20 8c 0d 0d  f0 1e 20 20 4c 61 73 74  |Win% .....  Last|
0001a5f0  4d 65 6e 75 5f 57 69 6e  25 3d 6e 65 77 68 61 6e  |Menu_Win%=newhan|
0001a600  64 6c 65 25 0d 0d f1 17  20 20 4c 61 73 74 4d 65  |dle%....  LastMe|
0001a610  6e 75 5f 49 63 6f 6e 25  3d 2d 31 0d 0d f2 05 cd  |nu_Icon%=-1.....|
0001a620  0d 0d f3 10 e7 20 77 61  73 6f 70 65 6e 25 20 8c  |..... wasopen% .|
0001a630  0d 0d f4 21 20 20 c8 99  20 22 57 69 6d 70 5f 4f  |...!  .. "Wimp_O|
0001a640  70 65 6e 57 69 6e 64 6f  77 22 2c 2c 77 62 75 66  |penWindow",,wbuf|
0001a650  25 0d 0d f5 05 cd 0d 0d  f6 3b 24 28 54 65 6d 70  |%........;$(Temp|
0001a660  6c 4e 61 6d 65 73 25 2b  32 38 2a 6e 6f 25 2b 31  |lNames%+28*no%+1|
0001a670  34 29 3d a4 77 69 6e 64  6f 77 69 63 6f 6e 28 77  |4)=.windowicon(w|
0001a680  62 75 66 25 21 33 32 2c  77 61 73 6f 70 65 6e 25  |buf%!32,wasopen%|
0001a690  29 0d 0d f7 23 f2 73 65  74 69 63 6f 6e 73 74 61  |)...#.seticonsta|
0001a6a0  74 65 30 28 54 65 6d 70  6c 57 25 2c 6e 6f 25 2c  |te0(TemplW%,no%,|
0001a6b0  30 2c 30 29 0d 0d f8 22  e7 20 73 65 74 63 68 61  |0,0)...". setcha|
0001a6c0  6e 67 65 64 25 20 8c 20  f2 73 65 74 63 68 61 6e  |nged% . .setchan|
0001a6d0  67 65 64 28 b9 29 0d 0d  f9 0f 3d 6e 65 77 68 61  |ged(.)....=newha|
0001a6e0  6e 64 6c 65 25 0d 0d fa  04 0d 0d fb 32 f4 20 2d  |ndle%.......2. -|
0001a6f0  2d 2d 20 72 65 70 6c 61  63 65 20 69 63 6f 6e 20  |-- replace icon |
0001a700  64 65 66 69 6e 69 74 69  6f 6e 20 77 69 74 68 20  |definition with |
0001a710  6e 65 77 20 6f 6e 65 20  2d 2d 2d 0d 0d fc 27 dd  |new one ---...'.|
0001a720  20 a4 72 65 64 65 66 69  6e 65 69 63 6f 6e 28 77  | .redefineicon(w|
0001a730  69 6e 64 6f 77 25 2c 69  63 6f 6e 25 2c 62 6c 6b  |indow%,icon%,blk|
0001a740  25 29 0d 0d fd 0e ea 20  6e 65 77 69 63 6f 6e 25  |%)..... newicon%|
0001a750  0d 0d fe 22 f2 64 65 6c  65 74 65 69 63 6f 6e 28  |...".deleteicon(|
0001a760  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 2c 30 2c  |window%,icon%,0,|
0001a770  30 29 0d 0d ff 4b f4 20  6e 65 77 20 69 63 6f 6e  |0)...K. new icon|
0001a780  20 64 61 74 61 20 6d 75  73 74 20 73 74 61 72 74  | data must start|
0001a790  20 61 74 20 62 6c 6b 25  2b 38 20 28 61 73 20 72  | at blk%+8 (as r|
0001a7a0  65 74 75 72 6e 65 64 20  62 79 20 57 69 6d 70 5f  |eturned by Wimp_|
0001a7b0  47 65 74 49 63 6f 6e 53  74 61 74 65 29 0d 0e 00  |GetIconState)...|
0001a7c0  12 62 6c 6b 25 21 34 3d  77 69 6e 64 6f 77 25 0d  |.blk%!4=window%.|
0001a7d0  0e 01 20 6e 65 77 69 63  6f 6e 25 3d a4 63 72 65  |.. newicon%=.cre|
0001a7e0  61 74 65 69 63 6f 6e 28  62 6c 6b 25 2b 34 29 0d  |ateicon(blk%+4).|
0001a7f0  0e 02 30 e7 20 28 77 69  6e 64 6f 77 25 3d 49 63  |..0. (window%=Ic|
0001a800  45 64 5f 57 69 6e 25 29  20 80 20 28 69 63 6f 6e  |Ed_Win%) . (icon|
0001a810  25 3d 49 63 45 64 5f 49  63 6f 6e 25 29 20 8c 0d  |%=IcEd_Icon%) ..|
0001a820  0e 03 19 20 20 49 63 45  64 5f 49 63 6f 6e 25 3d  |...  IcEd_Icon%=|
0001a830  6e 65 77 69 63 6f 6e 25  0d 0e 04 05 cd 0d 0e 05  |newicon%........|
0001a840  38 e7 20 28 77 69 6e 64  6f 77 25 3d 4c 61 73 74  |8. (window%=Last|
0001a850  4d 65 6e 75 5f 57 69 6e  25 29 20 80 20 28 69 63  |Menu_Win%) . (ic|
0001a860  6f 6e 25 3d 4c 61 73 74  4d 65 6e 75 5f 49 63 6f  |on%=LastMenu_Ico|
0001a870  6e 25 29 20 8c 0d 0e 06  1d 20 20 4c 61 73 74 4d  |n%) .....  LastM|
0001a880  65 6e 75 5f 49 63 6f 6e  25 3d 6e 65 77 69 63 6f  |enu_Icon%=newico|
0001a890  6e 25 0d 0e 07 05 cd 0d  0e 08 0d 3d 6e 65 77 69  |n%.........=newi|
0001a8a0  63 6f 6e 25 0d 0e 09 04  0d 0e 0a 42 f4 20 2d 2d  |con%.......B. --|
0001a8b0  2d 20 72 65 6e 75 6d 62  65 72 20 61 6e 20 69 63  |- renumber an ic|
0001a8c0  6f 6e 3b 20 6e 65 77 20  6e 75 6d 62 65 72 20 69  |on; new number i|
0001a8d0  73 20 65 71 75 61 6c 20  74 6f 20 4e 65 78 74 49  |s equal to NextI|
0001a8e0  63 6f 6e 4e 72 25 20 2d  2d 2d 0d 0e 0b 24 dd 20  |conNr% ---...$. |
0001a8f0  f2 72 65 6e 75 6d 62 65  72 69 63 6f 6e 28 f8 20  |.renumbericon(. |
0001a900  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 29 0d 0e  |window%,icon%)..|
0001a910  0c 18 ea 20 69 25 2c 69  70 31 25 2c 69 70 32 25  |... i%,ip1%,ip2%|
0001a920  2c 74 65 6d 70 25 0d 0e  0d 15 57 69 6e 42 6c 6b  |,temp%....WinBlk|
0001a930  25 21 30 3d 77 69 6e 64  6f 77 25 0d 0e 0e 24 c8  |%!0=window%...$.|
0001a940  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
0001a950  77 49 6e 66 6f 22 2c 2c  57 69 6e 42 6c 6b 25 0d  |wInfo",,WinBlk%.|
0001a960  0e 0f 2c e7 20 69 63 6f  6e 25 3e 3d 57 69 6e 42  |..,. icon%>=WinB|
0001a970  6c 6b 25 21 38 38 20 8c  20 69 63 6f 6e 25 3d 57  |lk%!88 . icon%=W|
0001a980  69 6e 42 6c 6b 25 21 38  38 2d 31 0d 0e 10 38 e7  |inBlk%!88-1...8.|
0001a990  20 4e 65 78 74 49 63 6f  6e 4e 72 25 3e 3d 57 69  | NextIconNr%>=Wi|
0001a9a0  6e 42 6c 6b 25 21 38 38  20 8c 20 4e 65 78 74 49  |nBlk%!88 . NextI|
0001a9b0  63 6f 6e 4e 72 25 3d 57  69 6e 42 6c 6b 25 21 38  |conNr%=WinBlk%!8|
0001a9c0  38 2d 31 0d 0e 11 1c 69  70 31 25 3d 57 69 6e 42  |8-1....ip1%=WinB|
0001a9d0  6c 6b 25 2b 39 32 2b 69  63 6f 6e 25 2a 33 32 0d  |lk%+92+icon%*32.|
0001a9e0  0e 12 22 69 70 32 25 3d  57 69 6e 42 6c 6b 25 2b  |.."ip2%=WinBlk%+|
0001a9f0  39 32 2b 4e 65 78 74 49  63 6f 6e 4e 72 25 2a 33  |92+NextIconNr%*3|
0001aa00  32 0d 0e 13 30 f4 20 73  77 61 70 20 69 63 6f 6e  |2...0. swap icon|
0001aa10  20 64 61 74 61 20 62 6c  6f 63 6b 73 20 69 6e 20  | data blocks in |
0001aa20  77 69 6e 64 6f 77 20 64  65 66 69 6e 69 74 69 6f  |window definitio|
0001aa30  6e 0d 0e 14 13 e3 20 69  25 3d 30 20 b8 20 32 38  |n..... i%=0 . 28|
0001aa40  20 88 20 34 0d 0e 15 13  20 20 74 65 6d 70 25 3d  | . 4....  temp%=|
0001aa50  69 70 31 25 21 69 25 0d  0e 16 15 20 20 69 70 31  |ip1%!i%....  ip1|
0001aa60  25 21 69 25 3d 69 70 32  25 21 69 25 0d 0e 17 13  |%!i%=ip2%!i%....|
0001aa70  20 20 69 70 32 25 21 69  25 3d 74 65 6d 70 25 0d  |  ip2%!i%=temp%.|
0001aa80  0e 18 08 ed 20 69 25 0d  0e 19 26 77 69 6e 64 6f  |.... i%...&windo|
0001aa90  77 25 3d a4 72 65 64 65  66 69 6e 65 77 69 6e 64  |w%=.redefinewind|
0001aaa0  6f 77 28 57 69 6e 42 6c  6b 25 2c 31 29 0d 0e 1a  |ow(WinBlk%,1)...|
0001aab0  05 e1 0d 0e 1b 04 0d 0e  1c 47 f4 20 2d 2d 2d 20  |.........G. --- |
0001aac0  72 65 6e 75 6d 62 65 72  20 73 65 6c 65 63 74 65  |renumber selecte|
0001aad0  64 20 69 63 6f 6e 73 2c  20 6f 72 64 65 72 69 6e  |d icons, orderin|
0001aae0  67 20 62 61 73 65 64 20  6f 6e 20 74 6f 70 6c 65  |g based on tople|
0001aaf0  66 74 20 63 6f 6f 72 64  73 20 2d 2d 2d 0d 0e 1d  |ft coords ---...|
0001ab00  21 dd 20 f2 72 65 6e 75  6d 62 65 72 69 63 6f 6e  |!. .renumbericon|
0001ab10  73 65 6c 28 f8 20 77 69  6e 64 6f 77 25 29 0d 0e  |sel(. window%)..|
0001ab20  1e 11 ea 20 69 25 2c 6a  25 2c 66 25 2c 6c 25 0d  |... i%,j%,f%,l%.|
0001ab30  0e 1f 15 f2 73 65 6c 5f  67 65 74 28 77 69 6e 64  |....sel_get(wind|
0001ab40  6f 77 25 29 0d 0e 20 22  f2 73 65 6c 5f 73 6f 72  |ow%).. ".sel_sor|
0001ab50  74 28 77 69 6e 64 6f 77  25 2c 31 2c 31 2c 30 2c  |t(window%,1,1,0,|
0001ab60  30 2c 30 2c 31 29 0d 0e  21 3e c8 99 20 22 57 69  |0,0,1)..!>.. "Wi|
0001ab70  6d 70 5f 57 68 69 63 68  49 63 6f 6e 22 2c 77 69  |mp_WhichIcon",wi|
0001ab80  6e 64 6f 77 25 2c 53 65  6c 42 6c 6b 32 25 2c 28  |ndow%,SelBlk2%,(|
0001ab90  31 3c 3c 32 31 29 2b 28  31 3c 3c 32 33 29 2c 31  |1<<21)+(1<<23),1|
0001aba0  3c 3c 32 31 0d 0e 22 15  57 69 6e 42 6c 6b 25 21  |<<21..".WinBlk%!|
0001abb0  30 3d 77 69 6e 64 6f 77  25 0d 0e 23 24 c8 99 20  |0=window%..#$.. |
0001abc0  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
0001abd0  6e 66 6f 22 2c 2c 57 69  6e 42 6c 6b 25 0d 0e 24  |nfo",,WinBlk%..$|
0001abe0  42 66 25 3d 4e 65 78 74  49 63 6f 6e 4e 72 25 20  |Bf%=NextIconNr% |
0001abf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
0001ac00  f4 20 66 69 72 73 74 20  6e 75 6d 62 65 72 20 6f  |. first number o|
0001ac10  66 20 6e 65 77 20 6e 75  6d 62 65 72 69 6e 67 0d  |f new numbering.|
0001ac20  0e 25 30 6c 25 3d 4e 65  78 74 49 63 6f 6e 4e 72  |.%0l%=NextIconNr|
0001ac30  25 2b 4e 72 53 65 6c 65  63 74 65 64 25 2d 31 20  |%+NrSelected%-1 |
0001ac40  3a 20 f4 20 6c 61 73 74  20 6e 75 6d 62 65 72 0d  |: . last number.|
0001ac50  0e 26 16 e7 20 6c 25 3e  3d 57 69 6e 42 6c 6b 25  |.&.. l%>=WinBlk%|
0001ac60  21 38 38 20 8c 0d 0e 27  4b 20 20 6c 25 3d 57 69  |!88 ...'K  l%=Wi|
0001ac70  6e 42 6c 6b 25 21 38 38  2d 31 20 20 20 20 20 20  |nBlk%!88-1      |
0001ac80  20 20 20 20 20 20 3a 20  f4 20 6d 61 6b 65 20 73  |      : . make s|
0001ac90  75 72 65 20 6e 65 77 20  6e 75 6d 62 65 72 73 20  |ure new numbers |
0001aca0  61 72 65 20 77 69 74 68  69 6e 20 72 61 6e 67 65  |are within range|
0001acb0  0d 0e 28 1b 20 20 66 25  3d 6c 25 2d 28 4e 72 53  |..(.  f%=l%-(NrS|
0001acc0  65 6c 65 63 74 65 64 25  2d 31 29 0d 0e 29 05 cd  |elected%-1)..)..|
0001acd0  0d 0e 2a 08 6a 25 3d 30  0d 0e 2b 1a e3 20 69 25  |..*.j%=0..+.. i%|
0001ace0  3d 30 20 b8 20 4e 72 53  65 6c 65 63 74 65 64 25  |=0 . NrSelected%|
0001acf0  2d 31 0d 0e 2c 3a 20 20  f4 20 72 65 70 6c 61 63  |-1..,:  . replac|
0001ad00  65 20 69 63 6f 6e 20 77  69 74 68 20 69 25 2d 74  |e icon with i%-t|
0001ad10  68 20 69 63 6f 6e 20 66  72 6f 6d 20 73 6f 72 74  |h icon from sort|
0001ad20  65 64 20 73 65 6c 65 63  74 69 6f 6e 0d 0e 2d 38  |ed selection..-8|
0001ad30  20 20 f2 72 65 70 6c 61  63 65 69 63 6f 6e 28 57  |  .replaceicon(W|
0001ad40  69 6e 42 6c 6b 25 2c 66  25 2b 69 25 2c 77 69 6e  |inBlk%,f%+i%,win|
0001ad50  64 6f 77 25 2c 53 65 6c  42 6c 6b 25 21 28 34 2a  |dow%,SelBlk%!(4*|
0001ad60  69 25 29 29 0d 0e 2e 28  20 20 e7 20 ac 20 a4 69  |i%))...(  . . .i|
0001ad70  63 6f 6e 73 65 6c 65 63  74 65 64 28 77 69 6e 64  |conselected(wind|
0001ad80  6f 77 25 2c 66 25 2b 69  25 29 20 8c 0d 0e 2f 4d  |ow%,f%+i%) .../M|
0001ad90  20 20 20 20 f4 20 64 61  74 61 20 6f 66 20 75 6e  |    . data of un|
0001ada0  73 65 6c 65 63 74 65 64  20 69 63 6f 6e 20 6f 76  |selected icon ov|
0001adb0  65 72 77 72 69 74 74 65  6e 20 2d 20 66 69 6e 64  |erwritten - find|
0001adc0  20 6e 65 77 20 6e 75 6d  62 65 72 20 66 6f 72 20  | new number for |
0001add0  74 68 69 73 20 69 63 6f  6e 0d 0e 30 38 20 20 20  |this icon..08   |
0001ade0  20 c8 95 20 28 53 65 6c  42 6c 6b 32 25 21 28 34  | .. (SelBlk2%!(4|
0001adf0  2a 6a 25 29 3e 3d 66 25  29 20 80 20 28 53 65 6c  |*j%)>=f%) . (Sel|
0001ae00  42 6c 6b 32 25 21 28 34  2a 6a 25 29 3c 3d 6c 25  |Blk2%!(4*j%)<=l%|
0001ae10  29 0d 0e 31 0f 20 20 20  20 20 20 6a 25 2b 3d 31  |)..1.      j%+=1|
0001ae20  0d 0e 32 09 20 20 20 20  ce 0d 0e 33 3b 20 20 20  |..2.    ...3;   |
0001ae30  20 f2 72 65 70 6c 61 63  65 69 63 6f 6e 28 57 69  | .replaceicon(Wi|
0001ae40  6e 42 6c 6b 25 2c 53 65  6c 42 6c 6b 32 25 21 28  |nBlk%,SelBlk2%!(|
0001ae50  34 2a 6a 25 29 2c 77 69  6e 64 6f 77 25 2c 66 25  |4*j%),window%,f%|
0001ae60  2b 69 25 29 0d 0e 34 0d  20 20 20 20 6a 25 2b 3d  |+i%)..4.    j%+=|
0001ae70  31 0d 0e 35 07 20 20 cd  0d 0e 36 08 ed 20 69 25  |1..5.  ...6.. i%|
0001ae80  0d 0e 37 26 77 69 6e 64  6f 77 25 3d a4 72 65 64  |..7&window%=.red|
0001ae90  65 66 69 6e 65 77 69 6e  64 6f 77 28 57 69 6e 42  |efinewindow(WinB|
0001aea0  6c 6b 25 2c 31 29 0d 0e  38 14 4e 65 78 74 49 63  |lk%,1)..8.NextIc|
0001aeb0  6f 6e 4e 72 25 3d 6c 25  2b 31 0d 0e 39 05 e1 0d  |onNr%=l%+1..9...|
0001aec0  0e 3a 04 0d 0e 3b 3d f4  20 2d 2d 2d 20 73 65 74  |.:...;=. --- set|
0001aed0  20 73 65 6c 65 63 74 65  64 20 69 63 6f 6e 73 20  | selected icons |
0001aee0  74 6f 20 73 61 6d 65 20  73 69 7a 65 20 61 73 20  |to same size as |
0001aef0  74 6f 70 6c 65 66 74 20  69 63 6f 6e 20 2d 2d 2d  |topleft icon ---|
0001af00  0d 0e 3c 2d dd 20 f2 73  61 6d 65 73 69 7a 65 69  |..<-. .samesizei|
0001af10  63 6f 6e 73 65 6c 28 77  69 6e 64 6f 77 25 2c 64  |consel(window%,d|
0001af20  65 66 61 75 6c 74 25 2c  64 69 6d 25 29 0d 0e 3d  |efault%,dim%)..=|
0001af30  1e ea 20 69 25 2c 78 73  69 7a 65 25 2c 79 73 69  |.. i%,xsize%,ysi|
0001af40  7a 65 25 2c 68 61 6e 64  6c 65 25 0d 0e 3e 15 f2  |ze%,handle%..>..|
0001af50  73 65 6c 5f 67 65 74 28  77 69 6e 64 6f 77 25 29  |sel_get(window%)|
0001af60  0d 0e 3f 27 e7 20 28 4e  72 53 65 6c 65 63 74 65  |..?'. (NrSelecte|
0001af70  64 25 3d 30 29 20 80 20  28 64 65 66 61 75 6c 74  |d%=0) . (default|
0001af80  25 3e 3d 30 29 20 8c 0d  0e 40 18 20 20 53 65 6c  |%>=0) ...@.  Sel|
0001af90  42 6c 6b 25 21 30 3d 64  65 66 61 75 6c 74 25 0d  |Blk%!0=default%.|
0001afa0  0e 41 13 20 20 4e 72 53  65 6c 65 63 74 65 64 25  |.A.  NrSelected%|
0001afb0  3d 31 0d 0e 42 05 cd 0d  0e 43 15 e7 20 4e 72 53  |=1..B....C.. NrS|
0001afc0  65 6c 65 63 74 65 64 25  3e 30 20 8c 0d 0e 44 24  |elected%>0 ...D$|
0001afd0  20 20 f2 73 65 6c 5f 73  6f 72 74 28 77 69 6e 64  |  .sel_sort(wind|
0001afe0  6f 77 25 2c 31 2c 31 2c  30 2c 30 2c 30 2c 31 29  |ow%,1,1,0,0,0,1)|
0001aff0  0d 0e 45 18 20 20 49 63  6f 6e 42 6c 6b 25 21 30  |..E.  IconBlk%!0|
0001b000  3d 77 69 6e 64 6f 77 25  0d 0e 46 1a 20 20 49 63  |=window%..F.  Ic|
0001b010  6f 6e 42 6c 6b 25 21 34  3d 53 65 6c 42 6c 6b 25  |onBlk%!4=SelBlk%|
0001b020  21 30 0d 0e 47 26 20 20  c8 99 20 22 57 69 6d 70  |!0..G&  .. "Wimp|
0001b030  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
0001b040  49 63 6f 6e 42 6c 6b 25  0d 0e 48 23 20 20 78 73  |IconBlk%..H#  xs|
0001b050  69 7a 65 25 3d 49 63 6f  6e 42 6c 6b 25 21 31 36  |ize%=IconBlk%!16|
0001b060  2d 49 63 6f 6e 42 6c 6b  25 21 38 0d 0e 49 24 20  |-IconBlk%!8..I$ |
0001b070  20 79 73 69 7a 65 25 3d  49 63 6f 6e 42 6c 6b 25  | ysize%=IconBlk%|
0001b080  21 32 30 2d 49 63 6f 6e  42 6c 6b 25 21 31 32 0d  |!20-IconBlk%!12.|
0001b090  0e 4a 1c 20 20 e3 20 69  25 3d 30 20 b8 20 4e 72  |.J.  . i%=0 . Nr|
0001b0a0  53 65 6c 65 63 74 65 64  25 2d 31 0d 0e 4b 1a 20  |Selected%-1..K. |
0001b0b0  20 20 20 49 63 6f 6e 42  6c 6b 25 21 30 3d 77 69  |   IconBlk%!0=wi|
0001b0c0  6e 64 6f 77 25 0d 0e 4c  21 20 20 20 20 49 63 6f  |ndow%..L!    Ico|
0001b0d0  6e 42 6c 6b 25 21 34 3d  53 65 6c 42 6c 6b 25 21  |nBlk%!4=SelBlk%!|
0001b0e0  28 34 2a 69 25 29 0d 0e  4d 28 20 20 20 20 c8 99  |(4*i%)..M(    ..|
0001b0f0  20 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  | "Wimp_GetIconSt|
0001b100  61 74 65 22 2c 2c 49 63  6f 6e 42 6c 6b 25 0d 0e  |ate",,IconBlk%..|
0001b110  4e 31 20 20 20 20 e7 20  64 69 6d 25 3c 3e 32 20  |N1    . dim%<>2 |
0001b120  8c 20 49 63 6f 6e 42 6c  6b 25 21 31 36 3d 49 63  |. IconBlk%!16=Ic|
0001b130  6f 6e 42 6c 6b 25 21 38  2b 78 73 69 7a 65 25 0d  |onBlk%!8+xsize%.|
0001b140  0e 4f 32 20 20 20 20 e7  20 64 69 6d 25 3c 3e 31  |.O2    . dim%<>1|
0001b150  20 8c 20 49 63 6f 6e 42  6c 6b 25 21 32 30 3d 49  | . IconBlk%!20=I|
0001b160  63 6f 6e 42 6c 6b 25 21  31 32 2b 79 73 69 7a 65  |conBlk%!12+ysize|
0001b170  25 0d 0e 50 3e 20 20 20  20 68 61 6e 64 6c 65 25  |%..P>    handle%|
0001b180  3d a4 72 65 64 65 66 69  6e 65 69 63 6f 6e 28 77  |=.redefineicon(w|
0001b190  69 6e 64 6f 77 25 2c 53  65 6c 42 6c 6b 25 21 28  |indow%,SelBlk%!(|
0001b1a0  34 2a 69 25 29 2c 49 63  6f 6e 42 6c 6b 25 29 0d  |4*i%),IconBlk%).|
0001b1b0  0e 51 0a 20 20 ed 20 69  25 0d 0e 52 05 cd 0d 0e  |.Q.  . i%..R....|
0001b1c0  53 05 e1 0d 0e 54 04 0d  0e 55 49 f4 20 2d 2d 2d  |S....T...UI. ---|
0001b1d0  20 69 6e 20 77 62 75 66  25 2c 20 72 65 70 6c 61  | in wbuf%, repla|
0001b1e0  63 65 20 64 61 74 61 20  66 6f 72 20 69 63 6f 6e  |ce data for icon|
0001b1f0  20 69 63 31 25 20 77 69  74 68 20 64 61 74 61 20  | ic1% with data |
0001b200  6f 66 20 69 63 6f 6e 20  69 63 32 25 20 2d 2d 2d  |of icon ic2% ---|
0001b210  0d 0e 56 2b dd 20 f2 72  65 70 6c 61 63 65 69 63  |..V+. .replaceic|
0001b220  6f 6e 28 77 62 75 66 25  2c 69 63 31 25 2c 77 69  |on(wbuf%,ic1%,wi|
0001b230  6e 64 6f 77 25 2c 69 63  32 25 29 0d 0e 57 17 ea  |ndow%,ic2%)..W..|
0001b240  20 69 62 25 2c 74 65 6d  70 31 25 2c 74 65 6d 70  | ib%,temp1%,temp|
0001b250  32 25 0d 0e 58 18 69 62  25 3d 77 62 75 66 25 2b  |2%..X.ib%=wbuf%+|
0001b260  39 32 2b 33 32 2a 69 63  31 25 0d 0e 59 3f 74 65  |92+32*ic1%..Y?te|
0001b270  6d 70 31 25 3d 69 62 25  21 28 2d 38 29 20 3a 20  |mp1%=ib%!(-8) : |
0001b280  f4 20 73 61 76 65 20 32  20 77 6f 72 64 73 20 6a  |. save 2 words j|
0001b290  75 73 74 20 62 65 66 6f  72 65 20 74 68 65 20 69  |ust before the i|
0001b2a0  63 6f 6e 20 62 6c 6f 63  6b 0d 0e 5a 13 74 65 6d  |con block..Z.tem|
0001b2b0  70 32 25 3d 69 62 25 21  28 2d 34 29 0d 0e 5b 14  |p2%=ib%!(-4)..[.|
0001b2c0  69 62 25 21 28 2d 38 29  3d 77 69 6e 64 6f 77 25  |ib%!(-8)=window%|
0001b2d0  0d 0e 5c 11 69 62 25 21  28 2d 34 29 3d 69 63 32  |..\.ib%!(-4)=ic2|
0001b2e0  25 0d 0e 5d 39 c8 99 20  22 57 69 6d 70 5f 47 65  |%..]9.. "Wimp_Ge|
0001b2f0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 69 62 25  |tIconState",,ib%|
0001b300  2d 38 20 3a 20 f4 20 67  65 74 20 69 63 6f 6e 20  |-8 : . get icon |
0001b310  64 61 74 61 20 62 6c 6f  63 6b 0d 0e 5e 2b 69 62  |data block..^+ib|
0001b320  25 21 28 2d 38 29 3d 74  65 6d 70 31 25 20 3a 20  |%!(-8)=temp1% : |
0001b330  f4 20 72 65 73 74 6f 72  65 20 74 68 65 20 32 20  |. restore the 2 |
0001b340  77 6f 72 64 73 0d 0e 5f  13 69 62 25 21 28 2d 34  |words.._.ib%!(-4|
0001b350  29 3d 74 65 6d 70 32 25  0d 0e 60 05 e1 0d 0e 61  |)=temp2%..`....a|
0001b360  04 0d 0e 62 31 f4 20 2d  2d 2d 20 75 70 64 61 74  |...b1. --- updat|
0001b370  65 20 63 6f 6e 74 65 6e  74 73 20 6f 66 20 69 63  |e contents of ic|
0001b380  6f 6e 20 69 6e 66 6f 20  77 69 6e 64 6f 77 20 2d  |on info window -|
0001b390  2d 2d 0d 0e 63 13 dd 20  f2 69 63 69 6e 66 5f 75  |--..c.. .icinf_u|
0001b3a0  70 64 61 74 65 0d 0e 64  35 ea 20 6e 6f 25 2c 74  |pdate..d5. no%,t|
0001b3b0  24 2c 69 24 2c 78 6d 69  6e 24 2c 78 6d 61 78 24  |$,i$,xmin$,xmax$|
0001b3c0  2c 79 6d 69 6e 24 2c 79  6d 61 78 24 2c 73 24 2c  |,ymin$,ymax$,s$,|
0001b3d0  6d 78 25 2c 6d 79 25 2c  6d 24 0d 0e 65 2b ea 20  |mx%,my%,m$..e+. |
0001b3e0  73 68 6f 77 69 63 6f 6e  64 61 74 61 25 2c 78 6d  |showicondata%,xm|
0001b3f0  69 6e 25 2c 78 6d 61 78  25 2c 79 6d 69 6e 25 2c  |in%,xmax%,ymin%,|
0001b400  79 6d 61 78 25 0d 0e 66  26 c8 99 20 22 57 69 6d  |ymax%..f&.. "Wim|
0001b410  70 5f 47 65 74 50 6f 69  6e 74 65 72 49 6e 66 6f  |p_GetPointerInfo|
0001b420  22 2c 2c 50 74 72 49 6e  66 6f 25 0d 0e 67 23 6e  |",,PtrInfo%..g#n|
0001b430  6f 25 3d a4 77 68 69 63  68 74 65 6d 70 6c 61 74  |o%=.whichtemplat|
0001b440  65 28 50 74 72 49 6e 66  6f 25 21 31 32 29 0d 0e  |e(PtrInfo%!12)..|
0001b450  68 09 74 24 3d 22 22 0d  0e 69 09 69 24 3d 22 22  |h.t$=""..i.i$=""|
0001b460  0d 0e 6a 0c 78 6d 69 6e  24 3d 22 22 0d 0e 6b 0c  |..j.xmin$=""..k.|
0001b470  78 6d 61 78 24 3d 22 22  0d 0e 6c 0c 79 6d 69 6e  |xmax$=""..l.ymin|
0001b480  24 3d 22 22 0d 0e 6d 0c  79 6d 61 78 24 3d 22 22  |$=""..m.ymax$=""|
0001b490  0d 0e 6e 09 73 24 3d 22  22 0d 0e 6f 09 6d 24 3d  |..n.s$=""..o.m$=|
0001b4a0  22 22 0d 0e 70 13 73 68  6f 77 69 63 6f 6e 64 61  |""..p.showiconda|
0001b4b0  74 61 25 3d a3 0d 0e 71  10 e7 20 28 6e 6f 25 3e  |ta%=...q.. (no%>|
0001b4c0  3d 30 29 20 8c 0d 0e 72  1e 20 20 74 24 3d 24 28  |=0) ...r.  t$=$(|
0001b4d0  54 65 6d 70 6c 4e 61 6d  65 73 25 2b 32 38 2a 6e  |TemplNames%+28*n|
0001b4e0  6f 25 29 0d 0e 73 19 20  20 e7 20 50 74 72 49 6e  |o%)..s.  . PtrIn|
0001b4f0  66 6f 25 21 31 36 3e 3d  2d 31 20 8c 0d 0e 74 1f  |fo%!16>=-1 ...t.|
0001b500  20 20 20 20 53 63 72 61  70 42 6c 6b 25 21 30 3d  |    ScrapBlk%!0=|
0001b510  50 74 72 49 6e 66 6f 25  21 31 32 0d 0e 75 2b 20  |PtrInfo%!12..u+ |
0001b520  20 20 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 57  |   .. "Wimp_GetW|
0001b530  69 6e 64 6f 77 53 74 61  74 65 22 2c 2c 53 63 72  |indowState",,Scr|
0001b540  61 70 42 6c 6b 25 0d 0e  76 31 20 20 20 20 6d 78  |apBlk%..v1    mx|
0001b550  25 3d 50 74 72 49 6e 66  6f 25 21 30 2d 28 53 63  |%=PtrInfo%!0-(Sc|
0001b560  72 61 70 42 6c 6b 25 21  34 2d 53 63 72 61 70 42  |rapBlk%!4-ScrapB|
0001b570  6c 6b 25 21 32 30 29 0d  0e 77 32 20 20 20 20 6d  |lk%!20)..w2    m|
0001b580  79 25 3d 50 74 72 49 6e  66 6f 25 21 34 2d 28 53  |y%=PtrInfo%!4-(S|
0001b590  63 72 61 70 42 6c 6b 25  21 31 36 2d 53 63 72 61  |crapBlk%!16-Scra|
0001b5a0  70 42 6c 6b 25 21 32 34  29 0d 0e 78 1c 20 20 20  |pBlk%!24)..x.   |
0001b5b0  20 6d 24 3d c3 28 6d 78  25 29 2b 22 2c 22 2b c3  | m$=.(mx%)+","+.|
0001b5c0  28 6d 79 25 29 0d 0e 79  17 20 20 20 20 c8 8e 20  |(my%)..y.    .. |
0001b5d0  44 72 61 67 5f 54 79 70  65 25 20 ca 0d 0e 7a 0d  |Drag_Type% ...z.|
0001b5e0  20 20 20 20 20 20 c9 20  30 0d 0e 7b 4b 20 20 20  |      . 0..{K   |
0001b5f0  20 20 20 20 20 f4 20 6d  6f 76 69 6e 67 2f 72 65  |     . moving/re|
0001b600  73 69 7a 69 6e 67 20 69  63 6f 6e 28 73 29 20 2d  |sizing icon(s) -|
0001b610  20 73 68 6f 77 20 63 75  72 72 65 6e 74 20 63 6f  | show current co|
0001b620  6f 72 64 69 6e 61 74 65  73 20 6f 66 20 64 72 61  |ordinates of dra|
0001b630  67 62 6f 78 0d 0e 7c 14  20 20 20 20 20 20 20 20  |gbox..|.        |
0001b640  69 24 3d 22 2e 2e 2e 22  0d 0e 7d 2d 20 20 20 20  |i$="..."..}-    |
0001b650  20 20 20 20 78 6d 69 6e  25 3d 6d 78 25 2d 28 44  |    xmin%=mx%-(D|
0001b660  72 61 67 5f 50 74 72 78  25 2d 44 72 61 67 42 6c  |rag_Ptrx%-DragBl|
0001b670  6b 25 21 38 29 0d 0e 7e  2e 20 20 20 20 20 20 20  |k%!8)..~.       |
0001b680  20 79 6d 69 6e 25 3d 6d  79 25 2d 28 44 72 61 67  | ymin%=my%-(Drag|
0001b690  5f 50 74 72 79 25 2d 44  72 61 67 42 6c 6b 25 21  |_Ptry%-DragBlk%!|
0001b6a0  31 32 29 0d 0e 7f 26 20  20 20 20 20 20 20 20 78  |12)...&        x|
0001b6b0  6d 61 78 25 3d 78 6d 69  6e 25 2b 44 72 61 67 5f  |max%=xmin%+Drag_|
0001b6c0  42 6f 78 53 69 7a 65 78  25 0d 0e 80 26 20 20 20  |BoxSizex%...&   |
0001b6d0  20 20 20 20 20 79 6d 61  78 25 3d 79 6d 69 6e 25  |     ymax%=ymin%|
0001b6e0  2b 44 72 61 67 5f 42 6f  78 53 69 7a 65 79 25 0d  |+Drag_BoxSizey%.|
0001b6f0  0e 81 1b 20 20 20 20 20  20 20 20 73 68 6f 77 69  |...        showi|
0001b700  63 6f 6e 64 61 74 61 25  3d b9 0d 0e 82 0d 20 20  |condata%=.....  |
0001b710  20 20 20 20 c9 20 31 0d  0e 83 44 20 20 20 20 20  |    . 1...D     |
0001b720  20 20 20 f4 20 72 65 73  69 7a 69 6e 67 20 69 63  |   . resizing ic|
0001b730  6f 6e 28 73 29 20 2d 20  73 68 6f 77 20 63 75 72  |on(s) - show cur|
0001b740  72 65 6e 74 20 63 6f 6f  72 64 69 6e 61 74 65 73  |rent coordinates|
0001b750  20 6f 66 20 64 72 61 67  62 6f 78 0d 0e 84 14 20  | of dragbox.... |
0001b760  20 20 20 20 20 20 20 69  24 3d 22 2e 2e 2e 22 0d  |       i$="...".|
0001b770  0e 85 1d 20 20 20 20 20  20 20 20 78 6d 69 6e 25  |...        xmin%|
0001b780  3d 44 72 61 67 5f 42 6f  78 30 78 25 0d 0e 86 1d  |=Drag_Box0x%....|
0001b790  20 20 20 20 20 20 20 20  79 6d 69 6e 25 3d 44 72  |        ymin%=Dr|
0001b7a0  61 67 5f 42 6f 78 30 79  25 0d 0e 87 26 20 20 20  |ag_Box0y%...&   |
0001b7b0  20 20 20 20 20 78 6d 61  78 25 3d 78 6d 69 6e 25  |     xmax%=xmin%|
0001b7c0  2b 44 72 61 67 5f 42 6f  78 53 69 7a 65 78 25 0d  |+Drag_BoxSizex%.|
0001b7d0  0e 88 26 20 20 20 20 20  20 20 20 79 6d 61 78 25  |..&        ymax%|
0001b7e0  3d 79 6d 69 6e 25 2b 44  72 61 67 5f 42 6f 78 53  |=ymin%+Drag_BoxS|
0001b7f0  69 7a 65 79 25 0d 0e 89  1c 20 20 20 20 20 20 20  |izey%....       |
0001b800  20 c8 8e 20 4d 6f 75 73  65 53 68 61 70 65 25 20  | .. MouseShape% |
0001b810  ca 0d 0e 8a 32 20 20 20  20 20 20 20 20 20 20 c9  |....2          .|
0001b820  20 32 20 3a 20 79 6d 61  78 25 2b 3d 28 50 74 72  | 2 : ymax%+=(Ptr|
0001b830  49 6e 66 6f 25 21 34 2d  44 72 61 67 5f 50 74 72  |Info%!4-Drag_Ptr|
0001b840  79 25 29 0d 0e 8b 32 20  20 20 20 20 20 20 20 20  |y%)...2         |
0001b850  20 c9 20 33 20 3a 20 78  6d 61 78 25 2b 3d 28 50  | . 3 : xmax%+=(P|
0001b860  74 72 49 6e 66 6f 25 21  30 2d 44 72 61 67 5f 50  |trInfo%!0-Drag_P|
0001b870  74 72 78 25 29 0d 0e 8c  32 20 20 20 20 20 20 20  |trx%)...2       |
0001b880  20 20 20 c9 20 34 20 3a  20 79 6d 69 6e 25 2b 3d  |   . 4 : ymin%+=|
0001b890  28 50 74 72 49 6e 66 6f  25 21 34 2d 44 72 61 67  |(PtrInfo%!4-Drag|
0001b8a0  5f 50 74 72 79 25 29 0d  0e 8d 32 20 20 20 20 20  |_Ptry%)...2     |
0001b8b0  20 20 20 20 20 c9 20 35  20 3a 20 78 6d 69 6e 25  |     . 5 : xmin%|
0001b8c0  2b 3d 28 50 74 72 49 6e  66 6f 25 21 30 2d 44 72  |+=(PtrInfo%!0-Dr|
0001b8d0  61 67 5f 50 74 72 78 25  29 0d 0e 8e 0d 20 20 20  |ag_Ptrx%)....   |
0001b8e0  20 20 20 20 20 cb 0d 0e  8f 1b 20 20 20 20 20 20  |     .....      |
0001b8f0  20 20 73 68 6f 77 69 63  6f 6e 64 61 74 61 25 3d  |  showicondata%=|
0001b900  b9 0d 0e 90 0b 20 20 20  20 20 20 7f 0d 0e 91 2d  |.....      ....-|
0001b910  20 20 20 20 20 20 20 20  f4 20 73 68 6f 77 20 64  |        . show d|
0001b920  61 74 61 20 6f 66 20 69  63 6f 6e 20 75 6e 64 65  |ata of icon unde|
0001b930  72 20 70 6f 69 6e 74 65  72 0d 0e 92 1e 20 20 20  |r pointer....   |
0001b940  20 20 20 20 20 e7 20 50  74 72 49 6e 66 6f 25 21  |     . PtrInfo%!|
0001b950  31 36 3e 3d 30 20 8c 0d  0e 93 1f 20 20 20 20 20  |16>=0 .....     |
0001b960  20 20 20 20 20 69 24 3d  c3 28 50 74 72 49 6e 66  |     i$=.(PtrInf|
0001b970  6f 25 21 31 36 29 0d 0e  94 25 20 20 20 20 20 20  |o%!16)...%      |
0001b980  20 20 20 20 53 63 72 61  70 42 6c 6b 25 21 30 3d  |    ScrapBlk%!0=|
0001b990  50 74 72 49 6e 66 6f 25  21 31 32 0d 0e 95 25 20  |PtrInfo%!12...% |
0001b9a0  20 20 20 20 20 20 20 20  20 53 63 72 61 70 42 6c  |         ScrapBl|
0001b9b0  6b 25 21 34 3d 50 74 72  49 6e 66 6f 25 21 31 36  |k%!4=PtrInfo%!16|
0001b9c0  0d 0e 96 2f 20 20 20 20  20 20 20 20 20 20 c8 99  |.../          ..|
0001b9d0  20 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  | "Wimp_GetIconSt|
0001b9e0  61 74 65 22 2c 2c 53 63  72 61 70 42 6c 6b 25 0d  |ate",,ScrapBlk%.|
0001b9f0  0e 97 1f 20 20 20 20 20  20 20 20 20 20 78 6d 69  |...          xmi|
0001ba00  6e 25 3d 53 63 72 61 70  42 6c 6b 25 21 38 0d 0e  |n%=ScrapBlk%!8..|
0001ba10  98 20 20 20 20 20 20 20  20 20 20 20 78 6d 61 78  |.           xmax|
0001ba20  25 3d 53 63 72 61 70 42  6c 6b 25 21 31 36 0d 0e  |%=ScrapBlk%!16..|
0001ba30  99 20 20 20 20 20 20 20  20 20 20 20 79 6d 69 6e  |.           ymin|
0001ba40  25 3d 53 63 72 61 70 42  6c 6b 25 21 31 32 0d 0e  |%=ScrapBlk%!12..|
0001ba50  9a 20 20 20 20 20 20 20  20 20 20 20 79 6d 61 78  |.           ymax|
0001ba60  25 3d 53 63 72 61 70 42  6c 6b 25 21 32 30 0d 0e  |%=ScrapBlk%!20..|
0001ba70  9b 1d 20 20 20 20 20 20  20 20 20 20 73 68 6f 77  |..          show|
0001ba80  69 63 6f 6e 64 61 74 61  25 3d b9 0d 0e 9c 0d 20  |icondata%=..... |
0001ba90  20 20 20 20 20 20 20 cd  0d 0e 9d 09 20 20 20 20  |       .....    |
0001baa0  cb 0d 0e 9e 19 20 20 20  20 e7 20 73 68 6f 77 69  |.....    . showi|
0001bab0  63 6f 6e 64 61 74 61 25  20 8c 0d 0e 9f 18 20 20  |condata% .....  |
0001bac0  20 20 20 20 78 6d 69 6e  24 3d c3 28 78 6d 69 6e  |    xmin$=.(xmin|
0001bad0  25 29 0d 0e a0 18 20 20  20 20 20 20 78 6d 61 78  |%)....      xmax|
0001bae0  24 3d c3 28 78 6d 61 78  25 29 0d 0e a1 18 20 20  |$=.(xmax%)....  |
0001baf0  20 20 20 20 79 6d 69 6e  24 3d c3 28 79 6d 69 6e  |    ymin$=.(ymin|
0001bb00  25 29 0d 0e a2 18 20 20  20 20 20 20 79 6d 61 78  |%)....      ymax|
0001bb10  24 3d c3 28 79 6d 61 78  25 29 0d 0e a3 2e 20 20  |$=.(ymax%)....  |
0001bb20  20 20 20 20 73 24 3d c3  28 78 6d 61 78 25 2d 78  |    s$=.(xmax%-x|
0001bb30  6d 69 6e 25 29 2b 22 78  22 2b c3 28 79 6d 61 78  |min%)+"x"+.(ymax|
0001bb40  25 2d 79 6d 69 6e 25 29  0d 0e a4 09 20 20 20 20  |%-ymin%)....    |
0001bb50  cd 0d 0e a5 07 20 20 cd  0d 0e a6 05 cd 0d 0e a7  |.....  .........|
0001bb60  2e e7 20 74 24 3c 3e 24  28 49 63 6f 6e 54 65 78  |.. t$<>$(IconTex|
0001bb70  74 25 28 37 29 29 20 8c  20 f2 73 65 74 69 63 6f  |t%(7)) . .setico|
0001bb80  6e 74 65 78 74 28 37 2c  74 24 29 0d 0e a8 2e e7  |ntext(7,t$).....|
0001bb90  20 69 24 3c 3e 24 28 49  63 6f 6e 54 65 78 74 25  | i$<>$(IconText%|
0001bba0  28 38 29 29 20 8c 20 f2  73 65 74 69 63 6f 6e 74  |(8)) . .seticont|
0001bbb0  65 78 74 28 38 2c 69 24  29 0d 0e a9 34 e7 20 78  |ext(8,i$)...4. x|
0001bbc0  6d 69 6e 24 3c 3e 24 28  49 63 6f 6e 54 65 78 74  |min$<>$(IconText|
0001bbd0  25 28 39 29 29 20 8c 20  f2 73 65 74 69 63 6f 6e  |%(9)) . .seticon|
0001bbe0  74 65 78 74 28 39 2c 78  6d 69 6e 24 29 0d 0e aa  |text(9,xmin$)...|
0001bbf0  36 e7 20 78 6d 61 78 24  3c 3e 24 28 49 63 6f 6e  |6. xmax$<>$(Icon|
0001bc00  54 65 78 74 25 28 32 36  29 29 20 8c 20 f2 73 65  |Text%(26)) . .se|
0001bc10  74 69 63 6f 6e 74 65 78  74 28 32 36 2c 78 6d 61  |ticontext(26,xma|
0001bc20  78 24 29 0d 0e ab 36 e7  20 79 6d 69 6e 24 3c 3e  |x$)...6. ymin$<>|
0001bc30  24 28 49 63 6f 6e 54 65  78 74 25 28 31 30 29 29  |$(IconText%(10))|
0001bc40  20 8c 20 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  | . .seticontext(|
0001bc50  31 30 2c 79 6d 69 6e 24  29 0d 0e ac 36 e7 20 79  |10,ymin$)...6. y|
0001bc60  6d 61 78 24 3c 3e 24 28  49 63 6f 6e 54 65 78 74  |max$<>$(IconText|
0001bc70  25 28 32 37 29 29 20 8c  20 f2 73 65 74 69 63 6f  |%(27)) . .setico|
0001bc80  6e 74 65 78 74 28 32 37  2c 79 6d 61 78 24 29 0d  |ntext(27,ymax$).|
0001bc90  0e ad 30 e7 20 73 24 3c  3e 24 28 49 63 6f 6e 54  |..0. s$<>$(IconT|
0001bca0  65 78 74 25 28 31 31 29  29 20 8c 20 f2 73 65 74  |ext%(11)) . .set|
0001bcb0  69 63 6f 6e 74 65 78 74  28 31 31 2c 73 24 29 0d  |icontext(11,s$).|
0001bcc0  0e ae 30 e7 20 6d 24 3c  3e 24 28 49 63 6f 6e 54  |..0. m$<>$(IconT|
0001bcd0  65 78 74 25 28 32 34 29  29 20 8c 20 f2 73 65 74  |ext%(24)) . .set|
0001bce0  69 63 6f 6e 74 65 78 74  28 32 34 2c 6d 24 29 0d  |icontext(24,m$).|
0001bcf0  0e af 05 e1 0d 0e b0 04  0d 0e b1 1a dd 20 f2 61  |............. .a|
0001bd00  6c 69 67 6e 69 63 6f 6e  73 28 77 69 6e 64 6f 77  |lignicons(window|
0001bd10  25 29 0d 0e b2 2d ea 20  6d 6f 76 65 25 2c 69 6d  |%)...-. move%,im|
0001bd20  61 73 6b 25 2c 74 79 70  65 25 2c 69 25 2c 61 6e  |ask%,type%,i%,an|
0001bd30  63 68 6f 72 78 25 2c 61  6e 63 68 6f 72 79 25 0d  |chorx%,anchory%.|
0001bd40  0e b3 21 ea 20 64 78 31  25 2c 64 78 32 25 2c 64  |..!. dx1%,dx2%,d|
0001bd50  79 31 25 2c 64 79 32 25  2c 68 61 6e 64 6c 65 25  |y1%,dy2%,handle%|
0001bd60  0d 0e b4 22 6d 6f 76 65  25 3d a4 69 63 6f 6e 73  |..."move%=.icons|
0001bd70  65 6c 65 63 74 65 64 28  41 6c 69 67 6e 57 25 2c  |elected(AlignW%,|
0001bd80  38 29 0d 0e b5 1b 69 6d  61 73 6b 25 3d 28 33 31  |8)....imask%=(31|
0001bd90  3c 3c 31 36 29 2b 28 31  3c 3c 32 31 29 0d 0e b6  |<<16)+(1<<21)...|
0001bda0  3e c8 99 20 22 57 69 6d  70 5f 57 68 69 63 68 49  |>.. "Wimp_WhichI|
0001bdb0  63 6f 6e 22 2c 41 6c 69  67 6e 57 25 2c 53 65 6c  |con",AlignW%,Sel|
0001bdc0  42 6c 6b 25 2c 69 6d 61  73 6b 25 2c 28 31 3c 3c  |Blk%,imask%,(1<<|
0001bdd0  31 36 29 2b 28 31 3c 3c  32 31 29 0d 0e b7 13 74  |16)+(1<<21)....t|
0001bde0  79 70 65 25 3d 53 65 6c  42 6c 6b 25 21 30 0d 0e  |ype%=SelBlk%!0..|
0001bdf0  b8 15 f2 73 65 6c 5f 67  65 74 28 77 69 6e 64 6f  |...sel_get(windo|
0001be00  77 25 29 0d 0e b9 15 e7  20 4e 72 53 65 6c 65 63  |w%)..... NrSelec|
0001be10  74 65 64 25 3e 31 20 8c  0d 0e ba 10 20 20 c8 8e  |ted%>1 .....  ..|
0001be20  20 74 79 70 65 25 20 ca  0d 0e bb 2e 20 20 20 20  | type% .....    |
0001be30  c9 20 32 2c 33 20 3a 20  f2 73 65 6c 5f 73 6f 72  |. 2,3 : .sel_sor|
0001be40  74 28 77 69 6e 64 6f 77  25 2c 30 2c 30 2c 31 2c  |t(window%,0,0,1,|
0001be50  30 2c 31 2c 31 29 0d 0e  bc 2e 20 20 20 20 c9 20  |0,1,1)....    . |
0001be60  34 20 20 20 3a 20 f2 73  65 6c 5f 73 6f 72 74 28  |4   : .sel_sort(|
0001be70  77 69 6e 64 6f 77 25 2c  30 2c 31 2c 30 2c 30 2c  |window%,0,1,0,0,|
0001be80  31 2c 31 29 0d 0e bd 2e  20 20 20 20 c9 20 35 2c  |1,1)....    . 5,|
0001be90  36 20 3a 20 f2 73 65 6c  5f 73 6f 72 74 28 77 69  |6 : .sel_sort(wi|
0001bea0  6e 64 6f 77 25 2c 31 2c  31 2c 30 2c 31 2c 30 2c  |ndow%,1,1,0,1,0,|
0001beb0  30 29 0d 0e be 2e 20 20  20 20 c9 20 37 20 20 20  |0)....    . 7   |
0001bec0  3a 20 f2 73 65 6c 5f 73  6f 72 74 28 77 69 6e 64  |: .sel_sort(wind|
0001bed0  6f 77 25 2c 31 2c 30 2c  31 2c 31 2c 31 2c 31 29  |ow%,1,0,1,1,1,1)|
0001bee0  0d 0e bf 07 20 20 cb 0d  0e c0 18 20 20 49 63 6f  |....  .....  Ico|
0001bef0  6e 42 6c 6b 25 21 30 3d  77 69 6e 64 6f 77 25 0d  |nBlk%!0=window%.|
0001bf00  0e c1 1a 20 20 49 63 6f  6e 42 6c 6b 25 21 34 3d  |...  IconBlk%!4=|
0001bf10  53 65 6c 42 6c 6b 25 21  30 0d 0e c2 26 20 20 c8  |SelBlk%!0...&  .|
0001bf20  99 20 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |. "Wimp_GetIconS|
0001bf30  74 61 74 65 22 2c 2c 49  63 6f 6e 42 6c 6b 25 0d  |tate",,IconBlk%.|
0001bf40  0e c3 10 20 20 c8 8e 20  74 79 70 65 25 20 ca 0d  |...  .. type% ..|
0001bf50  0e c4 0b 20 20 20 20 c9  20 32 0d 0e c5 45 20 20  |...    . 2...E  |
0001bf60  20 20 20 20 61 6e 63 68  6f 72 78 25 3d 49 63 6f  |    anchorx%=Ico|
0001bf70  6e 42 6c 6b 25 21 38 20  20 20 20 20 20 20 20 20  |nBlk%!8         |
0001bf80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001bf90  20 20 20 20 20 20 20 3a  20 f4 20 6c 65 66 74 0d  |       : . left.|
0001bfa0  0e c6 0b 20 20 20 20 c9  20 33 0d 0e c7 47 20 20  |...    . 3...G  |
0001bfb0  20 20 20 20 61 6e 63 68  6f 72 78 25 3d 49 63 6f  |    anchorx%=Ico|
0001bfc0  6e 42 6c 6b 25 21 38 2b  28 49 63 6f 6e 42 6c 6b  |nBlk%!8+(IconBlk|
0001bfd0  25 21 31 36 2d 49 63 6f  6e 42 6c 6b 25 21 38 29  |%!16-IconBlk%!8)|
0001bfe0  81 32 20 20 20 3a 20 f4  20 68 20 63 65 6e 74 72  |.2   : . h centr|
0001bff0  65 0d 0e c8 0b 20 20 20  20 c9 20 34 0d 0e c9 46  |e....    . 4...F|
0001c000  20 20 20 20 20 20 61 6e  63 68 6f 72 78 25 3d 49  |      anchorx%=I|
0001c010  63 6f 6e 42 6c 6b 25 21  31 36 20 20 20 20 20 20  |conBlk%!16      |
0001c020  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001c030  20 20 20 20 20 20 20 20  20 3a 20 f4 20 72 69 67  |         : . rig|
0001c040  68 74 0d 0e ca 0b 20 20  20 20 c9 20 35 0d 0e cb  |ht....    . 5...|
0001c050  44 20 20 20 20 20 20 61  6e 63 68 6f 72 79 25 3d  |D      anchory%=|
0001c060  49 63 6f 6e 42 6c 6b 25  21 32 30 20 20 20 20 20  |IconBlk%!20     |
0001c070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001c080  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 74 6f  |          : . to|
0001c090  70 0d 0e cc 0b 20 20 20  20 c9 20 36 0d 0e cd 47  |p....    . 6...G|
0001c0a0  20 20 20 20 20 20 61 6e  63 68 6f 72 79 25 3d 49  |      anchory%=I|
0001c0b0  63 6f 6e 42 6c 6b 25 21  31 32 2b 28 49 63 6f 6e  |conBlk%!12+(Icon|
0001c0c0  42 6c 6b 25 21 32 30 2d  49 63 6f 6e 42 6c 6b 25  |Blk%!20-IconBlk%|
0001c0d0  21 31 32 29 81 32 20 3a  20 f4 20 76 20 63 65 6e  |!12).2 : . v cen|
0001c0e0  74 72 65 0d 0e ce 0b 20  20 20 20 c9 20 37 0d 0e  |tre....    . 7..|
0001c0f0  cf 47 20 20 20 20 20 20  61 6e 63 68 6f 72 79 25  |.G      anchory%|
0001c100  3d 49 63 6f 6e 42 6c 6b  25 21 31 32 20 20 20 20  |=IconBlk%!12    |
0001c110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001c120  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 62  |           : . b|
0001c130  6f 74 74 6f 6d 0d 0e d0  07 20 20 cb 0d 0e d1 1c  |ottom....  .....|
0001c140  20 20 e3 20 69 25 3d 31  20 b8 20 4e 72 53 65 6c  |  . i%=1 . NrSel|
0001c150  65 63 74 65 64 25 2d 31  0d 0e d2 1a 20 20 20 20  |ected%-1....    |
0001c160  49 63 6f 6e 42 6c 6b 25  21 30 3d 77 69 6e 64 6f  |IconBlk%!0=windo|
0001c170  77 25 0d 0e d3 21 20 20  20 20 49 63 6f 6e 42 6c  |w%...!    IconBl|
0001c180  6b 25 21 34 3d 53 65 6c  42 6c 6b 25 21 28 34 2a  |k%!4=SelBlk%!(4*|
0001c190  69 25 29 0d 0e d4 28 20  20 20 20 c8 99 20 22 57  |i%)...(    .. "W|
0001c1a0  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
0001c1b0  22 2c 2c 49 63 6f 6e 42  6c 6b 25 0d 0e d5 0e 20  |",,IconBlk%.... |
0001c1c0  20 20 20 64 78 31 25 3d  30 0d 0e d6 0e 20 20 20  |   dx1%=0....   |
0001c1d0  20 64 78 32 25 3d 30 0d  0e d7 0e 20 20 20 20 64  | dx2%=0....    d|
0001c1e0  79 31 25 3d 30 0d 0e d8  0e 20 20 20 20 64 79 32  |y1%=0....    dy2|
0001c1f0  25 3d 30 0d 0e d9 12 20  20 20 20 c8 8e 20 74 79  |%=0....    .. ty|
0001c200  70 65 25 20 ca 0d 0e da  0d 20 20 20 20 20 20 c9  |pe% .....      .|
0001c210  20 32 0d 0e db 24 20 20  20 20 20 20 20 20 64 78  | 2...$        dx|
0001c220  31 25 3d 61 6e 63 68 6f  72 78 25 2d 49 63 6f 6e  |1%=anchorx%-Icon|
0001c230  42 6c 6b 25 21 38 0d 0e  dc 1f 20 20 20 20 20 20  |Blk%!8....      |
0001c240  20 20 e7 20 6d 6f 76 65  25 20 8c 20 64 78 32 25  |  . move% . dx2%|
0001c250  3d 64 78 31 25 0d 0e dd  0d 20 20 20 20 20 20 c9  |=dx1%....      .|
0001c260  20 33 0d 0e de 41 20 20  20 20 20 20 20 20 64 78  | 3...A        dx|
0001c270  31 25 3d 61 6e 63 68 6f  72 78 25 2d 28 49 63 6f  |1%=anchorx%-(Ico|
0001c280  6e 42 6c 6b 25 21 38 2b  28 49 63 6f 6e 42 6c 6b  |nBlk%!8+(IconBlk|
0001c290  25 21 31 36 2d 49 63 6f  6e 42 6c 6b 25 21 38 29  |%!16-IconBlk%!8)|
0001c2a0  81 32 29 0d 0e df 1f 20  20 20 20 20 20 20 20 e7  |.2)....        .|
0001c2b0  20 6d 6f 76 65 25 20 8c  20 64 78 32 25 3d 64 78  | move% . dx2%=dx|
0001c2c0  31 25 0d 0e e0 0d 20 20  20 20 20 20 c9 20 34 0d  |1%....      . 4.|
0001c2d0  0e e1 25 20 20 20 20 20  20 20 20 64 78 32 25 3d  |..%        dx2%=|
0001c2e0  61 6e 63 68 6f 72 78 25  2d 49 63 6f 6e 42 6c 6b  |anchorx%-IconBlk|
0001c2f0  25 21 31 36 0d 0e e2 1f  20 20 20 20 20 20 20 20  |%!16....        |
0001c300  e7 20 6d 6f 76 65 25 20  8c 20 64 78 31 25 3d 64  |. move% . dx1%=d|
0001c310  78 32 25 0d 0e e3 0d 20  20 20 20 20 20 c9 20 35  |x2%....      . 5|
0001c320  0d 0e e4 25 20 20 20 20  20 20 20 20 64 79 32 25  |...%        dy2%|
0001c330  3d 61 6e 63 68 6f 72 79  25 2d 49 63 6f 6e 42 6c  |=anchory%-IconBl|
0001c340  6b 25 21 32 30 0d 0e e5  1f 20 20 20 20 20 20 20  |k%!20....       |
0001c350  20 e7 20 6d 6f 76 65 25  20 8c 20 64 79 31 25 3d  | . move% . dy1%=|
0001c360  64 79 32 25 0d 0e e6 0d  20 20 20 20 20 20 c9 20  |dy2%....      . |
0001c370  36 0d 0e e7 43 20 20 20  20 20 20 20 20 64 79 31  |6...C        dy1|
0001c380  25 3d 61 6e 63 68 6f 72  79 25 2d 28 49 63 6f 6e  |%=anchory%-(Icon|
0001c390  42 6c 6b 25 21 31 32 2b  28 49 63 6f 6e 42 6c 6b  |Blk%!12+(IconBlk|
0001c3a0  25 21 32 30 2d 49 63 6f  6e 42 6c 6b 25 21 31 32  |%!20-IconBlk%!12|
0001c3b0  29 81 32 29 0d 0e e8 1f  20 20 20 20 20 20 20 20  |).2)....        |
0001c3c0  e7 20 6d 6f 76 65 25 20  8c 20 64 79 32 25 3d 64  |. move% . dy2%=d|
0001c3d0  79 31 25 0d 0e e9 0d 20  20 20 20 20 20 c9 20 37  |y1%....      . 7|
0001c3e0  0d 0e ea 25 20 20 20 20  20 20 20 20 64 79 31 25  |...%        dy1%|
0001c3f0  3d 61 6e 63 68 6f 72 79  25 2d 49 63 6f 6e 42 6c  |=anchory%-IconBl|
0001c400  6b 25 21 31 32 0d 0e eb  1f 20 20 20 20 20 20 20  |k%!12....       |
0001c410  20 e7 20 6d 6f 76 65 25  20 8c 20 64 79 32 25 3d  | . move% . dy2%=|
0001c420  64 79 31 25 0d 0e ec 09  20 20 20 20 cb 0d 0e ed  |dy1%....    ....|
0001c430  22 20 20 20 20 49 63 6f  6e 42 6c 6b 25 21 38 3d  |"    IconBlk%!8=|
0001c440  49 63 6f 6e 42 6c 6b 25  21 38 2b 64 78 31 25 0d  |IconBlk%!8+dx1%.|
0001c450  0e ee 24 20 20 20 20 49  63 6f 6e 42 6c 6b 25 21  |..$    IconBlk%!|
0001c460  31 32 3d 49 63 6f 6e 42  6c 6b 25 21 31 32 2b 64  |12=IconBlk%!12+d|
0001c470  79 31 25 0d 0e ef 24 20  20 20 20 49 63 6f 6e 42  |y1%...$    IconB|
0001c480  6c 6b 25 21 31 36 3d 49  63 6f 6e 42 6c 6b 25 21  |lk%!16=IconBlk%!|
0001c490  31 36 2b 64 78 32 25 0d  0e f0 24 20 20 20 20 49  |16+dx2%...$    I|
0001c4a0  63 6f 6e 42 6c 6b 25 21  32 30 3d 49 63 6f 6e 42  |conBlk%!20=IconB|
0001c4b0  6c 6b 25 21 32 30 2b 64  79 32 25 0d 0e f1 3d 20  |lk%!20+dy2%...= |
0001c4c0  20 20 20 e7 20 49 63 6f  6e 42 6c 6b 25 21 31 36  |   . IconBlk%!16|
0001c4d0  3c 3d 49 63 6f 6e 42 6c  6b 25 21 38 20 8c 20 49  |<=IconBlk%!8 . I|
0001c4e0  63 6f 6e 42 6c 6b 25 21  31 36 3d 49 63 6f 6e 42  |conBlk%!16=IconB|
0001c4f0  6c 6b 25 21 38 2b 33 32  0d 0e f2 3f 20 20 20 20  |lk%!8+32...?    |
0001c500  e7 20 49 63 6f 6e 42 6c  6b 25 21 32 30 3c 3d 49  |. IconBlk%!20<=I|
0001c510  63 6f 6e 42 6c 6b 25 21  31 32 20 8c 20 49 63 6f  |conBlk%!12 . Ico|
0001c520  6e 42 6c 6b 25 21 32 30  3d 49 63 6f 6e 42 6c 6b  |nBlk%!20=IconBlk|
0001c530  25 21 31 32 2b 33 32 0d  0e f3 3e 20 20 20 20 68  |%!12+32...>    h|
0001c540  61 6e 64 6c 65 25 3d a4  72 65 64 65 66 69 6e 65  |andle%=.redefine|
0001c550  69 63 6f 6e 28 77 69 6e  64 6f 77 25 2c 53 65 6c  |icon(window%,Sel|
0001c560  42 6c 6b 25 21 28 34 2a  69 25 29 2c 49 63 6f 6e  |Blk%!(4*i%),Icon|
0001c570  42 6c 6b 25 29 0d 0e f4  0a 20 20 ed 20 69 25 0d  |Blk%)....  . i%.|
0001c580  0e f5 05 cd 0d 0e f6 05  e1 0d 0e f7 04 0d 0e f8  |................|
0001c590  39 f4 20 2d 2d 2d 20 73  68 61 64 65 20 74 68 65  |9. --- shade the|
0001c5a0  20 61 70 70 72 6f 70 72  69 61 74 65 20 69 63 6f  | appropriate ico|
0001c5b0  6e 73 20 69 6e 20 74 68  65 20 41 6c 69 67 6e 20  |ns in the Align |
0001c5c0  77 69 6e 64 6f 77 0d 0e  f9 17 dd 20 f2 61 6c 69  |window..... .ali|
0001c5d0  67 6e 5f 73 68 61 64 65  69 63 6f 6e 73 0d 0e fa  |gn_shadeicons...|
0001c5e0  3c e7 20 a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |<. .iconselected|
0001c5f0  28 41 6c 69 67 6e 57 25  2c 33 29 20 84 20 20 a4  |(AlignW%,3) .  .|
0001c600  69 63 6f 6e 73 65 6c 65  63 74 65 64 28 41 6c 69  |iconselected(Ali|
0001c610  67 6e 57 25 2c 36 29 20  8c 0d 0e fb 1d 20 20 f2  |gnW%,6) .....  .|
0001c620  73 68 61 64 65 69 63 6f  6e 28 41 6c 69 67 6e 57  |shadeicon(AlignW|
0001c630  25 2c 39 2c 31 29 0d 0e  fc 05 cc 0d 0e fd 1d 20  |%,9,1)......... |
0001c640  20 f2 73 68 61 64 65 69  63 6f 6e 28 41 6c 69 67  | .shadeicon(Alig|
0001c650  6e 57 25 2c 39 2c 30 29  0d 0e fe 05 cd 0d 0e ff  |nW%,9,0)........|
0001c660  32 f2 73 68 61 64 65 69  63 6f 6e 28 41 6c 69 67  |2.shadeicon(Alig|
0001c670  6e 57 25 2c 33 2c a4 69  63 6f 6e 73 65 6c 65 63  |nW%,3,.iconselec|
0001c680  74 65 64 28 41 6c 69 67  6e 57 25 2c 39 29 29 0d  |ted(AlignW%,9)).|
0001c690  0f 00 32 f2 73 68 61 64  65 69 63 6f 6e 28 41 6c  |..2.shadeicon(Al|
0001c6a0  69 67 6e 57 25 2c 36 2c  a4 69 63 6f 6e 73 65 6c  |ignW%,6,.iconsel|
0001c6b0  65 63 74 65 64 28 41 6c  69 67 6e 57 25 2c 39 29  |ected(AlignW%,9)|
0001c6c0  29 0d 0f 01 05 e1 0d 0f  02 04 0d 0f 03 1a dd 20  |).............. |
0001c6d0  f2 73 70 61 63 65 69 63  6f 6e 73 28 77 69 6e 64  |.spaceicons(wind|
0001c6e0  6f 77 25 29 0d 0f 04 42  ea 20 69 6d 61 73 6b 25  |ow%)...B. imask%|
0001c6f0  2c 74 79 70 65 25 2c 69  25 2c 64 69 73 74 61 6e  |,type%,i%,distan|
0001c700  63 65 25 2c 73 70 61 63  65 25 2c 69 62 25 2c 61  |ce%,space%,ib%,a|
0001c710  6e 63 68 6f 72 25 2c 64  78 25 2c 64 79 25 2c 68  |nchor%,dx%,dy%,h|
0001c720  61 6e 64 6c 65 25 0d 0f  05 27 53 70 61 63 65 4f  |andle%...'SpaceO|
0001c730  75 74 5f 53 70 61 63 65  25 3d bb 28 24 28 49 63  |ut_Space%=.($(Ic|
0001c740  6f 6e 54 65 78 74 25 28  31 38 29 29 29 0d 0f 06  |onText%(18)))...|
0001c750  4f 69 6d 61 73 6b 25 3d  28 33 31 3c 3c 31 36 29  |Oimask%=(31<<16)|
0001c760  2b 28 31 3c 3c 32 31 29  20 3a 20 f4 20 63 68 65  |+(1<<21) : . che|
0001c770  63 6b 20 69 66 20 73 70  61 63 69 6e 67 20 6d 75  |ck if spacing mu|
0001c780  73 74 20 62 65 20 68 6f  72 69 7a 6f 6e 74 61 6c  |st be horizontal|
0001c790  20 6f 72 20 76 65 72 74  69 63 61 6c 0d 0f 07 3e  | or vertical...>|
0001c7a0  c8 99 20 22 57 69 6d 70  5f 57 68 69 63 68 49 63  |.. "Wimp_WhichIc|
0001c7b0  6f 6e 22 2c 53 70 61 63  65 57 25 2c 53 65 6c 42  |on",SpaceW%,SelB|
0001c7c0  6c 6b 25 2c 69 6d 61 73  6b 25 2c 28 31 3c 3c 31  |lk%,imask%,(1<<1|
0001c7d0  36 29 2b 28 31 3c 3c 32  31 29 0d 0f 08 42 74 79  |6)+(1<<21)...Bty|
0001c7e0  70 65 25 3d 53 65 6c 42  6c 6b 25 21 30 20 3a 20  |pe%=SelBlk%!0 : |
0001c7f0  f4 20 74 79 70 65 25 3d  32 20 3d 3e 20 68 6f 72  |. type%=2 => hor|
0001c800  69 7a 6f 6e 74 61 6c 2c  20 74 79 70 65 25 3d 33  |izontal, type%=3|
0001c810  20 3d 3e 20 76 65 72 74  69 63 61 6c 0d 0f 09 15  | => vertical....|
0001c820  f2 73 65 6c 5f 67 65 74  28 77 69 6e 64 6f 77 25  |.sel_get(window%|
0001c830  29 0d 0f 0a 15 e7 20 4e  72 53 65 6c 65 63 74 65  |)..... NrSelecte|
0001c840  64 25 3e 31 20 8c 0d 0f  0b 11 20 20 e7 20 74 79  |d%>1 .....  . ty|
0001c850  70 65 25 3d 32 20 8c 0d  0f 0c 26 20 20 20 20 f2  |pe%=2 ....&    .|
0001c860  73 65 6c 5f 73 6f 72 74  28 77 69 6e 64 6f 77 25  |sel_sort(window%|
0001c870  2c 30 2c 30 2c 31 2c 30  2c 31 2c 30 29 0d 0f 0d  |,0,0,1,0,1,0)...|
0001c880  07 20 20 cc 0d 0f 0e 26  20 20 20 20 f2 73 65 6c  |.  ....&    .sel|
0001c890  5f 73 6f 72 74 28 77 69  6e 64 6f 77 25 2c 31 2c  |_sort(window%,1,|
0001c8a0  30 2c 31 2c 31 2c 31 2c  30 29 0d 0f 0f 07 20 20  |0,1,1,1,0)....  |
0001c8b0  cd 0d 0f 10 22 20 20 e7  20 a4 69 63 6f 6e 73 65  |...."  . .iconse|
0001c8c0  6c 65 63 74 65 64 28 53  70 61 63 65 57 25 2c 34  |lected(SpaceW%,4|
0001c8d0  29 20 8c 0d 0f 11 21 20  20 20 20 64 69 73 74 61  |) ....!    dista|
0001c8e0  6e 63 65 25 3d 53 70 61  63 65 4f 75 74 5f 53 70  |nce%=SpaceOut_Sp|
0001c8f0  61 63 65 25 0d 0f 12 07  20 20 cc 0d 0f 13 2c 20  |ace%....  ...., |
0001c900  20 20 20 f4 20 63 61 6c  63 20 61 76 61 69 6c 61  |   . calc availa|
0001c910  62 6c 65 20 73 70 61 63  65 20 62 65 74 77 65 65  |ble space betwee|
0001c920  6e 20 69 63 6f 6e 73 0d  0f 14 19 20 20 20 20 57  |n icons....    W|
0001c930  69 6e 42 6c 6b 25 21 30  3d 77 69 6e 64 6f 77 25  |inBlk%!0=window%|
0001c940  0d 0f 15 28 20 20 20 20  c8 99 20 22 57 69 6d 70  |...(    .. "Wimp|
0001c950  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
0001c960  2c 57 69 6e 42 6c 6b 25  0d 0f 16 2e 20 20 20 20  |,WinBlk%....    |
0001c970  f4 20 73 74 61 72 74 20  77 69 74 68 20 73 70 61  |. start with spa|
0001c980  63 65 20 62 65 74 77 65  65 6e 20 6f 75 74 65 72  |ce between outer|
0001c990  20 69 63 6f 6e 73 0d 0f  17 13 20 20 20 20 e7 20  | icons....    . |
0001c9a0  74 79 70 65 25 3d 32 20  8c 0d 0f 18 3e 20 20 20  |type%=2 ....>   |
0001c9b0  20 20 20 73 70 61 63 65  25 3d 57 69 6e 42 6c 6b  |   space%=WinBlk|
0001c9c0  25 21 28 39 32 2b 33 32  2a 28 53 65 6c 42 6c 6b  |%!(92+32*(SelBlk|
0001c9d0  25 21 28 34 2a 28 4e 72  53 65 6c 65 63 74 65 64  |%!(4*(NrSelected|
0001c9e0  25 2d 31 29 29 29 29 0d  0f 19 2f 20 20 20 20 20  |%-1)))).../     |
0001c9f0  20 73 70 61 63 65 25 2d  3d 57 69 6e 42 6c 6b 25  | space%-=WinBlk%|
0001ca00  21 28 39 32 2b 33 32 2a  28 53 65 6c 42 6c 6b 25  |!(92+32*(SelBlk%|
0001ca10  21 30 29 2b 38 29 0d 0f  1a 09 20 20 20 20 cc 0d  |!0)+8)....    ..|
0001ca20  0f 1b 40 20 20 20 20 20  20 73 70 61 63 65 25 3d  |..@      space%=|
0001ca30  57 69 6e 42 6c 6b 25 21  28 39 32 2b 33 32 2a 28  |WinBlk%!(92+32*(|
0001ca40  53 65 6c 42 6c 6b 25 21  28 34 2a 28 4e 72 53 65  |SelBlk%!(4*(NrSe|
0001ca50  6c 65 63 74 65 64 25 2d  31 29 29 29 2b 34 29 0d  |lected%-1)))+4).|
0001ca60  0f 1c 30 20 20 20 20 20  20 73 70 61 63 65 25 2d  |..0      space%-|
0001ca70  3d 57 69 6e 42 6c 6b 25  21 28 39 32 2b 33 32 2a  |=WinBlk%!(92+32*|
0001ca80  28 53 65 6c 42 6c 6b 25  21 30 29 2b 31 32 29 0d  |(SelBlk%!0)+12).|
0001ca90  0f 1d 09 20 20 20 20 cd  0d 0f 1e 2e 20 20 20 20  |...    .....    |
0001caa0  f4 20 73 75 62 74 72 61  63 74 20 73 69 7a 65 73  |. subtract sizes|
0001cab0  20 6f 66 20 69 6e 74 65  72 6d 65 64 69 61 74 65  | of intermediate|
0001cac0  20 69 63 6f 6e 73 0d 0f  1f 19 20 20 20 20 e7 20  | icons....    . |
0001cad0  4e 72 53 65 6c 65 63 74  65 64 25 3e 32 20 8c 0d  |NrSelected%>2 ..|
0001cae0  0f 20 22 20 20 20 20 20  20 e3 20 69 25 3d 31 20  |. "      . i%=1 |
0001caf0  b8 20 28 4e 72 53 65 6c  65 63 74 65 64 25 2d 32  |. (NrSelected%-2|
0001cb00  29 0d 0f 21 2e 20 20 20  20 20 20 20 20 69 62 25  |)..!.        ib%|
0001cb10  3d 57 69 6e 42 6c 6b 25  2b 39 32 2b 33 32 2a 28  |=WinBlk%+92+32*(|
0001cb20  53 65 6c 42 6c 6b 25 21  28 34 2a 69 25 29 29 0d  |SelBlk%!(4*i%)).|
0001cb30  0f 22 17 20 20 20 20 20  20 20 20 e7 20 74 79 70  |.".        . typ|
0001cb40  65 25 3d 32 20 8c 0d 0f  23 23 20 20 20 20 20 20  |e%=2 ...##      |
0001cb50  20 20 20 20 73 70 61 63  65 25 2d 3d 28 69 62 25  |    space%-=(ib%|
0001cb60  21 38 2d 69 62 25 21 30  29 0d 0f 24 0d 20 20 20  |!8-ib%!0)..$.   |
0001cb70  20 20 20 20 20 cc 0d 0f  25 24 20 20 20 20 20 20  |     ...%$      |
0001cb80  20 20 20 20 73 70 61 63  65 25 2d 3d 28 69 62 25  |    space%-=(ib%|
0001cb90  21 31 32 2d 69 62 25 21  34 29 0d 0f 26 0d 20 20  |!12-ib%!4)..&.  |
0001cba0  20 20 20 20 20 20 cd 0d  0f 27 0e 20 20 20 20 20  |      ...'.     |
0001cbb0  20 ed 20 69 25 0d 0f 28  09 20 20 20 20 cd 0d 0f  | . i%..(.    ...|
0001cbc0  29 2a 20 20 20 20 64 69  73 74 61 6e 63 65 25 3d  |)*    distance%=|
0001cbd0  73 70 61 63 65 25 20 81  20 28 4e 72 53 65 6c 65  |space% . (NrSele|
0001cbe0  63 74 65 64 25 2d 31 29  0d 0f 2a 07 20 20 cd 0d  |cted%-1)..*.  ..|
0001cbf0  0f 2b 18 20 20 49 63 6f  6e 42 6c 6b 25 21 30 3d  |.+.  IconBlk%!0=|
0001cc00  77 69 6e 64 6f 77 25 0d  0f 2c 1a 20 20 49 63 6f  |window%..,.  Ico|
0001cc10  6e 42 6c 6b 25 21 34 3d  53 65 6c 42 6c 6b 25 21  |nBlk%!4=SelBlk%!|
0001cc20  30 0d 0f 2d 26 20 20 c8  99 20 22 57 69 6d 70 5f  |0..-&  .. "Wimp_|
0001cc30  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 49  |GetIconState",,I|
0001cc40  63 6f 6e 42 6c 6b 25 0d  0f 2e 10 20 20 c8 8e 20  |conBlk%....  .. |
0001cc50  74 79 70 65 25 20 ca 0d  0f 2f 21 20 20 20 20 c9  |type% .../!    .|
0001cc60  20 32 20 3a 20 61 6e 63  68 6f 72 25 3d 49 63 6f  | 2 : anchor%=Ico|
0001cc70  6e 42 6c 6b 25 21 31 36  0d 0f 30 21 20 20 20 20  |nBlk%!16..0!    |
0001cc80  c9 20 33 20 3a 20 61 6e  63 68 6f 72 25 3d 49 63  |. 3 : anchor%=Ic|
0001cc90  6f 6e 42 6c 6b 25 21 32  30 0d 0f 31 07 20 20 cb  |onBlk%!20..1.  .|
0001cca0  0d 0f 32 1c 20 20 e3 20  69 25 3d 31 20 b8 20 4e  |..2.  . i%=1 . N|
0001ccb0  72 53 65 6c 65 63 74 65  64 25 2d 31 0d 0f 33 1a  |rSelected%-1..3.|
0001ccc0  20 20 20 20 61 6e 63 68  6f 72 25 2b 3d 64 69 73  |    anchor%+=dis|
0001ccd0  74 61 6e 63 65 25 0d 0f  34 1a 20 20 20 20 49 63  |tance%..4.    Ic|
0001cce0  6f 6e 42 6c 6b 25 21 30  3d 77 69 6e 64 6f 77 25  |onBlk%!0=window%|
0001ccf0  0d 0f 35 21 20 20 20 20  49 63 6f 6e 42 6c 6b 25  |..5!    IconBlk%|
0001cd00  21 34 3d 53 65 6c 42 6c  6b 25 21 28 34 2a 69 25  |!4=SelBlk%!(4*i%|
0001cd10  29 0d 0f 36 28 20 20 20  20 c8 99 20 22 57 69 6d  |)..6(    .. "Wim|
0001cd20  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
0001cd30  2c 49 63 6f 6e 42 6c 6b  25 0d 0f 37 0d 20 20 20  |,IconBlk%..7.   |
0001cd40  20 64 78 25 3d 30 0d 0f  38 0d 20 20 20 20 64 79  | dx%=0..8.    dy|
0001cd50  25 3d 30 0d 0f 39 12 20  20 20 20 c8 8e 20 74 79  |%=0..9.    .. ty|
0001cd60  70 65 25 20 ca 0d 0f 3a  26 20 20 20 20 20 20 c9  |pe% ...:&      .|
0001cd70  20 32 20 3a 20 64 78 25  3d 61 6e 63 68 6f 72 25  | 2 : dx%=anchor%|
0001cd80  2d 49 63 6f 6e 42 6c 6b  25 21 38 0d 0f 3b 27 20  |-IconBlk%!8..;' |
0001cd90  20 20 20 20 20 c9 20 33  20 3a 20 64 79 25 3d 61  |     . 3 : dy%=a|
0001cda0  6e 63 68 6f 72 25 2d 49  63 6f 6e 42 6c 6b 25 21  |nchor%-IconBlk%!|
0001cdb0  31 32 0d 0f 3c 09 20 20  20 20 cb 0d 0f 3d 21 20  |12..<.    ...=! |
0001cdc0  20 20 20 49 63 6f 6e 42  6c 6b 25 21 38 3d 49 63  |   IconBlk%!8=Ic|
0001cdd0  6f 6e 42 6c 6b 25 21 38  2b 64 78 25 0d 0f 3e 23  |onBlk%!8+dx%..>#|
0001cde0  20 20 20 20 49 63 6f 6e  42 6c 6b 25 21 31 32 3d  |    IconBlk%!12=|
0001cdf0  49 63 6f 6e 42 6c 6b 25  21 31 32 2b 64 79 25 0d  |IconBlk%!12+dy%.|
0001ce00  0f 3f 23 20 20 20 20 49  63 6f 6e 42 6c 6b 25 21  |.?#    IconBlk%!|
0001ce10  31 36 3d 49 63 6f 6e 42  6c 6b 25 21 31 36 2b 64  |16=IconBlk%!16+d|
0001ce20  78 25 0d 0f 40 23 20 20  20 20 49 63 6f 6e 42 6c  |x%..@#    IconBl|
0001ce30  6b 25 21 32 30 3d 49 63  6f 6e 42 6c 6b 25 21 32  |k%!20=IconBlk%!2|
0001ce40  30 2b 64 79 25 0d 0f 41  12 20 20 20 20 c8 8e 20  |0+dy%..A.    .. |
0001ce50  74 79 70 65 25 20 ca 0d  0f 42 23 20 20 20 20 20  |type% ...B#     |
0001ce60  20 c9 20 32 20 3a 20 61  6e 63 68 6f 72 25 3d 49  | . 2 : anchor%=I|
0001ce70  63 6f 6e 42 6c 6b 25 21  31 36 0d 0f 43 23 20 20  |conBlk%!16..C#  |
0001ce80  20 20 20 20 c9 20 33 20  3a 20 61 6e 63 68 6f 72  |    . 3 : anchor|
0001ce90  25 3d 49 63 6f 6e 42 6c  6b 25 21 32 30 0d 0f 44  |%=IconBlk%!20..D|
0001cea0  09 20 20 20 20 cb 0d 0f  45 3e 20 20 20 20 68 61  |.    ...E>    ha|
0001ceb0  6e 64 6c 65 25 3d a4 72  65 64 65 66 69 6e 65 69  |ndle%=.redefinei|
0001cec0  63 6f 6e 28 77 69 6e 64  6f 77 25 2c 53 65 6c 42  |con(window%,SelB|
0001ced0  6c 6b 25 21 28 34 2a 69  25 29 2c 49 63 6f 6e 42  |lk%!(4*i%),IconB|
0001cee0  6c 6b 25 29 0d 0f 46 0a  20 20 ed 20 69 25 0d 0f  |lk%)..F.  . i%..|
0001cef0  47 05 cd 0d 0f 48 05 e1  0d 0f 49 04 0d 0f 4a 17  |G....H....I...J.|
0001cf00  dd 20 f2 73 70 61 63 65  5f 73 68 61 64 65 69 63  |. .space_shadeic|
0001cf10  6f 6e 73 0d 0f 4b 12 ea  20 75 73 65 61 76 61 69  |ons..K.. useavai|
0001cf20  6c 25 2c 69 25 0d 0f 4c  26 75 73 65 61 76 61 69  |l%,i%..L&useavai|
0001cf30  6c 25 3d a4 69 63 6f 6e  73 65 6c 65 63 74 65 64  |l%=.iconselected|
0001cf40  28 53 70 61 63 65 57 25  2c 38 29 0d 0f 4d 0e e3  |(SpaceW%,8)..M..|
0001cf50  20 69 25 3d 35 20 b8 20  37 0d 0f 4e 26 20 20 f2  | i%=5 . 7..N&  .|
0001cf60  73 68 61 64 65 69 63 6f  6e 28 53 70 61 63 65 57  |shadeicon(SpaceW|
0001cf70  25 2c 69 25 2c 75 73 65  61 76 61 69 6c 25 29 0d  |%,i%,useavail%).|
0001cf80  0f 4f 08 ed 20 69 25 0d  0f 50 05 e1 0d 0f 51 04  |.O.. i%..P....Q.|
0001cf90  0d 0f 52 19 dd 20 a4 74  69 64 79 69 63 6f 6e 73  |..R.. .tidyicons|
0001cfa0  28 77 69 6e 64 6f 77 25  29 0d 0f 53 44 ea 20 63  |(window%)..SD. c|
0001cfb0  68 61 6e 67 65 64 31 25  2c 63 68 61 6e 67 65 64  |hanged1%,changed|
0001cfc0  32 25 2c 69 62 31 25 2c  69 62 32 25 2c 65 6e 64  |2%,ib1%,ib2%,end|
0001cfd0  25 2c 6e 72 69 63 6f 6e  73 25 2c 64 78 25 2c 64  |%,nricons%,dx%,d|
0001cfe0  79 25 2c 69 25 2c 68 61  6e 64 6c 65 25 0d 0f 54  |y%,i%,handle%..T|
0001cff0  15 57 69 6e 42 6c 6b 25  21 30 3d 77 69 6e 64 6f  |.WinBlk%!0=windo|
0001d000  77 25 0d 0f 55 24 c8 99  20 22 57 69 6d 70 5f 47  |w%..U$.. "Wimp_G|
0001d010  65 74 57 69 6e 64 6f 77  49 6e 66 6f 22 2c 2c 57  |etWindowInfo",,W|
0001d020  69 6e 42 6c 6b 25 0d 0f  56 0f 63 68 61 6e 67 65  |inBlk%..V.change|
0001d030  64 31 25 3d 30 0d 0f 57  0f 63 68 61 6e 67 65 64  |d1%=0..W.changed|
0001d040  32 25 3d 30 0d 0f 58 14  e7 20 57 69 6e 42 6c 6b  |2%=0..X.. WinBlk|
0001d050  25 21 38 38 3e 30 20 8c  0d 0f 59 15 20 20 69 62  |%!88>0 ...Y.  ib|
0001d060  31 25 3d 57 69 6e 42 6c  6b 25 2b 39 32 0d 0f 5a  |1%=WinBlk%+92..Z|
0001d070  0f 20 20 69 62 32 25 3d  69 62 31 25 0d 0f 5b 1f  |.  ib2%=ib1%..[.|
0001d080  20 20 65 6e 64 25 3d 69  62 31 25 2b 33 32 2a 28  |  end%=ib1%+32*(|
0001d090  57 69 6e 42 6c 6b 25 21  38 38 29 0d 0f 5c 10 20  |WinBlk%!88)..\. |
0001d0a0  20 6e 72 69 63 6f 6e 73  25 3d 30 0d 0f 5d 12 20  | nricons%=0..]. |
0001d0b0  20 c8 95 20 69 62 31 25  3c 65 6e 64 25 0d 0f 5e  | .. ib1%<end%..^|
0001d0c0  21 20 20 20 20 e7 20 28  28 69 62 31 25 21 31 36  |!    . ((ib1%!16|
0001d0d0  29 80 28 31 3c 3c 32 33  29 29 3d 30 20 8c 0d 0f  |).(1<<23))=0 ...|
0001d0e0  5f 35 20 20 20 20 20 20  f4 20 74 65 73 74 20 69  |_5      . test i|
0001d0f0  66 20 69 63 6f 6e 20 70  6f 73 69 74 69 6f 6e 20  |f icon position |
0001d100  69 73 20 77 69 74 68 69  6e 20 77 6f 72 6b 20 61  |is within work a|
0001d110  72 65 61 0d 0f 60 0f 20  20 20 20 20 20 64 78 25  |rea..`.      dx%|
0001d120  3d 30 0d 0f 61 0f 20 20  20 20 20 20 64 79 25 3d  |=0..a.      dy%=|
0001d130  30 0d 0f 62 35 20 20 20  20 20 20 e7 20 69 62 31  |0..b5      . ib1|
0001d140  25 21 30 3c 57 69 6e 42  6c 6b 25 21 34 34 20 8c  |%!0<WinBlk%!44 .|
0001d150  20 64 78 25 3d 57 69 6e  42 6c 6b 25 21 34 34 2d  | dx%=WinBlk%!44-|
0001d160  69 62 31 25 21 30 0d 0f  63 35 20 20 20 20 20 20  |ib1%!0..c5      |
0001d170  e7 20 69 62 31 25 21 34  3c 57 69 6e 42 6c 6b 25  |. ib1%!4<WinBlk%|
0001d180  21 34 38 20 8c 20 64 79  25 3d 57 69 6e 42 6c 6b  |!48 . dy%=WinBlk|
0001d190  25 21 34 38 2d 69 62 31  25 21 34 0d 0f 64 35 20  |%!48-ib1%!4..d5 |
0001d1a0  20 20 20 20 20 e7 20 69  62 31 25 21 38 3e 57 69  |     . ib1%!8>Wi|
0001d1b0  6e 42 6c 6b 25 21 35 32  20 8c 20 64 78 25 3d 57  |nBlk%!52 . dx%=W|
0001d1c0  69 6e 42 6c 6b 25 21 35  32 2d 69 62 31 25 21 38  |inBlk%!52-ib1%!8|
0001d1d0  0d 0f 65 37 20 20 20 20  20 20 e7 20 69 62 31 25  |..e7      . ib1%|
0001d1e0  21 31 32 3e 57 69 6e 42  6c 6b 25 21 35 36 20 8c  |!12>WinBlk%!56 .|
0001d1f0  20 64 79 25 3d 57 69 6e  42 6c 6b 25 21 35 36 2d  | dy%=WinBlk%!56-|
0001d200  69 62 31 25 21 31 32 0d  0f 66 1b 20 20 20 20 20  |ib1%!12..f.     |
0001d210  20 69 62 31 25 21 30 3d  69 62 31 25 21 30 2b 64  | ib1%!0=ib1%!0+d|
0001d220  78 25 0d 0f 67 1b 20 20  20 20 20 20 69 62 31 25  |x%..g.      ib1%|
0001d230  21 34 3d 69 62 31 25 21  34 2b 64 79 25 0d 0f 68  |!4=ib1%!4+dy%..h|
0001d240  1b 20 20 20 20 20 20 69  62 31 25 21 38 3d 69 62  |.      ib1%!8=ib|
0001d250  31 25 21 38 2b 64 78 25  0d 0f 69 1d 20 20 20 20  |1%!8+dx%..i.    |
0001d260  20 20 69 62 31 25 21 31  32 3d 69 62 31 25 21 31  |  ib1%!12=ib1%!1|
0001d270  32 2b 64 79 25 0d 0f 6a  23 20 20 20 20 20 20 f4  |2+dy%..j#      .|
0001d280  20 6d 6f 76 65 20 62 6c  6f 63 6b 20 6f 66 20 69  | move block of i|
0001d290  63 6f 6e 20 64 61 74 61  0d 0f 6b 19 20 20 20 20  |con data..k.    |
0001d2a0  20 20 e3 20 69 25 3d 30  20 b8 20 32 38 20 88 20  |  . i%=0 . 28 . |
0001d2b0  34 0d 0f 6c 1b 20 20 20  20 20 20 20 20 69 62 32  |4..l.        ib2|
0001d2c0  25 21 69 25 3d 69 62 31  25 21 69 25 0d 0f 6d 0e  |%!i%=ib1%!i%..m.|
0001d2d0  20 20 20 20 20 20 ed 20  69 25 0d 0f 6e 12 20 20  |      . i%..n.  |
0001d2e0  20 20 20 20 69 62 32 25  2b 3d 33 32 0d 0f 6f 15  |    ib2%+=32..o.|
0001d2f0  20 20 20 20 20 20 6e 72  69 63 6f 6e 73 25 2b 3d  |      nricons%+=|
0001d300  31 0d 0f 70 2c 20 20 20  20 20 20 e7 20 28 64 78  |1..p,      . (dx|
0001d310  25 3c 3e 30 29 84 28 64  79 25 3c 3e 30 29 20 8c  |%<>0).(dy%<>0) .|
0001d320  20 63 68 61 6e 67 65 64  32 25 2b 3d 31 0d 0f 71  | changed2%+=1..q|
0001d330  09 20 20 20 20 cc 0d 0f  72 23 20 20 20 20 20 20  |.    ...r#      |
0001d340  f4 20 64 6f 6e 27 74 20  63 6f 70 79 20 64 65 6c  |. don't copy del|
0001d350  65 74 65 64 20 69 63 6f  6e 0d 0f 73 16 20 20 20  |eted icon..s.   |
0001d360  20 20 20 63 68 61 6e 67  65 64 31 25 2b 3d 31 0d  |   changed1%+=1.|
0001d370  0f 74 09 20 20 20 20 cd  0d 0f 75 10 20 20 20 20  |.t.    ...u.    |
0001d380  69 62 31 25 2b 3d 33 32  0d 0f 76 07 20 20 ce 0d  |ib1%+=32..v.  ..|
0001d390  0f 77 25 20 20 e7 20 28  63 68 61 6e 67 65 64 31  |.w%  . (changed1|
0001d3a0  25 3d 30 29 80 28 63 68  61 6e 67 65 64 32 25 3d  |%=0).(changed2%=|
0001d3b0  30 29 20 8c 0d 0f 78 1a  20 20 20 20 f2 64 69 61  |0) ...x.    .dia|
0001d3c0  6c 6f 67 75 65 28 36 2c  22 22 2c 22 22 29 0d 0f  |logue(6,"","")..|
0001d3d0  79 07 20 20 cc 0d 0f 7a  1b 20 20 20 20 57 69 6e  |y.  ...z.    Win|
0001d3e0  42 6c 6b 25 21 38 38 3d  6e 72 69 63 6f 6e 73 25  |Blk%!88=nricons%|
0001d3f0  0d 0f 7b 2a 20 20 20 20  68 61 6e 64 6c 65 25 3d  |..{*    handle%=|
0001d400  a4 72 65 64 65 66 69 6e  65 77 69 6e 64 6f 77 28  |.redefinewindow(|
0001d410  57 69 6e 42 6c 6b 25 2c  31 29 0d 0f 7c 2e 20 20  |WinBlk%,1)..|.  |
0001d420  20 20 f2 64 69 61 6c 6f  67 75 65 28 37 2c c3 28  |  .dialogue(7,.(|
0001d430  63 68 61 6e 67 65 64 31  25 29 2c c3 28 63 68 61  |changed1%),.(cha|
0001d440  6e 67 65 64 32 25 29 29  0d 0f 7d 07 20 20 cd 0d  |nged2%))..}.  ..|
0001d450  0f 7e 05 cd 0d 0f 7f 0c  3d 68 61 6e 64 6c 65 25  |.~......=handle%|
0001d460  0d 0f 80 04 0d 0f 81 12  dd 20 f2 73 65 74 77 6f  |......... .setwo|
0001d470  72 6b 61 72 65 61 0d 0f  82 33 ea 20 78 74 6f 70  |rkarea...3. xtop|
0001d480  6c 65 66 74 25 2c 79 74  6f 70 6c 65 66 74 25 2c  |left%,ytopleft%,|
0001d490  78 73 69 7a 65 25 2c 79  73 69 7a 65 25 2c 78 6d  |xsize%,ysize%,xm|
0001d4a0  69 6e 25 2c 79 6d 69 6e  25 0d 0f 83 1b 57 69 6e  |in%,ymin%....Win|
0001d4b0  42 6c 6b 25 21 30 3d 4c  61 73 74 4d 65 6e 75 5f  |Blk%!0=LastMenu_|
0001d4c0  57 69 6e 25 0d 0f 84 24  c8 99 20 22 57 69 6d 70  |Win%...$.. "Wimp|
0001d4d0  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
0001d4e0  2c 57 69 6e 42 6c 6b 25  0d 0f 85 21 78 74 6f 70  |,WinBlk%...!xtop|
0001d4f0  6c 65 66 74 25 3d bb 28  24 28 49 63 6f 6e 54 65  |left%=.($(IconTe|
0001d500  78 74 25 28 31 32 29 29  29 0d 0f 86 21 79 74 6f  |xt%(12)))...!yto|
0001d510  70 6c 65 66 74 25 3d bb  28 24 28 49 63 6f 6e 54  |pleft%=.($(IconT|
0001d520  65 78 74 25 28 31 33 29  29 29 0d 0f 87 1e 78 73  |ext%(13)))....xs|
0001d530  69 7a 65 25 3d bb 28 24  28 49 63 6f 6e 54 65 78  |ize%=.($(IconTex|
0001d540  74 25 28 31 34 29 29 29  0d 0f 88 1e 79 73 69 7a  |t%(14)))....ysiz|
0001d550  65 25 3d bb 28 24 28 49  63 6f 6e 54 65 78 74 25  |e%=.($(IconText%|
0001d560  28 31 35 29 29 29 0d 0f  89 25 78 6d 69 6e 25 3d  |(15)))...%xmin%=|
0001d570  bb 28 24 28 49 63 6f 6e  54 65 78 74 25 28 31 36  |.($(IconText%(16|
0001d580  29 29 29 20 80 20 26 46  46 46 46 0d 0f 8a 25 79  |))) . &FFFF...%y|
0001d590  6d 69 6e 25 3d bb 28 24  28 49 63 6f 6e 54 65 78  |min%=.($(IconTex|
0001d5a0  74 25 28 31 37 29 29 29  20 80 20 26 46 46 46 46  |t%(17))) . &FFFF|
0001d5b0  0d 0f 8b 21 e7 20 28 78  73 69 7a 65 25 3c 33 32  |...!. (xsize%<32|
0001d5c0  29 20 84 20 28 79 73 69  7a 65 25 3c 33 32 29 20  |) . (ysize%<32) |
0001d5d0  8c 0d 0f 8c 25 20 20 f2  63 6f 6d 70 6c 61 69 6e  |....%  .complain|
0001d5e0  28 a4 6d 73 67 5f 6c 6f  6f 6b 75 70 30 28 22 49  |(.msg_lookup0("I|
0001d5f0  57 41 53 22 29 29 0d 0f  8d 05 cc 0d 0f 8e 16 20  |WAS"))......... |
0001d600  20 e7 20 78 6d 69 6e 25  3e 78 73 69 7a 65 25 20  | . xmin%>xsize% |
0001d610  8c 0d 0f 8f 14 20 20 20  20 78 6d 69 6e 25 3d 78  |.....    xmin%=x|
0001d620  73 69 7a 65 25 0d 0f 90  21 20 20 20 20 f2 73 65  |size%...!    .se|
0001d630  74 69 63 6f 6e 74 65 78  74 28 31 36 2c c3 28 78  |ticontext(16,.(x|
0001d640  6d 69 6e 25 29 29 0d 0f  91 07 20 20 cd 0d 0f 92  |min%))....  ....|
0001d650  16 20 20 e7 20 79 6d 69  6e 25 3e 79 73 69 7a 65  |.  . ymin%>ysize|
0001d660  25 20 8c 0d 0f 93 14 20  20 20 20 79 6d 69 6e 25  |% .....    ymin%|
0001d670  3d 79 73 69 7a 65 25 0d  0f 94 21 20 20 20 20 f2  |=ysize%...!    .|
0001d680  73 65 74 69 63 6f 6e 74  65 78 74 28 31 37 2c c3  |seticontext(17,.|
0001d690  28 79 6d 69 6e 25 29 29  0d 0f 95 07 20 20 cd 0d  |(ymin%))....  ..|
0001d6a0  0f 96 1a 20 20 57 69 6e  42 6c 6b 25 21 34 34 3d  |...  WinBlk%!44=|
0001d6b0  78 74 6f 70 6c 65 66 74  25 0d 0f 97 21 20 20 57  |xtopleft%...!  W|
0001d6c0  69 6e 42 6c 6b 25 21 34  38 3d 79 74 6f 70 6c 65  |inBlk%!48=ytople|
0001d6d0  66 74 25 2d 79 73 69 7a  65 25 0d 0f 98 21 20 20  |ft%-ysize%...!  |
0001d6e0  57 69 6e 42 6c 6b 25 21  35 32 3d 78 74 6f 70 6c  |WinBlk%!52=xtopl|
0001d6f0  65 66 74 25 2b 78 73 69  7a 65 25 0d 0f 99 1a 20  |eft%+xsize%.... |
0001d700  20 57 69 6e 42 6c 6b 25  21 35 36 3d 79 74 6f 70  | WinBlk%!56=ytop|
0001d710  6c 65 66 74 25 0d 0f 9a  22 20 20 57 69 6e 42 6c  |left%..."  WinBl|
0001d720  6b 25 21 37 32 3d 28 79  6d 69 6e 25 3c 3c 31 36  |k%!72=(ymin%<<16|
0001d730  29 2b 78 6d 69 6e 25 0d  0f 9b 2e 20 20 4c 61 73  |)+xmin%....  Las|
0001d740  74 4d 65 6e 75 5f 57 69  6e 25 3d a4 72 65 64 65  |tMenu_Win%=.rede|
0001d750  66 69 6e 65 77 69 6e 64  6f 77 28 57 69 6e 42 6c  |finewindow(WinBl|
0001d760  6b 25 2c 31 29 0d 0f 9c  05 cd 0d 0f 9d 05 e1 0d  |k%,1)...........|
0001d770  0f 9e 04 0d 0f 9f 2b dd  20 f2 63 65 6e 74 65 72  |......+. .center|
0001d780  69 63 6f 6e 73 65 6c 28  77 69 6e 64 6f 77 25 2c  |iconsel(window%,|
0001d790  64 65 66 61 75 6c 74 25  2c 64 69 6d 25 29 0d 0f  |default%,dim%)..|
0001d7a0  a0 3e ea 20 78 6d 69 6e  25 2c 79 6d 69 6e 25 2c  |.>. xmin%,ymin%,|
0001d7b0  78 6d 61 78 25 2c 79 6d  61 78 25 2c 78 66 72 65  |xmax%,ymax%,xfre|
0001d7c0  65 25 2c 79 66 72 65 65  25 2c 64 78 25 2c 64 79  |e%,yfree%,dx%,dy|
0001d7d0  25 2c 69 25 2c 68 61 6e  64 6c 65 25 0d 0f a1 15  |%,i%,handle%....|
0001d7e0  f2 73 65 6c 5f 67 65 74  28 77 69 6e 64 6f 77 25  |.sel_get(window%|
0001d7f0  29 0d 0f a2 27 e7 20 28  4e 72 53 65 6c 65 63 74  |)...'. (NrSelect|
0001d800  65 64 25 3d 30 29 20 80  20 28 64 65 66 61 75 6c  |ed%=0) . (defaul|
0001d810  74 25 3e 3d 30 29 20 8c  0d 0f a3 18 20 20 53 65  |t%>=0) .....  Se|
0001d820  6c 42 6c 6b 25 21 30 3d  64 65 66 61 75 6c 74 25  |lBlk%!0=default%|
0001d830  0d 0f a4 13 20 20 4e 72  53 65 6c 65 63 74 65 64  |....  NrSelected|
0001d840  25 3d 31 0d 0f a5 05 cd  0d 0f a6 15 e7 20 4e 72  |%=1.......... Nr|
0001d850  53 65 6c 65 63 74 65 64  25 3e 30 20 8c 0d 0f a7  |Selected%>0 ....|
0001d860  2f 20 20 f2 73 65 6c 5f  62 6f 78 28 77 69 6e 64  |/  .sel_box(wind|
0001d870  6f 77 25 2c 78 6d 69 6e  25 2c 79 6d 69 6e 25 2c  |ow%,xmin%,ymin%,|
0001d880  78 6d 61 78 25 2c 79 6d  61 78 25 29 0d 0f a8 19  |xmax%,ymax%)....|
0001d890  20 20 53 63 72 61 70 42  6c 6b 25 21 30 3d 77 69  |  ScrapBlk%!0=wi|
0001d8a0  6e 64 6f 77 25 0d 0f a9  29 20 20 c8 99 20 22 57  |ndow%...)  .. "W|
0001d8b0  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
0001d8c0  74 65 22 2c 2c 53 63 72  61 70 42 6c 6b 25 0d 0f  |te",,ScrapBlk%..|
0001d8d0  aa 35 20 20 78 66 72 65  65 25 3d 28 53 63 72 61  |.5  xfree%=(Scra|
0001d8e0  70 42 6c 6b 25 21 31 32  2d 53 63 72 61 70 42 6c  |pBlk%!12-ScrapBl|
0001d8f0  6b 25 21 34 29 2d 28 78  6d 61 78 25 2d 78 6d 69  |k%!4)-(xmax%-xmi|
0001d900  6e 25 29 0d 0f ab 29 20  20 64 78 25 3d 53 63 72  |n%)...)  dx%=Scr|
0001d910  61 70 42 6c 6b 25 21 32  30 2b 28 78 66 72 65 65  |apBlk%!20+(xfree|
0001d920  25 20 81 20 32 29 2d 78  6d 69 6e 25 0d 0f ac 35  |% . 2)-xmin%...5|
0001d930  20 20 79 66 72 65 65 25  3d 28 53 63 72 61 70 42  |  yfree%=(ScrapB|
0001d940  6c 6b 25 21 31 36 2d 53  63 72 61 70 42 6c 6b 25  |lk%!16-ScrapBlk%|
0001d950  21 38 29 2d 28 79 6d 61  78 25 2d 79 6d 69 6e 25  |!8)-(ymax%-ymin%|
0001d960  29 0d 0f ad 29 20 20 64  79 25 3d 53 63 72 61 70  |)...)  dy%=Scrap|
0001d970  42 6c 6b 25 21 32 34 2d  28 79 66 72 65 65 25 20  |Blk%!24-(yfree% |
0001d980  81 20 32 29 2d 79 6d 61  78 25 0d 0f ae 16 20 20  |. 2)-ymax%....  |
0001d990  e7 20 64 69 6d 25 3d 32  20 8c 20 64 78 25 3d 30  |. dim%=2 . dx%=0|
0001d9a0  0d 0f af 16 20 20 e7 20  64 69 6d 25 3d 31 20 8c  |....  . dim%=1 .|
0001d9b0  20 64 79 25 3d 30 0d 0f  b0 1c 20 20 e3 20 69 25  | dy%=0....  . i%|
0001d9c0  3d 30 20 b8 20 4e 72 53  65 6c 65 63 74 65 64 25  |=0 . NrSelected%|
0001d9d0  2d 31 0d 0f b1 1a 20 20  20 20 49 63 6f 6e 42 6c  |-1....    IconBl|
0001d9e0  6b 25 21 30 3d 77 69 6e  64 6f 77 25 0d 0f b2 21  |k%!0=window%...!|
0001d9f0  20 20 20 20 49 63 6f 6e  42 6c 6b 25 21 34 3d 53  |    IconBlk%!4=S|
0001da00  65 6c 42 6c 6b 25 21 28  34 2a 69 25 29 0d 0f b3  |elBlk%!(4*i%)...|
0001da10  28 20 20 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |(    .. "Wimp_Ge|
0001da20  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 49 63 6f  |tIconState",,Ico|
0001da30  6e 42 6c 6b 25 0d 0f b4  21 20 20 20 20 49 63 6f  |nBlk%...!    Ico|
0001da40  6e 42 6c 6b 25 21 38 3d  49 63 6f 6e 42 6c 6b 25  |nBlk%!8=IconBlk%|
0001da50  21 38 2b 64 78 25 0d 0f  b5 23 20 20 20 20 49 63  |!8+dx%...#    Ic|
0001da60  6f 6e 42 6c 6b 25 21 31  32 3d 49 63 6f 6e 42 6c  |onBlk%!12=IconBl|
0001da70  6b 25 21 31 32 2b 64 79  25 0d 0f b6 23 20 20 20  |k%!12+dy%...#   |
0001da80  20 49 63 6f 6e 42 6c 6b  25 21 31 36 3d 49 63 6f  | IconBlk%!16=Ico|
0001da90  6e 42 6c 6b 25 21 31 36  2b 64 78 25 0d 0f b7 23  |nBlk%!16+dx%...#|
0001daa0  20 20 20 20 49 63 6f 6e  42 6c 6b 25 21 32 30 3d  |    IconBlk%!20=|
0001dab0  49 63 6f 6e 42 6c 6b 25  21 32 30 2b 64 79 25 0d  |IconBlk%!20+dy%.|
0001dac0  0f b8 3e 20 20 20 20 68  61 6e 64 6c 65 25 3d a4  |..>    handle%=.|
0001dad0  72 65 64 65 66 69 6e 65  69 63 6f 6e 28 77 69 6e  |redefineicon(win|
0001dae0  64 6f 77 25 2c 53 65 6c  42 6c 6b 25 21 28 34 2a  |dow%,SelBlk%!(4*|
0001daf0  69 25 29 2c 49 63 6f 6e  42 6c 6b 25 29 0d 0f b9  |i%),IconBlk%)...|
0001db00  0a 20 20 ed 20 69 25 0d  0f ba 05 cd 0d 0f bb 05  |.  . i%.........|
0001db10  e1 0d 0f bc 04 0d 0f bd  20 dd 20 f2 73 75 70 70  |........ . .supp|
0001db20  6f 72 74 69 6e 74 65 72  66 61 63 65 28 73 77 69  |ortinterface(swi|
0001db30  74 63 68 25 29 0d 0f be  0a ea 20 66 6c 67 25 0d  |tch%)..... flg%.|
0001db40  0f bf 1a 6f 6c 64 25 3d  53 75 70 70 6f 72 74 49  |...old%=SupportI|
0001db50  6e 74 65 72 66 61 63 65  25 0d 0f c0 1d 53 75 70  |nterface%....Sup|
0001db60  70 6f 72 74 49 6e 74 65  72 66 61 63 65 25 3d 73  |portInterface%=s|
0001db70  77 69 74 63 68 25 0d 0f  c1 0f e7 20 73 77 69 74  |witch%..... swit|
0001db80  63 68 25 20 8c 0d 0f c2  33 20 20 c8 99 20 22 58  |ch% ....3  .. "X|
0001db90  4f 53 5f 4d 6f 64 75 6c  65 22 2c 31 38 2c 22 49  |OS_Module",18,"I|
0001dba0  6e 74 65 72 66 61 63 65  4d 61 6e 61 67 65 72 22  |nterfaceManager"|
0001dbb0  20 b8 20 3b 66 6c 67 25  0d 0f c3 14 20 20 e7 20  | . ;flg%....  . |
0001dbc0  28 66 6c 67 25 20 80 20  31 29 20 8c 0d 0f c4 1b  |(flg% . 1) .....|
0001dbd0  20 20 20 20 53 75 70 70  6f 72 74 49 6e 74 65 72  |    SupportInter|
0001dbe0  66 61 63 65 25 3d a3 0d  0f c5 23 20 20 20 20 f2  |face%=....#    .|
0001dbf0  64 69 61 6c 6f 67 75 65  28 33 2c 22 49 6e 74 65  |dialogue(3,"Inte|
0001dc00  72 66 61 63 65 22 2c 22  22 29 0d 0f c6 07 20 20  |rface","")....  |
0001dc10  cc 0d 0f c7 16 20 20 20  20 f2 73 75 70 70 6f 72  |.....    .suppor|
0001dc20  74 61 65 68 28 a3 29 0d  0f c8 07 20 20 cd 0d 0f  |taeh(.)....  ...|
0001dc30  c9 05 cd 0d 0f ca 2e f2  73 65 6c 65 63 74 69 63  |........selectic|
0001dc40  6f 6e 28 4f 70 74 50 61  6e 65 57 25 2c 39 2c 53  |on(OptPaneW%,9,S|
0001dc50  75 70 70 6f 72 74 49 6e  74 65 72 66 61 63 65 25  |upportInterface%|
0001dc60  29 0d 0f cb 2a e7 20 53  75 70 70 6f 72 74 49 6e  |)...*. SupportIn|
0001dc70  74 65 72 66 61 63 65 25  3c 3e 6f 6c 64 25 20 8c  |terface%<>old% .|
0001dc80  20 f2 72 65 64 72 61 77  61 6c 6c 0d 0f cc 05 e1  | .redrawall.....|
0001dc90  0d 0f cd 04 0d 0f ce 1a  dd 20 f2 73 75 70 70 6f  |......... .suppo|
0001dca0  72 74 61 65 68 28 73 77  69 74 63 68 25 29 0d 0f  |rtaeh(switch%)..|
0001dcb0  cf 0f ea 20 6f 6c 64 25  2c 66 6c 67 25 0d 0f d0  |... old%,flg%...|
0001dcc0  14 6f 6c 64 25 3d 53 75  70 70 6f 72 74 41 45 48  |.old%=SupportAEH|
0001dcd0  25 0d 0f d1 17 53 75 70  70 6f 72 74 41 45 48 25  |%....SupportAEH%|
0001dce0  3d 73 77 69 74 63 68 25  0d 0f d2 0f e7 20 73 77  |=switch%..... sw|
0001dcf0  69 74 63 68 25 20 8c 0d  0f d3 2c 20 20 c8 99 20  |itch% ....,  .. |
0001dd00  22 58 4f 53 5f 4d 6f 64  75 6c 65 22 2c 31 38 2c  |"XOS_Module",18,|
0001dd10  22 41 45 48 4d 6f 64 75  6c 65 22 20 b8 20 3b 66  |"AEHModule" . ;f|
0001dd20  6c 67 25 0d 0f d4 14 20  20 e7 20 28 66 6c 67 25  |lg%....  . (flg%|
0001dd30  20 80 20 31 29 20 8c 0d  0f d5 15 20 20 20 20 53  | . 1) .....    S|
0001dd40  75 70 70 6f 72 74 41 45  48 25 3d a3 0d 0f d6 1d  |upportAEH%=.....|
0001dd50  20 20 20 20 f2 64 69 61  6c 6f 67 75 65 28 33 2c  |    .dialogue(3,|
0001dd60  22 41 45 48 22 2c 22 22  29 0d 0f d7 07 20 20 cc  |"AEH","")....  .|
0001dd70  0d 0f d8 1c 20 20 20 20  f2 73 75 70 70 6f 72 74  |....    .support|
0001dd80  69 6e 74 65 72 66 61 63  65 28 a3 29 0d 0f d9 07  |interface(.)....|
0001dd90  20 20 cd 0d 0f da 05 cd  0d 0f db 29 f2 73 65 6c  |  .........).sel|
0001dda0  65 63 74 69 63 6f 6e 28  4f 70 74 50 61 6e 65 57  |ecticon(OptPaneW|
0001ddb0  25 2c 31 30 2c 53 75 70  70 6f 72 74 41 45 48 25  |%,10,SupportAEH%|
0001ddc0  29 0d 0f dc 1d f2 72 65  67 69 73 74 65 72 61 65  |).....registerae|
0001ddd0  68 28 53 75 70 70 6f 72  74 41 45 48 25 29 0d 0f  |h(SupportAEH%)..|
0001dde0  dd 24 e7 20 53 75 70 70  6f 72 74 41 45 48 25 3c  |.$. SupportAEH%<|
0001ddf0  3e 6f 6c 64 25 20 8c 20  f2 72 65 64 72 61 77 61  |>old% . .redrawa|
0001de00  6c 6c 0d 0f de 05 e1 0d  0f df 04 0d 0f e0 1b dd  |ll..............|
0001de10  20 f2 72 65 67 69 73 74  65 72 61 65 68 28 73 77  | .registeraeh(sw|
0001de20  69 74 63 68 25 29 0d 0f  e1 0f ea 20 6f 6c 64 25  |itch%)..... old%|
0001de30  2c 66 6c 67 25 0d 0f e2  0f e7 20 73 77 69 74 63  |,flg%..... switc|
0001de40  68 25 20 8c 0d 0f e3 1a  20 20 e7 20 ac 20 41 45  |h% .....  . . AE|
0001de50  48 72 65 67 69 73 74 65  72 65 64 25 20 8c 0d 0f  |Hregistered% ...|
0001de60  e4 24 20 20 20 20 c8 99  20 22 58 41 45 48 5f 52  |.$    .. "XAEH_R|
0001de70  65 67 69 73 74 65 72 22  2c 31 20 b8 20 3b 66 6c  |egister",1 . ;fl|
0001de80  67 25 0d 0f e5 26 20 20  20 20 41 45 48 72 65 67  |g%...&    AEHreg|
0001de90  69 73 74 65 72 65 64 25  3d 28 28 66 6c 67 25 20  |istered%=((flg% |
0001dea0  80 20 31 29 3c 3e 30 29  0d 0f e6 07 20 20 cd 0d  |. 1)<>0)....  ..|
0001deb0  0f e7 05 cc 0d 0f e8 18  20 20 e7 20 41 45 48 72  |........  . AEHr|
0001dec0  65 67 69 73 74 65 72 65  64 25 20 8c 0d 0f e9 1d  |egistered% .....|
0001ded0  20 20 20 20 c8 99 20 22  58 41 45 48 5f 52 65 67  |    .. "XAEH_Reg|
0001dee0  69 73 74 65 72 22 2c 2d  31 0d 0f ea 18 20 20 20  |ister",-1....   |
0001def0  20 41 45 48 72 65 67 69  73 74 65 72 65 64 25 3d  | AEHregistered%=|
0001df00  a3 0d 0f eb 07 20 20 cd  0d 0f ec 05 cd 0d 0f ed  |.....  .........|
0001df10  05 e1 0d 0f ee 04 0d 0f  ef 3b f4 20 2d 2d 2d 20  |.........;. --- |
0001df20  66 6f 72 63 65 20 74 68  65 20 72 65 64 72 61 77  |force the redraw|
0001df30  20 6f 66 20 61 6c 6c 20  6f 70 65 6e 20 74 65 6d  | of all open tem|
0001df40  70 6c 61 74 65 20 77 69  6e 64 6f 77 73 20 2d 2d  |plate windows --|
0001df50  2d 0d 0f f0 10 dd 20 f2  72 65 64 72 61 77 61 6c  |-..... .redrawal|
0001df60  6c 0d 0f f1 08 ea 20 69  25 0d 0f f2 16 e7 20 4e  |l..... i%..... N|
0001df70  72 54 65 6d 70 6c 61 74  65 73 25 3e 30 20 8c 0d  |rTemplates%>0 ..|
0001df80  0f f3 1f 20 20 e3 20 69  25 3d 30 20 b8 20 28 4e  |...  . i%=0 . (N|
0001df90  72 54 65 6d 70 6c 61 74  65 73 25 2d 31 29 0d 0f  |rTemplates%-1)..|
0001dfa0  f4 1f 20 20 20 20 42 6c  6b 25 21 30 3d 54 65 6d  |..    Blk%!0=Tem|
0001dfb0  70 6c 48 61 6e 64 6c 65  25 28 69 25 29 0d 0f f5  |plHandle%(i%)...|
0001dfc0  26 20 20 20 20 c8 99 20  22 57 69 6d 70 5f 47 65  |&    .. "Wimp_Ge|
0001dfd0  74 57 69 6e 64 6f 77 53  74 61 74 65 22 2c 2c 42  |tWindowState",,B|
0001dfe0  6c 6b 25 0d 0f f6 1f 20  20 20 20 e7 20 28 42 6c  |lk%....    . (Bl|
0001dff0  6b 25 21 33 32 20 80 20  28 31 3c 3c 31 36 29 29  |k%!32 . (1<<16))|
0001e000  20 8c 0d 0f f7 40 20 20  20 20 20 20 c8 99 20 22  | ....@      .. "|
0001e010  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
0001e020  22 2c 2d 31 2c 42 6c 6b  25 21 34 2c 42 6c 6b 25  |",-1,Blk%!4,Blk%|
0001e030  21 38 2c 42 6c 6b 25 21  31 32 2c 42 6c 6b 25 21  |!8,Blk%!12,Blk%!|
0001e040  31 36 0d 0f f8 09 20 20  20 20 cd 0d 0f f9 0a 20  |16....    ..... |
0001e050  20 ed 20 69 25 0d 0f fa  05 cd 0d 0f fb 05 e1 0d  | . i%...........|
0001e060  0f fc 04 0d 0f fd 18 dd  20 f2 73 65 74 6d 61 69  |........ .setmai|
0001e070  6e 66 6e 61 6d 65 28 66  6e 24 29 0d 0f fe 12 4d  |nfname(fn$)....M|
0001e080  61 69 6e 46 4e 61 6d 65  24 3d 66 6e 24 0d 0f ff  |ainFName$=fn$...|
0001e090  1e e7 20 43 68 61 6e 67  65 73 4d 61 64 65 25 20  |.. ChangesMade% |
0001e0a0  8c 20 66 6e 24 2b 3d 22  20 2a 22 0d 10 00 28 f2  |. fn$+=" *"...(.|
0001e0b0  73 65 74 74 69 74 6c 65  62 61 72 28 54 65 6d 70  |settitlebar(Temp|
0001e0c0  6c 57 25 2c 54 65 6d 70  6c 54 62 61 72 25 2c 66  |lW%,TemplTbar%,f|
0001e0d0  6e 24 29 0d 10 01 05 e1  0d 10 02 04 0d 10 03 2b  |n$)............+|
0001e0e0  f4 20 2d 2d 2d 20 73 65  74 20 74 68 65 20 27 63  |. --- set the 'c|
0001e0f0  68 61 6e 67 65 73 20 6d  61 64 65 27 20 73 74 61  |hanges made' sta|
0001e100  74 75 73 20 2d 2d 2d 0d  10 04 1a dd 20 f2 73 65  |tus ---..... .se|
0001e110  74 63 68 61 6e 67 65 64  28 73 77 69 74 63 68 25  |tchanged(switch%|
0001e120  29 0d 10 05 0c ea 20 74  69 74 6c 65 24 0d 10 06  |)..... title$...|
0001e130  1d e7 20 43 68 61 6e 67  65 73 4d 61 64 65 25 3c  |.. ChangesMade%<|
0001e140  3e 73 77 69 74 63 68 25  20 8c 0d 10 07 11 20 20  |>switch% .....  |
0001e150  e7 20 73 77 69 74 63 68  25 20 8c 0d 10 08 21 20  |. switch% ....! |
0001e160  20 20 20 74 69 74 6c 65  24 3d 24 28 54 65 6d 70  |   title$=$(Temp|
0001e170  6c 54 62 61 72 25 29 2b  22 20 2a 22 0d 10 09 07  |lTbar%)+" *"....|
0001e180  20 20 cc 0d 10 0a 31 20  20 20 20 74 69 74 6c 65  |  ....1    title|
0001e190  24 3d c0 24 28 54 65 6d  70 6c 54 62 61 72 25 29  |$=.$(TemplTbar%)|
0001e1a0  2c a9 28 24 28 54 65 6d  70 6c 54 62 61 72 25 29  |,.($(TemplTbar%)|
0001e1b0  29 2d 32 29 0d 10 0b 07  20 20 cd 0d 10 0c 2d 20  |)-2)....  ....- |
0001e1c0  20 f2 73 65 74 74 69 74  6c 65 62 61 72 28 54 65  | .settitlebar(Te|
0001e1d0  6d 70 6c 57 25 2c 54 65  6d 70 6c 54 62 61 72 25  |mplW%,TemplTbar%|
0001e1e0  2c 74 69 74 6c 65 24 29  0d 10 0d 1a 20 20 43 68  |,title$)....  Ch|
0001e1f0  61 6e 67 65 73 4d 61 64  65 25 3d 73 77 69 74 63  |angesMade%=switc|
0001e200  68 25 0d 10 0e 05 cd 0d  10 0f 05 e1 0d 10 10 04  |h%..............|
0001e210  0d 10 11 35 f4 20 2d 2d  2d 20 62 75 69 6c 64 20  |...5. --- build |
0001e220  73 74 72 69 6e 67 20 77  69 74 68 20 69 6e 66 6f  |string with info|
0001e230  20 74 6f 20 73 65 6e 64  20 74 6f 20 21 48 65 6c  | to send to !Hel|
0001e240  70 20 2d 2d 2d 0d 10 12  1a dd 20 a4 69 63 6f 6e  |p ---..... .icon|
0001e250  68 65 6c 70 28 6e 6f 25  2c 69 63 6f 6e 25 29 0d  |help(no%,icon%).|
0001e260  10 13 0e ea 20 68 65 6c  70 24 2c 70 25 0d 10 14  |.... help$,p%...|
0001e270  2c 68 65 6c 70 24 3d 22  54 65 6d 70 6c 61 74 65  |,help$="Template|
0001e280  20 27 22 2b 24 28 54 65  6d 70 6c 4e 61 6d 65 73  | '"+$(TemplNames|
0001e290  25 2b 32 38 2a 6e 6f 25  29 0d 10 15 10 e7 20 69  |%+28*no%)..... i|
0001e2a0  63 6f 6e 25 3e 3d 30 20  8c 0d 10 16 26 20 20 68  |con%>=0 ....&  h|
0001e2b0  65 6c 70 24 2b 3d 22 27  2c 20 49 63 6f 6e 20 23  |elp$+="', Icon #|
0001e2c0  22 2b c3 28 69 63 6f 6e  25 29 2b 22 7c 4d 22 0d  |"+.(icon%)+"|M".|
0001e2d0  10 17 23 20 20 53 63 72  61 70 42 6c 6b 25 21 30  |..#  ScrapBlk%!0|
0001e2e0  3d 54 65 6d 70 6c 48 61  6e 64 6c 65 25 28 6e 6f  |=TemplHandle%(no|
0001e2f0  25 29 0d 10 18 17 20 20  53 63 72 61 70 42 6c 6b  |%)....  ScrapBlk|
0001e300  25 21 34 3d 69 63 6f 6e  25 0d 10 19 27 20 20 c8  |%!4=icon%...'  .|
0001e310  99 20 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |. "Wimp_GetIconS|
0001e320  74 61 74 65 22 2c 2c 53  63 72 61 70 42 6c 6b 25  |tate",,ScrapBlk%|
0001e330  0d 10 1a 19 20 20 66 6c  61 67 73 25 3d 53 63 72  |....  flags%=Scr|
0001e340  61 70 42 6c 6b 25 21 32  34 0d 10 1b 17 20 20 c8  |apBlk%!24....  .|
0001e350  8e 20 28 66 6c 61 67 73  25 20 80 20 33 29 20 ca  |. (flags% . 3) .|
0001e360  0d 10 1c 2b 20 20 20 20  c9 20 30 20 3a 20 68 65  |...+    . 0 : he|
0001e370  6c 70 24 2b 3d 22 4e 6f  6e 2d 74 65 78 74 2c 20  |lp$+="Non-text, |
0001e380  6e 6f 6e 2d 73 70 72 69  74 65 22 0d 10 1d 1b 20  |non-sprite".... |
0001e390  20 20 20 c9 20 31 20 3a  20 68 65 6c 70 24 2b 3d  |   . 1 : help$+=|
0001e3a0  22 54 65 78 74 22 0d 10  1e 1d 20 20 20 20 c9 20  |"Text"....    . |
0001e3b0  32 20 3a 20 68 65 6c 70  24 2b 3d 22 53 70 72 69  |2 : help$+="Spri|
0001e3c0  74 65 22 0d 10 1f 24 20  20 20 20 c9 20 33 20 3a  |te"...$    . 3 :|
0001e3d0  20 68 65 6c 70 24 2b 3d  22 54 65 78 74 20 2b 20  | help$+="Text + |
0001e3e0  53 70 72 69 74 65 22 0d  10 20 07 20 20 cb 0d 10  |Sprite".. .  ...|
0001e3f0  21 16 20 20 68 65 6c 70  24 2b 3d 22 20 69 63 6f  |!.  help$+=" ico|
0001e400  6e 2c 20 22 0d 10 22 19  20 20 e7 20 28 66 6c 61  |n, "..".  . (fla|
0001e410  67 73 25 20 80 20 26 31  30 30 29 20 8c 0d 10 23  |gs% . &100) ...#|
0001e420  3d 20 20 20 20 68 65 6c  70 24 2b 3d 22 49 6e 64  |=    help$+="Ind|
0001e430  69 72 65 63 74 65 64 20  28 6d 61 78 2e 20 73 69  |irected (max. si|
0001e440  7a 65 20 22 2b c3 28 53  63 72 61 70 42 6c 6b 25  |ze "+.(ScrapBlk%|
0001e450  21 33 36 29 2b 22 29 7c  4d 22 0d 10 24 18 20 20  |!36)+")|M"..$.  |
0001e460  20 20 e7 20 28 66 6c 61  67 73 25 20 80 20 31 29  |  . (flags% . 1)|
0001e470  20 8c 0d 10 25 1d 20 20  20 20 20 20 e7 20 53 63  | ...%.      . Sc|
0001e480  72 61 70 42 6c 6b 25 21  33 32 3d 2d 31 20 8c 0d  |rapBlk%!32=-1 ..|
0001e490  10 26 29 20 20 20 20 20  20 20 20 68 65 6c 70 24  |.&)        help$|
0001e4a0  2b 3d 22 4e 6f 20 76 61  6c 69 64 61 74 69 6f 6e  |+="No validation|
0001e4b0  20 73 74 72 69 6e 67 22  0d 10 27 0b 20 20 20 20  | string"..'.    |
0001e4c0  20 20 cc 0d 10 28 3d 20  20 20 20 20 20 20 20 68  |  ...(=        h|
0001e4d0  65 6c 70 24 2b 3d 22 56  61 6c 69 64 61 74 69 6f  |elp$+="Validatio|
0001e4e0  6e 20 73 74 72 69 6e 67  3a 20 27 22 2b 24 28 53  |n string: '"+$(S|
0001e4f0  63 72 61 70 42 6c 6b 25  21 33 32 29 2b 22 27 22  |crapBlk%!32)+"'"|
0001e500  0d 10 29 0b 20 20 20 20  20 20 cd 0d 10 2a 09 20  |..).      ...*. |
0001e510  20 20 20 cd 0d 10 2b 07  20 20 cc 0d 10 2c 22 20  |   ...+.  ...," |
0001e520  20 20 20 68 65 6c 70 24  2b 3d 22 4e 6f 6e 2d 69  |   help$+="Non-i|
0001e530  6e 64 69 72 65 63 74 65  64 7c 4d 20 22 0d 10 2d  |ndirected|M "..-|
0001e540  07 20 20 cd 0d 10 2e 42  20 20 68 65 6c 70 24 2b  |.  ....B  help$+|
0001e550  3d 22 7c 4d 42 75 74 74  6f 6e 20 74 79 70 65 3a  |="|MButton type:|
0001e560  20 27 22 2b 24 28 49 63  42 75 74 74 6f 6e 25 2b  | '"+$(IcButton%+|
0001e570  32 30 2a 28 28 66 6c 61  67 73 25 3e 3e 31 32 29  |20*((flags%>>12)|
0001e580  80 20 26 46 29 29 0d 10  2f 2c 20 20 68 65 6c 70  |. &F))../,  help|
0001e590  24 2b 3d 22 27 2c 20 45  53 47 3a 20 22 2b c3 28  |$+="', ESG: "+.(|
0001e5a0  28 66 6c 61 67 73 25 3e  3e 31 36 29 80 20 26 31  |(flags%>>16). &1|
0001e5b0  46 29 0d 10 30 19 20 20  e7 20 4f 53 76 65 72 73  |F)..0.  . OSvers|
0001e5c0  69 6f 6e 25 3e 3d 33 30  30 20 8c 0d 10 31 4a 20  |ion%>=300 ...1J |
0001e5d0  20 20 20 f4 20 72 65 70  6c 61 63 65 20 22 5c 22  |   . replace "\"|
0001e5e0  20 77 69 74 68 20 22 5c  5c 22 2c 20 65 6c 73 65  | with "\\", else|
0001e5f0  20 21 48 65 6c 70 20 28  52 69 73 63 4f 53 20 33  | !Help (RiscOS 3|
0001e600  29 20 74 68 69 6e 6b 73  20 69 74 27 73 20 61 20  |) thinks it's a |
0001e610  74 6f 6b 65 6e 0d 10 32  16 20 20 20 20 70 25 3d  |token..2.    p%=|
0001e620  a7 68 65 6c 70 24 2c 22  5c 22 29 0d 10 33 10 20  |.help$,"\")..3. |
0001e630  20 20 20 c8 95 20 70 25  3c 3e 30 0d 10 34 2b 20  |   .. p%<>0..4+ |
0001e640  20 20 20 20 20 68 65 6c  70 24 3d c0 68 65 6c 70  |     help$=.help|
0001e650  24 2c 70 25 29 2b 22 5c  22 2b c1 68 65 6c 70 24  |$,p%)+"\"+.help$|
0001e660  2c 70 25 2b 31 29 0d 10  35 1d 20 20 20 20 20 20  |,p%+1)..5.      |
0001e670  70 25 3d a7 68 65 6c 70  24 2c 22 5c 22 2c 70 25  |p%=.help$,"\",p%|
0001e680  2b 32 29 0d 10 36 09 20  20 20 20 ce 0d 10 37 07  |+2)..6.    ...7.|
0001e690  20 20 cd 0d 10 38 05 cc  0d 10 39 21 20 20 57 69  |  ...8....9!  Wi|
0001e6a0  6e 42 6c 6b 25 21 30 3d  54 65 6d 70 6c 48 61 6e  |nBlk%!0=TemplHan|
0001e6b0  64 6c 65 25 28 6e 6f 25  29 0d 10 3a 26 20 20 c8  |dle%(no%)..:&  .|
0001e6c0  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
0001e6d0  77 49 6e 66 6f 22 2c 2c  57 69 6e 42 6c 6b 25 0d  |wInfo",,WinBlk%.|
0001e6e0  10 3b 33 20 20 68 65 6c  70 24 2b 3d 22 27 2c 20  |.;3  help$+="', |
0001e6f0  57 69 6e 64 6f 77 20 62  61 63 6b 67 72 6f 75 6e  |Window backgroun|
0001e700  64 7c 4d 42 75 74 74 6f  6e 20 74 79 70 65 3a 20  |d|MButton type: |
0001e710  27 22 0d 10 3c 3a 20 20  68 65 6c 70 24 2b 3d 24  |'"..<:  help$+=$|
0001e720  28 57 69 6e 42 75 74 74  6f 6e 25 2b 32 30 2a 28  |(WinButton%+20*(|
0001e730  28 28 57 69 6e 42 6c 6b  25 21 36 34 29 3e 3e 31  |((WinBlk%!64)>>1|
0001e740  32 29 80 20 26 46 29 29  2b 22 27 22 0d 10 3d 05  |2). &F))+"'"..=.|
0001e750  cd 0d 10 3e 0a 3d 68 65  6c 70 24 0d 10 3f 04 0d  |...>.=help$..?..|
0001e760  10 40 2f f4 20 2d 2d 2d  20 73 63 68 65 64 75 6c  |.@/. --- schedul|
0001e770  65 20 74 68 65 20 63 6c  6f 73 65 64 6f 77 6e 20  |e the closedown |
0001e780  6f 66 20 54 65 6d 70 6c  45 64 20 2d 2d 2d 0d 10  |of TemplEd ---..|
0001e790  41 18 dd 20 f2 70 72 65  71 75 69 74 28 64 65 6c  |A.. .prequit(del|
0001e7a0  61 79 65 64 25 29 0d 10  42 1e 50 6f 6c 6c 4d 61  |ayed%)..B.PollMa|
0001e7b0  73 6b 25 3d 50 6f 6c 6c  4d 61 73 6b 25 20 80 28  |sk%=PollMask% .(|
0001e7c0  ac 20 31 29 0d 10 43 0b  51 75 69 74 25 3d b9 0d  |. 1)..C.Quit%=..|
0001e7d0  10 44 10 e7 20 64 65 6c  61 79 65 64 25 20 8c 0d  |.D.. delayed% ..|
0001e7e0  10 45 3a 20 20 f4 20 64  65 6c 61 79 65 64 20 71  |.E:  . delayed q|
0001e7f0  75 69 74 20 69 73 20 61  20 77 6f 72 6b 61 72 6f  |uit is a workaro|
0001e800  75 6e 64 20 66 6f 72 20  62 75 67 20 69 6e 20 52  |und for bug in R|
0001e810  69 73 63 4f 53 20 33 2e  31 0d 10 46 1a 20 20 51  |iscOS 3.1..F.  Q|
0001e820  75 69 74 44 65 61 64 6c  69 6e 65 25 3d 91 2b 36  |uitDeadline%=.+6|
0001e830  30 20 20 0d 10 47 05 cc  0d 10 48 15 20 20 51 75  |0  ..G....H.  Qu|
0001e840  69 74 44 65 61 64 6c 69  6e 65 25 3d 91 0d 10 49  |itDeadline%=...I|
0001e850  05 cd 0d 10 4a 05 e1 0d  10 4b 04 0d 10 4c 44 f4  |....J....K...LD.|
0001e860  20 2d 2d 2d 20 73 65 6e  64 20 68 65 6c 70 2d 72  | --- send help-r|
0001e870  65 71 75 65 73 74 20 74  6f 20 53 74 72 6f 6e 67  |equest to Strong|
0001e880  48 65 6c 70 2c 20 66 6f  72 20 68 65 6c 70 20 6f  |Help, for help o|
0001e890  6e 20 61 20 73 75 62 6a  65 63 74 20 2d 2d 2d 0d  |n a subject ---.|
0001e8a0  10 4d 17 dd 20 f2 61 73  6b 68 65 6c 70 28 73 74  |.M.. .askhelp(st|
0001e8b0  72 69 6e 67 24 29 0d 10  4e 0e 42 6c 6b 25 21 30  |ring$)..N.Blk%!0|
0001e8c0  3d 32 35 36 0d 10 4f 0d  42 6c 6b 25 21 31 32 3d  |=256..O.Blk%!12=|
0001e8d0  30 0d 10 50 12 42 6c 6b  25 21 31 36 3d 26 34 33  |0..P.Blk%!16=&43|
0001e8e0  42 30 30 0d 10 51 26 24  28 42 6c 6b 25 2b 32 30  |B00..Q&$(Blk%+20|
0001e8f0  29 3d 22 48 65 6c 70 5f  57 6f 72 64 20 22 2b 73  |)="Help_Word "+s|
0001e900  74 72 69 6e 67 24 2b bd  30 0d 10 52 23 c8 99 20  |tring$+.0..R#.. |
0001e910  22 57 69 6d 70 5f 53 65  6e 64 4d 65 73 73 61 67  |"Wimp_SendMessag|
0001e920  65 22 2c 31 37 2c 42 6c  6b 25 2c 30 0d 10 53 05  |e",17,Blk%,0..S.|
0001e930  e1 0d 10 54 04 0d 10 55  28 f4 20 2a 2a 2a 20 70  |...T...U(. *** p|
0001e940  72 6f 63 73 20 66 6f 72  20 73 61 76 69 6e 67 20  |rocs for saving |
0001e950  74 65 6d 70 6c 61 74 65  73 20 2a 2a 2a 0d 10 56  |templates ***..V|
0001e960  04 0d 10 57 1c dd 20 f2  73 61 76 65 74 65 6d 70  |...W.. .savetemp|
0001e970  6c 61 74 65 73 28 66 6e  61 6d 65 24 29 0d 10 58  |lates(fname$)..X|
0001e980  19 ea 20 68 61 6e 64 6c  65 25 2c 6f 66 66 73 65  |.. handle%,offse|
0001e990  74 25 2c 6e 6f 25 0d 10  59 07 ea 20 85 0d 10 5a  |t%,no%..Y.. ...Z|
0001e9a0  33 e7 20 28 a7 66 6e 61  6d 65 24 2c 22 2e 22 29  |3. (.fname$,".")|
0001e9b0  3d 30 29 20 80 20 28 66  6e 61 6d 65 24 3c 3e 22  |=0) . (fname$<>"|
0001e9c0  3c 57 69 6d 70 24 53 63  72 61 70 3e 22 29 20 8c  |<Wimp$Scrap>") .|
0001e9d0  0d 10 5b 25 20 20 f2 63  6f 6d 70 6c 61 69 6e 28  |..[%  .complain(|
0001e9e0  a4 6d 73 67 5f 6c 6f 6f  6b 75 70 30 28 22 49 53  |.msg_lookup0("IS|
0001e9f0  4c 46 22 29 29 0d 10 5c  05 cc 0d 10 5d 17 20 20  |LF"))..\....].  |
0001ea00  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |.. "Hourglass_On|
0001ea10  22 0d 10 5e 35 20 20 f2  73 61 76 65 5f 69 6e 69  |"..^5  .save_ini|
0001ea20  74 28 66 6e 61 6d 65 24  2c 4e 72 54 65 6d 70 6c  |t(fname$,NrTempl|
0001ea30  61 74 65 73 25 2c 68 61  6e 64 6c 65 25 2c 6f 66  |ates%,handle%,of|
0001ea40  66 73 65 74 25 29 0d 10  5f 26 20 20 ee 20 85 20  |fset%).._&  . . |
0001ea50  ea 20 d9 20 23 68 61 6e  64 6c 65 25 20 3a 20 f2  |. . #handle% : .|
0001ea60  65 72 72 6f 72 28 30 29  20 3a 20 e1 0d 10 60 1e  |error(0) : ...`.|
0001ea70  20 20 e3 20 6e 6f 25 3d  30 20 b8 20 4e 72 54 65  |  . no%=0 . NrTe|
0001ea80  6d 70 6c 61 74 65 73 25  2d 31 0d 10 61 3f 20 20  |mplates%-1..a?  |
0001ea90  20 20 e7 20 28 ac 20 53  61 76 69 6e 67 53 65 6c  |  . (. SavingSel|
0001eaa0  65 63 74 69 6f 6e 25 29  20 84 20 28 a4 69 63 6f  |ection%) . (.ico|
0001eab0  6e 73 65 6c 65 63 74 65  64 28 54 65 6d 70 6c 57  |nselected(TemplW|
0001eac0  25 2c 6e 6f 25 29 29 20  8c 0d 10 62 2d 20 20 20  |%,no%)) ...b-   |
0001ead0  20 20 20 f2 73 61 76 65  5f 74 65 6d 70 6c 61 74  |   .save_templat|
0001eae0  65 28 6e 6f 25 2c 68 61  6e 64 6c 65 25 2c 6f 66  |e(no%,handle%,of|
0001eaf0  66 73 65 74 25 29 0d 10  63 09 20 20 20 20 cd 0d  |fset%)..c.    ..|
0001eb00  10 64 0b 20 20 ed 20 6e  6f 25 0d 10 65 23 20 20  |.d.  . no%..e#  |
0001eb10  f2 73 61 76 65 5f 66 69  6e 69 73 68 28 68 61 6e  |.save_finish(han|
0001eb20  64 6c 65 25 2c 6f 66 66  73 65 74 25 29 0d 10 66  |dle%,offset%)..f|
0001eb30  21 20 20 c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |!  .. "OS_File",|
0001eb40  31 38 2c 66 6e 61 6d 65  24 2c 26 46 45 43 0d 10  |18,fname$,&FEC..|
0001eb50  67 18 20 20 c8 99 20 22  48 6f 75 72 67 6c 61 73  |g.  .. "Hourglas|
0001eb60  73 5f 4f 66 66 22 0d 10  68 2a 20 20 e7 20 66 6e  |s_Off"..h*  . fn|
0001eb70  61 6d 65 24 3d 4d 61 69  6e 46 4e 61 6d 65 24 20  |ame$=MainFName$ |
0001eb80  8c 20 f2 73 65 74 63 68  61 6e 67 65 64 28 a3 29  |. .setchanged(.)|
0001eb90  0d 10 69 05 cd 0d 10 6a  1c c8 99 20 22 57 69 6d  |..i....j... "Wim|
0001eba0  70 5f 43 72 65 61 74 65  4d 65 6e 75 22 2c 2c 2d  |p_CreateMenu",,-|
0001ebb0  31 0d 10 6b 22 e7 20 51  75 69 74 41 66 74 65 72  |1..k". QuitAfter|
0001ebc0  53 61 76 65 25 20 8c 20  f2 70 72 65 71 75 69 74  |Save% . .prequit|
0001ebd0  28 31 29 0d 10 6c 05 e1  0d 10 6d 04 0d 10 6e 35  |(1)..l....m...n5|
0001ebe0  dd 20 f2 73 61 76 65 5f  69 6e 69 74 28 66 6e 61  |. .save_init(fna|
0001ebf0  6d 65 24 2c 6e 72 74 65  6d 70 6c 25 2c f8 20 68  |me$,nrtempl%,. h|
0001ec00  61 6e 64 6c 65 25 2c f8  20 6f 66 66 73 65 74 25  |andle%,. offset%|
0001ec10  29 0d 10 6f 08 ea 20 69  25 0d 10 70 15 53 61 76  |)..o.. i%..p.Sav|
0001ec20  65 5f 49 6e 64 65 78 4f  66 73 25 3d 31 36 0d 10  |e_IndexOfs%=16..|
0001ec30  71 1d e3 20 69 25 3d 30  20 b8 20 46 69 6c 65 49  |q.. i%=0 . FileI|
0001ec40  6e 64 65 78 53 69 7a 65  25 2d 31 0d 10 72 15 20  |ndexSize%-1..r. |
0001ec50  20 46 69 6c 65 49 6e 64  65 78 25 3f 69 25 3d 30  | FileIndex%?i%=0|
0001ec60  0d 10 73 08 ed 20 69 25  0d 10 74 48 f4 20 73 65  |..s.. i%..tH. se|
0001ec70  74 20 75 70 20 74 72 61  6e 73 6c 61 74 69 6f 6e  |t up translation|
0001ec80  20 74 61 62 6c 65 20 66  6f 72 20 66 6f 6e 74 20  | table for font |
0001ec90  68 61 6e 64 6c 65 73 20  2d 3e 20 69 6e 74 65 72  |handles -> inter|
0001eca0  6e 61 6c 20 66 6f 6e 74  20 68 61 6e 64 6c 65 73  |nal font handles|
0001ecb0  0d 10 75 10 e3 20 69 25  3d 30 20 b8 20 32 35 35  |..u.. i%=0 . 255|
0001ecc0  0d 10 76 0f 20 20 46 72  61 25 3f 69 25 3d 30 0d  |..v.  Fra%?i%=0.|
0001ecd0  10 77 08 ed 20 69 25 0d  10 78 13 53 61 76 65 5f  |.w.. i%..x.Save_|
0001ece0  4e 72 46 6f 6e 74 73 25  3d 30 0d 10 79 32 46 69  |NrFonts%=0..y2Fi|
0001ecf0  6c 65 49 6e 64 65 78 25  21 30 3d 2d 31 20 20 20  |leIndex%!0=-1   |
0001ed00  20 20 20 20 20 20 20 3a  20 f4 20 6e 6f 20 66 6f  |       : . no fo|
0001ed10  6e 74 73 20 28 73 6f 20  66 61 72 29 0d 10 7a 4c  |nts (so far)..zL|
0001ed20  6f 66 66 73 65 74 25 3d  31 36 2b 6e 72 74 65 6d  |offset%=16+nrtem|
0001ed30  70 6c 25 2a 32 34 2b 34  20 3a 20 f4 20 73 6b 69  |pl%*24+4 : . ski|
0001ed40  70 20 66 69 72 73 74 20  70 61 72 74 20 6f 66 20  |p first part of |
0001ed50  66 69 6c 65 20 28 69 6e  64 65 78 20 73 61 76 65  |file (index save|
0001ed60  64 20 6c 61 74 65 72 29  0d 10 7b 14 68 61 6e 64  |d later)..{.hand|
0001ed70  6c 65 25 3d ae 20 66 6e  61 6d 65 24 0d 10 7c 05  |le%=. fname$..|.|
0001ed80  e1 0d 10 7d 04 0d 10 7e  2b dd 20 f2 73 61 76 65  |...}...~+. .save|
0001ed90  5f 74 65 6d 70 6c 61 74  65 28 6e 6f 25 2c 68 61  |_template(no%,ha|
0001eda0  6e 64 6c 65 25 2c f8 20  6f 66 66 73 65 74 25 29  |ndle%,. offset%)|
0001edb0  0d 10 7f 1e ea 20 6e 72  69 63 6f 6e 73 25 2c 69  |..... nricons%,i|
0001edc0  25 2c 64 61 74 61 6f 66  73 25 2c 69 62 25 0d 10  |%,dataofs%,ib%..|
0001edd0  80 27 46 69 6c 65 49 6e  64 65 78 25 21 28 53 61  |.'FileIndex%!(Sa|
0001ede0  76 65 5f 49 6e 64 65 78  4f 66 73 25 29 3d 6f 66  |ve_IndexOfs%)=of|
0001edf0  66 73 65 74 25 0d 10 81  23 46 69 6c 65 49 6e 64  |fset%...#FileInd|
0001ee00  65 78 25 21 28 53 61 76  65 5f 49 6e 64 65 78 4f  |ex%!(Save_IndexO|
0001ee10  66 73 25 2b 38 29 3d 31  0d 10 82 39 24 28 46 69  |fs%+8)=1...9$(Fi|
0001ee20  6c 65 49 6e 64 65 78 25  2b 53 61 76 65 5f 49 6e  |leIndex%+Save_In|
0001ee30  64 65 78 4f 66 73 25 2b  31 32 29 3d 24 28 54 65  |dexOfs%+12)=$(Te|
0001ee40  6d 70 6c 4e 61 6d 65 73  25 2b 32 38 2a 6e 6f 25  |mplNames%+28*no%|
0001ee50  29 0d 10 83 1f 57 69 6e  42 6c 6b 25 21 30 3d 54  |)....WinBlk%!0=T|
0001ee60  65 6d 70 6c 48 61 6e 64  6c 65 25 28 6e 6f 25 29  |emplHandle%(no%)|
0001ee70  0d 10 84 24 c8 99 20 22  57 69 6d 70 5f 47 65 74  |...$.. "Wimp_Get|
0001ee80  57 69 6e 64 6f 77 49 6e  66 6f 22 2c 2c 57 69 6e  |WindowInfo",,Win|
0001ee90  42 6c 6b 25 0d 10 85 15  e7 20 50 61 6e 65 46 6c  |Blk%..... PaneFl|
0001eea0  61 67 25 3f 6e 6f 25 20  8c 0d 10 86 3c 20 20 57  |ag%?no% ....<  W|
0001eeb0  69 6e 42 6c 6b 25 21 33  32 3d 57 69 6e 42 6c 6b  |inBlk%!32=WinBlk|
0001eec0  25 21 33 32 20 84 20 28  31 3c 3c 35 29 20 3a 20  |%!32 . (1<<5) : |
0001eed0  f4 20 72 65 73 74 6f 72  65 20 27 50 61 6e 65 27  |. restore 'Pane'|
0001eee0  20 66 6c 61 67 0d 10 87  05 cd 0d 10 88 17 6e 72  | flag.........nr|
0001eef0  69 63 6f 6e 73 25 3d 57  69 6e 42 6c 6b 25 21 38  |icons%=WinBlk%!8|
0001ef00  38 0d 10 89 1b 64 61 74  61 6f 66 73 25 3d 38 38  |8....dataofs%=88|
0001ef10  2b 33 32 2a 6e 72 69 63  6f 6e 73 25 0d 10 8a 36  |+32*nricons%...6|
0001ef20  57 69 6e 42 6c 6b 25 21  36 38 3d 31 20 3a 20 f4  |WinBlk%!68=1 : .|
0001ef30  20 72 65 73 65 74 20 73  70 72 69 74 65 20 70 6f  | reset sprite po|
0001ef40  69 6e 74 65 72 20 74 6f  20 57 69 6d 70 20 61 72  |inter to Wimp ar|
0001ef50  65 61 0d 10 8b 33 f2 73  61 76 65 5f 74 72 61 6e  |ea...3.save_tran|
0001ef60  73 6c 61 74 65 28 57 69  6e 42 6c 6b 25 2b 36 30  |slate(WinBlk%+60|
0001ef70  2c 57 69 6e 42 6c 6b 25  2b 37 36 2c 64 61 74 61  |,WinBlk%+76,data|
0001ef80  6f 66 73 25 29 0d 10 8c  12 e7 20 6e 72 69 63 6f  |ofs%)..... nrico|
0001ef90  6e 73 25 3e 30 20 8c 0d  10 8d 19 20 20 e3 20 69  |ns%>0 .....  . i|
0001efa0  25 3d 30 20 b8 20 6e 72  69 63 6f 6e 73 25 2d 31  |%=0 . nricons%-1|
0001efb0  0d 10 8e 1c 20 20 20 20  69 62 25 3d 57 69 6e 42  |....    ib%=WinB|
0001efc0  6c 6b 25 2b 39 32 2b 69  25 2a 33 32 0d 10 8f 2f  |lk%+92+i%*32.../|
0001efd0  20 20 20 20 f2 73 61 76  65 5f 74 72 61 6e 73 6c  |    .save_transl|
0001efe0  61 74 65 28 69 62 25 2b  31 36 2c 69 62 25 2b 32  |ate(ib%+16,ib%+2|
0001eff0  30 2c 64 61 74 61 6f 66  73 25 29 0d 10 90 1c 20  |0,dataofs%).... |
0001f000  20 20 20 e7 20 53 61 76  65 5f 55 6e 73 65 6c 65  |   . Save_Unsele|
0001f010  63 74 65 64 25 20 8c 0d  10 91 24 20 20 20 20 20  |cted% ....$     |
0001f020  20 69 62 25 21 31 36 3d  69 62 25 21 31 36 20 80  | ib%!16=ib%!16 .|
0001f030  20 28 ac 28 31 3c 3c 32  31 29 29 0d 10 92 09 20  | (.(1<<21)).... |
0001f040  20 20 20 cd 0d 10 93 0a  20 20 ed 20 69 25 0d 10  |   .....  . i%..|
0001f050  94 05 cd 0d 10 95 49 c8  99 20 22 4f 53 5f 47 42  |......I.. "OS_GB|
0001f060  50 42 22 2c 31 2c 68 61  6e 64 6c 65 25 2c 57 69  |PB",1,handle%,Wi|
0001f070  6e 42 6c 6b 25 2b 34 2c  38 38 2b 33 32 2a 6e 72  |nBlk%+4,88+32*nr|
0001f080  69 63 6f 6e 73 25 2c 6f  66 66 73 65 74 25 20 b8  |icons%,offset% .|
0001f090  20 2c 2c 2c 2c 6f 66 66  73 65 74 25 0d 10 96 24  | ,,,,offset%...$|
0001f0a0  c8 99 20 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |.. "Wimp_GetWind|
0001f0b0  6f 77 49 6e 66 6f 22 2c  2c 57 69 6e 42 6c 6b 25  |owInfo",,WinBlk%|
0001f0c0  0d 10 97 37 f2 73 61 76  65 5f 69 63 6f 6e 28 57  |...7.save_icon(W|
0001f0d0  69 6e 42 6c 6b 25 21 28  36 30 29 2c 57 69 6e 42  |inBlk%!(60),WinB|
0001f0e0  6c 6b 25 2b 37 36 2c 68  61 6e 64 6c 65 25 2c 6f  |lk%+76,handle%,o|
0001f0f0  66 66 73 65 74 25 29 0d  10 98 12 e7 20 6e 72 69  |ffset%)..... nri|
0001f100  63 6f 6e 73 25 3e 30 20  8c 0d 10 99 19 20 20 e3  |cons%>0 .....  .|
0001f110  20 69 25 3d 30 20 b8 20  6e 72 69 63 6f 6e 73 25  | i%=0 . nricons%|
0001f120  2d 31 0d 10 9a 4d 20 20  20 20 f2 73 61 76 65 5f  |-1...M    .save_|
0001f130  69 63 6f 6e 28 57 69 6e  42 6c 6b 25 21 28 39 32  |icon(WinBlk%!(92|
0001f140  2b 69 25 2a 33 32 2b 31  36 29 2c 57 69 6e 42 6c  |+i%*32+16),WinBl|
0001f150  6b 25 2b 39 32 2b 69 25  2a 33 32 2b 32 30 2c 68  |k%+92+i%*32+20,h|
0001f160  61 6e 64 6c 65 25 2c 6f  66 66 73 65 74 25 29 0d  |andle%,offset%).|
0001f170  10 9b 0a 20 20 ed 20 69  25 0d 10 9c 05 cd 0d 10  |...  . i%.......|
0001f180  9d 45 46 69 6c 65 49 6e  64 65 78 25 21 28 53 61  |.EFileIndex%!(Sa|
0001f190  76 65 5f 49 6e 64 65 78  4f 66 73 25 2b 34 29 3d  |ve_IndexOfs%+4)=|
0001f1a0  6f 66 66 73 65 74 25 2d  46 69 6c 65 49 6e 64 65  |offset%-FileInde|
0001f1b0  78 25 21 28 53 61 76 65  5f 49 6e 64 65 78 4f 66  |x%!(Save_IndexOf|
0001f1c0  73 25 29 0d 10 9e 16 53  61 76 65 5f 49 6e 64 65  |s%)....Save_Inde|
0001f1d0  78 4f 66 73 25 2b 3d 32  34 0d 10 9f 05 e1 0d 10  |xOfs%+=24.......|
0001f1e0  a0 04 0d 10 a1 4f f4 20  2d 2d 2d 20 74 72 61 6e  |.....O. --- tran|
0001f1f0  73 6c 61 74 65 20 64 61  74 61 20 69 6e 20 69 63  |slate data in ic|
0001f200  6f 6e 20 62 6c 6f 63 6b  20 28 69 6e 64 69 72 65  |on block (indire|
0001f210  63 74 65 64 20 70 6f 69  6e 74 65 72 73 20 2b 20  |cted pointers + |
0001f220  66 6f 6e 74 20 68 61 6e  64 6c 65 73 29 20 2d 2d  |font handles) --|
0001f230  2d 0d 10 a2 30 dd 20 f2  73 61 76 65 5f 74 72 61  |-...0. .save_tra|
0001f240  6e 73 6c 61 74 65 28 66  6c 61 67 70 74 72 25 2c  |nslate(flagptr%,|
0001f250  64 61 74 61 25 2c f8 20  64 61 74 61 6f 66 73 25  |data%,. dataofs%|
0001f260  29 0d 10 a3 24 ea 20 66  6c 61 67 73 25 2c 73 6c  |)...$. flags%,sl|
0001f270  25 2c 66 68 61 6e 64 6c  65 25 2c 69 6e 74 68 61  |%,fhandle%,intha|
0001f280  6e 64 6c 65 25 0d 10 a4  15 66 6c 61 67 73 25 3d  |ndle%....flags%=|
0001f290  66 6c 61 67 70 74 72 25  21 30 0d 10 a5 1c e7 20  |flagptr%!0..... |
0001f2a0  28 66 6c 61 67 73 25 20  80 20 28 31 3c 3c 32 33  |(flags% . (1<<23|
0001f2b0  29 29 3e 30 20 8c 0d 10  a6 36 20 20 f4 20 69 63  |))>0 ....6  . ic|
0001f2c0  6f 6e 20 68 61 73 20 62  65 65 6e 20 64 65 6c 65  |on has been dele|
0001f2d0  74 65 64 20 2d 20 66 69  6c 6c 20 77 69 74 68 20  |ted - fill with |
0001f2e0  64 65 66 61 75 6c 74 20  64 61 74 61 0d 10 a7 1a  |default data....|
0001f2f0  20 20 66 6c 61 67 70 74  72 25 21 30 3d 26 30 37  |  flagptr%!0=&07|
0001f300  38 30 30 30 30 31 0d 10  a8 1a 20 20 24 28 64 61  |800001....  $(da|
0001f310  74 61 25 29 3d 22 3c 44  65 6c 65 74 65 64 3e 22  |ta%)="<Deleted>"|
0001f320  0d 10 a9 05 cc 0d 10 aa  39 20 20 f4 20 31 2e 20  |........9  . 1. |
0001f330  63 61 6c 63 75 6c 61 74  65 20 66 69 6c 65 20 6f  |calculate file o|
0001f340  66 66 73 65 74 20 66 6f  72 20 69 6e 64 69 72 65  |ffset for indire|
0001f350  63 74 65 64 20 69 63 6f  6e 20 64 61 74 61 0d 10  |cted icon data..|
0001f360  ab 1e 20 20 e7 20 28 66  6c 61 67 73 25 20 80 20  |..  . (flags% . |
0001f370  26 31 30 30 29 3d 26 31  30 30 20 8c 0d 10 ac 19  |&100)=&100 .....|
0001f380  20 20 20 20 c8 8e 20 28  66 6c 61 67 73 25 20 80  |    .. (flags% .|
0001f390  20 33 29 20 ca 0d 10 ad  0d 20 20 20 20 20 20 c9  | 3) .....      .|
0001f3a0  20 30 0d 10 ae 4c 20 20  20 20 20 20 20 20 64 61  | 0...L        da|
0001f3b0  74 61 25 21 30 3d 64 61  74 61 6f 66 73 25 20 20  |ta%!0=dataofs%  |
0001f3c0  20 3a 20 f4 20 64 65 66  61 75 6c 74 20 64 61 74  | : . default dat|
0001f3d0  61 20 66 6f 72 20 6e 6f  6e 2d 74 65 78 74 2c 6e  |a for non-text,n|
0001f3e0  6f 6e 2d 73 70 72 69 74  65 20 69 63 6f 6e 0d 10  |on-sprite icon..|
0001f3f0  af 45 20 20 20 20 20 20  20 20 64 61 74 61 6f 66  |.E        dataof|
0001f400  73 25 2b 3d 31 20 20 20  20 20 20 20 20 3a 20 f4  |s%+=1        : .|
0001f410  20 65 6d 70 74 79 20 73  74 72 69 6e 67 2c 20 31  | empty string, 1|
0001f420  20 63 68 61 72 20 69 73  20 74 65 72 6d 69 6e 61  | char is termina|
0001f430  74 6f 72 0d 10 b0 16 20  20 20 20 20 20 20 20 64  |tor....        d|
0001f440  61 74 61 25 21 34 3d 2d  31 0d 10 b1 0d 20 20 20  |ata%!4=-1....   |
0001f450  20 20 20 c9 20 32 0d 10  b2 1d 20 20 20 20 20 20  |   . 2....      |
0001f460  20 20 73 6c 25 3d a9 28  24 28 64 61 74 61 25 21  |  sl%=.($(data%!|
0001f470  30 29 29 0d 10 b3 1c 20  20 20 20 20 20 20 20 64  |0))....        d|
0001f480  61 74 61 25 21 30 3d 64  61 74 61 6f 66 73 25 0d  |ata%!0=dataofs%.|
0001f490  10 b4 1b 20 20 20 20 20  20 20 20 64 61 74 61 6f  |...        datao|
0001f4a0  66 73 25 2b 3d 73 6c 25  2b 31 0d 10 b5 44 20 20  |fs%+=sl%+1...D  |
0001f4b0  20 20 20 20 20 20 64 61  74 61 25 21 34 3d 31 20  |      data%!4=1 |
0001f4c0  20 20 20 20 20 20 20 20  20 3a 20 f4 20 72 65 73  |         : . res|
0001f4d0  65 74 20 73 70 72 69 74  65 20 70 6f 69 6e 74 65  |et sprite pointe|
0001f4e0  72 20 74 6f 20 57 69 6d  70 20 61 72 65 61 0d 10  |r to Wimp area..|
0001f4f0  b6 0f 20 20 20 20 20 20  c9 20 31 2c 33 0d 10 b7  |..      . 1,3...|
0001f500  1d 20 20 20 20 20 20 20  20 73 6c 25 3d a9 28 24  |.        sl%=.($|
0001f510  28 64 61 74 61 25 21 30  29 29 0d 10 b8 1c 20 20  |(data%!0))....  |
0001f520  20 20 20 20 20 20 64 61  74 61 25 21 30 3d 64 61  |      data%!0=da|
0001f530  74 61 6f 66 73 25 0d 10  b9 1b 20 20 20 20 20 20  |taofs%....      |
0001f540  20 20 64 61 74 61 6f 66  73 25 2b 3d 73 6c 25 2b  |  dataofs%+=sl%+|
0001f550  31 0d 10 ba 1b 20 20 20  20 20 20 20 20 e7 20 64  |1....        . d|
0001f560  61 74 61 25 21 34 3c 3e  2d 31 20 8c 0d 10 bb 1f  |ata%!4<>-1 .....|
0001f570  20 20 20 20 20 20 20 20  20 20 73 6c 25 3d a9 28  |          sl%=.(|
0001f580  24 28 64 61 74 61 25 21  34 29 29 0d 10 bc 1e 20  |$(data%!4)).... |
0001f590  20 20 20 20 20 20 20 20  20 64 61 74 61 25 21 34  |         data%!4|
0001f5a0  3d 64 61 74 61 6f 66 73  25 0d 10 bd 1d 20 20 20  |=dataofs%....   |
0001f5b0  20 20 20 20 20 20 20 64  61 74 61 6f 66 73 25 2b  |       dataofs%+|
0001f5c0  3d 73 6c 25 2b 31 0d 10  be 0d 20 20 20 20 20 20  |=sl%+1....      |
0001f5d0  20 20 cd 0d 10 bf 09 20  20 20 20 cb 0d 10 c0 07  |  .....    .....|
0001f5e0  20 20 cd 0d 10 c1 33 20  20 f4 20 32 2e 20 74 72  |  ....3  . 2. tr|
0001f5f0  61 6e 73 6c 61 74 65 20  66 6f 6e 74 20 68 61 6e  |anslate font han|
0001f600  64 6c 65 20 74 6f 20 69  6e 74 65 72 6e 61 6c 20  |dle to internal |
0001f610  68 61 6e 64 6c 65 0d 10  c2 19 20 20 e7 20 66 6c  |handle....  . fl|
0001f620  61 67 73 25 20 80 20 28  31 3c 3c 36 29 20 8c 0d  |ags% . (1<<6) ..|
0001f630  10 c3 1b 20 20 20 20 66  68 61 6e 64 6c 65 25 3d  |...    fhandle%=|
0001f640  66 6c 61 67 73 25 3e 3e  32 34 0d 10 c4 20 20 20  |flags%>>24...   |
0001f650  20 20 69 6e 74 68 61 6e  64 6c 65 25 3d 46 72 61  |  inthandle%=Fra|
0001f660  25 3f 66 68 61 6e 64 6c  65 25 0d 10 c5 18 20 20  |%?fhandle%....  |
0001f670  20 20 e7 20 69 6e 74 68  61 6e 64 6c 65 25 3d 30  |  . inthandle%=0|
0001f680  20 8c 0d 10 c6 1a 20 20  20 20 20 20 53 61 76 65  | .....      Save|
0001f690  5f 4e 72 46 6f 6e 74 73  25 2b 3d 31 0d 10 c7 22  |_NrFonts%+=1..."|
0001f6a0  20 20 20 20 20 20 69 6e  74 68 61 6e 64 6c 65 25  |      inthandle%|
0001f6b0  3d 53 61 76 65 5f 4e 72  46 6f 6e 74 73 25 0d 10  |=Save_NrFonts%..|
0001f6c0  c8 22 20 20 20 20 20 20  46 72 61 25 3f 66 68 61  |."      Fra%?fha|
0001f6d0  6e 64 6c 65 25 3d 69 6e  74 68 61 6e 64 6c 65 25  |ndle%=inthandle%|
0001f6e0  0d 10 c9 09 20 20 20 20  cd 0d 10 ca 38 20 20 20  |....    ....8   |
0001f6f0  20 66 6c 61 67 70 74 72  25 21 30 3d 28 66 6c 61  | flagptr%!0=(fla|
0001f700  67 73 25 20 80 20 26 46  46 46 46 46 46 29 20 84  |gs% . &FFFFFF) .|
0001f710  20 28 69 6e 74 68 61 6e  64 6c 65 25 3c 3c 32 34  | (inthandle%<<24|
0001f720  29 0d 10 cb 07 20 20 cd  0d 10 cc 05 cd 0d 10 cd  |)....  .........|
0001f730  05 e1 0d 10 ce 04 0d 10  cf 2f f4 20 2d 2d 2d 20  |........./. --- |
0001f740  73 61 76 65 20 69 6e 64  69 72 65 63 74 65 64 20  |save indirected |
0001f750  69 63 6f 6e 20 64 61 74  61 20 74 6f 20 66 69 6c  |icon data to fil|
0001f760  65 20 2d 2d 2d 0d 10 d0  30 dd 20 f2 73 61 76 65  |e ---...0. .save|
0001f770  5f 69 63 6f 6e 28 66 6c  61 67 73 25 2c 64 61 74  |_icon(flags%,dat|
0001f780  61 25 2c 68 61 6e 64 6c  65 25 2c f8 20 6f 66 66  |a%,handle%,. off|
0001f790  73 65 74 25 29 0d 10 d1  09 ea 20 73 6c 25 0d 10  |set%)..... sl%..|
0001f7a0  d2 38 53 63 72 61 70 42  6c 6b 25 21 30 3d 31 33  |.8ScrapBlk%!0=13|
0001f7b0  20 3a 20 f4 20 74 65 6d  70 6f 72 61 72 79 20 62  | : . temporary b|
0001f7c0  75 66 66 65 72 20 66 6f  72 20 65 6d 70 74 79 20  |uffer for empty |
0001f7d0  73 74 72 69 6e 67 0d 10  d3 1f e7 20 28 66 6c 61  |string..... (fla|
0001f7e0  67 73 25 20 80 20 26 38  30 30 31 30 30 29 3d 26  |gs% . &800100)=&|
0001f7f0  31 30 30 20 8c 0d 10 d4  14 20 20 e7 20 66 6c 61  |100 .....  . fla|
0001f800  67 73 25 20 80 20 33 20  8c 0d 10 d5 19 20 20 20  |gs% . 3 .....   |
0001f810  20 73 6c 25 3d a9 28 24  28 64 61 74 61 25 21 30  | sl%=.($(data%!0|
0001f820  29 29 0d 10 d6 42 20 20  20 20 c8 99 20 22 4f 53  |))...B    .. "OS|
0001f830  5f 47 42 50 42 22 2c 31  2c 68 61 6e 64 6c 65 25  |_GBPB",1,handle%|
0001f840  2c 64 61 74 61 25 21 30  2c 73 6c 25 2b 31 2c 6f  |,data%!0,sl%+1,o|
0001f850  66 66 73 65 74 25 20 b8  20 2c 2c 2c 2c 6f 66 66  |ffset% . ,,,,off|
0001f860  73 65 74 25 0d 10 d7 16  20 20 20 20 e7 20 66 6c  |set%....    . fl|
0001f870  61 67 73 25 20 80 20 31  20 8c 0d 10 d8 19 20 20  |ags% . 1 .....  |
0001f880  20 20 20 20 e7 20 64 61  74 61 25 21 34 3c 3e 2d  |    . data%!4<>-|
0001f890  31 20 8c 0d 10 d9 1d 20  20 20 20 20 20 20 20 73  |1 .....        s|
0001f8a0  6c 25 3d a9 28 24 28 64  61 74 61 25 21 34 29 29  |l%=.($(data%!4))|
0001f8b0  0d 10 da 46 20 20 20 20  20 20 20 20 c8 99 20 22  |...F        .. "|
0001f8c0  4f 53 5f 47 42 50 42 22  2c 31 2c 68 61 6e 64 6c  |OS_GBPB",1,handl|
0001f8d0  65 25 2c 64 61 74 61 25  21 34 2c 73 6c 25 2b 31  |e%,data%!4,sl%+1|
0001f8e0  2c 6f 66 66 73 65 74 25  20 b8 20 2c 2c 2c 2c 6f  |,offset% . ,,,,o|
0001f8f0  66 66 73 65 74 25 0d 10  db 0b 20 20 20 20 20 20  |ffset%....      |
0001f900  cd 0d 10 dc 09 20 20 20  20 cd 0d 10 dd 07 20 20  |.....    .....  |
0001f910  cc 0d 10 de 37 20 20 20  20 f4 20 6e 6f 6e 2d 74  |....7    . non-t|
0001f920  65 78 74 2c 6e 6f 6e 2d  73 70 72 69 74 65 20 69  |ext,non-sprite i|
0001f930  63 6f 6e 20 2d 20 77 72  69 74 65 20 65 6d 70 74  |con - write empt|
0001f940  79 20 73 74 72 69 6e 67  0d 10 df 40 20 20 20 20  |y string...@    |
0001f950  c8 99 20 22 4f 53 5f 47  42 50 42 22 2c 31 2c 68  |.. "OS_GBPB",1,h|
0001f960  61 6e 64 6c 65 25 2c 53  63 72 61 70 42 6c 6b 25  |andle%,ScrapBlk%|
0001f970  2c 31 2c 6f 66 66 73 65  74 25 20 b8 20 2c 2c 2c  |,1,offset% . ,,,|
0001f980  2c 6f 66 66 73 65 74 25  0d 10 e0 07 20 20 cd 0d  |,offset%....  ..|
0001f990  10 e1 05 cd 0d 10 e2 05  e1 0d 10 e3 04 0d 10 e4  |................|
0001f9a0  23 dd 20 f2 73 61 76 65  5f 66 69 6e 69 73 68 28  |#. .save_finish(|
0001f9b0  68 61 6e 64 6c 65 25 2c  6f 66 66 73 65 74 25 29  |handle%,offset%)|
0001f9c0  0d 10 e5 0b ea 20 69 25  2c 6a 25 0d 10 e6 14 f4  |..... i%,j%.....|
0001f9d0  20 73 61 76 65 20 66 6f  6e 74 20 64 61 74 61 0d  | save font data.|
0001f9e0  10 e7 17 e7 20 53 61 76  65 5f 4e 72 46 6f 6e 74  |.... Save_NrFont|
0001f9f0  73 25 3e 30 20 8c 0d 10  e8 1a 20 20 46 69 6c 65  |s%>0 .....  File|
0001fa00  49 6e 64 65 78 25 21 30  3d 6f 66 66 73 65 74 25  |Index%!0=offset%|
0001fa10  0d 10 e9 1c 20 20 e3 20  69 25 3d 31 20 b8 20 53  |....  . i%=1 . S|
0001fa20  61 76 65 5f 4e 72 46 6f  6e 74 73 25 0d 10 ea 2f  |ave_NrFonts%.../|
0001fa30  20 20 20 20 f4 20 66 69  6e 64 20 66 6f 6e 74 20  |    . find font |
0001fa40  74 68 61 74 20 67 6f 74  20 69 6e 74 65 72 6e 61  |that got interna|
0001fa50  6c 20 68 61 6e 64 6c 65  20 69 25 0d 10 eb 0c 20  |l handle i%.... |
0001fa60  20 20 20 6a 25 3d 30 0d  10 ec 16 20 20 20 20 c8  |   j%=0....    .|
0001fa70  95 20 46 72 61 25 3f 6a  25 3c 3e 69 25 0d 10 ed  |. Fra%?j%<>i%...|
0001fa80  0f 20 20 20 20 20 20 6a  25 2b 3d 31 0d 10 ee 09  |.      j%+=1....|
0001fa90  20 20 20 20 ce 0d 10 ef  45 20 20 20 20 c8 99 20  |    ....E    .. |
0001faa0  22 46 6f 6e 74 5f 52 65  61 64 44 65 66 6e 22 2c  |"Font_ReadDefn",|
0001fab0  6a 25 2c 46 6f 6e 74 44  61 74 61 25 2b 38 20 b8  |j%,FontData%+8 .|
0001fac0  20 2c 2c 46 6f 6e 74 44  61 74 61 25 21 30 2c 46  | ,,FontData%!0,F|
0001fad0  6f 6e 74 44 61 74 61 25  21 34 0d 10 f0 41 20 20  |ontData%!4...A  |
0001fae0  20 20 c8 99 20 22 4f 53  5f 47 42 50 42 22 2c 31  |  .. "OS_GBPB",1|
0001faf0  2c 68 61 6e 64 6c 65 25  2c 46 6f 6e 74 44 61 74  |,handle%,FontDat|
0001fb00  61 25 2c 34 38 2c 6f 66  66 73 65 74 25 20 b8 20  |a%,48,offset% . |
0001fb10  2c 2c 2c 2c 6f 66 66 73  65 74 25 0d 10 f1 0a 20  |,,,,offset%.... |
0001fb20  20 ed 20 69 25 0d 10 f2  05 cd 0d 10 f3 21 f4 20  | . i%........!. |
0001fb30  73 61 76 65 20 68 65 61  64 65 72 20 2b 20 69 6e  |save header + in|
0001fb40  64 65 78 20 65 6e 74 72  69 65 73 0d 10 f4 38 c8  |dex entries...8.|
0001fb50  99 20 22 4f 53 5f 47 42  50 42 22 2c 31 2c 68 61  |. "OS_GBPB",1,ha|
0001fb60  6e 64 6c 65 25 2c 46 69  6c 65 49 6e 64 65 78 25  |ndle%,FileIndex%|
0001fb70  2c 53 61 76 65 5f 49 6e  64 65 78 4f 66 73 25 2b  |,Save_IndexOfs%+|
0001fb80  34 2c 30 0d 10 f5 0e d9  20 23 68 61 6e 64 6c 65  |4,0..... #handle|
0001fb90  25 0d 10 f6 05 e1 0d 10  f7 04 0d 10 f8 3b f4 20  |%............;. |
0001fba0  2a 2a 2a 20 70 72 6f 63  73 20 66 6f 72 20 6c 6f  |*** procs for lo|
0001fbb0  61 64 69 6e 67 20 61 6e  64 20 64 65 6c 65 74 69  |ading and deleti|
0001fbc0  6e 67 20 75 73 65 72 20  74 65 6d 70 6c 61 74 65  |ng user template|
0001fbd0  73 20 2a 2a 2a 0d 10 f9  04 0d 10 fa 28 dd 20 f2  |s ***.......(. .|
0001fbe0  74 65 6d 70 6c 5f 61 64  64 28 6e 61 6d 65 24 2c  |templ_add(name$,|
0001fbf0  77 62 6c 6b 25 2c 73 65  74 65 78 74 65 6e 74 25  |wblk%,setextent%|
0001fc00  29 0d 10 fb 1c ea 20 6e  6f 25 2c 6e 61 6d 65 70  |)..... no%,namep|
0001fc10  74 72 25 2c 73 70 70 74  72 25 2c 69 25 0d 10 fc  |tr%,spptr%,i%...|
0001fc20  22 e7 20 4e 72 54 65 6d  70 6c 61 74 65 73 25 3d  |". NrTemplates%=|
0001fc30  4d 61 78 54 65 6d 70 6c  61 74 65 73 25 20 8c 0d  |MaxTemplates% ..|
0001fc40  10 fd 25 20 20 f2 63 6f  6d 70 6c 61 69 6e 28 a4  |..%  .complain(.|
0001fc50  6d 73 67 5f 6c 6f 6f 6b  75 70 30 28 22 4d 54 50  |msg_lookup0("MTP|
0001fc60  58 22 29 29 0d 10 fe 05  cc 0d 10 ff 16 20 20 6e  |X")).........  n|
0001fc70  6f 25 3d 4e 72 54 65 6d  70 6c 61 74 65 73 25 0d  |o%=NrTemplates%.|
0001fc80  11 00 27 20 20 50 61 6e  65 46 6c 61 67 25 3f 6e  |..'  PaneFlag%?n|
0001fc90  6f 25 3d 28 77 62 6c 6b  25 21 33 32 29 20 80 20  |o%=(wblk%!32) . |
0001fca0  28 31 3c 3c 35 29 0d 11  01 23 20 20 77 62 6c 6b  |(1<<5)...#  wblk|
0001fcb0  25 21 33 32 3d 28 77 62  6c 6b 25 21 33 32 29 20  |%!32=(wblk%!32) |
0001fcc0  80 20 ac 28 31 3c 3c 35  29 0d 11 02 39 20 20 c8  |. .(1<<5)...9  .|
0001fcd0  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 57 69  |. "Wimp_CreateWi|
0001fce0  6e 64 6f 77 22 2c 2c 77  62 6c 6b 25 2b 34 20 b8  |ndow",,wblk%+4 .|
0001fcf0  20 54 65 6d 70 6c 48 61  6e 64 6c 65 25 28 6e 6f  | TemplHandle%(no|
0001fd00  25 29 0d 11 03 15 20 20  4e 72 54 65 6d 70 6c 61  |%)....  NrTempla|
0001fd10  74 65 73 25 2b 3d 31 0d  11 04 19 20 20 53 63 72  |tes%+=1....  Scr|
0001fd20  61 70 42 6c 6b 25 21 30  3d 54 65 6d 70 6c 57 25  |apBlk%!0=TemplW%|
0001fd30  0d 11 05 36 20 20 53 63  72 61 70 42 6c 6b 25 21  |...6  ScrapBlk%!|
0001fd40  34 3d 38 2b 54 65 6d 70  6c 57 5f 49 63 6f 6e 58  |4=8+TemplW_IconX|
0001fd50  25 2a 28 6e 6f 25 20 83  20 54 65 6d 70 6c 57 5f  |%*(no% . TemplW_|
0001fd60  43 6f 6c 73 25 29 0d 11  06 43 20 20 53 63 72 61  |Cols%)...C  Scra|
0001fd70  70 42 6c 6b 25 21 31 32  3d 28 53 63 72 61 70 42  |pBlk%!12=(ScrapB|
0001fd80  6c 6b 25 21 34 29 2b 28  54 65 6d 70 6c 57 5f 49  |lk%!4)+(TemplW_I|
0001fd90  63 6f 6e 58 25 2d 38 29  2d 31 36 2a 28 31 31 2d  |conX%-8)-16*(11-|
0001fda0  a9 28 6e 61 6d 65 24 29  29 0d 11 07 38 20 20 53  |.(name$))...8  S|
0001fdb0  63 72 61 70 42 6c 6b 25  21 31 36 3d 2d 38 2d 54  |crapBlk%!16=-8-T|
0001fdc0  65 6d 70 6c 57 5f 49 63  6f 6e 59 25 2a 28 6e 6f  |emplW_IconY%*(no|
0001fdd0  25 20 81 20 54 65 6d 70  6c 57 5f 43 6f 6c 73 25  |% . TemplW_Cols%|
0001fde0  29 0d 11 08 32 20 20 53  63 72 61 70 42 6c 6b 25  |)...2  ScrapBlk%|
0001fdf0  21 38 3d 28 53 63 72 61  70 42 6c 6b 25 21 31 36  |!8=(ScrapBlk%!16|
0001fe00  29 2d 28 54 65 6d 70 6c  57 5f 49 63 6f 6e 59 25  |)-(TemplW_IconY%|
0001fe10  2d 38 29 0d 11 09 24 20  20 53 63 72 61 70 42 6c  |-8)...$  ScrapBl|
0001fe20  6b 25 21 32 30 3d 54 65  6d 70 6c 57 5f 49 63 6f  |k%!20=TemplW_Ico|
0001fe30  6e 46 6c 61 67 73 25 0d  11 0a 21 20 20 6e 61 6d  |nFlags%...!  nam|
0001fe40  65 70 74 72 25 3d 54 65  6d 70 6c 4e 61 6d 65 73  |eptr%=TemplNames|
0001fe50  25 2b 32 38 2a 6e 6f 25  0d 11 0b 17 20 20 24 28  |%+28*no%....  $(|
0001fe60  6e 61 6d 65 70 74 72 25  29 3d 6e 61 6d 65 24 0d  |nameptr%)=name$.|
0001fe70  11 0c 1b 20 20 53 63 72  61 70 42 6c 6b 25 21 32  |...  ScrapBlk%!2|
0001fe80  34 3d 6e 61 6d 65 70 74  72 25 0d 11 0d 22 20 20  |4=nameptr%..."  |
0001fe90  73 70 70 74 72 25 3d 54  65 6d 70 6c 4e 61 6d 65  |spptr%=TemplName|
0001fea0  73 25 2b 32 38 2a 6e 6f  25 2b 31 34 0d 11 0e 27  |s%+28*no%+14...'|
0001feb0  20 20 24 28 73 70 70 74  72 25 29 3d a4 77 69 6e  |  $(spptr%)=.win|
0001fec0  64 6f 77 69 63 6f 6e 28  77 62 6c 6b 25 21 33 32  |dowicon(wblk%!32|
0001fed0  2c 30 29 0d 11 0f 19 20  20 53 63 72 61 70 42 6c  |,0)....  ScrapBl|
0001fee0  6b 25 21 32 38 3d 73 70  70 74 72 25 0d 11 10 15  |k%!28=spptr%....|
0001fef0  20 20 53 63 72 61 70 42  6c 6b 25 21 33 32 3d 31  |  ScrapBlk%!32=1|
0001ff00  36 0d 11 11 25 20 20 c8  99 20 22 57 69 6d 70 5f  |6...%  .. "Wimp_|
0001ff10  43 72 65 61 74 65 49 63  6f 6e 22 2c 2c 53 63 72  |CreateIcon",,Scr|
0001ff20  61 70 42 6c 6b 25 0d 11  12 16 20 20 e7 20 ac 20  |apBlk%....  . . |
0001ff30  44 75 70 6c 4e 61 6d 65  73 25 20 8c 0d 11 13 0c  |DuplNames% .....|
0001ff40  20 20 20 20 69 25 3d 30  0d 11 14 26 20 20 20 20  |    i%=0...&    |
0001ff50  c8 95 20 24 28 54 65 6d  70 6c 4e 61 6d 65 73 25  |.. $(TemplNames%|
0001ff60  2b 32 38 2a 69 25 29 3c  3e 6e 61 6d 65 24 0d 11  |+28*i%)<>name$..|
0001ff70  15 0f 20 20 20 20 20 20  69 25 2b 3d 31 0d 11 16  |..      i%+=1...|
0001ff80  09 20 20 20 20 ce 0d 11  17 24 20 20 20 20 e7 20  |.    ....$    . |
0001ff90  69 25 3c 6e 6f 25 20 8c  20 f2 74 65 6d 70 6c 5f  |i%<no% . .templ_|
0001ffa0  64 65 6c 65 74 65 28 69  25 29 0d 11 18 07 20 20  |delete(i%)....  |
0001ffb0  cd 0d 11 19 1f 20 20 e7  20 73 65 74 65 78 74 65  |.....  . setexte|
0001ffc0  6e 74 25 20 8c 20 f2 73  65 74 65 78 74 65 6e 74  |nt% . .setextent|
0001ffd0  0d 11 1a 30 20 20 f2 73  65 74 69 63 6f 6e 73 74  |...0  .seticonst|
0001ffe0  61 74 65 30 28 54 65 6d  70 6c 57 25 2c 4e 72 54  |ate0(TemplW%,NrT|
0001fff0  65 6d 70 6c 61 74 65 73  25 2d 31 2c 30 2c 30 29  |emplates%-1,0,0)|
00020000  0d 11 1b 05 cd 0d 11 1c  05 e1 0d 11 1d 04 0d 11  |................|
00020010  1e 16 dd 20 f2 74 65 6d  70 6c 5f 64 65 6c 65 74  |... .templ_delet|
00020020  65 61 6c 6c 0d 11 1f 08  ea 20 69 25 0d 11 20 15  |eall..... i%.. .|
00020030  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |.. "Hourglass_On|
00020040  22 0d 11 21 16 e7 20 4e  72 54 65 6d 70 6c 61 74  |"..!.. NrTemplat|
00020050  65 73 25 3e 30 20 8c 0d  11 22 22 20 20 e3 20 69  |es%>0 ...""  . i|
00020060  25 3d 4e 72 54 65 6d 70  6c 61 74 65 73 25 2d 31  |%=NrTemplates%-1|
00020070  20 b8 20 30 20 88 20 2d  31 0d 11 23 19 20 20 20  | . 0 . -1..#.   |
00020080  20 f2 74 65 6d 70 6c 5f  64 65 6c 65 74 65 28 69  | .templ_delete(i|
00020090  25 29 0d 11 24 0a 20 20  ed 20 69 25 0d 11 25 05  |%)..$.  . i%..%.|
000200a0  cd 0d 11 26 1e f2 73 65  74 6d 61 69 6e 66 6e 61  |...&..setmainfna|
000200b0  6d 65 28 22 54 65 6d 70  6c 61 74 65 73 22 29 0d  |me("Templates").|
000200c0  11 27 12 f2 73 65 74 63  68 61 6e 67 65 64 28 a3  |.'..setchanged(.|
000200d0  29 0d 11 28 16 c8 99 20  22 48 6f 75 72 67 6c 61  |)..(... "Hourgla|
000200e0  73 73 5f 4f 66 66 22 0d  11 29 05 e1 0d 11 2a 04  |ss_Off"..)....*.|
000200f0  0d 11 2b 18 dd 20 f2 74  65 6d 70 6c 5f 64 65 6c  |..+.. .templ_del|
00020100  65 74 65 28 6e 6f 25 29  0d 11 2c 1f ea 20 69 25  |ete(no%)..,.. i%|
00020110  2c 6a 25 2c 77 61 73 6f  70 65 6e 25 2c 6f 6c 64  |,j%,wasopen%,old|
00020120  68 61 6e 64 6c 65 25 0d  11 2d 20 6f 6c 64 68 61  |handle%..- oldha|
00020130  6e 64 6c 65 25 3d 54 65  6d 70 6c 48 61 6e 64 6c  |ndle%=TemplHandl|
00020140  65 25 28 6e 6f 25 29 0d  11 2e 18 57 69 6e 42 6c  |e%(no%)....WinBl|
00020150  6b 25 21 30 3d 6f 6c 64  68 61 6e 64 6c 65 25 0d  |k%!0=oldhandle%.|
00020160  11 2f 24 c8 99 20 22 57  69 6d 70 5f 47 65 74 57  |./$.. "Wimp_GetW|
00020170  69 6e 64 6f 77 49 6e 66  6f 22 2c 2c 57 69 6e 42  |indowInfo",,WinB|
00020180  6c 6b 25 0d 11 30 27 f2  69 63 6f 6e 72 65 6c 65  |lk%..0'.iconrele|
00020190  61 73 65 28 57 69 6e 42  6c 6b 25 21 36 30 2c 57  |ase(WinBlk%!60,W|
000201a0  69 6e 42 6c 6b 25 2b 37  36 29 0d 11 31 14 e7 20  |inBlk%+76)..1.. |
000201b0  57 69 6e 42 6c 6b 25 21  38 38 3e 30 20 8c 0d 11  |WinBlk%!88>0 ...|
000201c0  32 1d 20 20 e3 20 69 25  3d 30 20 b8 20 28 57 69  |2.  . i%=0 . (Wi|
000201d0  6e 42 6c 6b 25 21 38 38  2d 31 29 0d 11 33 3f 20  |nBlk%!88-1)..3? |
000201e0  20 20 20 f2 69 63 6f 6e  72 65 6c 65 61 73 65 28  |   .iconrelease(|
000201f0  57 69 6e 42 6c 6b 25 21  28 39 32 2b 69 25 2a 33  |WinBlk%!(92+i%*3|
00020200  32 2b 31 36 29 2c 57 69  6e 42 6c 6b 25 2b 39 32  |2+16),WinBlk%+92|
00020210  2b 69 25 2a 33 32 2b 32  30 29 0d 11 34 0a 20 20  |+i%*32+20)..4.  |
00020220  ed 20 69 25 0d 11 35 05  cd 0d 11 36 23 c8 99 20  |. i%..5....6#.. |
00020230  22 57 69 6d 70 5f 44 65  6c 65 74 65 57 69 6e 64  |"Wimp_DeleteWind|
00020240  6f 77 22 2c 2c 57 69 6e  42 6c 6b 25 0d 11 37 1b  |ow",,WinBlk%..7.|
00020250  f4 20 75 70 64 61 74 65  20 62 72 6f 77 73 65 72  |. update browser|
00020260  20 77 69 6e 64 6f 77 0d  11 38 15 57 69 6e 42 6c  | window..8.WinBl|
00020270  6b 25 21 30 3d 54 65 6d  70 6c 57 25 0d 11 39 24  |k%!0=TemplW%..9$|
00020280  c8 99 20 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |.. "Wimp_GetWind|
00020290  6f 77 49 6e 66 6f 22 2c  2c 57 69 6e 42 6c 6b 25  |owInfo",,WinBlk%|
000202a0  0d 11 3a 23 77 61 73 6f  70 65 6e 25 3d 28 57 69  |..:#wasopen%=(Wi|
000202b0  6e 42 6c 6b 25 21 33 32  29 20 80 20 28 31 3c 3c  |nBlk%!32) . (1<<|
000202c0  31 36 29 0d 11 3b 1c e7  20 6e 6f 25 3c 28 4e 72  |16)..;.. no%<(Nr|
000202d0  54 65 6d 70 6c 61 74 65  73 25 2d 31 29 20 8c 0d  |Templates%-1) ..|
000202e0  11 3c 39 20 20 f4 20 6d  6f 76 65 20 64 61 74 61  |.<9  . move data|
000202f0  20 66 6f 72 20 69 63 6f  6e 73 20 61 66 74 65 72  | for icons after|
00020300  20 74 68 65 20 6f 6e 65  20 74 68 61 74 20 69 73  | the one that is|
00020310  20 64 65 6c 65 74 65 64  0d 11 3d 1f 20 20 e3 20  | deleted..=.  . |
00020320  69 25 3d 6e 6f 25 20 b8  20 4e 72 54 65 6d 70 6c  |i%=no% . NrTempl|
00020330  61 74 65 73 25 2d 32 0d  11 3e 1c 20 20 20 20 69  |ates%-2..>.    i|
00020340  62 25 3d 57 69 6e 42 6c  6b 25 2b 39 32 2b 33 32  |b%=WinBlk%+92+32|
00020350  2a 69 25 0d 11 3f 17 20  20 20 20 e3 20 6a 25 3d  |*i%..?.    . j%=|
00020360  30 20 b8 20 31 36 20 88  20 34 0d 11 40 1c 20 20  |0 . 16 . 4..@.  |
00020370  20 20 20 20 69 62 25 21  6a 25 3d 69 62 25 21 28  |    ib%!j%=ib%!(|
00020380  6a 25 2b 33 32 29 0d 11  41 0c 20 20 20 20 ed 20  |j%+32)..A.    . |
00020390  6a 25 0d 11 42 2b 20 20  20 20 54 65 6d 70 6c 48  |j%..B+    TemplH|
000203a0  61 6e 64 6c 65 25 28 69  25 29 3d 54 65 6d 70 6c  |andle%(i%)=Templ|
000203b0  48 61 6e 64 6c 65 25 28  69 25 2b 31 29 0d 11 43  |Handle%(i%+1)..C|
000203c0  35 20 20 20 20 24 28 54  65 6d 70 6c 4e 61 6d 65  |5    $(TemplName|
000203d0  73 25 2b 32 38 2a 69 25  29 3d 24 28 54 65 6d 70  |s%+28*i%)=$(Temp|
000203e0  6c 4e 61 6d 65 73 25 2b  32 38 2a 28 69 25 2b 31  |lNames%+28*(i%+1|
000203f0  29 29 0d 11 44 3b 20 20  20 20 24 28 54 65 6d 70  |))..D;    $(Temp|
00020400  6c 4e 61 6d 65 73 25 2b  32 38 2a 69 25 2b 31 34  |lNames%+28*i%+14|
00020410  29 3d 24 28 54 65 6d 70  6c 4e 61 6d 65 73 25 2b  |)=$(TemplNames%+|
00020420  32 38 2a 28 69 25 2b 31  29 2b 31 34 29 0d 11 45  |28*(i%+1)+14)..E|
00020430  0a 20 20 ed 20 69 25 0d  11 46 05 cd 0d 11 47 1b  |.  . i%..F....G.|
00020440  57 69 6e 42 6c 6b 25 21  38 38 3d 57 69 6e 42 6c  |WinBlk%!88=WinBl|
00020450  6b 25 21 38 38 2d 31 0d  11 48 23 c8 99 20 22 57  |k%!88-1..H#.. "W|
00020460  69 6d 70 5f 44 65 6c 65  74 65 57 69 6e 64 6f 77  |imp_DeleteWindow|
00020470  22 2c 2c 57 69 6e 42 6c  6b 25 0d 11 49 2f c8 99  |",,WinBlk%..I/..|
00020480  20 22 57 69 6d 70 5f 43  72 65 61 74 65 57 69 6e  | "Wimp_CreateWin|
00020490  64 6f 77 22 2c 2c 57 69  6e 42 6c 6b 25 2b 34 20  |dow",,WinBlk%+4 |
000204a0  b8 20 54 65 6d 70 6c 57  25 0d 11 4a 13 4e 72 54  |. TemplW%..J.NrT|
000204b0  65 6d 70 6c 61 74 65 73  25 2d 3d 31 0d 11 4b 1f  |emplates%-=1..K.|
000204c0  f2 73 65 74 63 68 61 6e  67 65 64 28 4e 72 54 65  |.setchanged(NrTe|
000204d0  6d 70 6c 61 74 65 73 25  3e 30 29 0d 11 4c 17 f2  |mplates%>0)..L..|
000204e0  72 65 64 65 66 69 6e 65  62 72 6f 77 73 65 72 28  |redefinebrowser(|
000204f0  30 29 0d 11 4d 10 e7 20  77 61 73 6f 70 65 6e 25  |0)..M.. wasopen%|
00020500  20 8c 0d 11 4e 17 20 20  57 69 6e 42 6c 6b 25 21  | ...N.  WinBlk%!|
00020510  30 3d 54 65 6d 70 6c 57  25 0d 11 4f 26 20 20 c8  |0=TemplW%..O&  .|
00020520  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
00020530  77 49 6e 66 6f 22 2c 2c  57 69 6e 42 6c 6b 25 0d  |wInfo",,WinBlk%.|
00020540  11 50 23 20 20 c8 99 20  22 57 69 6d 70 5f 4f 70  |.P#  .. "Wimp_Op|
00020550  65 6e 57 69 6e 64 6f 77  22 2c 2c 57 69 6e 42 6c  |enWindow",,WinBl|
00020560  6b 25 0d 11 51 05 cd 0d  11 52 31 e7 20 6f 6c 64  |k%..Q....R1. old|
00020570  68 61 6e 64 6c 65 25 3d  49 63 45 64 5f 57 69 6e  |handle%=IcEd_Win|
00020580  25 20 8c 20 f2 63 6c 6f  73 65 77 69 6e 64 6f 77  |% . .closewindow|
00020590  28 49 63 45 64 57 25 29  0d 11 53 33 e7 20 6f 6c  |(IcEdW%)..S3. ol|
000205a0  64 68 61 6e 64 6c 65 25  3d 57 69 6e 45 64 5f 57  |dhandle%=WinEd_W|
000205b0  69 6e 25 20 8c 20 f2 63  6c 6f 73 65 77 69 6e 64  |in% . .closewind|
000205c0  6f 77 28 57 69 6e 45 64  57 25 29 0d 11 54 31 e7  |ow(WinEdW%)..T1.|
000205d0  20 6f 6c 64 68 61 6e 64  6c 65 25 3d 4c 61 73 74  | oldhandle%=Last|
000205e0  4d 65 6e 75 5f 57 69 6e  25 20 8c 20 4c 61 73 74  |Menu_Win% . Last|
000205f0  4d 65 6e 75 5f 57 69 6e  25 3d 2d 31 0d 11 55 2b  |Menu_Win%=-1..U+|
00020600  e7 20 4e 72 54 65 6d 70  6c 61 74 65 73 25 3d 30  |. NrTemplates%=0|
00020610  20 8c 20 f2 63 6c 6f 73  65 77 69 6e 64 6f 77 28  | . .closewindow(|
00020620  53 74 61 74 57 25 29 0d  11 56 05 e1 0d 11 57 04  |StatW%)..V....W.|
00020630  0d 11 58 43 f4 20 2d 2d  2d 20 61 64 61 70 74 20  |..XC. --- adapt |
00020640  65 78 74 65 6e 74 20 6f  66 20 62 72 6f 77 73 65  |extent of browse|
00020650  72 20 77 69 6e 64 6f 77  20 74 6f 20 6e 75 6d 62  |r window to numb|
00020660  65 72 20 6f 66 20 74 65  6d 70 6c 61 74 65 73 20  |er of templates |
00020670  2d 2d 2d 0d 11 59 10 dd  20 f2 73 65 74 65 78 74  |---..Y.. .setext|
00020680  65 6e 74 0d 11 5a 1f ea  20 6e 72 72 6f 77 73 25  |ent..Z.. nrrows%|
00020690  2c 78 73 69 7a 65 25 2c  74 69 74 6c 65 73 69 7a  |,xsize%,titlesiz|
000206a0  65 25 0d 11 5b 2f 6e 72  72 6f 77 73 25 3d 31 2b  |e%..[/nrrows%=1+|
000206b0  28 28 4e 72 54 65 6d 70  6c 61 74 65 73 25 2d 31  |((NrTemplates%-1|
000206c0  29 20 81 20 54 65 6d 70  6c 57 5f 43 6f 6c 73 25  |) . TemplW_Cols%|
000206d0  29 0d 11 5c 1b e7 20 6e  72 72 6f 77 73 25 3c 32  |)..\.. nrrows%<2|
000206e0  20 8c 20 6e 72 72 6f 77  73 25 3d 32 0d 11 5d 16  | . nrrows%=2..].|
000206f0  e7 20 4e 72 54 65 6d 70  6c 61 74 65 73 25 3d 30  |. NrTemplates%=0|
00020700  20 8c 0d 11 5e 1c 20 20  78 73 69 7a 65 25 3d 38  | ...^.  xsize%=8|
00020710  2b 54 65 6d 70 6c 57 5f  49 63 6f 6e 58 25 0d 11  |+TemplW_IconX%..|
00020720  5f 05 cc 0d 11 60 27 20  20 e7 20 4e 72 54 65 6d  |_....`'  . NrTem|
00020730  70 6c 61 74 65 73 25 20  3c 20 54 65 6d 70 6c 57  |plates% < TemplW|
00020740  5f 4d 61 78 43 6f 6c 25  20 8c 0d 11 61 2b 20 20  |_MaxCol% ...a+  |
00020750  20 20 78 73 69 7a 65 25  3d 38 2b 4e 72 54 65 6d  |  xsize%=8+NrTem|
00020760  70 6c 61 74 65 73 25 2a  54 65 6d 70 6c 57 5f 49  |plates%*TemplW_I|
00020770  63 6f 6e 58 25 0d 11 62  07 20 20 cc 0d 11 63 2d  |conX%..b.  ...c-|
00020780  20 20 20 20 78 73 69 7a  65 25 3d 38 2b 54 65 6d  |    xsize%=8+Tem|
00020790  70 6c 57 5f 4d 61 78 43  6f 6c 25 2a 54 65 6d 70  |plW_MaxCol%*Temp|
000207a0  6c 57 5f 49 63 6f 6e 58  25 0d 11 64 07 20 20 cd  |lW_IconX%..d.  .|
000207b0  0d 11 65 05 cd 0d 11 66  26 74 69 74 6c 65 73 69  |..e....f&titlesi|
000207c0  7a 65 25 3d 31 32 38 2b  31 36 2a a9 28 24 28 54  |ze%=128+16*.($(T|
000207d0  65 6d 70 6c 54 62 61 72  25 29 29 0d 11 67 2b e7  |emplTbar%))..g+.|
000207e0  20 78 73 69 7a 65 25 3c  74 69 74 6c 65 73 69 7a  | xsize%<titlesiz|
000207f0  65 25 20 8c 20 78 73 69  7a 65 25 3d 74 69 74 6c  |e% . xsize%=titl|
00020800  65 73 69 7a 65 25 0d 11  68 11 53 63 72 61 70 42  |esize%..h.ScrapB|
00020810  6c 6b 25 21 30 3d 30 0d  11 69 28 53 63 72 61 70  |lk%!0=0..i(Scrap|
00020820  42 6c 6b 25 21 34 3d 2d  38 2d 54 65 6d 70 6c 57  |Blk%!4=-8-TemplW|
00020830  5f 49 63 6f 6e 59 25 2a  6e 72 72 6f 77 73 25 0d  |_IconY%*nrrows%.|
00020840  11 6a 16 53 63 72 61 70  42 6c 6b 25 21 38 3d 78  |.j.ScrapBlk%!8=x|
00020850  73 69 7a 65 25 0d 11 6b  12 53 63 72 61 70 42 6c  |size%..k.ScrapBl|
00020860  6b 25 21 31 32 3d 30 0d  11 6c 29 c8 99 20 22 57  |k%!12=0..l).. "W|
00020870  69 6d 70 5f 53 65 74 45  78 74 65 6e 74 22 2c 54  |imp_SetExtent",T|
00020880  65 6d 70 6c 57 25 2c 53  63 72 61 70 42 6c 6b 25  |emplW%,ScrapBlk%|
00020890  0d 11 6d 05 e1 0d 11 6e  04 0d 11 6f 46 f4 20 2d  |..m....n...oF. -|
000208a0  2d 2d 20 6d 6f 76 65 20  69 63 6f 6e 73 20 69 6e  |-- move icons in|
000208b0  20 62 72 6f 77 73 65 72  20 77 69 6e 64 6f 77 20  | browser window |
000208c0  74 6f 20 61 64 61 70 74  20 74 6f 20 6e 65 77 20  |to adapt to new |
000208d0  77 69 6e 64 6f 77 20 73  69 7a 65 20 2d 2d 2d 0d  |window size ---.|
000208e0  11 70 1f dd 20 f2 72 65  64 65 66 69 6e 65 62 72  |.p.. .redefinebr|
000208f0  6f 77 73 65 72 28 72 65  6f 70 65 6e 25 29 0d 11  |owser(reopen%)..|
00020900  71 23 ea 20 77 61 73 6f  70 65 6e 25 2c 69 25 2c  |q#. wasopen%,i%,|
00020910  69 62 25 2c 78 73 69 7a  65 25 2c 79 73 69 7a 65  |ib%,xsize%,ysize|
00020920  25 0d 11 72 15 57 69 6e  42 6c 6b 25 21 30 3d 54  |%..r.WinBlk%!0=T|
00020930  65 6d 70 6c 57 25 0d 11  73 24 c8 99 20 22 57 69  |emplW%..s$.. "Wi|
00020940  6d 70 5f 47 65 74 57 69  6e 64 6f 77 49 6e 66 6f  |mp_GetWindowInfo|
00020950  22 2c 2c 57 69 6e 42 6c  6b 25 0d 11 74 23 77 61  |",,WinBlk%..t#wa|
00020960  73 6f 70 65 6e 25 3d 28  57 69 6e 42 6c 6b 25 21  |sopen%=(WinBlk%!|
00020970  33 32 29 20 80 20 28 31  3c 3c 31 36 29 0d 11 75  |32) . (1<<16)..u|
00020980  14 e7 20 57 69 6e 42 6c  6b 25 21 38 38 3e 30 20  |.. WinBlk%!88>0 |
00020990  8c 0d 11 76 1d 20 20 e3  20 69 25 3d 30 20 b8 20  |...v.  . i%=0 . |
000209a0  28 57 69 6e 42 6c 6b 25  21 38 38 2d 31 29 0d 11  |(WinBlk%!88-1)..|
000209b0  77 1c 20 20 20 20 69 62  25 3d 57 69 6e 42 6c 6b  |w.    ib%=WinBlk|
000209c0  25 2b 39 32 2b 33 32 2a  69 25 0d 11 78 40 20 20  |%+92+32*i%..x@  |
000209d0  20 20 78 73 69 7a 65 25  3d 28 54 65 6d 70 6c 57  |  xsize%=(TemplW|
000209e0  5f 49 63 6f 6e 58 25 2d  38 29 2d 31 36 2a 28 31  |_IconX%-8)-16*(1|
000209f0  31 2d a9 28 24 28 54 65  6d 70 6c 4e 61 6d 65 73  |1-.($(TemplNames|
00020a00  25 2b 69 25 2a 32 38 29  29 29 0d 11 79 1b 20 20  |%+i%*28)))..y.  |
00020a10  20 20 79 73 69 7a 65 25  3d 69 62 25 21 31 32 2d  |  ysize%=ib%!12-|
00020a20  69 62 25 21 34 0d 11 7a  31 20 20 20 20 69 62 25  |ib%!4..z1    ib%|
00020a30  21 30 3d 38 2b 54 65 6d  70 6c 57 5f 49 63 6f 6e  |!0=8+TemplW_Icon|
00020a40  58 25 2a 28 69 25 20 83  20 54 65 6d 70 6c 57 5f  |X%*(i% . TemplW_|
00020a50  43 6f 6c 73 25 29 0d 11  7b 1c 20 20 20 20 69 62  |Cols%)..{.    ib|
00020a60  25 21 38 3d 28 69 62 25  21 30 29 2b 78 73 69 7a  |%!8=(ib%!0)+xsiz|
00020a70  65 25 0d 11 7c 33 20 20  20 20 69 62 25 21 31 32  |e%..|3    ib%!12|
00020a80  3d 2d 38 2d 54 65 6d 70  6c 57 5f 49 63 6f 6e 59  |=-8-TemplW_IconY|
00020a90  25 2a 28 69 25 20 81 20  54 65 6d 70 6c 57 5f 43  |%*(i% . TemplW_C|
00020aa0  6f 6c 73 25 29 0d 11 7d  1d 20 20 20 20 69 62 25  |ols%)..}.    ib%|
00020ab0  21 34 3d 28 69 62 25 21  31 32 29 2d 79 73 69 7a  |!4=(ib%!12)-ysiz|
00020ac0  65 25 0d 11 7e 0a 20 20  ed 20 69 25 0d 11 7f 05  |e%..~.  . i%....|
00020ad0  cd 0d 11 80 23 c8 99 20  22 57 69 6d 70 5f 44 65  |....#.. "Wimp_De|
00020ae0  6c 65 74 65 57 69 6e 64  6f 77 22 2c 2c 57 69 6e  |leteWindow",,Win|
00020af0  42 6c 6b 25 0d 11 81 2f  c8 99 20 22 57 69 6d 70  |Blk%.../.. "Wimp|
00020b00  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 22 2c 2c  |_CreateWindow",,|
00020b10  57 69 6e 42 6c 6b 25 2b  34 20 b8 20 54 65 6d 70  |WinBlk%+4 . Temp|
00020b20  6c 57 25 0d 11 82 0e f2  73 65 74 65 78 74 65 6e  |lW%.....setexten|
00020b30  74 0d 11 83 1a e7 20 72  65 6f 70 65 6e 25 20 80  |t..... reopen% .|
00020b40  20 77 61 73 6f 70 65 6e  25 20 8c 0d 11 84 17 20  | wasopen% ..... |
00020b50  20 57 69 6e 42 6c 6b 25  21 30 3d 54 65 6d 70 6c  | WinBlk%!0=Templ|
00020b60  57 25 0d 11 85 26 20 20  c8 99 20 22 57 69 6d 70  |W%...&  .. "Wimp|
00020b70  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
00020b80  2c 57 69 6e 42 6c 6b 25  0d 11 86 3e 20 20 f4 20  |,WinBlk%...>  . |
00020b90  61 64 61 70 74 20 73 63  72 6f 6c 6c 20 6f 66 66  |adapt scroll off|
00020ba0  73 65 74 73 20 69 66 20  76 69 73 69 62 6c 65 20  |sets if visible |
00020bb0  61 72 65 61 20 65 78 63  65 65 64 73 20 77 6f 72  |area exceeds wor|
00020bc0  6b 20 61 72 65 61 0d 11  87 38 20 20 e7 20 28 57  |k area...8  . (W|
00020bd0  69 6e 42 6c 6b 25 21 32  30 2b 28 57 69 6e 42 6c  |inBlk%!20+(WinBl|
00020be0  6b 25 21 31 32 2d 57 69  6e 42 6c 6b 25 21 34 29  |k%!12-WinBlk%!4)|
00020bf0  29 3e 57 69 6e 42 6c 6b  25 21 35 32 20 8c 0d 11  |)>WinBlk%!52 ...|
00020c00  88 34 20 20 20 20 57 69  6e 42 6c 6b 25 21 32 30  |.4    WinBlk%!20|
00020c10  3d 57 69 6e 42 6c 6b 25  21 35 32 2d 28 57 69 6e  |=WinBlk%!52-(Win|
00020c20  42 6c 6b 25 21 31 32 2d  57 69 6e 42 6c 6b 25 21  |Blk%!12-WinBlk%!|
00020c30  34 29 0d 11 89 18 20 20  20 20 e7 20 57 69 6e 42  |4)....    . WinB|
00020c40  6c 6b 25 21 32 30 3c 30  20 8c 0d 11 8a 2a 20 20  |lk%!20<0 ....*  |
00020c50  20 20 20 20 57 69 6e 42  6c 6b 25 21 31 32 3d 57  |    WinBlk%!12=W|
00020c60  69 6e 42 6c 6b 25 21 31  32 2b 57 69 6e 42 6c 6b  |inBlk%!12+WinBlk|
00020c70  25 21 32 30 0d 11 8b 16  20 20 20 20 20 20 57 69  |%!20....      Wi|
00020c80  6e 42 6c 6b 25 21 32 30  3d 30 0d 11 8c 09 20 20  |nBlk%!20=0....  |
00020c90  20 20 cd 0d 11 8d 07 20  20 cd 0d 11 8e 38 20 20  |  .....  ....8  |
00020ca0  e7 20 28 57 69 6e 42 6c  6b 25 21 32 34 2d 28 57  |. (WinBlk%!24-(W|
00020cb0  69 6e 42 6c 6b 25 21 31  36 2d 57 69 6e 42 6c 6b  |inBlk%!16-WinBlk|
00020cc0  25 21 38 29 29 3c 57 69  6e 42 6c 6b 25 21 34 38  |%!8))<WinBlk%!48|
00020cd0  20 8c 0d 11 8f 34 20 20  20 20 57 69 6e 42 6c 6b  | ....4    WinBlk|
00020ce0  25 21 32 34 3d 57 69 6e  42 6c 6b 25 21 34 38 2b  |%!24=WinBlk%!48+|
00020cf0  28 57 69 6e 42 6c 6b 25  21 31 36 2d 57 69 6e 42  |(WinBlk%!16-WinB|
00020d00  6c 6b 25 21 38 29 0d 11  90 18 20 20 20 20 e7 20  |lk%!8)....    . |
00020d10  57 69 6e 42 6c 6b 25 21  32 34 3e 30 20 8c 0d 11  |WinBlk%!24>0 ...|
00020d20  91 28 20 20 20 20 20 20  57 69 6e 42 6c 6b 25 21  |.(      WinBlk%!|
00020d30  38 3d 57 69 6e 42 6c 6b  25 21 38 2b 57 69 6e 42  |8=WinBlk%!8+WinB|
00020d40  6c 6b 25 21 32 34 0d 11  92 16 20 20 20 20 20 20  |lk%!24....      |
00020d50  57 69 6e 42 6c 6b 25 21  32 30 3d 30 0d 11 93 09  |WinBlk%!20=0....|
00020d60  20 20 20 20 cd 0d 11 94  07 20 20 cd 0d 11 95 23  |    .....  ....#|
00020d70  20 20 c8 99 20 22 57 69  6d 70 5f 4f 70 65 6e 57  |  .. "Wimp_OpenW|
00020d80  69 6e 64 6f 77 22 2c 2c  57 69 6e 42 6c 6b 25 0d  |indow",,WinBlk%.|
00020d90  11 96 05 cd 0d 11 97 05  e1 0d 11 98 04 0d 11 99  |................|
00020da0  2a dd 20 f2 74 65 6d 70  6c 5f 6c 6f 61 64 66 69  |*. .templ_loadfi|
00020db0  6c 65 28 66 6e 61 6d 65  24 2c 6c 6f 61 64 73 70  |le(fname$,loadsp|
00020dc0  72 69 74 65 73 25 29 0d  11 9a 2f ea 20 69 25 2c  |rites%).../. i%,|
00020dd0  6e 72 25 2c 6e 61 6d 65  24 2c 68 61 6e 64 6c 65  |nr%,name$,handle|
00020de0  25 2c 69 70 25 2c 69 6e  64 69 72 62 75 66 25 2c  |%,ip%,indirbuf%,|
00020df0  73 6e 61 6d 65 24 0d 11  9b 15 c8 99 20 22 48 6f  |sname$...... "Ho|
00020e00  75 72 67 6c 61 73 73 5f  4f 6e 22 0d 11 9c 10 e3  |urglass_On".....|
00020e10  20 69 25 3d 30 20 b8 20  32 35 35 0d 11 9d 1a 20  | i%=0 . 255.... |
00020e20  20 e7 20 46 6f 6e 74 55  73 61 67 65 25 28 69 25  | . FontUsage%(i%|
00020e30  29 3e 30 20 8c 0d 11 9e  4b 20 20 20 20 f4 20 66  |)>0 ....K    . f|
00020e40  6f 6e 74 20 69 6e 20 75  73 65 20 2d 20 6d 61 6b  |ont in use - mak|
00020e50  65 20 66 6f 72 20 65 78  74 72 61 20 63 61 6c 6c  |e for extra call|
00020e60  20 74 6f 20 46 6f 6e 74  5f 4c 6f 73 65 46 6f 6e  | to Font_LoseFon|
00020e70  74 20 61 74 20 65 6e 64  20 6f 66 20 70 72 6f 63  |t at end of proc|
00020e80  0d 11 9f 11 20 20 20 20  46 72 61 25 3f 69 25 3d  |....    Fra%?i%=|
00020e90  31 0d 11 a0 07 20 20 cc  0d 11 a1 11 20 20 20 20  |1....  .....    |
00020ea0  46 72 61 25 3f 69 25 3d  30 0d 11 a2 07 20 20 cd  |Fra%?i%=0....  .|
00020eb0  0d 11 a3 08 ed 20 69 25  0d 11 a4 16 e7 20 4e 72  |..... i%..... Nr|
00020ec0  54 65 6d 70 6c 61 74 65  73 25 3d 30 20 8c 0d 11  |Templates%=0 ...|
00020ed0  a5 1f 20 20 e7 20 66 6e  61 6d 65 24 3d 22 3c 57  |..  . fname$="<W|
00020ee0  69 6d 70 24 53 63 72 61  70 3e 22 20 8c 0d 11 a6  |imp$Scrap>" ....|
00020ef0  23 20 20 20 20 f2 73 65  74 6d 61 69 6e 66 6e 61  |#    .setmainfna|
00020f00  6d 65 28 4e 65 77 4c 65  61 66 4e 61 6d 65 24 29  |me(NewLeafName$)|
00020f10  0d 11 a7 07 20 20 cc 0d  11 a8 1d 20 20 20 20 f2  |....  .....    .|
00020f20  73 65 74 6d 61 69 6e 66  6e 61 6d 65 28 66 6e 61  |setmainfname(fna|
00020f30  6d 65 24 29 0d 11 a9 07  20 20 cd 0d 11 aa 05 cd  |me$)....  ......|
00020f40  0d 11 ab 36 e7 20 6c 6f  61 64 73 70 72 69 74 65  |...6. loadsprite|
00020f50  73 25 20 80 20 28 a4 6c  65 61 66 6e 61 6d 65 28  |s% . (.leafname(|
00020f60  66 6e 61 6d 65 24 29 3d  22 54 65 6d 70 6c 61 74  |fname$)="Templat|
00020f70  65 73 22 29 20 8c 0d 11  ac 28 20 20 73 6e 61 6d  |es") ....(  snam|
00020f80  65 24 3d a4 64 69 72 6e  61 6d 65 28 66 6e 61 6d  |e$=.dirname(fnam|
00020f90  65 24 29 2b 22 2e 53 70  72 69 74 65 73 22 0d 11  |e$)+".Sprites"..|
00020fa0  ad 1d 20 20 e7 20 a4 66  69 6c 65 65 78 69 73 74  |..  . .fileexist|
00020fb0  73 28 73 6e 61 6d 65 24  29 20 8c 0d 11 ae 20 20  |s(sname$) ....  |
00020fc0  20 20 20 f2 6c 6f 61 64  75 73 65 72 73 70 72 69  |   .loaduserspri|
00020fd0  74 65 73 28 73 6e 61 6d  65 24 29 0d 11 af 07 20  |tes(sname$).... |
00020fe0  20 cd 0d 11 b0 05 cd 0d  11 b1 26 69 6e 64 69 72  | .........&indir|
00020ff0  62 75 66 25 3d a4 68 65  61 70 5f 67 65 74 28 4d  |buf%=.heap_get(M|
00021000  61 78 49 6e 64 69 72 53  69 7a 65 25 29 0d 11 b2  |axIndirSize%)...|
00021010  13 e7 20 69 6e 64 69 72  62 75 66 25 3e 30 20 8c  |.. indirbuf%>0 .|
00021020  0d 11 b3 16 20 20 68 61  6e 64 6c 65 25 3d 8e 20  |....  handle%=. |
00021030  66 6e 61 6d 65 24 0d 11  b4 13 20 20 e7 20 68 61  |fname$....  . ha|
00021040  6e 64 6c 65 25 3e 30 20  8c 0d 11 b5 46 20 20 20  |ndle%>0 ....F   |
00021050  20 f4 20 72 65 61 64 20  69 6e 64 65 78 20 6f 66  | . read index of|
00021060  20 74 65 6d 70 6c 61 74  65 20 66 69 6c 65 20 74  | template file t|
00021070  6f 20 63 68 65 63 6b 20  66 6f 72 20 6f 76 65 72  |o check for over|
00021080  73 69 7a 65 64 20 74 65  6d 70 6c 61 74 65 73 0d  |sized templates.|
00021090  11 b6 3a 20 20 20 20 c8  99 20 22 4f 53 5f 47 42  |..:    .. "OS_GB|
000210a0  50 42 22 2c 33 2c 68 61  6e 64 6c 65 25 2c 46 69  |PB",3,handle%,Fi|
000210b0  6c 65 49 6e 64 65 78 25  2c 46 69 6c 65 49 6e 64  |leIndex%,FileInd|
000210c0  65 78 53 69 7a 65 25 2c  30 0d 11 b7 12 20 20 20  |exSize%,0....   |
000210d0  20 d9 20 23 68 61 6e 64  6c 65 25 0d 11 b8 26 20  | . #handle%...& |
000210e0  20 20 20 c8 99 20 22 57  69 6d 70 5f 4f 70 65 6e  |   .. "Wimp_Open|
000210f0  54 65 6d 70 6c 61 74 65  22 2c 2c 66 6e 61 6d 65  |Template",,fname|
00021100  24 0d 11 b9 19 20 20 20  20 69 70 25 3d 46 69 6c  |$....    ip%=Fil|
00021110  65 49 6e 64 65 78 25 2b  32 34 0d 11 ba 0d 20 20  |eIndex%+24....  |
00021120  20 20 6e 72 25 3d 30 0d  11 bb 09 20 20 20 20 f5  |  nr%=0....    .|
00021130  0d 11 bc 24 20 20 20 20  20 20 e7 20 69 70 25 21  |...$      . ip%!|
00021140  30 3e 4d 61 78 54 65 6d  70 6c 61 74 65 53 69 7a  |0>MaxTemplateSiz|
00021150  65 25 20 8c 0d 11 bd 35  20 20 20 20 20 20 20 20  |e% ....5        |
00021160  f2 63 6f 6d 70 6c 61 69  6e 28 a4 6d 73 67 5f 6c  |.complain(.msg_l|
00021170  6f 6f 6b 75 70 31 28 22  54 54 4c 42 22 2c 24 28  |ookup1("TTLB",$(|
00021180  69 70 25 2b 31 32 29 29  29 0d 11 be 0b 20 20 20  |ip%+12)))....   |
00021190  20 20 20 cc 0d 11 bf 3a  20 20 20 20 20 20 20 20  |   ....:        |
000211a0  f2 74 65 6d 70 6c 5f 6c  6f 61 64 28 6e 72 25 2c  |.templ_load(nr%,|
000211b0  6e 61 6d 65 24 2c 69 6e  64 69 72 62 75 66 25 2c  |name$,indirbuf%,|
000211c0  4d 61 78 49 6e 64 69 72  53 69 7a 65 25 29 0d 11  |MaxIndirSize%)..|
000211d0  c0 15 20 20 20 20 20 20  20 20 e7 20 6e 72 25 3e  |..        . nr%>|
000211e0  30 20 8c 0d 11 c1 29 20  20 20 20 20 20 20 20 20  |0 ....)         |
000211f0  20 f2 74 65 6d 70 6c 5f  61 64 64 28 6e 61 6d 65  | .templ_add(name|
00021200  24 2c 57 69 6e 42 6c 6b  25 2c 30 29 0d 11 c2 0d  |$,WinBlk%,0)....|
00021210  20 20 20 20 20 20 20 20  cd 0d 11 c3 0b 20 20 20  |        .....   |
00021220  20 20 20 cd 0d 11 c4 11  20 20 20 20 20 20 69 70  |   .....      ip|
00021230  25 2b 3d 32 34 0d 11 c5  31 20 20 20 20 fd 20 28  |%+=24...1    . (|
00021240  6e 72 25 3c 3d 30 29 20  84 20 28 4e 72 54 65 6d  |nr%<=0) . (NrTem|
00021250  70 6c 61 74 65 73 25 3d  4d 61 78 54 65 6d 70 6c  |plates%=MaxTempl|
00021260  61 74 65 73 25 29 0d 11  c6 1f 20 20 20 20 c8 99  |ates%)....    ..|
00021270  20 22 57 69 6d 70 5f 43  6c 6f 73 65 54 65 6d 70  | "Wimp_CloseTemp|
00021280  6c 61 74 65 22 0d 11 c7  21 20 20 20 20 e7 20 66  |late"...!    . f|
00021290  6e 61 6d 65 24 3d 22 3c  57 69 6d 70 24 53 63 72  |name$="<Wimp$Scr|
000212a0  61 70 3e 22 20 8c 0d 11  c8 48 20 20 20 20 20 20  |ap>" ....H      |
000212b0  c8 99 20 22 4f 53 5f 46  69 6c 65 22 2c 36 2c 66  |.. "OS_File",6,f|
000212c0  6e 61 6d 65 24 20 3a 20  f4 20 64 65 6c 65 74 65  |name$ : . delete|
000212d0  20 57 69 6d 70 24 53 63  72 61 70 20 66 69 6c 65  | Wimp$Scrap file|
000212e0  20 61 66 74 65 72 20 72  65 61 64 69 6e 67 0d 11  | after reading..|
000212f0  c9 09 20 20 20 20 cd 0d  11 ca 20 20 20 20 20 f2  |..    ....     .|
00021300  68 65 61 70 5f 72 65 6c  65 61 73 65 28 69 6e 64  |heap_release(ind|
00021310  69 72 62 75 66 25 29 0d  11 cb 12 20 20 20 20 f2  |irbuf%)....    .|
00021320  73 65 74 65 78 74 65 6e  74 0d 11 cc 07 20 20 cd  |setextent....  .|
00021330  0d 11 cd 05 cd 0d 11 ce  10 e3 20 69 25 3d 30 20  |.......... i%=0 |
00021340  b8 20 32 35 35 0d 11 cf  43 20 20 f4 20 6e 65 75  |. 255...C  . neu|
00021350  74 72 61 6c 69 73 65 20  63 61 6c 6c 73 20 6f 66  |tralise calls of|
00021360  20 46 6f 6e 74 5f 46 69  6e 64 46 6f 6e 74 20 64  | Font_FindFont d|
00021370  6f 6e 65 20 62 79 20 57  69 6d 70 5f 4c 6f 61 64  |one by Wimp_Load|
00021380  54 65 6d 70 6c 61 74 65  0d 11 d0 12 20 20 c8 95  |Template....  ..|
00021390  20 46 72 61 25 3f 69 25  3e 31 0d 11 d1 1d 20 20  | Fra%?i%>1....  |
000213a0  20 20 c8 99 20 22 46 6f  6e 74 5f 4c 6f 73 65 46  |  .. "Font_LoseF|
000213b0  6f 6e 74 22 2c 69 25 0d  11 d2 12 20 20 20 20 46  |ont",i%....    F|
000213c0  72 61 25 3f 69 25 2d 3d  31 0d 11 d3 07 20 20 ce  |ra%?i%-=1....  .|
000213d0  0d 11 d4 08 ed 20 69 25  0d 11 d5 16 c8 99 20 22  |..... i%...... "|
000213e0  48 6f 75 72 67 6c 61 73  73 5f 4f 66 66 22 0d 11  |Hourglass_Off"..|
000213f0  d6 1a f2 6f 70 65 6e 77  69 6e 64 6f 77 28 54 65  |...openwindow(Te|
00021400  6d 70 6c 57 25 2c 33 29  0d 11 d7 2e e7 20 49 63  |mplW%,3)..... Ic|
00021410  49 6e 66 6f 5f 41 63 74  69 76 65 25 20 8c 20 f2  |Info_Active% . .|
00021420  6f 70 65 6e 77 69 6e 64  6f 77 28 49 63 49 6e 66  |openwindow(IcInf|
00021430  6f 57 25 2c 34 29 0d 11  d8 05 e1 0d 11 d9 04 0d  |oW%,4)..........|
00021440  11 da 27 dd 20 f2 74 65  6d 70 6c 5f 6c 6f 61 64  |..'. .templ_load|
00021450  28 f8 20 6e 72 25 2c f8  20 6e 24 2c 70 25 2c 70  |(. nr%,. n$,p%,p|
00021460  73 69 7a 65 25 29 0d 11  db 1b ea 20 64 78 25 2c  |size%)..... dx%,|
00021470  64 79 25 2c 69 63 6f 6e  25 2c 74 62 25 2c 69 62  |dy%,icon%,tb%,ib|
00021480  25 0d 11 dc 07 ea 20 85  0d 11 dd 39 ee 20 85 20  |%..... ....9. . |
00021490  ea 20 c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |. .. "Wimp_Close|
000214a0  54 65 6d 70 6c 61 74 65  22 20 3a 20 f2 65 72 72  |Template" : .err|
000214b0  6f 72 28 30 29 20 3a 20  6e 72 25 3d 30 20 3a 20  |or(0) : nr%=0 : |
000214c0  e1 0d 11 de 2d 6e 24 3d  22 2a 22 2b c4 31 31 2c  |....-n$="*"+.11,|
000214d0  bd 30 29 20 3a 20 f4 20  6e 61 6d 65 20 6c 65 6e  |.0) : . name len|
000214e0  67 74 68 20 6d 75 73 74  20 62 65 20 31 32 0d 11  |gth must be 12..|
000214f0  df 4c c8 99 20 22 57 69  6d 70 5f 4c 6f 61 64 54  |.L.. "Wimp_LoadT|
00021500  65 6d 70 6c 61 74 65 22  2c 2c 57 69 6e 42 6c 6b  |emplate",,WinBlk|
00021510  25 2b 34 2c 70 25 2c 70  25 2b 70 73 69 7a 65 25  |%+4,p%,p%+psize%|
00021520  2c 46 72 61 25 2c 6e 24  2c 6e 72 25 20 b8 20 2c  |,Fra%,n$,nr% . ,|
00021530  2c 2c 2c 2c 6e 24 2c 6e  72 25 0d 11 e0 0d e7 20  |,,,,n$,nr%..... |
00021540  6e 72 25 3e 30 20 8c 0d  11 e1 46 20 20 f4 20 6d  |nr%>0 ....F  . m|
00021550  61 6b 65 20 73 75 72 65  20 77 69 6e 64 6f 77 20  |ake sure window |
00021560  6f 72 69 67 69 6e 20 70  6f 73 69 74 69 6f 6e 20  |origin position |
00021570  69 73 20 77 69 74 68 69  6e 20 63 75 72 72 65 6e  |is within curren|
00021580  74 20 73 63 72 65 65 6e  20 73 69 7a 65 0d 11 e2  |t screen size...|
00021590  0b 20 20 64 78 25 3d 30  0d 11 e3 0b 20 20 64 79  |.  dx%=0....  dy|
000215a0  25 3d 30 0d 11 e4 24 20  20 e7 20 57 69 6e 42 6c  |%=0...$  . WinBl|
000215b0  6b 25 21 34 3c 30 20 8c  20 64 78 25 3d 2d 57 69  |k%!4<0 . dx%=-Wi|
000215c0  6e 42 6c 6b 25 21 34 0d  11 e5 24 20 20 e7 20 57  |nBlk%!4...$  . W|
000215d0  69 6e 42 6c 6b 25 21 38  3c 30 20 8c 20 64 79 25  |inBlk%!8<0 . dy%|
000215e0  3d 2d 57 69 6e 42 6c 6b  25 21 38 0d 11 e6 3f 20  |=-WinBlk%!8...? |
000215f0  20 e7 20 57 69 6e 42 6c  6b 25 21 31 32 3e 53 63  | . WinBlk%!12>Sc|
00021600  72 65 65 6e 53 69 7a 65  5f 58 25 20 8c 20 64 78  |reenSize_X% . dx|
00021610  25 3d 53 63 72 65 65 6e  53 69 7a 65 5f 58 25 2d  |%=ScreenSize_X%-|
00021620  57 69 6e 42 6c 6b 25 21  31 32 0d 11 e7 47 20 20  |WinBlk%!12...G  |
00021630  e7 20 57 69 6e 42 6c 6b  25 21 31 36 3e 28 53 63  |. WinBlk%!16>(Sc|
00021640  72 65 65 6e 53 69 7a 65  5f 59 25 2d 34 34 29 20  |reenSize_Y%-44) |
00021650  8c 20 64 79 25 3d 53 63  72 65 65 6e 53 69 7a 65  |. dy%=ScreenSize|
00021660  5f 59 25 2d 34 34 2d 57  69 6e 42 6c 6b 25 21 31  |_Y%-44-WinBlk%!1|
00021670  36 0d 11 e8 1d 20 20 57  69 6e 42 6c 6b 25 21 34  |6....  WinBlk%!4|
00021680  3d 57 69 6e 42 6c 6b 25  21 34 2b 64 78 25 0d 11  |=WinBlk%!4+dx%..|
00021690  e9 1d 20 20 57 69 6e 42  6c 6b 25 21 38 3d 57 69  |..  WinBlk%!8=Wi|
000216a0  6e 42 6c 6b 25 21 38 2b  64 79 25 0d 11 ea 1f 20  |nBlk%!8+dy%.... |
000216b0  20 57 69 6e 42 6c 6b 25  21 31 32 3d 57 69 6e 42  | WinBlk%!12=WinB|
000216c0  6c 6b 25 21 31 32 2b 64  78 25 0d 11 eb 1f 20 20  |lk%!12+dx%....  |
000216d0  57 69 6e 42 6c 6b 25 21  31 36 3d 57 69 6e 42 6c  |WinBlk%!16=WinBl|
000216e0  6b 25 21 31 36 2b 64 79  25 0d 11 ec 3f 20 20 57  |k%!16+dy%...?  W|
000216f0  69 6e 42 6c 6b 25 21 36  38 3d 55 73 65 72 53 70  |inBlk%!68=UserSp|
00021700  72 69 74 65 73 25 20 3a  20 f4 20 73 65 74 20 73  |rites% : . set s|
00021710  70 72 69 74 65 20 61 72  65 61 20 28 43 42 50 20  |prite area (CBP |
00021720  70 6f 69 6e 74 65 72 29  0d 11 ed 48 20 20 f4 20  |pointer)...H  . |
00021730  72 65 2d 61 6c 6c 6f 63  61 74 65 20 69 6e 64 69  |re-allocate indi|
00021740  72 65 63 74 65 64 20 64  61 74 61 2c 20 65 61 63  |rected data, eac|
00021750  68 20 66 69 65 6c 64 20  69 6e 20 61 20 73 65 70  |h field in a sep|
00021760  61 72 61 74 65 20 68 65  61 70 20 62 6c 6f 63 6b  |arate heap block|
00021770  0d 11 ee 1e 20 20 e7 20  57 69 6e 42 6c 6b 25 21  |....  . WinBlk%!|
00021780  33 32 20 80 20 28 31 3c  3c 33 31 29 20 8c 0d 11  |32 . (1<<31) ...|
00021790  ef 20 20 20 20 20 74 62  25 3d 57 69 6e 42 6c 6b  |.     tb%=WinBlk|
000217a0  25 21 33 32 20 80 20 28  31 3c 3c 32 36 29 0d 11  |%!32 . (1<<26)..|
000217b0  f0 07 20 20 cc 0d 11 f1  1f 20 20 20 20 74 62 25  |..  .....    tb%|
000217c0  3d 57 69 6e 42 6c 6b 25  21 33 32 20 80 20 28 31  |=WinBlk%!32 . (1|
000217d0  3c 3c 30 29 0d 11 f2 07  20 20 cd 0d 11 f3 0d 20  |<<0)....  ..... |
000217e0  20 e7 20 74 62 25 20 8c  0d 11 f4 46 20 20 20 20  | . tb% ....F    |
000217f0  f2 69 63 6f 6e 72 65 61  6c 6c 6f 63 28 57 69 6e  |.iconrealloc(Win|
00021800  42 6c 6b 25 2b 36 30 2c  57 69 6e 42 6c 6b 25 2b  |Blk%+60,WinBlk%+|
00021810  37 36 29 20 3a 20 f4 20  72 65 61 6c 6c 6f 63 20  |76) : . realloc |
00021820  74 69 74 6c 65 20 62 61  72 20 69 63 6f 6e 0d 11  |title bar icon..|
00021830  f5 3f 20 20 20 20 f2 69  63 6f 6e 5f 73 65 74 73  |.?    .icon_sets|
00021840  70 72 69 74 65 61 72 65  61 28 57 69 6e 42 6c 6b  |pritearea(WinBlk|
00021850  25 21 36 30 2c 57 69 6e  42 6c 6b 25 2b 37 36 2c  |%!60,WinBlk%+76,|
00021860  55 73 65 72 53 70 72 69  74 65 73 25 29 0d 11 f6  |UserSprites%)...|
00021870  07 20 20 cc 0d 11 f7 2e  20 20 20 20 f4 20 6e 6f  |.  .....    . no|
00021880  20 74 69 74 6c 65 20 62  61 72 3a 20 66 69 6c 6c  | title bar: fill|
00021890  20 64 61 74 61 20 77 69  74 68 20 64 65 66 61 75  | data with defau|
000218a0  6c 74 0d 11 f8 16 20 20  20 20 57 69 6e 42 6c 6b  |lt....    WinBlk|
000218b0  25 21 36 30 3d 26 33 44  0d 11 f9 22 20 20 20 20  |%!60=&3D..."    |
000218c0  24 28 57 69 6e 42 6c 6b  25 2b 37 36 29 3d 22 3c  |$(WinBlk%+76)="<|
000218d0  55 6e 74 69 74 6c 65 64  3e 22 0d 11 fa 07 20 20  |Untitled>"....  |
000218e0  cd 0d 11 fb 18 20 20 e7  20 28 57 69 6e 42 6c 6b  |.....  . (WinBlk|
000218f0  25 21 38 38 29 3e 30 20  8c 0d 11 fc 22 20 20 20  |%!88)>0 ...."   |
00021900  20 e3 20 69 63 6f 6e 25  3d 30 20 b8 20 28 57 69  | . icon%=0 . (Wi|
00021910  6e 42 6c 6b 25 21 38 38  29 2d 31 0d 11 fd 21 20  |nBlk%!88)-1...! |
00021920  20 20 20 20 20 69 62 25  3d 57 69 6e 42 6c 6b 25  |     ib%=WinBlk%|
00021930  2b 39 32 2b 69 63 6f 6e  25 2a 33 32 0d 11 fe 25  |+92+icon%*32...%|
00021940  20 20 20 20 20 20 f2 69  63 6f 6e 72 65 61 6c 6c  |      .iconreall|
00021950  6f 63 28 69 62 25 2b 31  36 2c 69 62 25 2b 32 30  |oc(ib%+16,ib%+20|
00021960  29 0d 11 ff 3e 20 20 20  20 20 20 f4 20 73 65 74  |)...>      . set|
00021970  20 73 70 72 69 74 65 20  70 6f 69 6e 74 65 72 73  | sprite pointers|
00021980  20 28 69 6e 64 69 72 65  63 74 65 64 20 73 70 72  | (indirected spr|
00021990  69 74 65 2d 6f 6e 6c 79  20 69 63 6f 6e 73 29 0d  |ite-only icons).|
000219a0  12 00 39 20 20 20 20 20  20 f2 69 63 6f 6e 5f 73  |..9      .icon_s|
000219b0  65 74 73 70 72 69 74 65  61 72 65 61 28 69 62 25  |etspritearea(ib%|
000219c0  21 31 36 2c 69 62 25 2b  32 30 2c 55 73 65 72 53  |!16,ib%+20,UserS|
000219d0  70 72 69 74 65 73 25 29  0d 12 01 0f 20 20 20 20  |prites%)....    |
000219e0  ed 20 69 63 6f 6e 25 0d  12 02 07 20 20 cd 0d 12  |. icon%....  ...|
000219f0  03 05 cd 0d 12 04 05 e1  0d 12 05 04 0d 12 06 38  |...............8|
00021a00  f4 20 2d 2d 2d 20 73 6f  72 74 20 74 65 6d 70 6c  |. --- sort templ|
00021a10  61 74 65 73 20 6f 6e 20  6e 61 6d 65 73 20 28 63  |ates on names (c|
00021a20  61 73 65 2d 69 6e 73 65  6e 73 69 74 69 76 65 29  |ase-insensitive)|
00021a30  20 2d 2d 2d 0d 12 07 11  dd 20 f2 74 65 6d 70 6c  | ---..... .templ|
00021a40  5f 73 6f 72 74 0d 12 08  2d ea 20 69 25 2c 6a 25  |_sort...-. i%,j%|
00021a50  2c 69 6e 64 65 78 25 2c  63 61 6e 64 69 64 61 74  |,index%,candidat|
00021a60  65 25 2c 63 61 6e 64 6e  61 6d 65 24 2c 6e 61 6d  |e%,candname$,nam|
00021a70  65 24 0d 12 09 2c 69 25  3d 30 20 3a 20 f4 20 66  |e$...,i%=0 : . f|
00021a80  69 72 73 74 20 3c 69 25  3e 20 74 65 6d 70 6c 61  |irst <i%> templa|
00021a90  74 65 73 20 61 72 65 20  73 6f 72 74 65 64 0d 12  |tes are sorted..|
00021aa0  0a 1a c8 95 20 69 25 3c  28 4e 72 54 65 6d 70 6c  |.... i%<(NrTempl|
00021ab0  61 74 65 73 25 2d 31 29  0d 12 0b 26 20 20 f4 20  |ates%-1)...&  . |
00021ac0  66 69 6e 64 20 74 65 6d  70 6c 61 74 65 20 77 69  |find template wi|
00021ad0  74 68 20 6c 6f 77 65 73  74 20 6e 61 6d 65 0d 12  |th lowest name..|
00021ae0  0c 13 20 20 63 61 6e 64  69 64 61 74 65 25 3d 69  |..  candidate%=i|
00021af0  25 0d 12 0d 2d 20 20 63  61 6e 64 6e 61 6d 65 24  |%...-  candname$|
00021b00  3d a4 75 70 63 61 73 65  28 24 28 54 65 6d 70 6c  |=.upcase($(Templ|
00021b10  4e 61 6d 65 73 25 2b 69  25 2a 32 38 29 29 0d 12  |Names%+i%*28))..|
00021b20  0e 22 20 20 e3 20 6a 25  3d 69 25 2b 31 20 b8 20  |."  . j%=i%+1 . |
00021b30  28 4e 72 54 65 6d 70 6c  61 74 65 73 25 2d 31 29  |(NrTemplates%-1)|
00021b40  0d 12 0f 2b 20 20 20 20  6e 61 6d 65 24 3d a4 75  |...+    name$=.u|
00021b50  70 63 61 73 65 28 24 28  54 65 6d 70 6c 4e 61 6d  |pcase($(TemplNam|
00021b60  65 73 25 2b 6a 25 2a 32  38 29 29 0d 12 10 1b 20  |es%+j%*28)).... |
00021b70  20 20 20 e7 20 6e 61 6d  65 24 3c 63 61 6e 64 6e  |   . name$<candn|
00021b80  61 6d 65 24 20 8c 0d 12  11 17 20 20 20 20 20 20  |ame$ .....      |
00021b90  63 61 6e 64 69 64 61 74  65 25 3d 6a 25 0d 12 12  |candidate%=j%...|
00021ba0  19 20 20 20 20 20 20 63  61 6e 64 6e 61 6d 65 24  |.      candname$|
00021bb0  3d 6e 61 6d 65 24 0d 12  13 09 20 20 20 20 cd 0d  |=name$....    ..|
00021bc0  12 14 0a 20 20 ed 20 6a  25 0d 12 15 1a 20 20 f4  |...  . j%....  .|
00021bd0  20 73 77 61 70 20 74 65  6d 70 6c 61 74 65 20 64  | swap template d|
00021be0  61 74 61 0d 12 16 19 20  20 e3 20 6a 25 3d 30 20  |ata....  . j%=0 |
00021bf0  b8 20 28 32 38 2d 34 29  20 88 20 34 0d 12 17 40  |. (28-4) . 4...@|
00021c00  20 20 20 20 c8 94 20 54  65 6d 70 6c 4e 61 6d 65  |    .. TemplName|
00021c10  73 25 21 28 69 25 2a 32  38 2b 6a 25 29 2c 54 65  |s%!(i%*28+j%),Te|
00021c20  6d 70 6c 4e 61 6d 65 73  25 21 28 63 61 6e 64 69  |mplNames%!(candi|
00021c30  64 61 74 65 25 2a 32 38  2b 6a 25 29 0d 12 18 0a  |date%*28+j%)....|
00021c40  20 20 ed 20 6a 25 0d 12  19 32 20 20 c8 94 20 54  |  . j%...2  .. T|
00021c50  65 6d 70 6c 48 61 6e 64  6c 65 25 28 69 25 29 2c  |emplHandle%(i%),|
00021c60  54 65 6d 70 6c 48 61 6e  64 6c 65 25 28 63 61 6e  |TemplHandle%(can|
00021c70  64 69 64 61 74 65 25 29  0d 12 1a 2a 20 20 c8 94  |didate%)...*  ..|
00021c80  20 50 61 6e 65 46 6c 61  67 25 3f 69 25 2c 50 61  | PaneFlag%?i%,Pa|
00021c90  6e 65 46 6c 61 67 25 3f  63 61 6e 64 69 64 61 74  |neFlag%?candidat|
00021ca0  65 25 0d 12 1b 0b 20 20  69 25 2b 3d 31 0d 12 1c  |e%....  i%+=1...|
00021cb0  05 ce 0d 12 1d 05 e1 0d  12 1e 04 0d 12 1f 36 f4  |..............6.|
00021cc0  20 2a 2a 2a 20 70 72 6f  63 73 20 66 6f 72 20 72  | *** procs for r|
00021cd0  65 61 64 69 6e 67 20 61  6e 64 20 73 6f 72 74 69  |eading and sorti|
00021ce0  6e 67 20 73 65 6c 65 63  74 69 6f 6e 73 20 2a 2a  |ng selections **|
00021cf0  2a 0d 12 20 04 0d 12 21  37 f4 20 2d 2d 2d 20 67  |*.. ...!7. --- g|
00021d00  65 74 20 6c 69 73 74 20  6f 66 20 73 65 6c 65 63  |et list of selec|
00021d10  74 65 64 20 69 63 6f 6e  73 20 61 6e 64 20 63 6f  |ted icons and co|
00021d20  75 6e 74 20 74 68 65 6d  20 2d 2d 2d 0d 12 22 17  |unt them ---..".|
00021d30  dd 20 f2 73 65 6c 5f 67  65 74 28 77 69 6e 64 6f  |. .sel_get(windo|
00021d40  77 25 29 0d 12 23 3d c8  99 20 22 57 69 6d 70 5f  |w%)..#=.. "Wimp_|
00021d50  57 68 69 63 68 49 63 6f  6e 22 2c 77 69 6e 64 6f  |WhichIcon",windo|
00021d60  77 25 2c 53 65 6c 42 6c  6b 25 2c 28 31 3c 3c 32  |w%,SelBlk%,(1<<2|
00021d70  31 29 2b 28 31 3c 3c 32  33 29 2c 31 3c 3c 32 31  |1)+(1<<23),1<<21|
00021d80  0d 12 24 11 4e 72 53 65  6c 65 63 74 65 64 25 3d  |..$.NrSelected%=|
00021d90  30 0d 12 25 22 c8 95 20  53 65 6c 42 6c 6b 25 21  |0..%".. SelBlk%!|
00021da0  28 34 2a 4e 72 53 65 6c  65 63 74 65 64 25 29 3c  |(4*NrSelected%)<|
00021db0  3e 2d 31 0d 12 26 14 20  20 4e 72 53 65 6c 65 63  |>-1..&.  NrSelec|
00021dc0  74 65 64 25 2b 3d 31 0d  12 27 05 ce 0d 12 28 05  |ted%+=1..'....(.|
00021dd0  e1 0d 12 29 04 0d 12 2a  1e f4 20 2d 2d 2d 20 73  |...)...*.. --- s|
00021de0  65 6c 65 63 74 20 61 6c  6c 20 69 63 6f 6e 73 20  |elect all icons |
00021df0  2d 2d 2d 0d 12 2b 17 dd  20 f2 73 65 6c 5f 61 6c  |---..+.. .sel_al|
00021e00  6c 28 77 69 6e 64 6f 77  25 29 0d 12 2c 08 ea 20  |l(window%)..,.. |
00021e10  69 25 0d 12 2d 35 f4 20  67 65 74 20 61 6c 6c 20  |i%..-5. get all |
00021e20  69 63 6f 6e 73 20 74 68  61 74 20 61 72 65 20 6e  |icons that are n|
00021e30  6f 74 20 73 65 6c 65 63  74 65 64 20 6e 6f 72 20  |ot selected nor |
00021e40  64 65 6c 65 74 65 64 0d  12 2e 39 c8 99 20 22 57  |deleted...9.. "W|
00021e50  69 6d 70 5f 57 68 69 63  68 49 63 6f 6e 22 2c 77  |imp_WhichIcon",w|
00021e60  69 6e 64 6f 77 25 2c 53  65 6c 42 6c 6b 25 2c 28  |indow%,SelBlk%,(|
00021e70  31 3c 3c 32 31 29 2b 28  31 3c 3c 32 33 29 2c 30  |1<<21)+(1<<23),0|
00021e80  0d 12 2f 08 69 25 3d 30  0d 12 30 15 c8 95 20 53  |../.i%=0..0... S|
00021e90  65 6c 42 6c 6b 25 21 69  25 3c 3e 2d 31 0d 12 31  |elBlk%!i%<>-1..1|
00021ea0  27 20 20 f2 73 65 6c 65  63 74 69 63 6f 6e 28 77  |'  .selecticon(w|
00021eb0  69 6e 64 6f 77 25 2c 53  65 6c 42 6c 6b 25 21 69  |indow%,SelBlk%!i|
00021ec0  25 2c 31 29 0d 12 32 0b  20 20 69 25 2b 3d 34 0d  |%,1)..2.  i%+=4.|
00021ed0  12 33 05 ce 0d 12 34 05  e1 0d 12 35 04 0d 12 36  |.3....4....5...6|
00021ee0  3e f4 20 2d 2d 2d 20 75  6e 73 65 6c 65 63 74 20  |>. --- unselect |
00021ef0  61 6c 6c 20 69 63 6f 6e  73 20 28 65 78 63 65 70  |all icons (excep|
00021f00  74 2c 20 6d 61 79 62 65  2c 20 66 6f 72 20 6f 6e  |t, maybe, for on|
00021f10  65 20 69 63 6f 6e 29 20  2d 2d 2d 0d 12 37 21 dd  |e icon) ---..7!.|
00021f20  20 f2 73 65 6c 5f 63 6c  65 61 72 28 77 69 6e 64  | .sel_clear(wind|
00021f30  6f 77 25 2c 65 78 63 65  70 74 25 29 0d 12 38 08  |ow%,except%)..8.|
00021f40  ea 20 69 25 0d 12 39 33  c8 99 20 22 57 69 6d 70  |. i%..93.. "Wimp|
00021f50  5f 57 68 69 63 68 49 63  6f 6e 22 2c 77 69 6e 64  |_WhichIcon",wind|
00021f60  6f 77 25 2c 53 65 6c 42  6c 6b 25 2c 31 3c 3c 32  |ow%,SelBlk%,1<<2|
00021f70  31 2c 31 3c 3c 32 31 0d  12 3a 08 69 25 3d 30 0d  |1,1<<21..:.i%=0.|
00021f80  12 3b 15 c8 95 20 53 65  6c 42 6c 6b 25 21 69 25  |.;... SelBlk%!i%|
00021f90  3c 3e 2d 31 0d 12 3c 3f  20 20 e7 20 53 65 6c 42  |<>-1..<?  . SelB|
00021fa0  6c 6b 25 21 69 25 3c 3e  65 78 63 65 70 74 25 20  |lk%!i%<>except% |
00021fb0  8c 20 f2 73 65 6c 65 63  74 69 63 6f 6e 28 77 69  |. .selecticon(wi|
00021fc0  6e 64 6f 77 25 2c 53 65  6c 42 6c 6b 25 21 69 25  |ndow%,SelBlk%!i%|
00021fd0  2c 30 29 0d 12 3d 0b 20  20 69 25 2b 3d 34 0d 12  |,0)..=.  i%+=4..|
00021fe0  3e 05 ce 0d 12 3f 11 4e  72 53 65 6c 65 63 74 65  |>....?.NrSelecte|
00021ff0  64 25 3d 30 0d 12 40 05  e1 0d 12 41 04 0d 12 42  |d%=0..@....A...B|
00022000  48 f4 20 2d 2d 2d 20 73  6f 72 74 20 69 63 6f 6e  |H. --- sort icon|
00022010  20 73 65 6c 65 63 74 69  6f 6e 20 28 61 73 73 75  | selection (assu|
00022020  6d 65 73 20 73 65 6c 65  63 74 69 6f 6e 20 70 72  |mes selection pr|
00022030  65 73 65 6e 74 20 69 6e  20 53 65 6c 42 6c 6b 25  |esent in SelBlk%|
00022040  29 20 2d 2d 2d 0d 12 43  3c dd 20 f2 73 65 6c 5f  |) ---..C<. .sel_|
00022050  73 6f 72 74 28 77 69 6e  64 6f 77 25 2c 6b 65 79  |sort(window%,key|
00022060  31 25 2c 6d 61 78 31 25  2c 64 69 72 31 25 2c 6b  |1%,max1%,dir1%,k|
00022070  65 79 32 25 2c 6d 61 78  32 25 2c 64 69 72 32 25  |ey2%,max2%,dir2%|
00022080  29 0d 12 44 41 f4 20 69  66 20 6b 65 79 3d 30 20  |)..DA. if key=0 |
00022090  74 68 65 6e 20 73 6f 72  74 20 6f 6e 20 68 6f 72  |then sort on hor|
000220a0  69 7a 6f 6e 74 61 6c 20  63 6f 6f 72 64 69 6e 61  |izontal coordina|
000220b0  74 65 73 2c 20 65 6c 73  65 20 76 65 72 74 69 63  |tes, else vertic|
000220c0  61 6c 0d 12 45 3d f4 20  69 66 20 6d 61 78 3d 30  |al..E=. if max=0|
000220d0  20 74 68 65 6e 20 73 6f  72 74 20 6f 6e 20 6d 69  | then sort on mi|
000220e0  6e 69 6d 75 6d 20 63 6f  6f 72 64 69 6e 61 74 65  |nimum coordinate|
000220f0  73 2c 20 65 6c 73 65 20  6d 61 78 69 6d 75 6d 0d  |s, else maximum.|
00022100  12 46 3c f4 20 69 66 20  64 69 72 3d 30 20 74 68  |.F<. if dir=0 th|
00022110  65 6e 20 73 6f 72 74 20  69 6e 20 64 65 73 63 65  |en sort in desce|
00022120  6e 64 69 6e 67 20 6f 72  64 65 72 2c 20 65 6c 73  |nding order, els|
00022130  65 20 61 73 63 65 6e 64  69 6e 67 0d 12 47 1f ea  |e ascending..G..|
00022140  20 69 25 2c 6a 25 2c 69  6e 64 65 78 31 25 2c 69  | i%,j%,index1%,i|
00022150  6e 64 65 78 32 25 2c 69  62 25 0d 12 48 40 ea 20  |ndex2%,ib%..H@. |
00022160  76 61 6c 75 65 31 25 2c  76 61 6c 75 65 32 25 2c  |value1%,value2%,|
00022170  63 61 6e 64 69 64 61 74  65 25 2c 62 65 73 74 73  |candidate%,bests|
00022180  6f 66 61 72 31 25 2c 62  65 73 74 73 6f 66 61 72  |ofar1%,bestsofar|
00022190  32 25 2c 62 65 74 74 65  72 25 0d 12 49 35 69 25  |2%,better%..I5i%|
000221a0  3d 30 20 3a 20 f4 20 66  69 72 73 74 20 3c 69 25  |=0 : . first <i%|
000221b0  3e 20 69 63 6f 6e 73 20  69 6e 20 73 65 6c 65 63  |> icons in selec|
000221c0  74 69 6f 6e 20 61 72 65  20 73 6f 72 74 65 64 0d  |tion are sorted.|
000221d0  12 4a 0f e7 20 6b 65 79  31 25 3d 30 20 8c 0d 12  |.J.. key1%=0 ...|
000221e0  4b 0f 20 20 69 6e 64 65  78 31 25 3d 30 0d 12 4c  |K.  index1%=0..L|
000221f0  05 cc 0d 12 4d 0f 20 20  69 6e 64 65 78 31 25 3d  |....M.  index1%=|
00022200  34 0d 12 4e 05 cd 0d 12  4f 18 e7 20 6d 61 78 31  |4..N....O.. max1|
00022210  25 20 8c 20 69 6e 64 65  78 31 25 2b 3d 38 0d 12  |% . index1%+=8..|
00022220  50 0f e7 20 6b 65 79 32  25 3d 30 20 8c 0d 12 51  |P.. key2%=0 ...Q|
00022230  0f 20 20 69 6e 64 65 78  32 25 3d 30 0d 12 52 05  |.  index2%=0..R.|
00022240  cc 0d 12 53 0f 20 20 69  6e 64 65 78 32 25 3d 34  |...S.  index2%=4|
00022250  0d 12 54 05 cd 0d 12 55  18 e7 20 6d 61 78 32 25  |..T....U.. max2%|
00022260  20 8c 20 69 6e 64 65 78  32 25 2b 3d 38 0d 12 56  | . index2%+=8..V|
00022270  15 57 69 6e 42 6c 6b 25  21 30 3d 77 69 6e 64 6f  |.WinBlk%!0=windo|
00022280  77 25 0d 12 57 24 c8 99  20 22 57 69 6d 70 5f 47  |w%..W$.. "Wimp_G|
00022290  65 74 57 69 6e 64 6f 77  49 6e 66 6f 22 2c 2c 57  |etWindowInfo",,W|
000222a0  69 6e 42 6c 6b 25 0d 12  58 19 c8 95 20 69 25 3c  |inBlk%..X... i%<|
000222b0  28 4e 72 53 65 6c 65 63  74 65 64 25 2d 31 29 0d  |(NrSelected%-1).|
000222c0  12 59 3c 20 20 f4 20 66  69 6e 64 20 69 63 6f 6e  |.Y<  . find icon|
000222d0  20 77 69 74 68 20 73 6d  61 6c 6c 65 73 74 2f 68  | with smallest/h|
000222e0  69 67 68 65 73 74 20 76  61 6c 75 65 20 66 6f 72  |ighest value for|
000222f0  20 63 6f 6f 72 64 69 6e  61 74 65 0d 12 5a 13 20  | coordinate..Z. |
00022300  20 63 61 6e 64 69 64 61  74 65 25 3d 69 25 0d 12  | candidate%=i%..|
00022310  5b 28 20 20 69 62 25 3d  57 69 6e 42 6c 6b 25 2b  |[(  ib%=WinBlk%+|
00022320  39 32 2b 33 32 2a 28 53  65 6c 42 6c 6b 25 21 28  |92+32*(SelBlk%!(|
00022330  34 2a 69 25 29 29 0d 12  5c 1f 20 20 62 65 73 74  |4*i%))..\.  best|
00022340  73 6f 66 61 72 31 25 3d  69 62 25 21 28 69 6e 64  |sofar1%=ib%!(ind|
00022350  65 78 31 25 29 0d 12 5d  1f 20 20 62 65 73 74 73  |ex1%)..].  bests|
00022360  6f 66 61 72 32 25 3d 69  62 25 21 28 69 6e 64 65  |ofar2%=ib%!(inde|
00022370  78 32 25 29 0d 12 5e 21  20 20 e3 20 6a 25 3d 69  |x2%)..^!  . j%=i|
00022380  25 2b 31 20 b8 20 28 4e  72 53 65 6c 65 63 74 65  |%+1 . (NrSelecte|
00022390  64 25 2d 31 29 0d 12 5f  2a 20 20 20 20 69 62 25  |d%-1).._*    ib%|
000223a0  3d 57 69 6e 42 6c 6b 25  2b 39 32 2b 33 32 2a 28  |=WinBlk%+92+32*(|
000223b0  53 65 6c 42 6c 6b 25 21  28 34 2a 6a 25 29 29 0d  |SelBlk%!(4*j%)).|
000223c0  12 60 1d 20 20 20 20 76  61 6c 75 65 31 25 3d 69  |.`.    value1%=i|
000223d0  62 25 21 28 69 6e 64 65  78 31 25 29 0d 12 61 1d  |b%!(index1%)..a.|
000223e0  20 20 20 20 76 61 6c 75  65 32 25 3d 69 62 25 21  |    value2%=ib%!|
000223f0  28 69 6e 64 65 78 32 25  29 0d 12 62 1f 20 20 20  |(index2%)..b.   |
00022400  20 e7 20 62 65 73 74 73  6f 66 61 72 31 25 3d 76  | . bestsofar1%=v|
00022410  61 6c 75 65 31 25 20 8c  0d 12 63 23 20 20 20 20  |alue1% ...c#    |
00022420  20 20 f4 20 6c 6f 6f 6b  20 61 74 20 73 65 63 6f  |  . look at seco|
00022430  6e 64 20 73 6f 72 74 20  6b 65 79 0d 12 64 13 20  |nd sort key..d. |
00022440  20 20 20 20 20 e7 20 64  69 72 32 25 20 8c 0d 12  |     . dir2% ...|
00022450  65 29 20 20 20 20 20 20  20 20 62 65 74 74 65 72  |e)        better|
00022460  25 3d 28 76 61 6c 75 65  32 25 3c 62 65 73 74 73  |%=(value2%<bests|
00022470  6f 66 61 72 32 25 29 0d  12 66 0b 20 20 20 20 20  |ofar2%)..f.     |
00022480  20 cc 0d 12 67 29 20 20  20 20 20 20 20 20 62 65  | ...g)        be|
00022490  74 74 65 72 25 3d 28 76  61 6c 75 65 32 25 3e 62  |tter%=(value2%>b|
000224a0  65 73 74 73 6f 66 61 72  32 25 29 0d 12 68 0b 20  |estsofar2%)..h. |
000224b0  20 20 20 20 20 cd 0d 12  69 09 20 20 20 20 cc 0d  |     ...i.    ..|
000224c0  12 6a 13 20 20 20 20 20  20 e7 20 64 69 72 31 25  |.j.      . dir1%|
000224d0  20 8c 0d 12 6b 46 20 20  20 20 20 20 20 20 62 65  | ...kF        be|
000224e0  74 74 65 72 25 3d 28 76  61 6c 75 65 31 25 3c 62  |tter%=(value1%<b|
000224f0  65 73 74 73 6f 66 61 72  31 25 29 20 3a 20 f4 20  |estsofar1%) : . |
00022500  6c 6f 6f 6b 69 6e 67 20  66 6f 72 20 6c 6f 77 65  |looking for lowe|
00022510  73 74 20 76 61 6c 75 65  0d 12 6c 0b 20 20 20 20  |st value..l.    |
00022520  20 20 cc 0d 12 6d 47 20  20 20 20 20 20 20 20 62  |  ...mG        b|
00022530  65 74 74 65 72 25 3d 28  76 61 6c 75 65 31 25 3e  |etter%=(value1%>|
00022540  62 65 73 74 73 6f 66 61  72 31 25 29 20 3a 20 f4  |bestsofar1%) : .|
00022550  20 6c 6f 6f 6b 69 6e 67  20 66 6f 72 20 68 69 67  | looking for hig|
00022560  68 65 73 74 20 76 61 6c  75 65 0d 12 6e 0b 20 20  |hest value..n.  |
00022570  20 20 20 20 cd 0d 12 6f  09 20 20 20 20 cd 0d 12  |    ...o.    ...|
00022580  70 13 20 20 20 20 e7 20  62 65 74 74 65 72 25 20  |p.    . better% |
00022590  8c 0d 12 71 17 20 20 20  20 20 20 63 61 6e 64 69  |...q.      candi|
000225a0  64 61 74 65 25 3d 6a 25  0d 12 72 1d 20 20 20 20  |date%=j%..r.    |
000225b0  20 20 62 65 73 74 73 6f  66 61 72 31 25 3d 76 61  |  bestsofar1%=va|
000225c0  6c 75 65 31 25 0d 12 73  1d 20 20 20 20 20 20 62  |lue1%..s.      b|
000225d0  65 73 74 73 6f 66 61 72  32 25 3d 76 61 6c 75 65  |estsofar2%=value|
000225e0  32 25 0d 12 74 09 20 20  20 20 cd 0d 12 75 0a 20  |2%..t.    ...u. |
000225f0  20 ed 20 6a 25 0d 12 76  28 20 20 f4 20 73 77 61  | . j%..v(  . swa|
00022600  70 20 69 63 6f 6e 73 20  69 6e 20 73 65 6c 65 63  |p icons in selec|
00022610  74 69 6f 6e 20 73 65 71  75 65 6e 63 65 0d 12 77  |tion sequence..w|
00022620  2e 20 20 c8 94 20 53 65  6c 42 6c 6b 25 21 28 34  |.  .. SelBlk%!(4|
00022630  2a 63 61 6e 64 69 64 61  74 65 25 29 2c 53 65 6c  |*candidate%),Sel|
00022640  42 6c 6b 25 21 28 34 2a  69 25 29 0d 12 78 0b 20  |Blk%!(4*i%)..x. |
00022650  20 69 25 2b 3d 31 0d 12  79 05 ce 0d 12 7a 05 e1  | i%+=1..y....z..|
00022660  0d 12 7b 04 0d 12 7c 40  f4 20 2d 2d 2d 20 63 61  |..{...|@. --- ca|
00022670  6c 63 75 6c 61 74 65 20  63 6f 6f 72 64 73 20 6f  |lculate coords o|
00022680  66 20 62 6f 78 20 73 75  72 72 6f 75 6e 64 69 6e  |f box surroundin|
00022690  67 20 73 65 6c 65 63 74  65 64 20 69 63 6f 6e 73  |g selected icons|
000226a0  20 2d 2d 2d 0d 12 7d 37  dd 20 f2 73 65 6c 5f 62  | ---..}7. .sel_b|
000226b0  6f 78 28 77 69 6e 64 6f  77 25 2c f8 20 78 6d 69  |ox(window%,. xmi|
000226c0  6e 25 2c f8 20 79 6d 69  6e 25 2c f8 20 78 6d 61  |n%,. ymin%,. xma|
000226d0  78 25 2c f8 20 79 6d 61  78 25 29 0d 12 7e 29 f4  |x%,. ymax%)..~).|
000226e0  20 61 73 73 75 6d 65 20  73 65 6c 65 63 74 69 6f  | assume selectio|
000226f0  6e 20 70 72 65 73 65 6e  74 20 69 6e 20 53 65 6c  |n present in Sel|
00022700  42 6c 6b 25 0d 12 7f 08  ea 20 69 25 0d 12 80 17  |Blk%..... i%....|
00022710  53 63 72 61 70 42 6c 6b  25 21 30 3d 77 69 6e 64  |ScrapBlk%!0=wind|
00022720  6f 77 25 0d 12 81 19 53  63 72 61 70 42 6c 6b 25  |ow%....ScrapBlk%|
00022730  21 34 3d 53 65 6c 42 6c  6b 25 21 30 0d 12 82 25  |!4=SelBlk%!0...%|
00022740  c8 99 20 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |.. "Wimp_GetIcon|
00022750  53 74 61 74 65 22 2c 2c  53 63 72 61 70 42 6c 6b  |State",,ScrapBlk|
00022760  25 0d 12 83 15 78 6d 69  6e 25 3d 53 63 72 61 70  |%....xmin%=Scrap|
00022770  42 6c 6b 25 21 38 0d 12  84 16 79 6d 69 6e 25 3d  |Blk%!8....ymin%=|
00022780  53 63 72 61 70 42 6c 6b  25 21 31 32 0d 12 85 16  |ScrapBlk%!12....|
00022790  78 6d 61 78 25 3d 53 63  72 61 70 42 6c 6b 25 21  |xmax%=ScrapBlk%!|
000227a0  31 36 0d 12 86 16 79 6d  61 78 25 3d 53 63 72 61  |16....ymax%=Scra|
000227b0  70 42 6c 6b 25 21 32 30  0d 12 87 1a e3 20 69 25  |pBlk%!20..... i%|
000227c0  3d 30 20 b8 20 4e 72 53  65 6c 65 63 74 65 64 25  |=0 . NrSelected%|
000227d0  2d 31 0d 12 88 20 20 20  53 63 72 61 70 42 6c 6b  |-1...   ScrapBlk|
000227e0  25 21 34 3d 53 65 6c 42  6c 6b 25 21 28 34 2a 69  |%!4=SelBlk%!(4*i|
000227f0  25 29 0d 12 89 27 20 20  c8 99 20 22 57 69 6d 70  |%)...'  .. "Wimp|
00022800  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
00022810  53 63 72 61 70 42 6c 6b  25 0d 12 8a 2d 20 20 e7  |ScrapBlk%...-  .|
00022820  20 78 6d 69 6e 25 3e 53  63 72 61 70 42 6c 6b 25  | xmin%>ScrapBlk%|
00022830  21 38 20 8c 20 78 6d 69  6e 25 3d 53 63 72 61 70  |!8 . xmin%=Scrap|
00022840  42 6c 6b 25 21 38 0d 12  8b 2f 20 20 e7 20 79 6d  |Blk%!8.../  . ym|
00022850  69 6e 25 3e 53 63 72 61  70 42 6c 6b 25 21 31 32  |in%>ScrapBlk%!12|
00022860  20 8c 20 79 6d 69 6e 25  3d 53 63 72 61 70 42 6c  | . ymin%=ScrapBl|
00022870  6b 25 21 31 32 0d 12 8c  2f 20 20 e7 20 78 6d 61  |k%!12.../  . xma|
00022880  78 25 3c 53 63 72 61 70  42 6c 6b 25 21 31 36 20  |x%<ScrapBlk%!16 |
00022890  8c 20 78 6d 61 78 25 3d  53 63 72 61 70 42 6c 6b  |. xmax%=ScrapBlk|
000228a0  25 21 31 36 0d 12 8d 2f  20 20 e7 20 79 6d 61 78  |%!16.../  . ymax|
000228b0  25 3c 53 63 72 61 70 42  6c 6b 25 21 32 30 20 8c  |%<ScrapBlk%!20 .|
000228c0  20 79 6d 61 78 25 3d 53  63 72 61 70 42 6c 6b 25  | ymax%=ScrapBlk%|
000228d0  21 32 30 0d 12 8e 08 ed  20 69 25 0d 12 8f 05 e1  |!20..... i%.....|
000228e0  0d 12 90 04 0d 12 91 19  f4 20 2a 2a 2a 20 73 65  |......... *** se|
000228f0  74 75 70 20 70 72 6f 63  73 20 2a 2a 2a 0d 12 92  |tup procs ***...|
00022900  04 0d 12 93 14 dd 20 f2  73 65 74 75 70 5f 64 65  |...... .setup_de|
00022910  66 61 75 6c 74 0d 12 94  14 49 63 49 6e 66 6f 5f  |fault....IcInfo_|
00022920  41 63 74 69 76 65 25 3d  b9 0d 12 95 10 44 75 70  |Active%=.....Dup|
00022930  6c 4e 61 6d 65 73 25 3d  b9 0d 12 96 0c 48 61 74  |lNames%=.....Hat|
00022940  63 68 25 3d b9 0d 12 97  17 53 75 70 70 6f 72 74  |ch%=.....Support|
00022950  49 6e 74 65 72 66 61 63  65 25 3d a3 0d 12 98 14  |Interface%=.....|
00022960  47 72 69 64 5f 53 69 7a  65 4c 6f 63 6b 25 3d b9  |Grid_SizeLock%=.|
00022970  0d 12 99 11 47 72 69 64  5f 53 69 7a 65 58 25 3d  |....Grid_SizeX%=|
00022980  32 0d 12 9a 11 47 72 69  64 5f 53 69 7a 65 59 25  |2....Grid_SizeY%|
00022990  3d 34 0d 12 9b 13 47 72  69 64 5f 50 6f 73 4c 6f  |=4....Grid_PosLo|
000229a0  63 6b 25 3d a3 0d 12 9c  10 47 72 69 64 5f 50 6f  |ck%=.....Grid_Po|
000229b0  73 58 25 3d 32 0d 12 9d  10 47 72 69 64 5f 50 6f  |sX%=2....Grid_Po|
000229c0  73 59 25 3d 34 0d 12 9e  16 53 61 76 65 5f 55 6e  |sY%=4....Save_Un|
000229d0  73 65 6c 65 63 74 65 64  25 3d a3 0d 12 9f 14 44  |selected%=.....D|
000229e0  65 6c 65 74 65 4f 75 74  73 69 64 65 25 3d a3 0d  |eleteOutside%=..|
000229f0  12 a0 11 54 72 61 70 44  63 6c 69 63 6b 25 3d b9  |...TrapDclick%=.|
00022a00  0d 12 a1 11 53 75 70 70  6f 72 74 41 45 48 25 3d  |....SupportAEH%=|
00022a10  a3 0d 12 a2 05 e1 0d 12  a3 04 0d 12 a4 11 dd 20  |............... |
00022a20  f2 73 65 74 75 70 5f 6c  6f 61 64 0d 12 a5 08 ea  |.setup_load.....|
00022a30  20 66 25 0d 12 a6 07 ea  20 85 0d 12 a7 1e 66 25  | f%..... .....f%|
00022a40  3d 8e 20 28 41 70 70 6c  44 69 72 24 2b 22 2e 4f  |=. (ApplDir$+".O|
00022a50  70 74 69 6f 6e 73 22 29  0d 12 a8 0c e7 20 66 25  |ptions")..... f%|
00022a60  3d 30 20 8c 0d 12 a9 18  20 20 f2 64 69 61 6c 6f  |=0 .....  .dialo|
00022a70  67 75 65 28 35 2c 22 22  2c 22 22 29 0d 12 aa 14  |gue(5,"","")....|
00022a80  20 20 f2 73 65 74 75 70  5f 64 65 66 61 75 6c 74  |  .setup_default|
00022a90  0d 12 ab 05 cc 0d 12 ac  32 20 20 ee 20 85 20 ea  |........2  . . .|
00022aa0  20 d9 20 23 66 25 20 3a  20 f2 65 72 72 6f 72 28  | . #f% : .error(|
00022ab0  30 29 20 3a 20 f2 73 65  74 75 70 5f 64 65 66 61  |0) : .setup_defa|
00022ac0  75 6c 74 20 3a 20 e1 0d  12 ad 3d 20 20 e8 23 66  |ult : ....=  .#f|
00022ad0  25 2c 49 63 49 6e 66 6f  5f 41 63 74 69 76 65 25  |%,IcInfo_Active%|
00022ae0  2c 44 75 70 6c 4e 61 6d  65 73 25 2c 48 61 74 63  |,DuplNames%,Hatc|
00022af0  68 25 2c 53 75 70 70 6f  72 74 49 6e 74 65 72 66  |h%,SupportInterf|
00022b00  61 63 65 25 0d 12 ae 31  20 20 e8 23 66 25 2c 47  |ace%...1  .#f%,G|
00022b10  72 69 64 5f 53 69 7a 65  4c 6f 63 6b 25 2c 47 72  |rid_SizeLock%,Gr|
00022b20  69 64 5f 53 69 7a 65 58  25 2c 47 72 69 64 5f 53  |id_SizeX%,Grid_S|
00022b30  69 7a 65 59 25 0d 12 af  2e 20 20 e8 23 66 25 2c  |izeY%....  .#f%,|
00022b40  47 72 69 64 5f 50 6f 73  4c 6f 63 6b 25 2c 47 72  |Grid_PosLock%,Gr|
00022b50  69 64 5f 50 6f 73 58 25  2c 47 72 69 64 5f 50 6f  |id_PosX%,Grid_Po|
00022b60  73 59 25 0d 12 b0 42 20  20 e8 23 66 25 2c 53 61  |sY%...B  .#f%,Sa|
00022b70  76 65 5f 55 6e 73 65 6c  65 63 74 65 64 25 2c 44  |ve_Unselected%,D|
00022b80  65 6c 65 74 65 4f 75 74  73 69 64 65 25 2c 54 72  |eleteOutside%,Tr|
00022b90  61 70 44 63 6c 69 63 6b  25 2c 53 75 70 70 6f 72  |apDclick%,Suppor|
00022ba0  74 41 45 48 25 0d 12 b1  0b 20 20 d9 20 23 66 25  |tAEH%....  . #f%|
00022bb0  0d 12 b2 05 cd 0d 12 b3  05 e1 0d 12 b4 04 0d 12  |................|
00022bc0  b5 11 dd 20 f2 73 65 74  75 70 5f 73 61 76 65 0d  |... .setup_save.|
00022bd0  12 b6 08 ea 20 66 25 0d  12 b7 07 ea 20 85 0d 12  |.... f%..... ...|
00022be0  b8 1e 66 25 3d ae 20 28  41 70 70 6c 44 69 72 24  |..f%=. (ApplDir$|
00022bf0  2b 22 2e 4f 70 74 69 6f  6e 73 22 29 0d 12 b9 29  |+".Options")...)|
00022c00  ee 20 85 20 ea 20 e7 20  66 25 3c 3e 30 20 8c 20  |. . . . f%<>0 . |
00022c10  d9 20 23 66 25 20 3a 20  f2 65 72 72 6f 72 28 30  |. #f% : .error(0|
00022c20  29 20 3a 20 e1 0d 12 ba  3b f1 23 66 25 2c 49 63  |) : ....;.#f%,Ic|
00022c30  49 6e 66 6f 5f 41 63 74  69 76 65 25 2c 44 75 70  |Info_Active%,Dup|
00022c40  6c 4e 61 6d 65 73 25 2c  48 61 74 63 68 25 2c 53  |lNames%,Hatch%,S|
00022c50  75 70 70 6f 72 74 49 6e  74 65 72 66 61 63 65 25  |upportInterface%|
00022c60  0d 12 bb 2f f1 23 66 25  2c 47 72 69 64 5f 53 69  |.../.#f%,Grid_Si|
00022c70  7a 65 4c 6f 63 6b 25 2c  47 72 69 64 5f 53 69 7a  |zeLock%,Grid_Siz|
00022c80  65 58 25 2c 47 72 69 64  5f 53 69 7a 65 59 25 0d  |eX%,Grid_SizeY%.|
00022c90  12 bc 2c f1 23 66 25 2c  47 72 69 64 5f 50 6f 73  |..,.#f%,Grid_Pos|
00022ca0  4c 6f 63 6b 25 2c 47 72  69 64 5f 50 6f 73 58 25  |Lock%,Grid_PosX%|
00022cb0  2c 47 72 69 64 5f 50 6f  73 59 25 0d 12 bd 40 f1  |,Grid_PosY%...@.|
00022cc0  23 66 25 2c 53 61 76 65  5f 55 6e 73 65 6c 65 63  |#f%,Save_Unselec|
00022cd0  74 65 64 25 2c 44 65 6c  65 74 65 4f 75 74 73 69  |ted%,DeleteOutsi|
00022ce0  64 65 25 2c 54 72 61 70  44 63 6c 69 63 6b 25 2c  |de%,TrapDclick%,|
00022cf0  53 75 70 70 6f 72 74 41  45 48 25 0d 12 be 09 d9  |SupportAEH%.....|
00022d00  20 23 66 25 0d 12 bf 05  e1 0d 12 c0 04 0d 12 c1  | #f%............|
00022d10  29 f4 20 2a 2a 2a 20 70  72 6f 63 73 20 66 6f 72  |). *** procs for|
00022d20  20 73 74 61 74 69 73 74  69 63 73 20 77 69 6e 64  | statistics wind|
00022d30  6f 77 20 2a 2a 2a 0d 12  c2 04 0d 12 c3 13 dd 20  |ow ***......... |
00022d40  f2 73 74 61 74 5f 66 69  6c 6c 77 69 6e 0d 12 c4  |.stat_fillwin...|
00022d50  49 ea 20 74 79 70 65 25  2c 77 61 73 6f 70 65 6e  |I. type%,wasopen|
00022d60  25 2c 79 73 69 7a 65 25  2c 6d 61 78 77 64 65 66  |%,ysize%,maxwdef|
00022d70  25 2c 74 6f 74 69 6e 64  73 69 7a 65 25 2c 69 25  |%,totindsize%,i%|
00022d80  2c 77 64 65 66 25 2c 69  6e 64 73 69 7a 65 25 2c  |,wdef%,indsize%,|
00022d90  6a 25 2c 69 62 25 0d 12  c5 15 c8 99 20 22 48 6f  |j%,ib%...... "Ho|
00022da0  75 72 67 6c 61 73 73 5f  4f 6e 22 0d 12 c6 14 f2  |urglass_On".....|
00022db0  73 65 6c 5f 67 65 74 28  53 74 61 74 57 25 29 0d  |sel_get(StatW%).|
00022dc0  12 c7 13 e7 20 53 65 6c  42 6c 6b 25 21 30 3d 32  |.... SelBlk%!0=2|
00022dd0  20 8c 0d 12 c8 28 20 20  74 79 70 65 25 3d 32 20  | ....(  type%=2 |
00022de0  3a 20 f4 20 6e 75 6d 62  65 72 73 20 69 6e 20 68  |: . numbers in h|
00022df0  65 78 61 64 65 63 69 6d  61 6c 0d 12 c9 05 cc 0d  |exadecimal......|
00022e00  12 ca 19 20 20 74 79 70  65 25 3d 31 20 3a 20 f4  |...  type%=1 : .|
00022e10  20 64 65 63 69 6d 61 6c  0d 12 cb 05 cd 0d 12 cc  | decimal........|
00022e20  14 57 69 6e 42 6c 6b 25  21 30 3d 53 74 61 74 57  |.WinBlk%!0=StatW|
00022e30  25 0d 12 cd 24 c8 99 20  22 57 69 6d 70 5f 47 65  |%...$.. "Wimp_Ge|
00022e40  74 57 69 6e 64 6f 77 49  6e 66 6f 22 2c 2c 57 69  |tWindowInfo",,Wi|
00022e50  6e 42 6c 6b 25 0d 12 ce  23 77 61 73 6f 70 65 6e  |nBlk%...#wasopen|
00022e60  25 3d 28 57 69 6e 42 6c  6b 25 21 33 32 29 20 80  |%=(WinBlk%!32) .|
00022e70  20 28 31 3c 3c 31 36 29  0d 12 cf 23 c8 99 20 22  | (1<<16)...#.. "|
00022e80  57 69 6d 70 5f 44 65 6c  65 74 65 57 69 6e 64 6f  |Wimp_DeleteWindo|
00022e90  77 22 2c 2c 57 69 6e 42  6c 6b 25 0d 12 d0 11 57  |w",,WinBlk%....W|
00022ea0  69 6e 42 6c 6b 25 21 38  38 3d 31 35 0d 12 d1 2d  |inBlk%!88=15...-|
00022eb0  79 73 69 7a 65 25 3d 32  30 34 2b 4e 72 54 65 6d  |ysize%=204+NrTem|
00022ec0  70 6c 61 74 65 73 25 2a  34 30 20 3a 20 f4 20 73  |plates%*40 : . s|
00022ed0  65 74 20 65 78 74 65 6e  74 0d 12 d2 2a 57 69 6e  |et extent...*Win|
00022ee0  42 6c 6b 25 21 38 3d 57  69 6e 42 6c 6b 25 21 31  |Blk%!8=WinBlk%!1|
00022ef0  36 2d 57 69 6e 42 6c 6b  25 21 32 34 2d 79 73 69  |6-WinBlk%!24-ysi|
00022f00  7a 65 25 0d 12 d3 16 57  69 6e 42 6c 6b 25 21 34  |ze%....WinBlk%!4|
00022f10  38 3d 2d 79 73 69 7a 65  25 0d 12 d4 2e c8 99 20  |8=-ysize%...... |
00022f20  22 57 69 6d 70 5f 43 72  65 61 74 65 57 69 6e 64  |"Wimp_CreateWind|
00022f30  6f 77 22 2c 2c 57 69 6e  42 6c 6b 25 2b 34 20 b8  |ow",,WinBlk%+4 .|
00022f40  20 53 74 61 74 57 25 0d  12 d5 14 57 69 6e 42 6c  | StatW%....WinBl|
00022f50  6b 25 21 30 3d 53 74 61  74 57 25 0d 12 d6 37 f2  |k%!0=StatW%...7.|
00022f60  6c 69 6e 6b 69 63 6f 6e  74 65 78 74 28 32 35 2c  |linkicontext(25,|
00022f70  57 69 6e 42 6c 6b 25 2c  35 29 20 3a 20 f4 20 6e  |WinBlk%,5) : . n|
00022f80  75 6d 62 65 72 20 6f 66  20 74 65 6d 70 6c 61 74  |umber of templat|
00022f90  65 73 0d 12 d7 3d f2 6c  69 6e 6b 69 63 6f 6e 74  |es...=.linkicont|
00022fa0  65 78 74 28 32 32 2c 57  69 6e 42 6c 6b 25 2c 37  |ext(22,WinBlk%,7|
00022fb0  29 20 3a 20 f4 20 6c 61  72 67 65 73 74 20 77 69  |) : . largest wi|
00022fc0  6e 64 6f 77 20 64 65 66  69 6e 69 74 69 6f 6e 0d  |ndow definition.|
00022fd0  12 d8 41 f2 6c 69 6e 6b  69 63 6f 6e 74 65 78 74  |..A.linkicontext|
00022fe0  28 32 33 2c 57 69 6e 42  6c 6b 25 2c 39 29 20 3a  |(23,WinBlk%,9) :|
00022ff0  20 f4 20 74 6f 74 61 6c  20 73 69 7a 65 20 6f 66  | . total size of|
00023000  20 69 6e 64 69 72 65 63  74 65 64 20 64 61 74 61  | indirected data|
00023010  0d 12 d9 0e 6d 61 78 77  64 65 66 25 3d 30 0d 12  |....maxwdef%=0..|
00023020  da 11 74 6f 74 69 6e 64  73 69 7a 65 25 3d 30 0d  |..totindsize%=0.|
00023030  12 db 1b e3 20 69 25 3d  30 20 b8 20 4e 72 54 65  |.... i%=0 . NrTe|
00023040  6d 70 6c 61 74 65 73 25  2d 31 0d 12 dc 20 20 20  |mplates%-1...   |
00023050  57 69 6e 42 6c 6b 25 21  30 3d 54 65 6d 70 6c 48  |WinBlk%!0=TemplH|
00023060  61 6e 64 6c 65 25 28 69  25 29 0d 12 dd 26 20 20  |andle%(i%)...&  |
00023070  c8 99 20 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |.. "Wimp_GetWind|
00023080  6f 77 49 6e 66 6f 22 2c  2c 57 69 6e 42 6c 6b 25  |owInfo",,WinBlk%|
00023090  0d 12 de 1c 20 20 77 64  65 66 25 3d 38 38 2b 33  |....  wdef%=88+3|
000230a0  32 2a 57 69 6e 42 6c 6b  25 21 38 38 0d 12 df 39  |2*WinBlk%!88...9|
000230b0  20 20 69 6e 64 73 69 7a  65 25 3d a4 73 74 61 74  |  indsize%=.stat|
000230c0  5f 63 61 6c 63 69 6e 64  69 72 73 69 7a 65 28 57  |_calcindirsize(W|
000230d0  69 6e 42 6c 6b 25 21 36  30 2c 57 69 6e 42 6c 6b  |inBlk%!60,WinBlk|
000230e0  25 2b 37 36 29 0d 12 e0  16 20 20 e7 20 57 69 6e  |%+76)....  . Win|
000230f0  42 6c 6b 25 21 38 38 3e  30 20 8c 0d 12 e1 1f 20  |Blk%!88>0 ..... |
00023100  20 20 20 e3 20 6a 25 3d  30 20 b8 20 28 57 69 6e  |   . j%=0 . (Win|
00023110  42 6c 6b 25 21 38 38 2d  31 29 0d 12 e2 1e 20 20  |Blk%!88-1)....  |
00023120  20 20 20 20 69 62 25 3d  57 69 6e 42 6c 6b 25 2b  |    ib%=WinBlk%+|
00023130  39 32 2b 33 32 2a 6a 25  0d 12 e3 36 20 20 20 20  |92+32*j%...6    |
00023140  20 20 69 6e 64 73 69 7a  65 25 2b 3d a4 73 74 61  |  indsize%+=.sta|
00023150  74 5f 63 61 6c 63 69 6e  64 69 72 73 69 7a 65 28  |t_calcindirsize(|
00023160  69 62 25 21 31 36 2c 69  62 25 2b 32 30 29 0d 12  |ib%!16,ib%+20)..|
00023170  e4 0c 20 20 20 20 ed 20  6a 25 0d 12 e5 07 20 20  |..    . j%....  |
00023180  cd 0d 12 e6 32 20 20 f2  73 74 61 74 5f 63 72 65  |....2  .stat_cre|
00023190  61 74 65 69 63 6f 6e 28  31 30 2c 24 28 54 65 6d  |ateicon(10,$(Tem|
000231a0  70 6c 4e 61 6d 65 73 25  2b 69 25 2a 32 38 29 2c  |plNames%+i%*28),|
000231b0  69 25 29 0d 12 e7 3d 20  20 f2 73 74 61 74 5f 63  |i%)...=  .stat_c|
000231c0  72 65 61 74 65 69 63 6f  6e 28 31 31 2c a4 73 74  |reateicon(11,.st|
000231d0  61 74 5f 6e 75 6d 32 73  74 72 28 57 69 6e 42 6c  |at_num2str(WinBl|
000231e0  6b 25 21 38 38 2c 74 79  70 65 25 29 2c 69 25 29  |k%!88,type%),i%)|
000231f0  0d 12 e8 38 20 20 f2 73  74 61 74 5f 63 72 65 61  |...8  .stat_crea|
00023200  74 65 69 63 6f 6e 28 31  32 2c a4 73 74 61 74 5f  |teicon(12,.stat_|
00023210  6e 75 6d 32 73 74 72 28  77 64 65 66 25 2c 74 79  |num2str(wdef%,ty|
00023220  70 65 25 29 2c 69 25 29  0d 12 e9 3b 20 20 f2 73  |pe%),i%)...;  .s|
00023230  74 61 74 5f 63 72 65 61  74 65 69 63 6f 6e 28 31  |tat_createicon(1|
00023240  33 2c a4 73 74 61 74 5f  6e 75 6d 32 73 74 72 28  |3,.stat_num2str(|
00023250  69 6e 64 73 69 7a 65 25  2c 74 79 70 65 25 29 2c  |indsize%,type%),|
00023260  69 25 29 0d 12 ea 41 20  20 f2 73 74 61 74 5f 63  |i%)...A  .stat_c|
00023270  72 65 61 74 65 69 63 6f  6e 28 31 34 2c a4 73 74  |reateicon(14,.st|
00023280  61 74 5f 6e 75 6d 32 73  74 72 28 77 64 65 66 25  |at_num2str(wdef%|
00023290  2b 69 6e 64 73 69 7a 65  25 2c 74 79 70 65 25 29  |+indsize%,type%)|
000232a0  2c 69 25 29 0d 12 eb 15  20 20 77 64 65 66 25 2b  |,i%)....  wdef%+|
000232b0  3d 69 6e 64 73 69 7a 65  25 0d 12 ec 27 20 20 e7  |=indsize%...'  .|
000232c0  20 6d 61 78 77 64 65 66  25 3c 77 64 65 66 25 20  | maxwdef%<wdef% |
000232d0  8c 20 6d 61 78 77 64 65  66 25 3d 77 64 65 66 25  |. maxwdef%=wdef%|
000232e0  0d 12 ed 1b 20 20 74 6f  74 69 6e 64 73 69 7a 65  |....  totindsize|
000232f0  25 2b 3d 69 6e 64 73 69  7a 65 25 0d 12 ee 08 ed  |%+=indsize%.....|
00023300  20 69 25 0d 12 ef 24 f2  73 65 74 69 63 6f 6e 74  | i%...$.seticont|
00023310  65 78 74 28 32 35 2c c3  28 4e 72 54 65 6d 70 6c  |ext(25,.(NrTempl|
00023320  61 74 65 73 25 29 29 0d  12 f0 32 f2 73 65 74 69  |ates%))...2.seti|
00023330  63 6f 6e 74 65 78 74 28  32 32 2c a4 73 74 61 74  |context(22,.stat|
00023340  5f 6e 75 6d 32 73 74 72  28 6d 61 78 77 64 65 66  |_num2str(maxwdef|
00023350  25 2c 74 79 70 65 25 29  29 0d 12 f1 35 f2 73 65  |%,type%))...5.se|
00023360  74 69 63 6f 6e 74 65 78  74 28 32 33 2c a4 73 74  |ticontext(23,.st|
00023370  61 74 5f 6e 75 6d 32 73  74 72 28 74 6f 74 69 6e  |at_num2str(totin|
00023380  64 73 69 7a 65 25 2c 74  79 70 65 25 29 29 0d 12  |dsize%,type%))..|
00023390  f2 10 e7 20 77 61 73 6f  70 65 6e 25 20 8c 0d 12  |... wasopen% ...|
000233a0  f3 1b 20 20 f2 6f 70 65  6e 77 69 6e 64 6f 77 28  |..  .openwindow(|
000233b0  53 74 61 74 57 25 2c 30  29 0d 12 f4 05 cc 0d 12  |StatW%,0).......|
000233c0  f5 1b 20 20 f2 6f 70 65  6e 77 69 6e 64 6f 77 28  |..  .openwindow(|
000233d0  53 74 61 74 57 25 2c 31  29 0d 12 f6 05 cd 0d 12  |StatW%,1).......|
000233e0  f7 16 c8 99 20 22 48 6f  75 72 67 6c 61 73 73 5f  |.... "Hourglass_|
000233f0  4f 66 66 22 0d 12 f8 05  e1 0d 12 f9 04 0d 12 fa  |Off"............|
00023400  42 f4 20 2d 2d 2d 20 63  61 6c 63 75 6c 61 74 65  |B. --- calculate|
00023410  20 73 69 7a 65 20 6f 66  20 69 6e 64 69 72 65 63  | size of indirec|
00023420  74 65 64 20 64 61 74 61  20 6e 65 65 64 65 64 20  |ted data needed |
00023430  66 6f 72 20 61 6e 20 69  63 6f 6e 20 2d 2d 2d 0d  |for an icon ---.|
00023440  12 fb 27 dd 20 a4 73 74  61 74 5f 63 61 6c 63 69  |..'. .stat_calci|
00023450  6e 64 69 72 73 69 7a 65  28 66 6c 61 67 73 25 2c  |ndirsize(flags%,|
00023460  64 61 74 61 25 29 0d 12  fc 0b ea 20 73 69 7a 65  |data%)..... size|
00023470  25 0d 12 fd 1f e7 20 28  66 6c 61 67 73 25 20 80  |%..... (flags% .|
00023480  20 26 38 30 30 31 30 30  29 3d 26 31 30 30 20 8c  | &800100)=&100 .|
00023490  0d 12 fe 13 20 20 73 69  7a 65 25 3d 64 61 74 61  |....  size%=data|
000234a0  25 21 38 0d 12 ff 26 20  20 e7 20 28 66 6c 61 67  |%!8...&  . (flag|
000234b0  73 25 20 80 20 31 29 20  80 20 28 64 61 74 61 25  |s% . 1) . (data%|
000234c0  21 34 3c 3e 2d 31 29 20  8c 0d 13 00 23 20 20 20  |!4<>-1) ....#   |
000234d0  20 73 69 7a 65 25 3d 73  69 7a 65 25 2b a9 28 24  | size%=size%+.($|
000234e0  28 64 61 74 61 25 21 34  29 29 2b 31 0d 13 01 07  |(data%!4))+1....|
000234f0  20 20 cd 0d 13 02 05 cc  0d 13 03 0d 20 20 73 69  |  ..........  si|
00023500  7a 65 25 3d 30 0d 13 04  05 cd 0d 13 05 0a 3d 73  |ze%=0.........=s|
00023510  69 7a 65 25 0d 13 06 04  0d 13 07 30 f4 20 2d 2d  |ize%.......0. --|
00023520  2d 20 63 72 65 61 74 65  20 61 6e 20 69 63 6f 6e  |- create an icon|
00023530  20 69 6e 20 74 68 65 20  73 74 61 74 73 20 77 69  | in the stats wi|
00023540  6e 64 6f 77 20 2d 2d 2d  0d 13 08 2a dd 20 f2 73  |ndow ---...*. .s|
00023550  74 61 74 5f 63 72 65 61  74 65 69 63 6f 6e 28 63  |tat_createicon(c|
00023560  6f 70 79 66 72 6f 6d 25  2c 73 24 2c 6c 69 6e 65  |opyfrom%,s$,line|
00023570  25 29 0d 13 09 16 53 63  72 61 70 42 6c 6b 25 21  |%)....ScrapBlk%!|
00023580  30 3d 53 74 61 74 57 25  0d 13 0a 19 53 63 72 61  |0=StatW%....Scra|
00023590  70 42 6c 6b 25 21 34 3d  63 6f 70 79 66 72 6f 6d  |pBlk%!4=copyfrom|
000235a0  25 0d 13 0b 25 c8 99 20  22 57 69 6d 70 5f 47 65  |%...%.. "Wimp_Ge|
000235b0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 53 63 72  |tIconState",,Scr|
000235c0  61 70 42 6c 6b 25 0d 13  0c 4b f4 20 63 72 65 61  |apBlk%...K. crea|
000235d0  74 65 20 69 63 6f 6e 20  74 68 61 74 20 69 73 20  |te icon that is |
000235e0  69 64 65 6e 74 69 63 61  6c 2c 20 65 78 63 65 70  |identical, excep|
000235f0  74 20 66 6f 72 20 73 74  72 69 6e 67 2c 20 63 6f  |t for string, co|
00023600  6c 6f 75 72 73 20 61 6e  64 20 59 20 63 6f 6f 72  |lours and Y coor|
00023610  64 0d 13 0d 2c 53 63 72  61 70 42 6c 6b 25 21 31  |d...,ScrapBlk%!1|
00023620  32 3d 53 63 72 61 70 42  6c 6b 25 21 31 32 2d 34  |2=ScrapBlk%!12-4|
00023630  2d 34 30 2a 28 6c 69 6e  65 25 2b 31 29 0d 13 0e  |-40*(line%+1)...|
00023640  20 53 63 72 61 70 42 6c  6b 25 21 32 30 3d 53 63  | ScrapBlk%!20=Sc|
00023650  72 61 70 42 6c 6b 25 21  31 32 2b 34 30 0d 13 0f  |rapBlk%!12+40...|
00023660  35 53 63 72 61 70 42 6c  6b 25 21 32 34 3d 28 53  |5ScrapBlk%!24=(S|
00023670  63 72 61 70 42 6c 6b 25  21 32 34 20 80 20 26 46  |crapBlk%!24 . &F|
00023680  46 46 46 46 46 29 20 84  20 26 31 38 30 30 30 30  |FFFFF) . &180000|
00023690  30 30 0d 13 10 48 53 63  72 61 70 42 6c 6b 25 21  |00...HScrapBlk%!|
000236a0  32 34 3d 53 63 72 61 70  42 6c 6b 25 21 32 34 20  |24=ScrapBlk%!24 |
000236b0  80 20 28 ac 20 26 31 30  30 29 20 3a 20 f4 20 69  |. (. &100) : . i|
000236c0  63 6f 6e 20 6d 75 73 74  20 62 65 20 6e 6f 74 2d  |con must be not-|
000236d0  69 6e 64 69 72 65 63 74  65 64 0d 13 11 16 24 28  |indirected....$(|
000236e0  53 63 72 61 70 42 6c 6b  25 2b 32 38 29 3d 73 24  |ScrapBlk%+28)=s$|
000236f0  0d 13 12 16 53 63 72 61  70 42 6c 6b 25 21 34 3d  |....ScrapBlk%!4=|
00023700  53 74 61 74 57 25 0d 13  13 25 c8 99 20 22 57 69  |StatW%...%.. "Wi|
00023710  6d 70 5f 43 72 65 61 74  65 49 63 6f 6e 22 2c 2c  |mp_CreateIcon",,|
00023720  53 63 72 61 70 42 6c 6b  25 2b 34 0d 13 14 05 e1  |ScrapBlk%+4.....|
00023730  0d 13 15 04 0d 13 16 3b  f4 20 2d 2d 2d 20 63 6f  |.......;. --- co|
00023740  6e 76 65 72 74 20 61 20  6e 75 6d 62 65 72 20 74  |nvert a number t|
00023750  6f 20 61 20 73 74 72 69  6e 67 20 28 68 65 78 20  |o a string (hex |
00023760  6f 72 20 64 65 63 69 6d  61 6c 29 20 2d 2d 2d 0d  |or decimal) ---.|
00023770  13 17 1f dd 20 a4 73 74  61 74 5f 6e 75 6d 32 73  |.... .stat_num2s|
00023780  74 72 28 6e 75 6d 25 2c  74 79 70 65 25 29 0d 13  |tr(num%,type%)..|
00023790  18 08 ea 20 73 24 0d 13  19 0f e7 20 74 79 70 65  |... s$..... type|
000237a0  25 3d 31 20 8c 0d 13 1a  10 20 20 73 24 3d c3 28  |%=1 .....  s$=.(|
000237b0  6e 75 6d 25 29 0d 13 1b  05 cc 0d 13 1c 15 20 20  |num%).........  |
000237c0  73 24 3d 22 26 22 2b c3  7e 28 6e 75 6d 25 29 0d  |s$="&"+.~(num%).|
000237d0  13 1d 05 cd 0d 13 1e 07  3d 73 24 0d 13 1f 04 0d  |........=s$.....|
000237e0  13 20 2e f4 20 2a 2a 2a  20 70 72 6f 63 73 20 66  |. .. *** procs f|
000237f0  6f 72 20 68 61 6e 64 6c  69 6e 67 20 6f 75 74 6c  |or handling outl|
00023800  69 6e 65 20 66 6f 6e 74  73 20 2a 2a 2a 0d 13 21  |ine fonts ***..!|
00023810  04 0d 13 22 17 dd 20 f2  66 6f 6e 74 5f 6c 6f 73  |...".. .font_los|
00023820  65 28 66 6f 6e 74 25 29  0d 13 23 18 46 6f 6e 74  |e(font%)..#.Font|
00023830  55 73 61 67 65 25 28 66  6f 6e 74 25 29 2d 3d 31  |Usage%(font%)-=1|
00023840  0d 13 24 1b e7 20 46 6f  6e 74 55 73 61 67 65 25  |..$.. FontUsage%|
00023850  28 66 6f 6e 74 25 29 3d  30 20 8c 0d 13 25 1e 20  |(font%)=0 ...%. |
00023860  20 c8 99 20 22 46 6f 6e  74 5f 4c 6f 73 65 46 6f  | .. "Font_LoseFo|
00023870  6e 74 22 2c 66 6f 6e 74  25 0d 13 26 05 cd 0d 13  |nt",font%..&....|
00023880  27 05 e1 0d 13 28 04 0d  13 29 13 dd 20 f2 66 6f  |'....(...).. .fo|
00023890  6e 74 5f 6c 6f 73 65 61  6c 6c 0d 13 2a 0b ea 20  |nt_loseall..*.. |
000238a0  69 25 2c 6a 25 0d 13 2b  10 e3 20 69 25 3d 30 20  |i%,j%..+.. i%=0 |
000238b0  b8 20 32 35 35 0d 13 2c  1b 20 20 e7 20 46 6f 6e  |. 255..,.  . Fon|
000238c0  74 55 73 61 67 65 25 28  69 25 29 3c 3e 30 20 8c  |tUsage%(i%)<>0 .|
000238d0  0d 13 2d 1d 20 20 20 20  c8 99 20 22 46 6f 6e 74  |..-.    .. "Font|
000238e0  5f 4c 6f 73 65 46 6f 6e  74 22 2c 69 25 0d 13 2e  |_LoseFont",i%...|
000238f0  07 20 20 cd 0d 13 2f 08  ed 20 69 25 0d 13 30 05  |.  .../.. i%..0.|
00023900  e1 0d 13 31 04 0d 13 32  37 f4 20 2d 2d 2d 20 67  |...1...27. --- g|
00023910  65 74 20 66 6f 6e 74 20  6e 61 6d 65 20 61 6e 64  |et font name and|
00023920  20 73 69 7a 65 20 66 72  6f 6d 20 61 20 66 6f 6e  | size from a fon|
00023930  74 20 68 61 6e 64 6c 65  20 2d 2d 2d 0d 13 33 35  |t handle ---..35|
00023940  dd 20 f2 66 6f 6e 74 5f  67 65 74 69 6e 66 6f 28  |. .font_getinfo(|
00023950  66 68 61 6e 64 6c 65 25  2c f8 20 6e 61 6d 65 24  |fhandle%,. name$|
00023960  2c f8 20 78 73 69 7a 65  2c f8 20 79 73 69 7a 65  |,. xsize,. ysize|
00023970  29 0d 13 34 17 ea 20 78  73 69 7a 65 31 36 25 2c  |)..4.. xsize16%,|
00023980  79 73 69 7a 65 31 36 25  0d 13 35 3f c8 99 20 22  |ysize16%..5?.. "|
00023990  46 6f 6e 74 5f 52 65 61  64 44 65 66 6e 22 2c 66  |Font_ReadDefn",f|
000239a0  68 61 6e 64 6c 65 25 2c  46 6f 6e 74 44 61 74 61  |handle%,FontData|
000239b0  25 20 b8 20 2c 2c 78 73  69 7a 65 31 36 25 2c 79  |% . ,,xsize16%,y|
000239c0  73 69 7a 65 31 36 25 0d  13 36 16 6e 61 6d 65 24  |size16%..6.name$|
000239d0  3d 24 28 46 6f 6e 74 44  61 74 61 25 29 0d 13 37  |=$(FontData%)..7|
000239e0  15 78 73 69 7a 65 3d 78  73 69 7a 65 31 36 25 2f  |.xsize=xsize16%/|
000239f0  31 36 0d 13 38 15 79 73  69 7a 65 3d 79 73 69 7a  |16..8.ysize=ysiz|
00023a00  65 31 36 25 2f 31 36 0d  13 39 05 e1 0d 13 3a 04  |e16%/16..9....:.|
00023a10  0d 13 3b 38 f4 20 2a 2a  2a 20 70 72 6f 63 73 20  |..;8. *** procs |
00023a20  66 6f 72 20 63 72 65 61  74 69 6e 67 20 69 63 6f  |for creating ico|
00023a30  6e 73 20 69 6e 20 75 73  65 72 20 74 65 6d 70 6c  |ns in user templ|
00023a40  61 74 65 73 20 2a 2a 2a  0d 13 3c 04 0d 13 3d 2d  |ates ***..<...=-|
00023a50  f4 20 2d 2d 2d 20 62 75  69 6c 64 20 74 68 65 20  |. --- build the |
00023a60  27 43 72 65 61 74 65 20  69 63 6f 6e 27 20 73 75  |'Create icon' su|
00023a70  62 6d 65 6e 75 20 2d 2d  2d 0d 13 3e 17 dd 20 f2  |bmenu ---..>.. .|
00023a80  73 74 61 6e 64 61 72 64  69 63 6f 6e 6d 65 6e 75  |standardiconmenu|
00023a90  0d 13 3f 08 ea 20 69 25  0d 13 40 27 f4 20 67 65  |..?.. i%..@'. ge|
00023aa0  74 20 6c 69 73 74 20 6f  66 20 22 6e 61 6d 65 22  |t list of "name"|
00023ab0  20 69 63 6f 6e 73 20 28  45 53 47 3d 33 31 29 0d  | icons (ESG=31).|
00023ac0  13 41 37 c8 99 20 22 57  69 6d 70 5f 57 68 69 63  |.A7.. "Wimp_Whic|
00023ad0  68 49 63 6f 6e 22 2c 53  74 64 49 63 6f 6e 57 25  |hIcon",StdIconW%|
00023ae0  2c 53 65 6c 42 6c 6b 25  2c 33 31 3c 3c 31 36 2c  |,SelBlk%,31<<16,|
00023af0  33 31 3c 3c 31 36 0d 13  42 11 4e 72 53 74 64 49  |31<<16..B.NrStdI|
00023b00  63 6f 6e 73 25 3d 30 0d  13 43 22 c8 95 20 53 65  |cons%=0..C".. Se|
00023b10  6c 42 6c 6b 25 21 28 34  2a 4e 72 53 74 64 49 63  |lBlk%!(4*NrStdIc|
00023b20  6f 6e 73 25 29 3c 3e 2d  31 0d 13 44 14 20 20 4e  |ons%)<>-1..D.  N|
00023b30  72 53 74 64 49 63 6f 6e  73 25 2b 3d 31 0d 13 45  |rStdIcons%+=1..E|
00023b40  05 ce 0d 13 46 15 e7 20  4e 72 53 74 64 49 63 6f  |....F.. NrStdIco|
00023b50  6e 73 25 3d 30 20 8c 0d  13 47 15 20 20 53 74 64  |ns%=0 ...G.  Std|
00023b60  49 63 6f 6e 4d 65 6e 75  25 3d 2d 31 0d 13 48 05  |IconMenu%=-1..H.|
00023b70  cc 0d 13 49 35 20 20 c8  99 20 22 4d 65 6e 75 55  |...I5  .. "MenuU|
00023b80  74 69 6c 5f 4e 65 77 22  2c 2c 22 43 72 65 61 74  |til_New",,"Creat|
00023b90  65 20 69 63 6f 6e 22 20  b8 20 53 74 64 49 63 6f  |e icon" . StdIco|
00023ba0  6e 4d 65 6e 75 25 0d 13  4a 1b 20 20 53 63 72 61  |nMenu%..J.  Scra|
00023bb0  70 42 6c 6b 25 21 30 3d  53 74 64 49 63 6f 6e 57  |pBlk%!0=StdIconW|
00023bc0  25 0d 13 4b 1c 20 20 e3  20 69 25 3d 30 20 b8 20  |%..K.  . i%=0 . |
00023bd0  4e 72 53 74 64 49 63 6f  6e 73 25 2d 31 0d 13 4c  |NrStdIcons%-1..L|
00023be0  22 20 20 20 20 53 63 72  61 70 42 6c 6b 25 21 34  |"    ScrapBlk%!4|
00023bf0  3d 53 65 6c 42 6c 6b 25  21 28 34 2a 69 25 29 0d  |=SelBlk%!(4*i%).|
00023c00  13 4d 29 20 20 20 20 c8  99 20 22 57 69 6d 70 5f  |.M)    .. "Wimp_|
00023c10  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 53  |GetIconState",,S|
00023c20  63 72 61 70 42 6c 6b 25  0d 13 4e 27 20 20 20 20  |crapBlk%..N'    |
00023c30  c8 99 20 22 4d 65 6e 75  55 74 69 6c 5f 41 64 64  |.. "MenuUtil_Add|
00023c40  22 2c 2c 53 63 72 61 70  42 6c 6b 25 21 32 38 0d  |",,ScrapBlk%!28.|
00023c50  13 4f 0a 20 20 ed 20 69  25 0d 13 50 05 cd 0d 13  |.O.  . i%..P....|
00023c60  51 05 e1 0d 13 52 04 0d  13 53 34 dd 20 f2 63 72  |Q....R...S4. .cr|
00023c70  65 61 74 65 73 74 61 6e  64 61 72 64 69 63 6f 6e  |eatestandardicon|
00023c80  28 6e 61 6d 65 24 2c 77  69 6e 64 6f 77 25 2c 78  |(name$,window%,x|
00023c90  70 6f 73 25 2c 79 70 6f  73 25 29 0d 13 54 21 ea  |pos%,ypos%)..T!.|
00023ca0  20 69 25 2c 6a 25 2c 6c  61 73 74 25 2c 64 78 25  | i%,j%,last%,dx%|
00023cb0  2c 64 79 25 2c 68 61 6e  64 6c 65 25 0d 13 55 31  |,dy%,handle%..U1|
00023cc0  f4 20 73 63 61 6e 20 22  6e 61 6d 65 22 20 69 63  |. scan "name" ic|
00023cd0  6f 6e 73 20 74 6f 20 63  68 65 63 6b 20 77 68 69  |ons to check whi|
00023ce0  63 68 20 77 61 73 20 63  68 6f 73 65 6e 0d 13 56  |ch was chosen..V|
00023cf0  37 c8 99 20 22 57 69 6d  70 5f 57 68 69 63 68 49  |7.. "Wimp_WhichI|
00023d00  63 6f 6e 22 2c 53 74 64  49 63 6f 6e 57 25 2c 53  |con",StdIconW%,S|
00023d10  65 6c 42 6c 6b 25 2c 33  31 3c 3c 31 36 2c 33 31  |elBlk%,31<<16,31|
00023d20  3c 3c 31 36 0d 13 57 19  53 63 72 61 70 42 6c 6b  |<<16..W.ScrapBlk|
00023d30  25 21 30 3d 53 74 64 49  63 6f 6e 57 25 0d 13 58  |%!0=StdIconW%..X|
00023d40  08 69 25 3d 30 0d 13 59  05 f5 0d 13 5a 17 20 20  |.i%=0..Y....Z.  |
00023d50  6a 25 3d 53 65 6c 42 6c  6b 25 21 28 34 2a 69 25  |j%=SelBlk%!(4*i%|
00023d60  29 0d 13 5b 14 20 20 53  63 72 61 70 42 6c 6b 25  |)..[.  ScrapBlk%|
00023d70  21 34 3d 6a 25 0d 13 5c  27 20 20 c8 99 20 22 57  |!4=j%..\'  .. "W|
00023d80  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00023d90  22 2c 2c 53 63 72 61 70  42 6c 6b 25 0d 13 5d 0b  |",,ScrapBlk%..].|
00023da0  20 20 69 25 2b 3d 31 0d  13 5e 33 fd 20 28 24 28  |  i%+=1..^3. ($(|
00023db0  53 63 72 61 70 42 6c 6b  25 21 32 38 29 3d 6e 61  |ScrapBlk%!28)=na|
00023dc0  6d 65 24 29 20 84 20 28  53 65 6c 42 6c 6b 25 21  |me$) . (SelBlk%!|
00023dd0  28 34 2a 69 25 29 3d 2d  31 29 0d 13 5f 2b f4 20  |(4*i%)=-1).._+. |
00023de0  63 6f 70 79 20 61 6c 6c  20 69 63 6f 6e 73 20 75  |copy all icons u|
00023df0  6e 74 69 6c 20 6e 65 78  74 20 22 6e 61 6d 65 22  |ntil next "name"|
00023e00  20 69 63 6f 6e 0d 13 60  19 e7 20 53 65 6c 42 6c  | icon..`.. SelBl|
00023e10  6b 25 21 28 34 2a 69 25  29 3d 2d 31 20 8c 0d 13  |k%!(4*i%)=-1 ...|
00023e20  61 18 20 20 6c 61 73 74  25 3d 4c 61 73 74 53 74  |a.  last%=LastSt|
00023e30  64 49 63 6f 6e 25 0d 13  62 05 cc 0d 13 63 1c 20  |dIcon%..b....c. |
00023e40  20 6c 61 73 74 25 3d 53  65 6c 42 6c 6b 25 21 28  | last%=SelBlk%!(|
00023e50  34 2a 69 25 29 2d 31 0d  13 64 05 cd 0d 13 65 09  |4*i%)-1..d....e.|
00023e60  6a 25 2b 3d 31 0d 13 66  19 53 63 72 61 70 42 6c  |j%+=1..f.ScrapBl|
00023e70  6b 25 21 30 3d 53 74 64  49 63 6f 6e 57 25 0d 13  |k%!0=StdIconW%..|
00023e80  67 12 53 63 72 61 70 42  6c 6b 25 21 34 3d 6a 25  |g.ScrapBlk%!4=j%|
00023e90  0d 13 68 25 c8 99 20 22  57 69 6d 70 5f 47 65 74  |..h%.. "Wimp_Get|
00023ea0  49 63 6f 6e 53 74 61 74  65 22 2c 2c 53 63 72 61  |IconState",,Scra|
00023eb0  70 42 6c 6b 25 0d 13 69  1a 64 78 25 3d 78 70 6f  |pBlk%..i.dx%=xpo|
00023ec0  73 25 2d 53 63 72 61 70  42 6c 6b 25 21 38 20 0d  |s%-ScrapBlk%!8 .|
00023ed0  13 6a 1a 64 79 25 3d 79  70 6f 73 25 2d 53 63 72  |.j.dy%=ypos%-Scr|
00023ee0  61 70 42 6c 6b 25 21 31  32 0d 13 6b 10 c8 95 20  |apBlk%!12..k... |
00023ef0  6a 25 3c 3d 6c 61 73 74  25 0d 13 6c 1b 20 20 53  |j%<=last%..l.  S|
00023f00  63 72 61 70 42 6c 6b 25  21 30 3d 53 74 64 49 63  |crapBlk%!0=StdIc|
00023f10  6f 6e 57 25 0d 13 6d 14  20 20 53 63 72 61 70 42  |onW%..m.  ScrapB|
00023f20  6c 6b 25 21 34 3d 6a 25  0d 13 6e 27 20 20 c8 99  |lk%!4=j%..n'  ..|
00023f30  20 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  | "Wimp_GetIconSt|
00023f40  61 74 65 22 2c 2c 53 63  72 61 70 42 6c 6b 25 0d  |ate",,ScrapBlk%.|
00023f50  13 6f 19 20 20 53 63 72  61 70 42 6c 6b 25 21 34  |.o.  ScrapBlk%!4|
00023f60  3d 77 69 6e 64 6f 77 25  0d 13 70 21 20 20 53 63  |=window%..p!  Sc|
00023f70  72 61 70 42 6c 6b 25 21  38 3d 53 63 72 61 70 42  |rapBlk%!8=ScrapB|
00023f80  6c 6b 25 21 38 2b 64 78  25 0d 13 71 23 20 20 53  |lk%!8+dx%..q#  S|
00023f90  63 72 61 70 42 6c 6b 25  21 31 32 3d 53 63 72 61  |crapBlk%!12=Scra|
00023fa0  70 42 6c 6b 25 21 31 32  2b 64 79 25 0d 13 72 23  |pBlk%!12+dy%..r#|
00023fb0  20 20 53 63 72 61 70 42  6c 6b 25 21 31 36 3d 53  |  ScrapBlk%!16=S|
00023fc0  63 72 61 70 42 6c 6b 25  21 31 36 2b 64 78 25 0d  |crapBlk%!16+dx%.|
00023fd0  13 73 23 20 20 53 63 72  61 70 42 6c 6b 25 21 32  |.s#  ScrapBlk%!2|
00023fe0  30 3d 53 63 72 61 70 42  6c 6b 25 21 32 30 2b 64  |0=ScrapBlk%!20+d|
00023ff0  79 25 0d 13 74 2d 20 20  f2 69 63 6f 6e 72 65 61  |y%..t-  .iconrea|
00024000  6c 6c 6f 63 28 53 63 72  61 70 42 6c 6b 25 2b 32  |lloc(ScrapBlk%+2|
00024010  34 2c 53 63 72 61 70 42  6c 6b 25 2b 32 38 29 0d  |4,ScrapBlk%+28).|
00024020  13 75 26 20 20 68 61 6e  64 6c 65 25 3d a4 63 72  |.u&  handle%=.cr|
00024030  65 61 74 65 69 63 6f 6e  28 53 63 72 61 70 42 6c  |eateicon(ScrapBl|
00024040  6b 25 2b 34 29 0d 13 76  0b 20 20 6a 25 2b 3d 31  |k%+4)..v.  j%+=1|
00024050  0d 13 77 05 ce 0d 13 78  05 e1 0d 13 79 04 0d 13  |..w....x....y...|
00024060  7a 49 f4 20 2a 2a 2a 20  70 72 6f 63 73 20 66 6f  |zI. *** procs fo|
00024070  72 20 63 61 6c 63 75 6c  61 74 69 6e 67 20 26 20  |r calculating & |
00024080  73 65 74 74 69 6e 67 20  74 68 65 20 6d 69 6e 69  |setting the mini|
00024090  6d 75 6d 20 73 69 7a 65  20 6f 66 20 61 6e 20 69  |mum size of an i|
000240a0  63 6f 6e 20 2a 2a 2a 0d  13 7b 04 0d 13 7c 2d dd  |con ***..{...|-.|
000240b0  20 f2 6d 69 6e 69 6d 69  7a 65 69 63 6f 6e 73 65  | .minimizeiconse|
000240c0  6c 28 77 69 6e 64 6f 77  25 2c 64 65 66 61 75 6c  |l(window%,defaul|
000240d0  74 25 2c 64 69 6d 25 29  0d 13 7d 1e ea 20 69 25  |t%,dim%)..}.. i%|
000240e0  2c 78 73 69 7a 65 25 2c  79 73 69 7a 65 25 2c 68  |,xsize%,ysize%,h|
000240f0  61 6e 64 6c 65 25 0d 13  7e 15 f2 73 65 6c 5f 67  |andle%..~..sel_g|
00024100  65 74 28 77 69 6e 64 6f  77 25 29 0d 13 7f 27 e7  |et(window%)...'.|
00024110  20 28 4e 72 53 65 6c 65  63 74 65 64 25 3d 30 29  | (NrSelected%=0)|
00024120  20 80 20 28 64 65 66 61  75 6c 74 25 3e 3d 30 29  | . (default%>=0)|
00024130  20 8c 0d 13 80 18 20 20  53 65 6c 42 6c 6b 25 21  | .....  SelBlk%!|
00024140  30 3d 64 65 66 61 75 6c  74 25 0d 13 81 13 20 20  |0=default%....  |
00024150  4e 72 53 65 6c 65 63 74  65 64 25 3d 31 0d 13 82  |NrSelected%=1...|
00024160  05 cd 0d 13 83 15 e7 20  4e 72 53 65 6c 65 63 74  |....... NrSelect|
00024170  65 64 25 3e 30 20 8c 0d  13 84 1c 20 20 e3 20 69  |ed%>0 .....  . i|
00024180  25 3d 30 20 b8 20 4e 72  53 65 6c 65 63 74 65 64  |%=0 . NrSelected|
00024190  25 2d 31 0d 13 85 3a 20  20 20 20 f2 6d 69 6e 69  |%-1...:    .mini|
000241a0  63 6f 6e 73 69 7a 65 28  77 69 6e 64 6f 77 25 2c  |consize(window%,|
000241b0  53 65 6c 42 6c 6b 25 21  28 34 2a 69 25 29 2c 78  |SelBlk%!(4*i%),x|
000241c0  73 69 7a 65 25 2c 79 73  69 7a 65 25 29 0d 13 86  |size%,ysize%)...|
000241d0  1a 20 20 20 20 49 63 6f  6e 42 6c 6b 25 21 30 3d  |.    IconBlk%!0=|
000241e0  77 69 6e 64 6f 77 25 0d  13 87 21 20 20 20 20 49  |window%...!    I|
000241f0  63 6f 6e 42 6c 6b 25 21  34 3d 53 65 6c 42 6c 6b  |conBlk%!4=SelBlk|
00024200  25 21 28 34 2a 69 25 29  0d 13 88 28 20 20 20 20  |%!(4*i%)...(    |
00024210  c8 99 20 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |.. "Wimp_GetIcon|
00024220  53 74 61 74 65 22 2c 2c  49 63 6f 6e 42 6c 6b 25  |State",,IconBlk%|
00024230  0d 13 89 31 20 20 20 20  e7 20 64 69 6d 25 3c 3e  |...1    . dim%<>|
00024240  32 20 8c 20 49 63 6f 6e  42 6c 6b 25 21 31 36 3d  |2 . IconBlk%!16=|
00024250  49 63 6f 6e 42 6c 6b 25  21 38 2b 78 73 69 7a 65  |IconBlk%!8+xsize|
00024260  25 0d 13 8a 32 20 20 20  20 e7 20 64 69 6d 25 3c  |%...2    . dim%<|
00024270  3e 31 20 8c 20 49 63 6f  6e 42 6c 6b 25 21 32 30  |>1 . IconBlk%!20|
00024280  3d 49 63 6f 6e 42 6c 6b  25 21 31 32 2b 79 73 69  |=IconBlk%!12+ysi|
00024290  7a 65 25 0d 13 8b 3e 20  20 20 20 68 61 6e 64 6c  |ze%...>    handl|
000242a0  65 25 3d a4 72 65 64 65  66 69 6e 65 69 63 6f 6e  |e%=.redefineicon|
000242b0  28 77 69 6e 64 6f 77 25  2c 53 65 6c 42 6c 6b 25  |(window%,SelBlk%|
000242c0  21 28 34 2a 69 25 29 2c  49 63 6f 6e 42 6c 6b 25  |!(4*i%),IconBlk%|
000242d0  29 0d 13 8c 0a 20 20 ed  20 69 25 0d 13 8d 05 cd  |)....  . i%.....|
000242e0  0d 13 8e 05 e1 0d 13 8f  04 0d 13 90 31 dd 20 f2  |............1. .|
000242f0  6d 69 6e 69 63 6f 6e 73  69 7a 65 28 77 69 6e 64  |miniconsize(wind|
00024300  6f 77 25 2c 69 63 6f 6e  25 2c f8 20 6d 69 6e 78  |ow%,icon%,. minx|
00024310  25 2c f8 20 6d 69 6e 79  25 29 0d 13 91 2f ea 20  |%,. miny%).../. |
00024320  73 70 61 72 65 61 25 2c  66 6c 61 67 73 25 2c 64  |sparea%,flags%,d|
00024330  61 74 61 25 2c 74 65 78  74 25 2c 73 70 72 69 74  |ata%,text%,sprit|
00024340  65 25 2c 69 6e 64 69 72  25 0d 13 92 33 ea 20 73  |e%,indir%...3. s|
00024350  6d 69 6e 78 25 2c 73 6d  69 6e 79 25 2c 74 6d 69  |minx%,sminy%,tmi|
00024360  6e 78 25 2c 74 6d 69 6e  79 25 2c 70 25 2c 76 61  |nx%,tminy%,p%,va|
00024370  6c 24 2c 73 6e 61 6d 65  24 2c 74 24 0d 13 93 1d  |l$,sname$,t$....|
00024380  ea 20 78 6d 69 6e 25 2c  79 6d 69 6e 25 2c 78 6d  |. xmin%,ymin%,xm|
00024390  61 78 25 2c 79 6d 61 78  25 0d 13 94 1a ea 20 6c  |ax%,ymax%..... l|
000243a0  24 2c 6c 73 70 61 63 65  25 2c 6c 69 6e 65 73 25  |$,lspace%,lines%|
000243b0  2c 62 24 0d 13 95 15 57  69 6e 42 6c 6b 25 21 30  |,b$....WinBlk%!0|
000243c0  3d 77 69 6e 64 6f 77 25  0d 13 96 24 c8 99 20 22  |=window%...$.. "|
000243d0  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 49 6e  |Wimp_GetWindowIn|
000243e0  66 6f 22 2c 2c 57 69 6e  42 6c 6b 25 0d 13 97 16  |fo",,WinBlk%....|
000243f0  73 70 61 72 65 61 25 3d  57 69 6e 42 6c 6b 25 21  |sparea%=WinBlk%!|
00024400  36 38 0d 13 98 17 53 63  72 61 70 42 6c 6b 25 21  |68....ScrapBlk%!|
00024410  30 3d 77 69 6e 64 6f 77  25 0d 13 99 15 53 63 72  |0=window%....Scr|
00024420  61 70 42 6c 6b 25 21 34  3d 69 63 6f 6e 25 0d 13  |apBlk%!4=icon%..|
00024430  9a 25 c8 99 20 22 57 69  6d 70 5f 47 65 74 49 63  |.%.. "Wimp_GetIc|
00024440  6f 6e 53 74 61 74 65 22  2c 2c 53 63 72 61 70 42  |onState",,ScrapB|
00024450  6c 6b 25 0d 13 9b 17 66  6c 61 67 73 25 3d 53 63  |lk%....flags%=Sc|
00024460  72 61 70 42 6c 6b 25 21  32 34 0d 13 9c 16 64 61  |rapBlk%!24....da|
00024470  74 61 25 3d 53 63 72 61  70 42 6c 6b 25 2b 32 38  |ta%=ScrapBlk%+28|
00024480  0d 13 9d 18 74 65 78 74  25 3d 28 66 6c 61 67 73  |....text%=(flags|
00024490  25 20 80 20 31 29 3e 30  0d 13 9e 1a 73 70 72 69  |% . 1)>0....spri|
000244a0  74 65 25 3d 28 66 6c 61  67 73 25 20 80 20 32 29  |te%=(flags% . 2)|
000244b0  3e 30 0d 13 9f 1c 69 6e  64 69 72 25 3d 28 66 6c  |>0....indir%=(fl|
000244c0  61 67 73 25 20 80 20 26  31 30 30 29 3e 30 0d 13  |ags% . &100)>0..|
000244d0  a0 26 e7 20 69 6e 64 69  72 25 20 80 20 74 65 78  |.&. indir% . tex|
000244e0  74 25 20 80 20 28 64 61  74 61 25 21 34 3c 3e 2d  |t% . (data%!4<>-|
000244f0  31 29 20 8c 0d 13 a1 15  20 20 76 61 6c 24 3d 24  |1) .....  val$=$|
00024500  28 64 61 74 61 25 21 34  29 0d 13 a2 05 cd 0d 13  |(data%!4).......|
00024510  a3 0f e7 20 73 70 72 69  74 65 25 20 8c 0d 13 a4  |... sprite% ....|
00024520  10 20 20 e7 20 69 6e 64  69 72 25 20 8c 0d 13 a5  |.  . indir% ....|
00024530  11 20 20 20 20 e7 20 74  65 78 74 25 20 8c 0d 13  |.    . text% ...|
00024540  a6 34 20 20 20 20 20 20  f4 20 73 65 61 72 63 68  |.4      . search|
00024550  20 76 61 6c 69 64 61 74  69 6f 6e 20 73 74 72 69  | validation stri|
00024560  6e 67 20 66 6f 72 20 73  70 72 69 74 65 20 6e 61  |ng for sprite na|
00024570  6d 65 0d 13 a7 2d 20 20  20 20 20 20 73 6e 61 6d  |me...-      snam|
00024580  65 24 3d a4 76 61 6c 69  64 61 74 69 6f 6e 63 6f  |e$=.validationco|
00024590  6d 6d 61 6e 64 28 76 61  6c 24 2c 22 53 22 29 0d  |mmand(val$,"S").|
000245a0  13 a8 19 20 20 20 20 20  20 70 25 3d a7 73 6e 61  |...      p%=.sna|
000245b0  6d 65 24 2c 22 2c 22 29  0d 13 a9 12 20 20 20 20  |me$,",")....    |
000245c0  20 20 e7 20 70 25 3e 30  20 8c 0d 13 aa 22 20 20  |  . p%>0 ...."  |
000245d0  20 20 20 20 20 20 73 6e  61 6d 65 24 3d c1 73 6e  |      sname$=.sn|
000245e0  61 6d 65 24 2c 32 2c 70  25 2d 32 29 0d 13 ab 0b  |ame$,2,p%-2)....|
000245f0  20 20 20 20 20 20 cc 0d  13 ac 1d 20 20 20 20 20  |      .....     |
00024600  20 20 20 73 6e 61 6d 65  24 3d c1 73 6e 61 6d 65  |   sname$=.sname|
00024610  24 2c 32 29 0d 13 ad 0b  20 20 20 20 20 20 cd 0d  |$,2)....      ..|
00024620  13 ae 09 20 20 20 20 cc  0d 13 af 1b 20 20 20 20  |...    .....    |
00024630  20 20 73 6e 61 6d 65 24  3d 24 28 64 61 74 61 25  |  sname$=$(data%|
00024640  21 30 29 0d 13 b0 19 20  20 20 20 20 20 73 70 61  |!0)....      spa|
00024650  72 65 61 25 3d 64 61 74  61 25 21 34 0d 13 b1 09  |rea%=data%!4....|
00024660  20 20 20 20 cd 0d 13 b2  07 20 20 cc 0d 13 b3 17  |    .....  .....|
00024670  20 20 20 20 73 6e 61 6d  65 24 3d 24 28 64 61 74  |    sname$=$(dat|
00024680  61 25 29 0d 13 b4 07 20  20 cd 0d 13 b5 3f 20 20  |a%)....  ....?  |
00024690  e7 20 a9 28 73 6e 61 6d  65 24 29 3e 30 20 8c 20  |. .(sname$)>0 . |
000246a0  f2 73 70 72 69 74 65 73  69 7a 65 28 73 6e 61 6d  |.spritesize(snam|
000246b0  65 24 2c 73 70 61 72 65  61 25 2c 73 6d 69 6e 78  |e$,sparea%,sminx|
000246c0  25 2c 73 6d 69 6e 79 25  29 0d 13 b6 05 cd 0d 13  |%,sminy%).......|
000246d0  b7 0d e7 20 74 65 78 74  25 20 8c 0d 13 b8 10 20  |... text% ..... |
000246e0  20 e7 20 69 6e 64 69 72  25 20 8c 0d 13 b9 15 20  | . indir% ..... |
000246f0  20 20 20 74 24 3d 24 28  64 61 74 61 25 21 30 29  |   t$=$(data%!0)|
00024700  0d 13 ba 07 20 20 cc 0d  13 bb 13 20 20 20 20 74  |....  .....    t|
00024710  24 3d 24 28 64 61 74 61  25 29 0d 13 bc 07 20 20  |$=$(data%)....  |
00024720  cd 0d 13 bd 19 20 20 e7  20 66 6c 61 67 73 25 20  |.....  . flags% |
00024730  80 20 28 31 3c 3c 36 29  20 8c 0d 13 be 35 20 20  |. (1<<6) ....5  |
00024740  20 20 f4 20 63 61 6c 63  20 73 69 7a 65 20 6f 66  |  . calc size of|
00024750  20 73 74 72 69 6e 67 20  70 72 69 6e 74 65 64 20  | string printed |
00024760  61 73 20 6f 75 74 6c 69  6e 65 20 66 6f 6e 74 0d  |as outline font.|
00024770  13 bf 26 20 20 20 20 c8  99 20 22 46 6f 6e 74 5f  |..&    .. "Font_|
00024780  53 65 74 46 6f 6e 74 22  2c 28 66 6c 61 67 73 25  |SetFont",(flags%|
00024790  3e 3e 32 34 29 0d 13 c0  3b 20 20 20 20 c8 99 20  |>>24)...;    .. |
000247a0  22 46 6f 6e 74 5f 53 74  72 69 6e 67 42 42 6f 78  |"Font_StringBBox|
000247b0  22 2c 2c 74 24 20 b8 20  2c 78 6d 69 6e 25 2c 79  |",,t$ . ,xmin%,y|
000247c0  6d 69 6e 25 2c 78 6d 61  78 25 2c 79 6d 61 78 25  |min%,xmax%,ymax%|
000247d0  0d 13 c1 47 20 20 20 20  c8 99 20 22 46 6f 6e 74  |...G    .. "Font|
000247e0  5f 43 6f 6e 76 65 72 74  74 6f 4f 53 22 2c 2c 78  |_ConverttoOS",,x|
000247f0  6d 61 78 25 2d 78 6d 69  6e 25 2c 79 6d 61 78 25  |max%-xmin%,ymax%|
00024800  2d 79 6d 69 6e 25 20 b8  20 2c 74 6d 69 6e 78 25  |-ymin% . ,tminx%|
00024810  2c 74 6d 69 6e 79 25 0d  13 c2 1c 20 20 20 20 74  |,tminy%....    t|
00024820  6d 69 6e 78 25 2b 3d 32  2a 50 69 78 54 6f 4f 53  |minx%+=2*PixToOS|
00024830  5f 58 25 0d 13 c3 1c 20  20 20 20 74 6d 69 6e 79  |_X%....    tminy|
00024840  25 2b 3d 32 2a 50 69 78  54 6f 4f 53 5f 59 25 0d  |%+=2*PixToOS_Y%.|
00024850  13 c4 07 20 20 cc 0d 13  c5 29 20 20 20 20 74 6d  |...  ....)    tm|
00024860  69 6e 78 25 3d 31 36 2a  a9 28 74 24 29 2b 34 20  |inx%=16*.(t$)+4 |
00024870  3a 20 f4 20 73 79 73 74  65 6d 20 66 6f 6e 74 0d  |: . system font.|
00024880  13 c6 11 20 20 20 20 74  6d 69 6e 79 25 3d 33 32  |...    tminy%=32|
00024890  0d 13 c7 07 20 20 cd 0d  13 c8 25 20 20 6c 24 3d  |....  ....%  l$=|
000248a0  a4 76 61 6c 69 64 61 74  69 6f 6e 63 6f 6d 6d 61  |.validationcomma|
000248b0  6e 64 28 76 61 6c 24 2c  22 4c 22 29 0d 13 c9 11  |nd(val$,"L")....|
000248c0  20 20 e7 20 a9 28 6c 24  29 3e 30 20 8c 0d 13 ca  |  . .(l$)>0 ....|
000248d0  35 20 20 20 20 f4 20 6d  75 6c 74 69 2d 6c 69 6e  |5    . multi-lin|
000248e0  65 20 74 65 78 74 20 2d  20 63 61 6c 63 20 59 20  |e text - calc Y |
000248f0  73 69 7a 65 2c 20 58 20  73 69 7a 65 20 66 69 78  |size, X size fix|
00024900  65 64 0d 13 cb 19 20 20  20 20 6c 73 70 61 63 65  |ed....    lspace|
00024910  25 3d bb 28 c1 6c 24 2c  32 29 29 0d 13 cc 20 20  |%=.(.l$,2))...  |
00024920  20 20 20 e7 20 6c 73 70  61 63 65 25 3d 30 20 8c  |   . lspace%=0 .|
00024930  20 6c 73 70 61 63 65 25  3d 34 30 0d 13 cd 36 20  | lspace%=40...6 |
00024940  20 20 20 6c 69 6e 65 73  25 3d 28 74 6d 69 6e 78  |   lines%=(tminx|
00024950  25 2d 31 29 20 81 20 28  53 63 72 61 70 42 6c 6b  |%-1) . (ScrapBlk|
00024960  25 21 31 36 2d 53 63 72  61 70 42 6c 6b 25 21 38  |%!16-ScrapBlk%!8|
00024970  29 0d 13 ce 27 20 20 20  20 74 6d 69 6e 78 25 3d  |)...'    tminx%=|
00024980  53 63 72 61 70 42 6c 6b  25 21 31 36 2d 53 63 72  |ScrapBlk%!16-Scr|
00024990  61 70 42 6c 6b 25 21 38  0d 13 cf 21 20 20 20 20  |apBlk%!8...!    |
000249a0  74 6d 69 6e 79 25 3d 6c  73 70 61 63 65 25 2a 28  |tminy%=lspace%*(|
000249b0  6c 69 6e 65 73 25 2b 31  29 0d 13 d0 07 20 20 cd  |lines%+1)....  .|
000249c0  0d 13 d1 11 20 20 e7 20  a9 28 74 24 29 3d 30 20  |....  . .(t$)=0 |
000249d0  8c 0d 13 d2 4e 20 20 20  20 74 6d 69 6e 78 25 3d  |....N    tminx%=|
000249e0  53 63 72 61 70 42 6c 6b  25 21 31 36 2d 53 63 72  |ScrapBlk%!16-Scr|
000249f0  61 70 42 6c 6b 25 21 38  20 3a 20 f4 20 65 6d 70  |apBlk%!8 : . emp|
00024a00  74 79 20 73 74 72 69 6e  67 20 2d 20 64 6f 6e 27  |ty string - don'|
00024a10  74 20 63 68 61 6e 67 65  20 58 20 73 69 7a 65 0d  |t change X size.|
00024a20  13 d3 07 20 20 cd 0d 13  d4 05 cd 0d 13 d5 17 e7  |...  ...........|
00024a30  20 66 6c 61 67 73 25 20  80 20 28 31 3c 3c 34 29  | flags% . (1<<4)|
00024a40  20 8c 0d 13 d6 19 20 20  6d 69 6e 78 25 3d 73 6d  | .....  minx%=sm|
00024a50  69 6e 78 25 2b 74 6d 69  6e 78 25 0d 13 d7 22 20  |inx%+tminx%..." |
00024a60  20 e7 20 74 65 78 74 25  20 80 20 73 70 72 69 74  | . text% . sprit|
00024a70  65 25 20 8c 20 6d 69 6e  78 25 2b 3d 36 0d 13 d8  |e% . minx%+=6...|
00024a80  33 20 20 e7 20 73 6d 69  6e 79 25 3e 74 6d 69 6e  |3  . sminy%>tmin|
00024a90  79 25 20 8c 20 6d 69 6e  79 25 3d 73 6d 69 6e 79  |y% . miny%=sminy|
00024aa0  25 20 8b 20 6d 69 6e 79  25 3d 74 6d 69 6e 79 25  |% . miny%=tminy%|
00024ab0  0d 13 d9 05 cc 0d 13 da  33 20 20 e7 20 73 6d 69  |........3  . smi|
00024ac0  6e 78 25 3e 74 6d 69 6e  78 25 20 8c 20 6d 69 6e  |nx%>tminx% . min|
00024ad0  78 25 3d 73 6d 69 6e 78  25 20 8b 20 6d 69 6e 78  |x%=sminx% . minx|
00024ae0  25 3d 74 6d 69 6e 78 25  0d 13 db 19 20 20 6d 69  |%=tminx%....  mi|
00024af0  6e 79 25 3d 73 6d 69 6e  79 25 2b 74 6d 69 6e 79  |ny%=sminy%+tminy|
00024b00  25 0d 13 dc 05 cd 0d 13  dd 17 e7 20 66 6c 61 67  |%.......... flag|
00024b10  73 25 20 80 20 28 31 3c  3c 32 29 20 8c 0d 13 de  |s% . (1<<2) ....|
00024b20  21 20 20 f4 20 61 64 64  20 73 70 61 63 65 20 74  |!  . add space t|
00024b30  61 6b 65 6e 20 62 79 20  62 6f 72 64 65 72 0d 13  |aken by border..|
00024b40  df 25 20 20 62 24 3d a4  76 61 6c 69 64 61 74 69  |.%  b$=.validati|
00024b50  6f 6e 63 6f 6d 6d 61 6e  64 28 76 61 6c 24 2c 22  |oncommand(val$,"|
00024b60  52 22 29 0d 13 e0 11 20  20 e7 20 a9 28 62 24 29  |R")....  . .(b$)|
00024b70  3d 30 20 8c 0d 13 e1 37  20 20 20 20 6d 69 6e 78  |=0 ....7    minx|
00024b80  25 2b 3d 31 36 20 3a 20  f4 20 6e 6f 20 62 6f 72  |%+=16 : . no bor|
00024b90  64 65 72 20 63 6f 6d 6d  61 6e 64 20 2d 20 22 66  |der command - "f|
00024ba0  6c 61 74 22 20 62 6f 72  64 65 72 0d 13 e2 11 20  |lat" border.... |
00024bb0  20 20 20 6d 69 6e 79 25  2b 3d 31 36 0d 13 e3 07  |   miny%+=16....|
00024bc0  20 20 cc 0d 13 e4 26 20  20 20 20 f4 20 66 6f 75  |  ....&    . fou|
00024bd0  6e 64 20 63 6f 6d 6d 61  6e 64 20 66 6f 72 20 33  |nd command for 3|
00024be0  2d 44 20 62 6f 72 64 65  72 0d 13 e5 16 20 20 20  |-D border....   |
00024bf0  20 c8 8e 20 bb 28 c1 62  24 2c 32 29 29 20 ca 0d  | .. .(.b$,2)) ..|
00024c00  13 e6 0f 20 20 20 20 20  20 c9 20 33 2c 34 0d 13  |...      . 3,4..|
00024c10  e7 15 20 20 20 20 20 20  20 20 6d 69 6e 78 25 2b  |..        minx%+|
00024c20  3d 32 34 0d 13 e8 15 20  20 20 20 20 20 20 20 6d  |=24....        m|
00024c30  69 6e 79 25 2b 3d 32 34  0d 13 e9 0f 20 20 20 20  |iny%+=24....    |
00024c40  20 20 c9 20 36 2c 37 0d  13 ea 15 20 20 20 20 20  |  . 6,7....     |
00024c50  20 20 20 6d 69 6e 78 25  2b 3d 33 32 0d 13 eb 15  |   minx%+=32....|
00024c60  20 20 20 20 20 20 20 20  6d 69 6e 79 25 2b 3d 33  |        miny%+=3|
00024c70  32 0d 13 ec 0b 20 20 20  20 20 20 7f 0d 13 ed 15  |2....      .....|
00024c80  20 20 20 20 20 20 20 20  6d 69 6e 78 25 2b 3d 31  |        minx%+=1|
00024c90  36 0d 13 ee 15 20 20 20  20 20 20 20 20 6d 69 6e  |6....        min|
00024ca0  79 25 2b 3d 31 36 0d 13  ef 09 20 20 20 20 cb 0d  |y%+=16....    ..|
00024cb0  13 f0 07 20 20 cd 0d 13  f1 05 cd 0d 13 f2 19 e7  |...  ...........|
00024cc0  20 6d 69 6e 78 25 3c 31  36 20 8c 20 6d 69 6e 78  | minx%<16 . minx|
00024cd0  25 3d 31 36 0d 13 f3 19  e7 20 6d 69 6e 79 25 3c  |%=16..... miny%<|
00024ce0  31 36 20 8c 20 6d 69 6e  79 25 3d 31 36 0d 13 f4  |16 . miny%=16...|
00024cf0  05 e1 0d 13 f5 04 0d 13  f6 31 f4 20 2d 2d 2d 20  |.........1. --- |
00024d00  72 65 74 75 72 6e 20 73  69 7a 65 20 6f 66 20 61  |return size of a|
00024d10  20 73 70 72 69 74 65 20  69 6e 20 4f 73 20 75 6e  | sprite in Os un|
00024d20  69 74 73 20 2d 2d 2d 0d  13 f7 30 dd 20 f2 73 70  |its ---...0. .sp|
00024d30  72 69 74 65 73 69 7a 65  28 6e 61 6d 65 24 2c 61  |ritesize(name$,a|
00024d40  72 65 61 25 2c f8 20 78  73 69 7a 65 25 2c f8 20  |rea%,. xsize%,. |
00024d50  79 73 69 7a 65 25 29 0d  13 f8 1f ea 20 73 70 6d  |ysize%)..... spm|
00024d60  6f 64 65 25 2c 78 70 69  78 65 6c 73 25 2c 79 70  |ode%,xpixels%,yp|
00024d70  69 78 65 6c 73 25 0d 13  f9 0f e7 20 61 72 65 61  |ixels%..... area|
00024d80  25 3d 31 20 8c 0d 13 fa  48 20 20 c8 99 20 22 58  |%=1 ....H  .. "X|
00024d90  57 69 6d 70 5f 53 70 72  69 74 65 4f 70 22 2c 34  |Wimp_SpriteOp",4|
00024da0  30 2c 2c 6e 61 6d 65 24  20 b8 20 2c 2c 2c 78 70  |0,,name$ . ,,,xp|
00024db0  69 78 65 6c 73 25 2c 79  70 69 78 65 6c 73 25 2c  |ixels%,ypixels%,|
00024dc0  2c 73 70 6d 6f 64 65 25  3b 66 6c 67 25 0d 13 fb  |,spmode%;flg%...|
00024dd0  05 cc 0d 13 fc 4b 20 20  c8 99 20 22 4f 53 5f 53  |.....K  .. "OS_S|
00024de0  70 72 69 74 65 4f 70 22  2c 32 39 36 2c 61 72 65  |priteOp",296,are|
00024df0  61 25 2c 6e 61 6d 65 24  20 b8 20 2c 2c 2c 78 70  |a%,name$ . ,,,xp|
00024e00  69 78 65 6c 73 25 2c 79  70 69 78 65 6c 73 25 2c  |ixels%,ypixels%,|
00024e10  2c 73 70 6d 6f 64 65 25  3b 66 6c 67 25 0d 13 fd  |,spmode%;flg%...|
00024e20  05 cd 0d 13 fe 12 e7 20  28 66 6c 67 25 20 80 20  |....... (flg% . |
00024e30  31 29 20 8c 0d 13 ff 0e  20 20 78 73 69 7a 65 25  |1) .....  xsize%|
00024e40  3d 30 0d 14 00 0e 20 20  79 73 69 7a 65 25 3d 30  |=0....  ysize%=0|
00024e50  0d 14 01 05 cc 0d 14 02  2a 20 20 78 73 69 7a 65  |........*  xsize|
00024e60  25 3d 78 70 69 78 65 6c  73 25 3c 3c a4 6d 6f 64  |%=xpixels%<<.mod|
00024e70  65 76 61 72 28 73 70 6d  6f 64 65 25 2c 34 29 0d  |evar(spmode%,4).|
00024e80  14 03 2a 20 20 79 73 69  7a 65 25 3d 79 70 69 78  |..*  ysize%=ypix|
00024e90  65 6c 73 25 3c 3c a4 6d  6f 64 65 76 61 72 28 73  |els%<<.modevar(s|
00024ea0  70 6d 6f 64 65 25 2c 35  29 0d 14 04 05 cd 0d 14  |pmode%,5).......|
00024eb0  05 05 e1 0d 14 06 04 0d  14 07 4a f4 20 2d 2d 2d  |..........J. ---|
00024ec0  20 73 65 61 72 63 68 20  76 61 6c 69 64 61 74 69  | search validati|
00024ed0  6f 6e 20 73 74 72 69 6e  67 20 66 6f 72 20 61 20  |on string for a |
00024ee0  63 65 72 74 61 69 6e 20  63 6f 6d 6d 61 6e 64 20  |certain command |
00024ef0  61 6e 64 20 72 65 74 75  72 6e 20 69 74 20 2d 2d  |and return it --|
00024f00  2d 0d 14 08 21 dd 20 a4  76 61 6c 69 64 61 74 69  |-...!. .validati|
00024f10  6f 6e 63 6f 6d 6d 61 6e  64 28 76 24 2c 63 6d 64  |oncommand(v$,cmd|
00024f20  24 29 0d 14 09 12 ea 20  75 70 63 24 2c 6c 6f 63  |$)..... upc$,loc|
00024f30  24 2c 70 25 0d 14 0a 19  75 70 63 24 3d bd 28 97  |$,p%....upc$=.(.|
00024f40  28 63 6d 64 24 29 20 80  20 26 44 46 29 0d 14 0b  |(cmd$) . &DF)...|
00024f50  19 6c 6f 63 24 3d bd 28  97 28 63 6d 64 24 29 20  |.loc$=.(.(cmd$) |
00024f60  84 20 26 32 30 29 0d 14  0c 32 c8 95 20 28 c0 76  |. &20)...2.. (.v|
00024f70  24 2c 31 29 3c 3e 75 70  63 24 29 20 80 20 28 c0  |$,1)<>upc$) . (.|
00024f80  76 24 2c 31 29 3c 3e 6c  6f 63 24 29 20 80 20 28  |v$,1)<>loc$) . (|
00024f90  a9 28 76 24 29 3e 30 29  0d 14 0d 11 20 20 70 25  |.(v$)>0)....  p%|
00024fa0  3d a7 76 24 2c 22 3b 22  29 0d 14 0e 35 20 20 e7  |=.v$,";")...5  .|
00024fb0  20 28 70 25 3e 31 29 20  80 20 28 c1 76 24 2c 70  | (p%>1) . (.v$,p|
00024fc0  25 2d 31 2c 31 29 3d 22  5c 22 29 20 8c 20 70 25  |%-1,1)="\") . p%|
00024fd0  3d a7 76 24 2c 22 3b 22  2c 70 25 2b 31 29 0d 14  |=.v$,";",p%+1)..|
00024fe0  0f 0e 20 20 e7 20 70 25  3d 30 20 8c 0d 14 10 0d  |..  . p%=0 .....|
00024ff0  20 20 20 20 76 24 3d 22  22 0d 14 11 07 20 20 cc  |    v$=""....  .|
00025000  0d 14 12 14 20 20 20 20  76 24 3d c1 76 24 2c 70  |....    v$=.v$,p|
00025010  25 2b 31 29 0d 14 13 07  20 20 cd 0d 14 14 05 ce  |%+1)....  ......|
00025020  0d 14 15 0f 70 25 3d a7  76 24 2c 22 3b 22 29 0d  |....p%=.v$,";").|
00025030  14 16 19 e7 20 70 25 3e  30 20 8c 20 76 24 3d c0  |.... p%>0 . v$=.|
00025040  76 24 2c 70 25 2d 31 29  0d 14 17 07 3d 76 24 0d  |v$,p%-1)....=v$.|
00025050  14 18 04 0d 14 19 3e f4  20 2a 2a 2a 20 70 72 6f  |......>. *** pro|
00025060  63 73 20 66 6f 72 20 68  61 6e 64 6c 69 6e 67 20  |cs for handling |
00025070  6d 65 73 73 61 67 65 73  20 69 6e 20 74 68 65 20  |messages in the |
00025080  4d 65 73 73 61 67 65 73  20 66 69 6c 65 20 2a 2a  |Messages file **|
00025090  2a 0d 14 1a 04 0d 14 1b  0f dd 20 f2 6d 73 67 5f  |*......... .msg_|
000250a0  69 6e 69 74 0d 14 1c 1e  ea 20 66 6e 61 6d 65 24  |init..... fname$|
000250b0  2c 66 6c 61 67 73 25 2c  73 69 7a 65 25 2c 62 75  |,flags%,size%,bu|
000250c0  66 25 0d 14 1d 1f 66 6e  61 6d 65 24 3d 41 70 70  |f%....fname$=App|
000250d0  6c 44 69 72 24 2b 22 2e  4d 65 73 73 61 67 65 73  |lDir$+".Messages|
000250e0  22 0d 14 1e 36 c8 99 20  22 4d 65 73 73 61 67 65  |"...6.. "Message|
000250f0  54 72 61 6e 73 5f 46 69  6c 65 49 6e 66 6f 22 2c  |Trans_FileInfo",|
00025100  2c 66 6e 61 6d 65 24 20  b8 20 66 6c 61 67 73 25  |,fname$ . flags%|
00025110  2c 2c 73 69 7a 65 25 0d  14 1f 12 e7 20 66 6c 61  |,,size%..... fla|
00025120  67 73 25 20 80 20 31 20  8c 0d 14 20 0c 20 20 62  |gs% . 1 ... .  b|
00025130  75 66 25 3d 30 0d 14 21  05 cc 0d 14 22 1b 20 20  |uf%=0..!....".  |
00025140  62 75 66 25 3d a4 68 65  61 70 5f 67 65 74 28 73  |buf%=.heap_get(s|
00025150  69 7a 65 25 29 0d 14 23  05 cd 0d 14 24 24 4d 73  |ize%)..#....$$Ms|
00025160  67 44 65 73 63 25 3d a4  68 65 61 70 5f 67 65 74  |gDesc%=.heap_get|
00025170  28 31 37 2b a9 28 66 6e  61 6d 65 24 29 29 0d 14  |(17+.(fname$))..|
00025180  25 19 24 28 4d 73 67 44  65 73 63 25 2b 31 36 29  |%.$(MsgDesc%+16)|
00025190  3d 66 6e 61 6d 65 24 0d  14 26 38 c8 99 20 22 4d  |=fname$..&8.. "M|
000251a0  65 73 73 61 67 65 54 72  61 6e 73 5f 4f 70 65 6e  |essageTrans_Open|
000251b0  46 69 6c 65 22 2c 4d 73  67 44 65 73 63 25 2c 4d  |File",MsgDesc%,M|
000251c0  73 67 44 65 73 63 25 2b  31 36 2c 62 75 66 25 0d  |sgDesc%+16,buf%.|
000251d0  14 27 05 e1 0d 14 28 04  0d 14 29 0f dd 20 f2 6d  |.'....(...).. .m|
000251e0  73 67 5f 65 78 69 74 0d  14 2a 28 c8 99 20 22 4d  |sg_exit..*(.. "M|
000251f0  65 73 73 61 67 65 54 72  61 6e 73 5f 43 6c 6f 73  |essageTrans_Clos|
00025200  65 46 69 6c 65 22 2c 4d  73 67 44 65 73 63 25 0d  |eFile",MsgDesc%.|
00025210  14 2b 0e 4d 73 67 44 65  73 63 25 3d 30 0d 14 2c  |.+.MsgDesc%=0..,|
00025220  05 e1 0d 14 2d 04 0d 14  2e 1a dd 20 a4 6d 73 67  |....-...... .msg|
00025230  5f 6c 6f 6f 6b 75 70 30  28 74 6f 6b 65 6e 24 29  |_lookup0(token$)|
00025240  0d 14 2f 0d ea 20 72 65  73 75 6c 74 25 0d 14 30  |../.. result%..0|
00025250  3a c8 99 20 22 4d 65 73  73 61 67 65 54 72 61 6e  |:.. "MessageTran|
00025260  73 5f 4c 6f 6f 6b 75 70  22 2c 4d 73 67 44 65 73  |s_Lookup",MsgDes|
00025270  63 25 2c 74 6f 6b 65 6e  24 2c 30 20 b8 20 2c 2c  |c%,token$,0 . ,,|
00025280  72 65 73 75 6c 74 25 0d  14 31 12 3d a4 73 74 72  |result%..1.=.str|
00025290  28 72 65 73 75 6c 74 25  29 0d 14 32 04 0d 14 33  |(result%)..2...3|
000252a0  21 dd 20 a4 6d 73 67 5f  6c 6f 6f 6b 75 70 31 28  |!. .msg_lookup1(|
000252b0  74 6f 6b 65 6e 24 2c 70  61 72 61 6d 24 29 0d 14  |token$,param$)..|
000252c0  34 0d ea 20 72 65 73 75  6c 74 25 0d 14 35 4e c8  |4.. result%..5N.|
000252d0  99 20 22 4d 65 73 73 61  67 65 54 72 61 6e 73 5f  |. "MessageTrans_|
000252e0  4c 6f 6f 6b 75 70 22 2c  4d 73 67 44 65 73 63 25  |Lookup",MsgDesc%|
000252f0  2c 74 6f 6b 65 6e 24 2c  53 63 72 61 70 42 6c 6b  |,token$,ScrapBlk|
00025300  25 2c 26 31 30 30 2c 70  61 72 61 6d 24 20 b8 20  |%,&100,param$ . |
00025310  2c 2c 72 65 73 75 6c 74  25 0d 14 36 12 3d a4 73  |,,result%..6.=.s|
00025320  74 72 28 72 65 73 75 6c  74 25 29 0d 14 37 04 0d  |tr(result%)..7..|
00025330  14 38 2a dd 20 a4 6d 73  67 5f 6c 6f 6f 6b 75 70  |.8*. .msg_lookup|
00025340  32 28 74 6f 6b 65 6e 24  2c 70 61 72 61 6d 31 24  |2(token$,param1$|
00025350  2c 70 61 72 61 6d 32 24  29 0d 14 39 0d ea 20 72  |,param2$)..9.. r|
00025360  65 73 75 6c 74 25 0d 14  3a 57 c8 99 20 22 4d 65  |esult%..:W.. "Me|
00025370  73 73 61 67 65 54 72 61  6e 73 5f 4c 6f 6f 6b 75  |ssageTrans_Looku|
00025380  70 22 2c 4d 73 67 44 65  73 63 25 2c 74 6f 6b 65  |p",MsgDesc%,toke|
00025390  6e 24 2c 53 63 72 61 70  42 6c 6b 25 2c 26 31 30  |n$,ScrapBlk%,&10|
000253a0  30 2c 70 61 72 61 6d 31  24 2c 70 61 72 61 6d 32  |0,param1$,param2|
000253b0  24 20 b8 20 2c 2c 72 65  73 75 6c 74 25 0d 14 3b  |$ . ,,result%..;|
000253c0  12 3d a4 73 74 72 28 72  65 73 75 6c 74 25 29 0d  |.=.str(result%).|
000253d0  14 3c 04 0d 14 3d 36 f4  20 2a 2a 2a 20 70 72 6f  |.<...=6. *** pro|
000253e0  63 73 20 66 6f 72 20 6c  6f 61 64 69 6e 67 20 61  |cs for loading a|
000253f0  6e 64 20 75 73 69 6e 67  20 75 73 65 72 2d 73 70  |nd using user-sp|
00025400  72 69 74 65 73 20 2a 2a  2a 0d 14 3e 04 0d 14 3f  |rites ***..>...?|
00025410  42 f4 20 2d 2d 2d 20 6c  6f 61 64 20 61 20 73 70  |B. --- load a sp|
00025420  72 69 74 65 20 66 69 6c  65 20 61 6e 64 20 6c 65  |rite file and le|
00025430  74 20 61 6c 6c 20 74 65  6d 70 6c 61 74 65 73 20  |t all templates |
00025440  75 73 65 20 74 68 65 20  73 70 72 69 74 65 73 0d  |use the sprites.|
00025450  14 40 1e dd 20 f2 6c 6f  61 64 75 73 65 72 73 70  |.@.. .loadusersp|
00025460  72 69 74 65 73 28 66 6e  61 6d 65 24 29 0d 14 41  |rites(fname$)..A|
00025470  09 ea 20 6e 6f 25 0d 14  42 33 e7 20 55 73 65 72  |.. no%..B3. User|
00025480  53 70 72 69 74 65 73 25  3c 3e 31 20 8c 20 f2 68  |Sprites%<>1 . .h|
00025490  65 61 70 5f 72 65 6c 65  61 73 65 28 55 73 65 72  |eap_release(User|
000254a0  53 70 72 69 74 65 73 25  29 0d 14 43 11 e7 20 66  |Sprites%)..C.. f|
000254b0  6e 61 6d 65 24 3d 22 22  20 8c 0d 14 44 14 20 20  |name$="" ...D.  |
000254c0  55 73 65 72 53 70 72 69  74 65 73 25 3d 31 0d 14  |UserSprites%=1..|
000254d0  45 05 cc 0d 14 46 2a 20  20 55 73 65 72 53 70 72  |E....F*  UserSpr|
000254e0  69 74 65 73 25 3d a4 6c  6f 61 64 73 70 72 69 74  |ites%=.loadsprit|
000254f0  65 66 69 6c 65 28 66 6e  61 6d 65 24 29 0d 14 47  |efile(fname$)..G|
00025500  05 cd 0d 14 48 16 e7 20  4e 72 54 65 6d 70 6c 61  |....H.. NrTempla|
00025510  74 65 73 25 3e 30 20 8c  0d 14 49 1e 20 20 e3 20  |tes%>0 ...I.  . |
00025520  6e 6f 25 3d 30 20 b8 20  4e 72 54 65 6d 70 6c 61  |no%=0 . NrTempla|
00025530  74 65 73 25 2d 31 0d 14  4a 3d 20 20 20 20 f2 77  |tes%-1..J=    .w|
00025540  69 6e 64 6f 77 5f 73 65  74 73 70 72 69 74 65 61  |indow_setspritea|
00025550  72 65 61 28 54 65 6d 70  6c 48 61 6e 64 6c 65 25  |rea(TemplHandle%|
00025560  28 6e 6f 25 29 2c 55 73  65 72 53 70 72 69 74 65  |(no%),UserSprite|
00025570  73 25 29 0d 14 4b 0b 20  20 ed 20 6e 6f 25 0d 14  |s%)..K.  . no%..|
00025580  4c 05 cd 0d 14 4d 16 e7  20 55 73 65 72 53 70 72  |L....M.. UserSpr|
00025590  69 74 65 73 25 3d 31 20  8c 0d 14 4e 15 20 20 53  |ites%=1 ...N.  S|
000255a0  70 72 69 74 65 46 4e 61  6d 65 24 3d 22 22 0d 14  |priteFName$=""..|
000255b0  4f 05 cc 0d 14 50 19 20  20 53 70 72 69 74 65 46  |O....P.  SpriteF|
000255c0  4e 61 6d 65 24 3d 66 6e  61 6d 65 24 0d 14 51 05  |Name$=fname$..Q.|
000255d0  cd 0d 14 52 05 e1 0d 14  53 04 0d 14 54 1d dd 20  |...R....S...T.. |
000255e0  a4 6c 6f 61 64 73 70 72  69 74 65 66 69 6c 65 28  |.loadspritefile(|
000255f0  66 6e 61 6d 65 24 29 0d  14 55 19 ea 20 66 74 79  |fname$)..U.. fty|
00025600  70 65 25 2c 66 73 69 7a  65 25 2c 61 72 65 61 25  |pe%,fsize%,area%|
00025610  0d 14 56 2d c8 99 20 22  4f 53 5f 46 69 6c 65 22  |..V-.. "OS_File"|
00025620  2c 31 37 2c 66 6e 61 6d  65 24 20 b8 20 66 74 79  |,17,fname$ . fty|
00025630  70 65 25 2c 2c 2c 2c 66  73 69 7a 65 25 0d 14 57  |pe%,,,,fsize%..W|
00025640  11 e7 20 66 74 79 70 65  25 3c 3e 31 20 8c 0d 14  |.. ftype%<>1 ...|
00025650  58 2c 20 20 f2 63 6f 6d  70 6c 61 69 6e 28 a4 6d  |X,  .complain(.m|
00025660  73 67 5f 6c 6f 6f 6b 75  70 31 28 22 4e 4f 53 46  |sg_lookup1("NOSF|
00025670  22 2c 66 6e 61 6d 65 24  29 29 0d 14 59 0d 20 20  |",fname$))..Y.  |
00025680  61 72 65 61 25 3d 31 0d  14 5a 05 cc 0d 14 5b 10  |area%=1..Z....[.|
00025690  20 20 66 73 69 7a 65 25  2b 3d 31 36 0d 14 5c 1d  |  fsize%+=16..\.|
000256a0  20 20 61 72 65 61 25 3d  a4 68 65 61 70 5f 67 65  |  area%=.heap_ge|
000256b0  74 28 66 73 69 7a 65 25  29 0d 14 5d 11 20 20 e7  |t(fsize%)..].  .|
000256c0  20 61 72 65 61 25 3e 30  20 8c 0d 14 5e 16 20 20  | area%>0 ...^.  |
000256d0  20 20 61 72 65 61 25 21  30 3d 66 73 69 7a 65 25  |  area%!0=fsize%|
000256e0  0d 14 5f 12 20 20 20 20  61 72 65 61 25 21 38 3d  |.._.    area%!8=|
000256f0  31 36 0d 14 60 24 20 20  20 20 c8 99 20 22 4f 53  |16..`$    .. "OS|
00025700  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 39  |_SpriteOp",256+9|
00025710  2c 61 72 65 61 25 0d 14  61 2c 20 20 20 20 c8 99  |,area%..a,    ..|
00025720  20 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 32  | "OS_SpriteOp",2|
00025730  35 36 2b 31 30 2c 61 72  65 61 25 2c 66 6e 61 6d  |56+10,area%,fnam|
00025740  65 24 0d 14 62 07 20 20  cc 0d 14 63 48 20 20 20  |e$..b.  ...cH   |
00025750  20 61 72 65 61 25 3d 31  20 3a 20 f4 20 63 6f 75  | area%=1 : . cou|
00025760  6c 64 6e 27 74 20 61 6c  6c 6f 63 61 74 65 20 73  |ldn't allocate s|
00025770  70 61 63 65 20 69 6e 20  68 65 61 70 20 2d 20 72  |pace in heap - r|
00025780  65 73 65 74 20 74 6f 20  57 69 6d 70 20 61 72 65  |eset to Wimp are|
00025790  61 0d 14 64 07 20 20 cd  0d 14 65 05 cd 0d 14 66  |a..d.  ...e....f|
000257a0  0a 3d 61 72 65 61 25 0d  14 67 04 0d 14 68 2a dd  |.=area%..g...h*.|
000257b0  20 f2 77 69 6e 64 6f 77  5f 73 65 74 73 70 72 69  | .window_setspri|
000257c0  74 65 61 72 65 61 28 68  61 6e 64 6c 65 25 2c 61  |tearea(handle%,a|
000257d0  72 65 61 25 29 0d 14 69  0f ea 20 69 63 6f 6e 25  |rea%)..i.. icon%|
000257e0  2c 69 62 25 0d 14 6a 15  57 69 6e 42 6c 6b 25 21  |,ib%..j.WinBlk%!|
000257f0  30 3d 68 61 6e 64 6c 65  25 0d 14 6b 24 c8 99 20  |0=handle%..k$.. |
00025800  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
00025810  6e 66 6f 22 2c 2c 57 69  6e 42 6c 6b 25 0d 14 6c  |nfo",,WinBlk%..l|
00025820  24 57 69 6e 42 6c 6b 25  21 36 38 3d 61 72 65 61  |$WinBlk%!68=area|
00025830  25 20 3a 20 f4 20 43 42  50 20 70 6f 69 6e 74 65  |% : . CBP pointe|
00025840  72 0d 14 6d 34 f2 69 63  6f 6e 5f 73 65 74 73 70  |r..m4.icon_setsp|
00025850  72 69 74 65 61 72 65 61  28 57 69 6e 42 6c 6b 25  |ritearea(WinBlk%|
00025860  21 36 30 2c 57 69 6e 42  6c 6b 25 2b 37 36 2c 61  |!60,WinBlk%+76,a|
00025870  72 65 61 25 29 0d 14 6e  16 e7 20 28 57 69 6e 42  |rea%)..n.. (WinB|
00025880  6c 6b 25 21 38 38 29 3e  30 20 8c 0d 14 6f 20 20  |lk%!88)>0 ...o  |
00025890  20 e3 20 69 63 6f 6e 25  3d 30 20 b8 20 28 57 69  | . icon%=0 . (Wi|
000258a0  6e 42 6c 6b 25 21 38 38  29 2d 31 0d 14 70 1f 20  |nBlk%!88)-1..p. |
000258b0  20 20 20 69 62 25 3d 57  69 6e 42 6c 6b 25 2b 39  |   ib%=WinBlk%+9|
000258c0  32 2b 69 63 6f 6e 25 2a  33 32 0d 14 71 30 20 20  |2+icon%*32..q0  |
000258d0  20 20 f2 69 63 6f 6e 5f  73 65 74 73 70 72 69 74  |  .icon_setsprit|
000258e0  65 61 72 65 61 28 69 62  25 21 31 36 2c 69 62 25  |earea(ib%!16,ib%|
000258f0  2b 32 30 2c 61 72 65 61  25 29 0d 14 72 0d 20 20  |+20,area%)..r.  |
00025900  ed 20 69 63 6f 6e 25 0d  14 73 05 cd 0d 14 74 26  |. icon%..s....t&|
00025910  68 61 6e 64 6c 65 25 3d  a4 72 65 64 65 66 69 6e  |handle%=.redefin|
00025920  65 77 69 6e 64 6f 77 28  57 69 6e 42 6c 6b 25 2c  |ewindow(WinBlk%,|
00025930  30 29 0d 14 75 05 e1 0d  14 76 04 0d 14 77 2d dd  |0)..u....v...w-.|
00025940  20 f2 69 63 6f 6e 5f 73  65 74 73 70 72 69 74 65  | .icon_setsprite|
00025950  61 72 65 61 28 66 6c 61  67 73 25 2c 64 61 74 61  |area(flags%,data|
00025960  25 2c 61 72 65 61 25 29  0d 14 78 2f e7 20 28 28  |%,area%)..x/. ((|
00025970  66 6c 61 67 73 25 20 80  20 33 29 3d 32 29 20 80  |flags% . 3)=2) .|
00025980  20 28 28 66 6c 61 67 73  25 20 80 20 26 31 30 30  | ((flags% . &100|
00025990  29 3c 3e 30 29 20 8c 0d  14 79 13 20 20 64 61 74  |)<>0) ...y.  dat|
000259a0  61 25 21 34 3d 61 72 65  61 25 0d 14 7a 05 cd 0d  |a%!4=area%..z...|
000259b0  14 7b 05 e1 0d 14 7c 04  0d ff                    |.{....|...|
000259ba