home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 55
/
Amiga_Dream_55.iso
/
RISCOS
/
MAGAZINE
/
LABOS
/
KING.ZIP
/
King
/
!KINGBas
/
Wimp
(
.txt
)
< prev
Wrap
RISC OS BBC BASIC V Source
|
1998-01-12
|
6KB
|
231 lines
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%