Bruno's wimp library. PROCLib... PROCRLib... LibGetFileLength(Path$) "OS_File",20,Path$ ,,,,NewLength% =NewLength% Const Information%=1 Error%=2 Program%=3 Question%=4 LibBreakPoint ReportMessage("Breakpoint") ReportError(ErrorNumber%,StringError$) Flag%,Response% !Block%=ErrorNumber% !$(Block%+4)=StringError$+ 1Flag%= (1<<1) (1<<2) (1<<8) (Error%<<9) Highlighted? "Wimp_ReportError",Block%,Flag%,TaskName$ ,Response% =Response% ReportMessage(MessageString$) Flag% !Block%=0 !#$(Block%+4)=MessageString$+ ".Flag%= 1 (1<<2) (1<<8) (Program%<<9) Highlighted? "Wimp_ReportError",Block%,Flag%,TaskName$ LibWimpInit Block% 500 Const Error ON ERROR REPORT:PRINT" at line ";ERL:END Block%!0=0 "Wimp_Initialise",350,&4B534154,TaskName$,Block% ,TaskId% Error 1*A%= ReportError( $+" at line "+ Output(Str$) "Wimp_CommandWindow","OUTPUT" Str$ "Wimp_CommandWindow",0 LibLoadTemplates(FileName$) "Wimp_OpenTemplate",,FileName$ Ind% 20000 EndInd%=Ind%+20000 TemplBuffer% 20000 RLibLoadTemplates "Wimp_CloseTemplate" LibIconBarInstall !Block% = -1 Block%!4 = 0 Block%!8 = 0 Block%!12 = 75 Block%!16 = 75 Block%!20 = &1700202A P! $(Block%+24) = "!"+TaskName$ "Wimp_CreateIcon",,Block% IconBarHandle% LibWindowTemplate(Name$) "Wimp_LoadTemplate",,TemplBuffer%,Ind%,EndInd%,-1,Name$,0 ,,Ind% "Wimp_CreateWindow",,TemplBuffer% Handle% =Handle% LibSetIconText(WinHandle%,IconHandle%,S$) Block%!0=WinHandle% Block%!4=IconHandle% "Wimp_GetIconState",,Block% Block%!8=0 Block%!12=0 !!!!! Not documented in the PRM !!!!! $(Block%!28)=S$ "Wimp_SetIconState",,Block% LibSetIconText2(IconHandle%,S$) -> WinH% Block%!0=WinH% Block%!4=IconHandle% "Wimp_GetIconState",,Block% Block%!8=0 Block%!12=0 !!!!! Not documented in the PRM !!!!! $(Block%!28)=S$ "Wimp_SetIconState",,Block% LibSetWritableText(IconH%,S$) -> WinH%,WinHEd%,IconHEd% Don't update icon if caret's inside. IF IconH%<>IconHEd% OR WinH%<>WinHEd% THEN Block%!0=WinH% Block%!4=IconH% "Wimp_GetIconState",,Block% Block%!8=0 Block%!12=0 !!!!! Not documented in the PRM !!!!! $(Block%!28)=S$ "Wimp_SetIconState",,Block% ENDIF LibMenuHeader(title$,width%) mem%=MenuPtr% $mem%=title$ mem%?12=7 mem%?13=2 mem%?14=7 mem%?15=0 mem%!16=width% mem%!20=44 mem%!24=0 mem%+=28 MenuPtr%=mem% LibMenuItem(menuflag%,submenu%,flagword%,title$) mem%=MenuPtr% !mem%=menuflag% !(mem%+4)=submenu% !(mem%+8)=flagword% (title$) L%<=12 CompactFlag%= $(mem%+12)=title$ 0 !(mem%+8)=!(mem%+8) (1<<8) : Indirected !(mem%+12)=MenuStrPtr% !(mem%+16)=0 !(mem%+20)=L% $MenuStrPtr%=title$ ) MenuStrPtr%?L%=&0D : End character MenuStrPtr%+=L%+2 mem%+=24 MenuPtr%=mem% LibMenuInit MenuStrings% 100*50 MenuStrPtr%=MenuStrings% IconFlag%=&07000021 Ticked%=1<<0 DotLine%=1<<1 Writable%=1<<2 SubMenu%=0 : Last%=1<<7 TitleInd%=1<<8 Menus SetTick(Menu%,Item%) Adr%=Menu%+28+24*Item% !Adr%=(!Adr% UnsetTick(Menu%,Item%) Adr%=Menu%+28+24*Item% !Adr%=(!Adr% LibMTick(Menu%,Item%) Adr%=Menu%+28+24*Item% !Adr%=(!Adr% LibMUntick(Menu%,Item%) Adr%=Menu%+28+24*Item% !Adr%=(!Adr% LibMEnable(Menu%,Item%) Adr%=Menu%+28+24*Item%+8 !Adr%=(!Adr% (1<<22)) LibMDisable(Menu%,Item%) Adr%=Menu%+28+24*Item%+8 & !Adr%=(!Adr% (1<<22))+(1<<22) LibSetExtent(WinH%,WkX%,WkY%) Block%!0=0 Block%!4=-WkY% Block%!8=WkX% Block%!12=0 "Wimp_SetExtent",WinH%,Block% LibResizeWindow(WinH%) LibCloseWindow(WinH%) Block%!0=WinH% "Wimp_CloseWindow",,Block% LibWinInitScroll(WinH%) LibWinSetScroll(WinH%,0,0) LibWinSetScroll(WinH%,X%,Y%) Flags% Block%!0=WinH% "Wimp_GetWindowState",,Block% Block%!20=X% Block%!24=Y% Flags%=Block%!32 C%=(Flags%>>16) Opened%= (C% 1) =1 PROCOutput(STR$(Opened%)) Opened% "Wimp_OpenWindow",,Block% Block%!28=-3 "Wimp_OpenWindow",,Block% UpdateWindow(WinH%) LibUpdateWindow(WinH%) LibUpdateWindow(WinH%) X1%,Y1%,X2%,Y2% Block%!0=WinH% "Wimp_GetWindowInfo",,Block% X1%=Block%!44 Y1%=Block%!48 X2%=Block%!52 Y2%=Block%!56 "Wimp_ForceRedraw",WinH%,X1%,Y1%,X2%,Y2% LibResizeWindow(WinH%) Resize window if it is opened. Used when window's extent is set. Flags% Block%!0=WinH% "Wimp_GetWindowState",,Block% Flags%=Block%!32 C%=(Flags%>>16) Opened%= (C% 1) =1 PROCOutput(STR$(Opened%)) Opened% "Wimp_OpenWindow",,Block% Block%!28=-3 "Wimp_OpenWindow",,Block% LibOpenWindow(WinH%) Put window to the front Block%!0=WinH% "Wimp_GetWindowState",,Block% Block%!28 = -1 "Wimp_OpenWindow",,Block%