home *** CD-ROM | disk | FTP | other *** search
- /*
- *
- * BGUI Tree List View class
- *
- * (C) Copyright 1999 Manuel Lemos.
- * (C) Copyright 1996-1999 Nick Christie.
- * All Rights Reserved.
- *
- */
-
- OPT PREPROCESS
-
- /************************************************************************
- ************************* TREEVIEW CLASS DEMO *************************
- ************************************************************************/
-
- MODULE 'libraries/bgui',
- 'libraries/bguim',
- 'bgui',
- 'bgui/bgui_treeview',
- 'bgui/bgui_image',
- 'devices/inputevent',
- 'intuition/intuition',
- 'intuition/classes',
- 'intuition/classusr',
- 'intuition/gadgetclass',
- 'utility/hooks',
- 'utility/tagitem',
- 'tools/installhook',
- 'tools/inithook',
- 'tools/boopsi'
-
-
- /************************************************************************
- ***************************** DEFINITIONS *****************************
- ************************************************************************/
-
-
- /*
- * Object IDs
- */
-
- CONST ID_TV_TEST = 1
- CONST ID_BT_ADD = 2
- CONST ID_BT_REMOVE = 3
- CONST ID_BT_QUIT = 4
-
- /*
- * Some rawkey codes
- */
-
- CONST RAW_RETURN = 68
- CONST RAW_UPARROW = 76
- CONST RAW_DOWNARROW = 77
-
- #define SHIFTKEYS (IEQUALIFIER_LSHIFT OR IEQUALIFIER_RSHIFT)
- #define CTRLKEY (IEQUALIFIER_CONTROL)
- #define ALTKEYS (IEQUALIFIER_LALT OR IEQUALIFIER_RALT)
-
- /************************************************************************
- ******************************* MAIN() ********************************
- ************************************************************************/
-
- PROC main()
-
- DEF wo_main:PTR TO object, tv_Test:PTR TO object, bt_Add:PTR TO object, bt_Remove:PTR TO object, bt_Quit:PTR TO object
- DEF idcmphook:hook
- DEF win:PTR TO window
- DEF ok
- DEF grandParent:PTR TO CHAR
- DEF newEntry:PTR TO CHAR
- DEF parent:PTR TO LONG
- DEF childA:PTR TO LONG
- DEF childB:PTR TO CHAR
- DEF grandA:PTR TO LONG
- DEF winsig,sigs,id
- DEF running
-
- IF (bguibase := OpenLibrary('bgui.library',40))
-
- tv_Test := BgUI_NewObjectA(BGUI_TREEVIEW_GADGET, [GA_ID, ID_TV_TEST,
- TVA_Indentation, 12,
- TVA_ImageStyle, TVIS_BOX,
- TVA_LineStyle, TVLS_DOTS,
- TVA_NoLeafImage, TRUE,
- LISTV_MinEntriesShown,5,
- PGA_NEWLOOK, TRUE,
- TAG_DONE])
-
- inithook(idcmphook, {windowHandler}, tv_Test)
-
- wo_main := WindowObject,
- WINDOW_Title, 'TreeView Class Demo',
- WINDOW_ScreenTitle, 'TreeView Class FOR BGUI by Nick Christie (18.09.96)',
- WINDOW_AutoAspect, TRUE,
- WINDOW_SmartRefresh, TRUE,
- WINDOW_RMBTrap, TRUE,
- WINDOW_AutoKeyLabel, TRUE,
- WINDOW_ScaleHeight, 33,
- WINDOW_IDCMPHook, idcmphook,
- WINDOW_IDCMPHookBits, IDCMP_RAWKEY,
- WINDOW_MasterGroup,
- VGroupObject, HOffset(4), VOffset(4), Spacing(4),
- StartMember,
- tv_Test,
- EndMember,
- StartMember,
- HGroupObject, HOffset(4), VOffset(4), Spacing(4),
- VarSpace(DEFAULT_WEIGHT/2),
- StartMember,
- bt_Add := ButtonObject,
- LAB_Label, '_Add',
- GA_ID, ID_BT_ADD,
- EndObject,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/2),
- StartMember,
- bt_Remove := ButtonObject,
- LAB_Label, '_Remove',
- GA_ID, ID_BT_REMOVE,
- GA_DISABLED, TRUE,
- EndObject,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/2),
- StartMember,
- bt_Quit := ButtonObject,
- LAB_Label, '_Quit',
- GA_ID, ID_BT_QUIT,
- EndObject,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/2),
- EndObject, FixMinHeight,
- EndMember,
- EndObject,
- EndObject
-
- IF (wo_main)
-
- newEntry := 'New Entry'
- grandParent := 'Grandparent'
- parent := ['Parent A', 'Parent B', 'Parent C']
- childA := ['Child A0', 'Child A1', 'Child A2']
- grandA := ['Grandchild A0A', 'Grandchild A0B', 'Grandchild A2A']
- childB := 'Child B0'
-
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, grandParent, TV_ROOT, TVW_CHILD_LAST, TVF_EXPAND])
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, parent[0], grandParent, TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, parent[1], grandParent, TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, parent[2], grandParent, TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, childA[0], parent[0], TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, childA[1], parent[0], TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, childA[2], parent[0], TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, grandA[0], childA[0], TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, grandA[1], childA[0], TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, grandA[2], childA[2], TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
- ok := BgUI_DoGadgetMethodA(tv_Test, NIL, NIL, [TVM_INSERT, NIL, childB, parent[1], TVW_CHILD_LAST, TVF_EXPAND])
- ENDIF
-
- IF (ok)
-
- IF (win := WindowOpen(wo_main))
-
- GetAttr(WINDOW_SigMask,wo_main,{winsig})
- running := TRUE
-
- WHILE (running = TRUE)
-
- sigs := Wait(winsig)
-
- IF (sigs AND winsig)
-
- WHILE ((id := HandleEvent(wo_main)) <> WMHI_NOMORE)
-
- SELECT id
-
- CASE WMHI_CLOSEWINDOW
- running := FALSE
-
-
- CASE ID_BT_QUIT
- running := FALSE
-
-
- CASE ID_BT_ADD
- IF (ok:=BgUI_DoGadgetMethodA(tv_Test, win, NIL, [TVM_INSERT, NIL, newEntry, TV_SELECTED, TVW_CHILD_FIRST, 0]))
-
- SetGadgetAttrsA(bt_Add, win, NIL, [GA_DISABLED, TRUE, TAG_DONE])
- SetGadgetAttrsA(bt_Remove, win, NIL, [GA_DISABLED, FALSE, TAG_DONE])
-
- ENDIF
-
- CASE ID_BT_REMOVE
- IF (ok:=BgUI_DoGadgetMethodA(tv_Test, win, NIL, [TVM_REMOVE, NIL, newEntry, TVW_ENTRY, 0]))
-
- SetGadgetAttrsA(bt_Add, win, NIL, [GA_DISABLED, FALSE, TAG_DONE])
- SetGadgetAttrsA(bt_Remove, win, NIL, [GA_DISABLED, TRUE, TAG_DONE])
-
- ENDIF
-
- ENDSELECT
- ENDWHILE
- ENDIF
-
- ENDWHILE
- ELSE
- WriteF('Can''t open the window\n')
- ENDIF
- ELSE
- WriteF('Can''t create the objects\n')
- ENDIF
-
- DisposeObject(wo_main)
- ELSE
- WriteF('Can''t create the window\n')
- ENDIF
- CloseLibrary(bguibase)
- ELSE
- WriteF('Can''t open bgui.library\n')
- ENDIF
- ENDPROC
-
- /************************************************************************
- *************************** WINDOWHANDLER() ***************************
- *************************************************************************
- * Hook for main window IDCMP messages. Called by window object after its
- * intuimsg processing has finished, before main() gets control. Used
- * here to provide extra keyboard control not possible using normal
- * gadget-key assignment, specIFically: crsr up/down to select entry in
- * treeview and ESC to close window.
- *
- *************************************************************************/
-
- PROC windowHandler(hook:PTR TO hook,obj:PTR TO object,imsg:PTR TO intuimessage)
- DEF win:PTR TO window
- DEF cursel,method,entry,which,flags
- DEF view:PTR TO object
-
- view := hook.data
- GetAttr(WINDOW_Window, obj, {win})
-
- IF (imsg.class = IDCMP_RAWKEY)
-
- method := TVM_SELECT
- entry := TV_SELECTED
- which := -1
- flags := TVF_MAKEVISIBLE
- cursel := domethod(view,[TVM_GETENTRY, TV_SELECTED, TVW_ENTRY, 0])
-
- IF (imsg.code = RAW_UPARROW)
- IF (cursel)
- which := TVW_TREE_PREV
-
- IF (imsg.qualifier AND SHIFTKEYS)
- which := TVW_TREE_PAGE_UP
- ENDIF
-
- IF (imsg.qualifier AND CTRLKEY)
- entry := TV_ROOT
- which := TVW_CHILD_FIRST
- ENDIF
- ELSE
- which := TVW_CHILD_FIRST
- entry := TV_ROOT
- ENDIF
- ENDIF
-
- IF (imsg.code = RAW_DOWNARROW)
- IF (cursel)
- which := TVW_TREE_NEXT
-
- IF (imsg.qualifier AND SHIFTKEYS)
- which := TVW_TREE_PAGE_DOWN
- ENDIF
-
- IF (imsg.qualifier AND CTRLKEY)
- entry := TV_ROOT
- which := TVW_TREE_LAST
- ENDIF
- ELSE
- which := TVW_CHILD_FIRST
- entry := TV_ROOT
- ENDIF
- ENDIF
-
- IF (imsg.code = RAW_RETURN)
- method := TVM_EXPAND
- which := TVW_ENTRY
- flags := TVF_TOGGLE
- ENDIF
-
- IF (which <> 0)
- BgUI_DoGadgetMethodA(view, win, NIL, [method, NIL, entry, which, flags])
- ENDIF
- ENDIF
-
- ENDPROC
-
-