home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac5_disk / tutorial.s / hbasic.tut / pdo.bas < prev    next >
BASIC Source File  |  1997-04-10  |  3KB  |  133 lines

  1.  
  2. REM PDO - Print Documents Out, the example project for the HBASIC
  3. REM       tutorial for Atari Computing by Paul Jones
  4.  
  5. LIBRARY "gemaes","gemvdi"
  6.  
  7. REM $option k10
  8. REM $option g,y+,v+,u+,#,[,]
  9.  
  10. DEFINT a-z
  11.  
  12. DIM SHARED junk
  13. REM DECLARE FUNCTION Dialog
  14.  
  15. REM $include pdo.bh
  16. REM $include gemaes.bh
  17.  
  18. DIM SHARED tree&
  19.  
  20. DEF FNObjectAddr&(object)=tree&+object*ob_sizeof
  21.  
  22. SUB Exclob_state(object,flag_mask)
  23. STATIC t&
  24. t&=FNObjectAddr&(object)+ob_state
  25. POKEW    t&,PEEKW(t&) AND (NOT flag_mask)
  26. END SUB
  27.  
  28. DEF FNDialog (dial,edit)
  29. STATIC junk,tree&,x,y,w,h,but,type_tree,treeno,tree&
  30.  
  31. junk=FNrsrc_gaddr(0,dial,tree&)
  32. form_center tree&,x,y,w,h
  33. form_dial FMD_START,0,0,0,0,x,y,w,h
  34. form_dial FMD_GROW,x+w\2,y+h\2,0,0,x,y,w,h
  35. junk=FNobjc_draw(tree&,0,10,x,y,w,h)
  36. but=FNform_do(tree&,edit) AND &h7fff
  37. form_dial FMD_SHRINK,x+w\2,y+h\2,0,0,x,y,w,h
  38. form_dial FMD_FINISH,0,0,0,0,x,y,w,h
  39. Exclob_state but,mask_selected
  40.  
  41.  
  42. FNDialog=but
  43.  
  44. END DEF
  45.  
  46.  
  47. SUB ProcessUserMenus (title,item)
  48. STATIC dummy,finished
  49. SHARED finished
  50.  
  51. SELECT CASE item
  52.     CASE about:
  53.         dummy=FNform_alert (1,"[1][ You clicked on 'About PDO'! ][ OK ]")
  54.     CASE view:
  55.         dummy=FNform_alert (1,"[1][ You clicked on 'View'! ][ OK ]")
  56.     CASE prin:
  57.         dummy=FNform_alert (1,"[1][ You clicked on 'Print'! ][ OK ]")
  58.     CASE opts:
  59.         dummy=FNform_alert (1,"[1][ You clicked on 'Printer | options'! ][ OK ]")
  60.     CASE reg:
  61.         dummy=FNform_alert (1,"[1][ You clicked on 'REGISTER'! ][ OK ]")
  62.     CASE loads:
  63.         dummy=FNform_alert (1,"[1][ You clicked on 'Load | settings'! ][ OK ]")
  64.     CASE saves:
  65.         dummy=FNform_alert (1,"[1][ You clicked on 'Save | settings'! ][ OK ]")
  66.     CASE quit:
  67.         dummy=FNform_alert (1,"[1][ Bye Bye! ][ Ok ]")
  68.         finished=-1
  69. END SELECT
  70. END SUB
  71.  
  72. SUB InitResourceFile(name$)
  73. STATIC junk
  74. SHARED resource_loaded
  75. IF FNrsrc_load(name$)=0 THEN
  76.     junk=FNform_alert(1,"[3][ Couldn't find PDO.RSC! ][ Quit ]")
  77.     SYSTEM
  78. END IF
  79. resource_loaded=-1
  80. END SUB
  81.  
  82. SUB StartProgram(resourcefile$,treenumber)
  83. SHARED WindX,WindY,WindW,WindH
  84. WINDOW ON
  85. InitResourceFile resourcefile$
  86. junk=FNwind_get(0,WF_WORKXYWH,WindX,WindY,WindW,WindH)
  87. InitMenuSystem treenumber
  88. END SUB
  89.  
  90. SUB StopProgram
  91. SHARED menu_pointer&
  92. STATIC junk
  93. IF menu_pointer& THEN menu_bar menu_pointer&,0
  94. junk=FNwind_set(0,WF_NEWDESK,0,0,0,0)
  95. junk=FNwind_update(END_UPDATE)
  96.  
  97. STOP -1
  98. END SUB
  99.  
  100. SUB InitMenuSystem( treenumber)
  101. SHARED menu_pointer&,exit_item,menus_enabled
  102. junk=FNrsrc_gaddr(0,treenumber,menu_pointer&)
  103. menu_bar menu_pointer&,1
  104. menus_enabled=-1
  105. END SUB
  106.  
  107. SUB do_message(val mes_type)
  108. SHARED mess(1),menu_pointer&
  109. SHARED title,item
  110. STATIC title,item,junk
  111.  SELECT CASE mes_type
  112.  CASE MN_SELECTED:
  113.     title=mess(3)
  114.     item=mess(4)
  115.         CALL ProcessUserMenus (title,item)
  116.     menu_tnormal menu_pointer&,title,1
  117.  END SELECT
  118. END SUB
  119.  
  120. DIM mess(16)
  121. StartProgram "PDO.RSC",menu
  122.  
  123. DO
  124.     e=FNevnt_multi(MU_MESAG,0,0,0,0,0,0,0,0,0,0,0,0,0,_
  125.                     varptr(mess(0)),0,0,0,0,0,k,0)
  126.  
  127.     
  128.     IF e AND MU_MESAG THEN do_message mess(0)
  129.  
  130. IF finished=-1 THEN CALL StopProgram
  131.  
  132. LOOP
  133.