home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac12disk / enchant / gem_t.kit / enchant.bas next >
Encoding:
BASIC Source File  |  1998-12-01  |  9.0 KB  |  272 lines

  1.  
  2. ' [ENCHANT.BAS]
  3. ' This source document is apart of the ENhanCed Hisoft ApplicatioN toolkiT (ENCHANT)
  4. ' Developed by Matthew Bacon & Paul Jones, © 1997-1998 Matthew Bacon & Paul Jones
  5.  
  6. DEFINT a-z
  7. REM $include enchant.bh        ' Declare *.BH file created from resource file
  8. REM $include toolbx_a.bas    ' Request the file TOOLBX_A.BAS (i.e. GEM Toolkit)
  9.  
  10. REM $include bubble.bas        ' Request the file BUBBLE.BAS
  11. REM $include error.bas        ' Request the file ERROR.BAS
  12. REM $include curser.bas        ' Request the file CURSER.BAS
  13. REM $include st-guide.bas    ' Request the file ST-GUIE.BAS
  14.  
  15. CALL StartProgram (CURDIR$+"\ENCHANT.RSC",FORM_MENU,MENU_QUIT,FORM_ICONIFY)
  16. MyProgram$="ENCHANT"
  17. CALL init_popups    '    Call sub-routines to initiate (set presets) for popups
  18. HowManyButtons=2 : clicks_enabled=-1    ' See Toolkit manual for details
  19. junk=xdialog (FORM_ABOUT,0,0,1,0)    ' Display 'About' dialog on execution
  20. CALL ENCHANTloop    ' Start program loop
  21. CALL StopProgram
  22.  
  23. ' User routines
  24.  
  25. FUNCTION HandleUserClose(BYVAL WindowHandle)
  26. END FUNCTION
  27.  
  28. SUB HandleUserMessages
  29. END SUB
  30.  
  31. SUB HandleUserKeys (ASCII$,key_pressed,kstate)
  32. END SUB
  33.  
  34. SUB HandleUserClicks (clicks,kstate,mx,my)
  35. STATIC oldtree&,object,x,y,w,h,outx,outy,find_handle
  36.  
  37. find_handle=wind_find(mx,my)        ' Find out handle under mouse position
  38. IF find_handle<>0 THEN EXIT SUB        ' If hanle does not = 0 then exit sub-routine
  39. object=objc_find(desktree&,0,10,mx,my)
  40. IF object=DESK_ICON THEN
  41.     oldtree&=tree& : tree&=desktree&
  42.     IF clicks=1 THEN
  43.         MOUSE 4
  44.         junk=objc_offset(desktree&,object,x,y)
  45.         w=getobj_width(object) : h=getobj_height(object)
  46.         form_dial FMD_START,0,0,0,0,x,y,w,h
  47.         graf_dragbox w,h,x,y,PEEKW(SYSTAB+40)+1,PEEKW(SYSTAB+42)+19,PEEKW(SYSTAB+44),PEEKW(SYSTAB+46)-19,outx,outy
  48.         setobj_x object,outx : setobj_y object,outy-19
  49.         form_dial FMD_FINISH,0,0,0,0,x,y,w,h
  50.         redraw_object object
  51.         form_dial FMD_FINISH,0,0,0,0,outx,outy,w,h
  52.         MOUSE 0
  53.     ELSE
  54.         IF clicks=2 THEN
  55.             junk=xalert(3,"[1][You double clicked on the|desktop icon!||Cool ;-))][OK]")
  56.         END IF
  57.     END IF
  58.     tree&=oldtree&
  59. END IF
  60. END SUB
  61.  
  62. ' See Toolkit Manual/Modules Manual form further details on the following routine calls!
  63.  
  64. SUB    HandleUserMenu (WindowHandle,item,title)
  65. SHARED fsmessage$,HowManyWindows,HowManyTextWindows,woTLines(),DialogHandle
  66. STATIC result,checkme,disableme,desktop,file$,dummy$,TotalLines
  67.  
  68. SELECT CASE item
  69. CASE MENU_ABOUT
  70.     result=xdialog (FORM_ABOUT,0,0,1,0)
  71. CASE MENU_FSELECTOR
  72.     fsmessage$="ENCHANT" : junk$=FileSelect$ ("",2)
  73. CASE MENU_TESTDIALOG
  74.     result=xdialog (FORM_WINDOW,WIND_FTEXT,WIND_CANCEL,1,VARPTRS(closedialog))
  75. CASE MENU_TESTWINDOW
  76.     dummy$="ENCHANT : Window"
  77.     junk=OpenAWindow(dummy$,win_all,1,19,319,181,VARPTRS(dummy_routine),VARPTRS(dummy_routine),VARPTRS(closeform))
  78. CASE MENU_TESTFORM
  79.     dummy$="ENCHANT : Form Window"
  80.     result=OpenFormWindow(dummy$,FORM_ABOUT,0,ABOUT_OK,VARPTRS(closeaboutform))
  81.     DialogHandle=OpenDoubleFormWindow(dummy$,FORM_TOOLBAR,FORM_WINDOW,WIND_FTEXT2,WIND_CANCEL,VARPTRS(closetoolform),VARPTRS(closeform))
  82.     result=OpenFormWindow(dummy$,FORM_PROCESS,PROC_FTEXT,PROC_OK,VARPTRS(closeprocform))
  83.     CALL xENCHANTloop
  84. CASE MENU_EXECUTE
  85.     fsmessage$="Run..." : file$=FileSelect$ ("",2)
  86.     IF file$<>"" THEN CALL execute(file$,"")
  87. CASE MENU_CHECKME
  88.     IF checkme=0 THEN
  89.         result=menu_checkitem (item,1) : IF result=-1 THEN checkme=1
  90.     ELSE
  91.         result=menu_checkitem (item,0) : IF result=-1 THEN checkme=0
  92.     END IF
  93. CASE MENU_DISABLEME
  94.     IF disableme=1 THEN
  95.         result=menu_disableitem (item,1) : IF result=-1 THEN disableme=1
  96.     ELSE
  97.         result=menu_disableitem (item,0) : IF result=-1 THEN disableme=0
  98.     END IF
  99. CASE MENU_DESKTOP
  100.     IF desktop=0 THEN
  101.         CALL SetDesk (FORM_DESKTOP,DESK_LOGO) : desktop=1 : junk=menu_changetext (item,"  Remove Desktop")
  102.     ELSE
  103.         CALL SetDesk (-1,0) : desktop=0 : junk=menu_changetext (item,"  Include Desktop")
  104.     END IF
  105. CASE MENU_CTRL
  106.     junk=xalert(3,"[1][You have selected the|menu item with the control|key shortcut!][OK]")
  107. CASE MENU_SCTRL
  108.     junk=xalert(3,"[1][You have selected the|menu item with the shift &|control keys shortcut!][OK]")
  109. CASE MENU_ALT
  110.     junk=xalert(3,"[1][You have selected the|menu item with the alternate|key shortcut!][OK]")
  111. CASE MENU_SALT
  112.     junk=xalert(3,"[1][You have selected the|menu item with the shift &|alternate keys shortcut!][OK]")
  113. CASE MENU_README
  114.     fsmessage$="ENCHANT" : file$=FileSelect$ ("READ.ME",2)
  115.     IF file$<>"" THEN
  116.     IF FEXISTS(file$) THEN
  117.         IF HowManyTextWindows=0 THEN InitTextSystem 5,200
  118.         LoadTextFile file$,HowManyTextWindows,woTLines(HowManyTextWindows)
  119.         dummy$="ENCHANT : Text Window"
  120.         junk=OpenTextWindow(dummy$,win_all)
  121.     ELSE
  122.         junk=xalert(3,"[1][The file you have chosen does|not exist! - please try again.][OK]")
  123.     END IF
  124.     END IF
  125. CASE MENU_STG_TITLE : junk=STGuide (CURDIR$+"\ENCHANT.HYP","Title")
  126. CASE MENU_STG_CONTENT : junk=STGuide (CURDIR$+"\ENCHANT.HYP","Contents")
  127. CASE MENU_STG_INDEX : junk=STGuide (CURDIR$+"\ENCHANT.HYP","Index")
  128. END SELECT
  129. END SUB
  130.  
  131.  
  132. ' This sub-routine sets all the popup presets
  133. SUB init_popups
  134. SHARED iobject,cobject,tobject
  135. STATIC oldtree&
  136.  
  137. oldtree&=tree& : SelectTree FORM_POPUPS
  138. iobject=POPUP_IMAGE2
  139. tobject=POPUP1
  140. cobject=POPUP5
  141.  
  142. substitute_image FORM_WINDOW,WIND_RADIOIMAGE,FORM_POPUPS,iobject
  143. include_state cobject,mask_checked+mask_selected
  144. include_state tobject,mask_checked+mask_selected
  145.  
  146. SelectTree FORM_WINDOW
  147. setobj_poptext WIND_RADIOTEXT,"  "+getobj_poptext$(FORM_POPUPS,tobject)
  148. setobj_poptext WIND_CHECKLIST,"  "+getobj_poptext$(FORM_POPUPS,cobject)
  149. tree&=oldtree&
  150. END SUB
  151.  
  152.  
  153. SUB closedialog
  154. SHARED iobject,cobject,tobject
  155. STATIC x,y,dummy$
  156.  
  157. SELECT CASE CommonObj
  158.     CASE WIND_RADIOIMAGE
  159.         iobject=popup(0,WIND_RADIOIMAGE,FORM_POPUPS,POP_IMAGES,iobject)
  160.         IF iobject THEN
  161.             substitute_image FORM_WINDOW,WIND_RADIOIMAGE,FORM_POPUPS,iobject
  162.             redraw_object WIND_RADIOIMAGE
  163.         END IF
  164.     CASE WIND_RI
  165.         radio_popimage FORM_WINDOW,WIND_RADIOIMAGE,FORM_POPUPS,POP_IMAGES,iobject
  166.         redraw_object WIND_RADIOIMAGE
  167.     CASE WIND_RADIOTEXT
  168.         tobject=popup(0,WIND_RADIOTEXT,FORM_POPUPS,POP_TEXT1,tobject)
  169.         IF tobject THEN
  170.             dummy$=getobj_poptext$(FORM_POPUPS,tobject)
  171.             setobj_poptext WIND_RADIOTEXT,"  "+dummy$
  172.             redraw_object WIND_RADIOTEXT
  173.         END IF
  174.     CASE WIND_RT
  175.         radio_poptext WIND_RADIOTEXT,FORM_POPUPS,POP_TEXT1,tobject
  176.         redraw_object WIND_RADIOTEXT
  177.     CASE WIND_CHECKLIST,WIND_CL
  178.         cobject=popup(0,WIND_CHECKLIST,FORM_POPUPS,POP_TEXT2,cobject)
  179.         IF cobject THEN
  180.             dummy$=getobj_poptext$(FORM_POPUPS,cobject)
  181.             setobj_poptext WIND_CHECKLIST,"  "+dummy$
  182.             redraw_object WIND_CHECKLIST
  183.         END IF
  184.     CASE WIND_OK,WIND_CANCEL : Finished_DFlag=0
  185.     CASE WIND_HELP : junk=xalert(3,"[1][There is currently no help|system available - sorry!][OK]")
  186. END SELECT
  187. END SUB
  188.  
  189.  
  190. SUB closeaboutform
  191. SELECT CASE CommonObj
  192.     CASE ABOUT_OK : CommonClose=-1
  193. END SELECT
  194. END SUB
  195.  
  196.  
  197. SUB closeform
  198. SHARED CommonHandle,iobject,cobject,tobject,DialogHandle
  199. STATIC x,y,dummy$
  200.  
  201. SelectTree FORM_WINDOW
  202. IF CommonButton=2 THEN    ' If right mouse button clicked
  203. SELECT CASE CommonObj
  204.     CASE WIND_OK : junk=BubbleGEM ("OK")
  205.     CASE WIND_CANCEL : junk=BubbleGEM ("Cancel")
  206.     CASE WIND_HELP : junk=BubbleGEM ("Help")
  207. END SELECT
  208. ELSE
  209. SELECT CASE CommonObj
  210.     CASE WIND_RADIOIMAGE
  211.         iobject=popup(DialogHandle,WIND_RADIOIMAGE,FORM_POPUPS,POP_IMAGES,iobject)
  212.         IF iobject THEN
  213.             substitute_image FORM_WINDOW,WIND_RADIOIMAGE,FORM_POPUPS,iobject
  214.             redraw_object WIND_RADIOIMAGE
  215.         END IF
  216.     CASE WIND_RI
  217.         radio_popimage FORM_WINDOW,WIND_RADIOIMAGE,FORM_POPUPS,POP_IMAGES,iobject
  218.         redraw_object WIND_RADIOIMAGE
  219.     CASE WIND_RADIOTEXT
  220.         tobject=popup(DialogHandle,WIND_RADIOTEXT,FORM_POPUPS,POP_TEXT1,tobject)
  221.         IF tobject THEN
  222.             dummy$=getobj_poptext$(FORM_POPUPS,tobject)
  223.             setobj_poptext WIND_RADIOTEXT,"  "+dummy$
  224.             redraw_object WIND_RADIOTEXT
  225.         END IF
  226.     CASE WIND_RT
  227.         radio_poptext WIND_RADIOTEXT,FORM_POPUPS,POP_TEXT1,tobject
  228.         redraw_object WIND_RADIOTEXT
  229.     CASE WIND_CHECKLIST,WIND_CL
  230.         cobject=popup(DialogHandle,WIND_CHECKLIST,FORM_POPUPS,POP_TEXT2,cobject)
  231.         IF cobject THEN
  232.             dummy$=getobj_poptext$(FORM_POPUPS,cobject)
  233.             setobj_poptext WIND_CHECKLIST,"  "+dummy$
  234.             redraw_object WIND_CHECKLIST
  235.         END IF
  236.     CASE WIND_OK,WIND_CANCEL : CommonClose=-1
  237.     CASE WIND_HELP : junk=xalert(3,"[1][There is currently no help|system available - sorry!][OK]")
  238. END SELECT
  239. END IF
  240. END SUB
  241.  
  242.  
  243. SUB closetoolform
  244. IF CommonButton=2 THEN
  245. SELECT CASE CommonObj
  246.     CASE TOOL_NEW : junk=BubbleGEM ("New document")
  247.     CASE TOOL_LOAD : junk=BubbleGEM ("Load document")
  248.     CASE TOOL_SAVE : junk=BubbleGEM ("Save document")
  249.     CASE TOOL_PRINT : junk=BubbleGEM ("Print document")
  250.     CASE TOOL_SEARCH : junk=BubbleGEM ("Search document")
  251.     CASE TOOL_INFO : junk=BubbleGEM ("Info.")
  252.     CASE TOOL_CUT : junk=BubbleGEM ("Cut")
  253.     CASE TOOL_COPY : junk=BubbleGEM ("Copy")
  254.     CASE TOOL_PASTE : junk=BubbleGEM ("Paste")
  255.     CASE TOOL_QUIT : junk=BubbleGEM ("Exit")
  256. END SELECT
  257. ELSE
  258. SELECT CASE CommonObj
  259.     CASE TOOL_QUIT : CommonClose=-1
  260. END SELECT
  261. END IF
  262. END SUB
  263.  
  264.  
  265. SUB closeprocform
  266. SELECT CASE CommonObj
  267.     CASE PROC_OK : CommonClose=-1
  268. END SELECT
  269. END SUB
  270.  
  271. '[*END OF FILE*]
  272.