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

  1.  Bruno's wimp library.
  2.  PROCLib...
  3.  PROCRLib...
  4. LibGetFileLength(Path$)
  5.  "OS_File",20,Path$ 
  6.  ,,,,NewLength%
  7. =NewLength%
  8. Const
  9. Information%=1
  10. Error%=2
  11. Program%=3
  12. Question%=4
  13. LibBreakPoint
  14. ReportMessage("Breakpoint")
  15. ReportError(ErrorNumber%,StringError$)
  16.  Flag%,Response%
  17. !Block%=ErrorNumber%
  18. !$(Block%+4)=StringError$+
  19. 1Flag%= (1<<1) 
  20.  (1<<2) 
  21.  (1<<8) 
  22.  (Error%<<9)
  23.  Highlighted?
  24.  "Wimp_ReportError",Block%,Flag%,TaskName$ 
  25.  ,Response%
  26. =Response%
  27. ReportMessage(MessageString$)
  28.  Flag%
  29. !Block%=0
  30. !#$(Block%+4)=MessageString$+
  31. ".Flag%= 1 
  32.  (1<<2) 
  33.  (1<<8) 
  34.  (Program%<<9)
  35.  Highlighted?
  36.  "Wimp_ReportError",Block%,Flag%,TaskName$
  37. LibWimpInit
  38.  Block% 500
  39. Const
  40. Error
  41.  ON ERROR REPORT:PRINT" at line ";ERL:END
  42. Block%!0=0
  43.  "Wimp_Initialise",350,&4B534154,TaskName$,Block% 
  44.  ,TaskId%
  45. Error
  46. 1*A%=
  47. ReportError(
  48. $+" at line "+
  49. Output(Str$)
  50.  "Wimp_CommandWindow","OUTPUT"
  51.  Str$
  52.  "Wimp_CommandWindow",0
  53. LibLoadTemplates(FileName$)
  54.  "Wimp_OpenTemplate",,FileName$
  55.  Ind% 20000
  56.  EndInd%=Ind%+20000
  57.  TemplBuffer% 20000
  58. RLibLoadTemplates
  59.  "Wimp_CloseTemplate"
  60. LibIconBarInstall
  61.  !Block% = -1
  62.  Block%!4 = 0
  63.  Block%!8 = 0
  64.  Block%!12 = 75
  65.  Block%!16 = 75
  66.  Block%!20 = &1700202A
  67. P! $(Block%+24) = "!"+TaskName$
  68.  "Wimp_CreateIcon",,Block% 
  69.  IconBarHandle%
  70. LibWindowTemplate(Name$)
  71.  "Wimp_LoadTemplate",,TemplBuffer%,Ind%,EndInd%,-1,Name$,0 
  72.  ,,Ind%
  73.  "Wimp_CreateWindow",,TemplBuffer% 
  74.  Handle%
  75.  =Handle% 
  76. LibSetIconText(WinHandle%,IconHandle%,S$)
  77.  Block%!0=WinHandle%
  78.  Block%!4=IconHandle%
  79.  "Wimp_GetIconState",,Block%
  80.  Block%!8=0
  81.  Block%!12=0
  82. !!!!! Not documented in the PRM !!!!!
  83.  $(Block%!28)=S$
  84.  "Wimp_SetIconState",,Block%
  85. LibSetIconText2(IconHandle%,S$)
  86.  -> WinH%
  87.  Block%!0=WinH%
  88.  Block%!4=IconHandle%
  89.  "Wimp_GetIconState",,Block%
  90.  Block%!8=0
  91.  Block%!12=0
  92. !!!!! Not documented in the PRM !!!!!
  93.  $(Block%!28)=S$
  94.  "Wimp_SetIconState",,Block%
  95. LibSetWritableText(IconH%,S$)
  96.  -> WinH%,WinHEd%,IconHEd%
  97.  Don't update icon if caret's inside.
  98.  IF IconH%<>IconHEd% OR WinH%<>WinHEd% THEN
  99.   Block%!0=WinH%
  100.   Block%!4=IconH%
  101.  "Wimp_GetIconState",,Block%
  102.   Block%!8=0
  103.   Block%!12=0
  104. !!!!! Not documented in the PRM !!!!!
  105.   $(Block%!28)=S$
  106.  "Wimp_SetIconState",,Block%
  107.  ENDIF
  108. LibMenuHeader(title$,width%)
  109.  mem%=MenuPtr%
  110.  $mem%=title$
  111.  mem%?12=7
  112.  mem%?13=2
  113.  mem%?14=7
  114.  mem%?15=0
  115.  mem%!16=width%
  116.  mem%!20=44
  117.  mem%!24=0
  118.  mem%+=28
  119.  MenuPtr%=mem%
  120. LibMenuItem(menuflag%,submenu%,flagword%,title$)
  121.  mem%=MenuPtr%
  122.  !mem%=menuflag%
  123.  !(mem%+4)=submenu%
  124.  !(mem%+8)=flagword%
  125. (title$)
  126.  L%<=12 
  127.  CompactFlag%=
  128.   $(mem%+12)=title$
  129. 0  !(mem%+8)=!(mem%+8) 
  130.  (1<<8) :
  131.  Indirected
  132.   !(mem%+12)=MenuStrPtr%
  133.   !(mem%+16)=0
  134.   !(mem%+20)=L%
  135.   $MenuStrPtr%=title$
  136. )  MenuStrPtr%?L%=&0D :
  137.  End character
  138.   MenuStrPtr%+=L%+2
  139.  mem%+=24
  140.  MenuPtr%=mem%
  141. LibMenuInit
  142.  MenuStrings% 100*50
  143.  MenuStrPtr%=MenuStrings%
  144.  IconFlag%=&07000021
  145.  Ticked%=1<<0
  146.  DotLine%=1<<1
  147.  Writable%=1<<2
  148.  SubMenu%=0 :
  149.  Last%=1<<7
  150.  TitleInd%=1<<8
  151.  Menus
  152. SetTick(Menu%,Item%)
  153.  Adr%=Menu%+28+24*Item%
  154.  !Adr%=(!Adr% 
  155. UnsetTick(Menu%,Item%)
  156.  Adr%=Menu%+28+24*Item%
  157.  !Adr%=(!Adr% 
  158. LibMTick(Menu%,Item%)
  159.  Adr%=Menu%+28+24*Item%
  160.  !Adr%=(!Adr% 
  161. LibMUntick(Menu%,Item%)
  162.  Adr%=Menu%+28+24*Item%
  163.  !Adr%=(!Adr% 
  164. LibMEnable(Menu%,Item%)
  165.  Adr%=Menu%+28+24*Item%+8
  166.  !Adr%=(!Adr% 
  167.  (1<<22))
  168. LibMDisable(Menu%,Item%)
  169.  Adr%=Menu%+28+24*Item%+8
  170. & !Adr%=(!Adr% 
  171.  (1<<22))+(1<<22)
  172. LibSetExtent(WinH%,WkX%,WkY%)
  173.  Block%!0=0
  174.  Block%!4=-WkY%
  175.  Block%!8=WkX%
  176.  Block%!12=0
  177.  "Wimp_SetExtent",WinH%,Block%
  178. LibResizeWindow(WinH%)
  179. LibCloseWindow(WinH%)
  180.  Block%!0=WinH%
  181.  "Wimp_CloseWindow",,Block%
  182. LibWinInitScroll(WinH%)
  183. LibWinSetScroll(WinH%,0,0)
  184. LibWinSetScroll(WinH%,X%,Y%)
  185.  Flags%
  186.  Block%!0=WinH%
  187.  "Wimp_GetWindowState",,Block%
  188.  Block%!20=X%
  189.  Block%!24=Y%
  190.  Flags%=Block%!32
  191.  C%=(Flags%>>16)
  192.  Opened%= (C% 
  193.  1) =1
  194.  PROCOutput(STR$(Opened%))
  195.  Opened% 
  196.  "Wimp_OpenWindow",,Block%
  197.   Block%!28=-3
  198.  "Wimp_OpenWindow",,Block%
  199. UpdateWindow(WinH%)
  200. LibUpdateWindow(WinH%)
  201. LibUpdateWindow(WinH%)
  202.  X1%,Y1%,X2%,Y2%
  203.  Block%!0=WinH%
  204.  "Wimp_GetWindowInfo",,Block%
  205.  X1%=Block%!44
  206.  Y1%=Block%!48
  207.  X2%=Block%!52
  208.  Y2%=Block%!56
  209.  "Wimp_ForceRedraw",WinH%,X1%,Y1%,X2%,Y2%
  210. LibResizeWindow(WinH%)
  211.  Resize window if it is opened.
  212.  Used when window's extent is set. 
  213.  Flags%
  214.  Block%!0=WinH%
  215.  "Wimp_GetWindowState",,Block%
  216.  Flags%=Block%!32
  217.  C%=(Flags%>>16)
  218.  Opened%= (C% 
  219.  1) =1
  220.  PROCOutput(STR$(Opened%))
  221.  Opened% 
  222.  "Wimp_OpenWindow",,Block%
  223.   Block%!28=-3
  224.  "Wimp_OpenWindow",,Block%
  225. LibOpenWindow(WinH%)
  226.  Put window to the front
  227.  Block%!0=WinH%
  228.  "Wimp_GetWindowState",,Block%
  229.  Block%!28 = -1
  230.  "Wimp_OpenWindow",,Block% 
  231.