3 NListtree.mcc/--background--
4 NListtree.mcc/MUIA_NListtree_Active
5 NListtree.mcc/MUIA_NListtree_ActiveList
6 NListtree.mcc/MUIA_NListtree_AutoVisible
7 NListtree.mcc/MUIA_NListtree_CloseHook
8 NListtree.mcc/MUIA_NListtree_CompareHook
9 NListtree.mcc/MUIA_NListtree_ConstructHook
10 NListtree.mcc/MUIA_NListtree_CopyToClipHook
11 NListtree.mcc/MUIA_NListtree_DestructHook
12 NListtree.mcc/MUIA_NListtree_DisplayHook
13 NListtree.mcc/MUIA_NListtree_DoubleClick
14 NListtree.mcc/MUIA_NListtree_DragDropSort
15 NListtree.mcc/MUIA_NListtree_DropTarget
16 NListtree.mcc/MUIA_NListtree_DropTargetPos
17 NListtree.mcc/MUIA_NListtree_DropType
18 NListtree.mcc/MUIA_NListtree_DupNodeName
19 NListtree.mcc/MUIA_NListtree_EmptyNodes
20 NListtree.mcc/MUIA_NListtree_FindNameHook
21 NListtree.mcc/MUIA_NListtree_FindUserDataHook
22 NListtree.mcc/MUIA_NListtree_Format
23 NListtree.mcc/MUIA_NListtree_MultiSelect
24 NListtree.mcc/MUIA_NListtree_MultiTestHook
25 NListtree.mcc/MUIA_NListtree_OpenHook
26 NListtree.mcc/MUIA_NListtree_Quiet
27 NListtree.mcc/MUIA_NListtree_ShowTree
28 NListtree.mcc/MUIA_NListtree_Title
29 NListtree.mcc/MUIA_NListtree_TreeColumn
30 NListtree.mcc/MUIM_NListtree_Active
31 NListtree.mcc/MUIM_NListtree_Clear
32 NListtree.mcc/MUIM_NListtree_Close
33 NListtree.mcc/MUIM_NListtree_Compare
34 NListtree.mcc/MUIM_NListtree_Construct
35 NListtree.mcc/MUIM_NListtree_Copy
36 NListtree.mcc/MUIM_NListtree_CopyToClip
37 NListtree.mcc/MUIM_NListtree_Destruct
38 NListtree.mcc/MUIM_NListtree_Display
39 NListtree.mcc/MUIM_NListtree_DoubleClick
40 NListtree.mcc/MUIM_NListtree_DropDraw
41 NListtree.mcc/MUIM_NListtree_DropType
42 NListtree.mcc/MUIM_NListtree_Exchange
43 NListtree.mcc/MUIM_NListtree_FindName
44 NListtree.mcc/MUIM_NListtree_FindUserData
45 NListtree.mcc/MUIM_NListtree_GetEntry
46 NListtree.mcc/MUIM_NListtree_GetNr
47 NListtree.mcc/MUIM_NListtree_Insert
48 NListtree.mcc/MUIM_NListtree_InsertStruct
49 NListtree.mcc/MUIM_NListtree_Move
50 NListtree.mcc/MUIM_NListtree_MultiTest
51 NListtree.mcc/MUIM_NListtree_NextSelected
52 NListtree.mcc/MUIM_NListtree_Open
53 NListtree.mcc/MUIM_NListtree_PrevSelected
54 NListtree.mcc/MUIM_NListtree_Redraw
55 NListtree.mcc/MUIM_NListtree_Remove
56 NListtree.mcc/MUIM_NListtree_Rename
57 NListtree.mcc/MUIM_NListtree_Select
58 NListtree.mcc/MUIM_NListtree_Sort
59 NListtree.mcc/MUIM_NListtree_TestPos
60 \fNListtree.mcc/--background-- NListtree.mcc/--background--
62 There are two possible entry-types in a NListtree class list:
63 Leaves and nodes. Leaves are simple entries which have no special
64 features except they are holding some data. Nodes are almost
65 the same type, holding data too, but having a list attached
66 where you can simply add other entries which can be again leaves
69 Every node is structured as follows:
71 struct MUI_NListtree_TreeNode {
73 struct MinNode tn_Node;
79 It contains a name field tn_Name, flags tn_Flags and a pointer to
82 The tn_Flags field can hold the following flags:
84 TNF_LIST The node contains a list where other nodes
87 TNF_OPEN The list node is open, sub nodes are displayed.
89 TNF_FROZEN The node doesn't react on doubleclick or
90 open/close by the user.
92 TNF_NOSIGN The indicator of list nodes isn't shown.
94 TNF_SELECTED The entry is currently selected.
96 These flags, except TNF_SELECTED, can be used in
97 MUIM_NListtree_Insert at creation time. They will be passed to
98 the newly created entry. Also you can do a quick check about the
99 state and kind of each entry. But - NEVER EVER - modify any flag
100 yourself or NListtree will crash. Be warned!
102 *********************************************************************
103 THE ABOVE STRUCT IS READ-ONLY!! NEVER CHANGE ANY ENTRY OF THIS
104 STRUCTURE DIRECTLY NOR THINK ABOUT THE CONTENTS OF ANY PRIVATE
105 FIELD OR YOU WILL DIE IN HELL!
106 *********************************************************************
109 You can create very complex tree structures. NListtree only uses
110 one list which holds all information needed and has no extra
111 display list like other list tree classes ;-)
113 The tree nodes can be inserted and removed, sorted, moved, exchanged,
114 renamed or multi selected. To sort you can also drag&drop them.
115 Modifications can be made in relation to the whole tree, to only one
116 level, to a sub-tree or to only one tree node.
118 The user can control the listtree by the MUI keys, this means a node
119 is opened with "Right" and closed with "Left". Check your MUI prefs
120 for the specified keys.
122 You can define which of the columns will react on double-clicking.
123 The node toggles its status from open or closed and vice versa.
126 Drag&Drop capabilities:
128 If you set MUIA_NList_DragSortable to TRUE, the list tree will
129 become active for Drag&Drop. This means you can drag and drop
130 entries on the same list tree again. While dragging an indicator
133 Drag a Drop on Result
135 leaf leaf Exchange leaves.
136 node leaf Nothing happens.
137 entry closed node Move entry, the compare hook is used.
138 entry open node Move entry to defined position.
140 You can not drop an entry on itself, nor can you drop an opened node on
143 To exchange data with other objects, you have to create your own
144 subclass of NListtree class and react on the drag methods.
146 \fNListtree.mcc/MUIA_NListtree_Active NListtree.mcc/MUIA_NListtree_Active
150 MUIA_NListtree_Active -- [.SG], struct MUI_NListtree_TreeNode *
155 MUIV_NListtree_Active_Off
156 MUIV_NListtree_Active_Parent
157 MUIV_NListtree_Active_First
158 MUIV_NListtree_Active_FirstVisible
159 MUIV_NListtree_Active_LastVisible
164 Setting this attribute will move the cursor to the defined tree node
165 if it is visible. If the node is in an opened tree the listview is
166 scrolling into the visible area. Setting MUIV_NListtree_Active_Off will
169 MUIV_NListtree_Active_First/FirstVisible/LastVisible are special values
170 for activating the lists first or the top/bottom visible entry.
172 See MUIA_NListtree_AutoVisible for special activation features.
174 If this attribute is read it returns the active tree node. The result
175 is MUIV_NListtree_Active_Off if there is no active entry.
180 You can create a notification on MUIA_NListtree_Active. The
181 TriggerValue is the active tree node.
186 MUIA_NListtree_AutoVisible, MUIA_NList_First, MUIA_NList_Visible,
187 MUIA_NListtree_ActiveList
189 \fNListtree.mcc/MUIA_NListtree_ActiveListListtree.mcc/MUIA_NListtree_ActiveList
193 MUIA_NListtree_ActiveList -- [..G], struct MUI_NListtree_TreeNode *
198 MUIV_NListtree_ActiveList_Off
203 If this attribute is read it returns the active list node. The
204 active list node is always the parent of the active entry.
205 The result is MUIV_NListtree_ActiveList_Off if there is no
206 active list (when there is no active entry).
211 You can create notifications on MUIA_NListtree_ActiveList. The
212 TriggerValue is the active list node.
217 MUIA_NListtree_Active
219 \fNListtree.mcc/MUIA_NListtree_AutoVisiblesttree.mcc/MUIA_NListtree_AutoVisible
223 MUIA_NListtree_AutoVisible -- [ISG], struct MUI_NListtree_TreeNode *
228 MUIV_NListtree_AutoVisible_Off
229 MUIV_NListtree_AutoVisible_Normal
230 MUIV_NListtree_AutoVisible_FirstOpen
231 MUIV_NListtree_AutoVisible_Expand
236 Set this to make your list automatically jump to the active
239 MUIV_NListtree_AutoVisible_Off:
240 The display does NOT scroll the active entry into the
243 MUIV_NListtree_AutoVisible_Normal:
244 This will scroll the active entry into the visible area
245 if it is visible (entry is a member of an open node).
248 MUIV_NListtree_AutoVisible_FirstOpen:
249 Nodes are not opened, but the first open parent node of
250 the active entry is scrolled into the visible area if the
251 active entry is not visible.
253 MUIV_NListtree_AutoVisible_Expand:
254 All parent nodes are opened until the first open node is
255 reached and the active entry will be scrolled into the
264 MUIA_NListtree_Active, MUIA_NList_AutoVisible
266 \fNListtree.mcc/MUIA_NListtree_CloseHook NListtree.mcc/MUIA_NListtree_CloseHook
270 MUIA_NListtree_CloseHook -- [IS.], struct Hook *
278 The close hook is called after a list node is closed, then you can
281 The close hook will be called with the hook in A0, the object in A2
282 and a MUIP_NListtree_CloseMessage struct in A1 (see nlisttree_mcc.h).
284 To remove the hook set this to NULL.
292 MUIA_NListtree_Open, MUIA_NListtree_CloseHook
295 \fNListtree.mcc/MUIA_NListtree_CompareHooksttree.mcc/MUIA_NListtree_CompareHook
299 MUIA_NListtree_CompareHook -- [IS.], struct Hook *
304 MUIV_NListtree_CompareHook_Head
305 MUIV_NListtree_CompareHook_Tail
306 MUIV_NListtree_CompareHook_LeavesTop
307 MUIV_NListtree_CompareHook_LeavesMixed
308 MUIV_NListtree_CompareHook_LeavesBottom
313 Set this attribute to your own hook if you want to sort the entries in
314 the list tree by your own way.
316 When you sort your list or parts of your list via MUIM_NListtree_Sort,
317 using the insert method with MUIV_NListtree_Insert_Sort or dropping an
318 entry on a closed node, this compare hook is called.
320 There are some builtin compare hooks available, called:
322 MUIV_NListtree_CompareHook_Head
323 Any entry is inserted at head of the list.
325 MUIV_NListtree_CompareHook_Tail
326 Any entry is inserted at tail of the list.
328 MUIV_NListtree_CompareHook_LeavesTop
329 Leaves are inserted at top of the list, nodes at bottom. They are
330 alphabetically sorted.
332 MUIV_NListtree_CompareHook_LeavesMixed
333 The entries are only alphabetically sorted.
335 MUIV_NListtree_CompareHook_LeavesBottom
336 Leaves are inserted at bottom of the list, nodes at top. They are
337 alphabetically sorted. This is default.
339 The hook will be called with the hook in A0, the object in A2 and
340 a MUIP_NListtree_CompareMessage struct in A1 (see nlisttree_mcc.h). You
341 should return something like:
343 <0 (TreeNode1 < TreeNode2)
344 0 (TreeNode1 == TreeNode2)
345 >0 (TreeNode1 > TreeNode2)
353 MUIA_NListtree_Insert, MUIM_DragDrop,
354 MUIA_NList_CompareHook
357 \fNListtree.mcc/MUIA_NListtree_ConstructHookee.mcc/MUIA_NListtree_ConstructHook
361 MUIA_NListtree_ConstructHook -- [IS.], struct Hook *
366 MUIV_NListtree_ConstructHook_String
368 MUIV_NListtree_ConstructHook_Flag_AutoCreate
369 If using the KeepStructure feature in MUIM_NListtree_Move or
370 MUIM_NListtree_Copy, this flag will be set when calling your
371 construct hook. Then you can react if your hook is not simply
377 The construct hook is called whenever you add an entry to your
378 listtree. The pointer isn't inserted directly, the construct hook is
379 called and its result code is added.
381 When an entry shall be removed the corresponding destruct hook is
384 The construct hook will be called with the hook in A0, the object in
385 A2 and a MUIP_NListtree_ConstructMessage struct in A1 (see
387 The message holds a standard kick 3.x memory pool pointer. If you want,
388 you can use the exec or amiga.lib functions for allocating memory
389 within this pool, but this is only an option.
391 If the construct hook returns NULL, nothing will be added to the list.
393 There is a builtin construct hook available called
394 MUIV_NListtree_ConstructHook_String. This expects that the field
395 'tn_User' in the treenode is a string pointer (STRPTR), which's
397 Of course you have to use MUIV_NListtree_DestructHook_String in
400 To remove the hook set this to NULL.
402 NEVER pass a NULL pointer when you have specified the internal string
403 construct/destruct hooks or NListtree will die!
411 MUIA_NList_ConstructHook, MUIA_NListtree_DestructHook,
412 MUIA_NListtree_DisplayHook
415 \fNListtree.mcc/MUIA_NListtree_CopyToClipHook.mcc/MUIA_NListtree_CopyToClipHook
419 MUIA_NListtree_CopyToClipHook -- [IS.],
424 MUIV_NListtree_CopyToClipHook_Default
429 This thing works near like MUIA_NListtree_DisplayHook, but is
430 called when the NListtree object want to make a clipboard copy.
432 You can return only one string pointer. If you return NULL,
433 nothing will be copied. If you return -1, the entry will be
434 handled as a normal string and the name field is used.
436 The builtin hook skips all ESC sequences and adds a tab char
445 MUIM_NListtree_CopyToClip
448 \fNListtree.mcc/MUIA_NListtree_DestructHooktree.mcc/MUIA_NListtree_DestructHook
452 MUIA_NListtree_DestructHook -- [IS.], struct Hook *
457 MUIV_NListtree_DestructHook_String
462 Set up a destruct hook for your listtree. The destruct hook is called
463 whenevere you remove an entry from the listtree. Here you can free memory
464 which was allocated by the construct hook before.
466 The destruct hook will be called with the hook in A0, the object
467 in A2 and a MUIP_NListtree_DestructMessage struct in A1 (see
469 The message holds a standard kick 3.x memory pool pointer. You must
470 use this pool when you have used it inside the construct hook to
471 allocate pooled memory.
473 There is a builtin destruct hook available called
474 MUIV_NListtree_DestructHook_String. This expects that the 'User' data
475 in the treenode is a string and you have used
476 MUIV_NListtree_ConstructHook_String in the construct hook!
478 To remove the hook set this to NULL.
486 MUIA_NList_ConstructHook, MUIA_NListtree_ConstructHook,
487 MUIA_NListtree_DisplayHook
490 \fNListtree.mcc/MUIA_NListtree_DisplayHooksttree.mcc/MUIA_NListtree_DisplayHook
494 MUIA_NListtree_DisplayHook -- [IS.],
502 You have to supply a display hook to specify what should be shown in
503 the listview, otherwise only the name of the nodes is displayed.
505 The display hook will be called with the hook in A0, the object in
506 A2 and a MUIP_NListtree_DisplayMessage struct in A1 (see nlisttree_mcc.h)
509 The structure holds a pointer to a string array containing as many
510 entries as your listtree may have columns. You have to fill this
511 array with the strings you want to display. Check out that the array
512 pointer of the tree column is set to NULL, if the normal name of the
514 You can set a preparse string in Preparse for the corresponding col
515 element. Using it you'll be able to avoid copying the string in a
516 buffer to add something in the beginning of the col string.
518 The display hook also gets the position of the current entry as
519 additional parameter. It is stored in the longword preceding the col
520 array (don't forget it's a LONG).
522 You can set the array pointer of the tree column to a string, which is
523 diplayed instead of the node name. You can use this to mark nodes.
525 See MUIA_NList_Format for details about column handling.
527 To remove the hook and use the internal default display hook set this
536 MUIA_NList_Format, MUIA_Text_Contents
539 \fNListtree.mcc/MUIA_NListtree_DoubleClicksttree.mcc/MUIA_NListtree_DoubleClick
543 MUIA_NListtree_DoubleClick -- [ISG], ULONG
548 MUIV_NListtree_DoubleClick_Off
549 MUIV_NListtree_DoubleClick_All
550 MUIV_NListtree_DoubleClick_Tree
551 MUIV_NListtree_DoubleClick_NoTrigger
556 A doubleclick opens a node if it was closed, it is closed if the node
557 was open. You have to set the column which should do this.
559 Normally only the column number is set here, but there are special
562 MUIV_NListtree_DoubleClick_Off:
563 A doubleclick is not handled.
565 MUIV_NListtree_DoubleClick_All:
566 All columns react on doubleclick.
568 MUIV_NListtree_DoubleClick_Tree
569 Only a doubleclick on the defined tree column is recognized.
571 MUIV_NListtree_DoubleClick_NoTrigger:
572 A doubleclick is not handled and not triggered!
577 The TriggerValue of the notification is the tree node you have double-
578 clicked, you can GetAttr() MUIA_NListtree_DoubleClick for the column
579 number. The struct 'MUI_NListtree_TreeNode *'Â is used for trigger.
581 The notification is done on leaves and on node columns, which are not
582 set in MUIA_NListtree_DoubleClick.
587 \fNListtree.mcc/MUIA_NListtree_DragDropSorttree.mcc/MUIA_NListtree_DragDropSort
591 MUIA_NListtree_DragDropSort -- [IS.], BOOL
599 Setting this attribute to FALSE will disable the ability to sort the
600 list tree by drag & drop. Defaults to TRUE.
610 \fNListtree.mcc/MUIA_NListtree_DropTargetListtree.mcc/MUIA_NListtree_DropTarget
614 MUIA_NListtree_DropTarget -- [..G], ULONG
621 After a successful drop operation, this value holds the entry where
622 the entry was dropped. The relative position (above etc.) can be
623 obtained by reading the attribute MUIA_NListtree_DropType.
631 MUIA_NListtree_DropTargetPos, MUIA_NListtree_DropType
634 \fNListtree.mcc/MUIA_NListtree_DropTargetPosee.mcc/MUIA_NListtree_DropTargetPos
638 MUIA_NListtree_DropTargetPos -- [..G], ULONG
645 After a successful drop operation, this value holds the integer
646 position of the entry where the dragged entry was dropped. The
647 entry itself can be obtained by reading MUIA_NListtree_DropTarget,
648 the relative position (above etc.) can be obtained by reading the
649 attribute MUIA_NListtree_DropType.
657 MUIA_NListtree_DropTarget, MUIA_NListtree_DropType
660 \fNListtree.mcc/MUIA_NListtree_DropType NListtree.mcc/MUIA_NListtree_DropType
664 MUIA_NListtree_DropType -- [..G], ULONG
669 MUIV_NListtree_DropType_None
670 MUIV_NListtree_DropType_Above
671 MUIV_NListtree_DropType_Below
672 MUIV_NListtree_DropType_Onto
677 After a successful drop operation, this value holds the position
678 relative to the value of MUIA_NListtree_DropTarget/DropTargetPos.
686 MUIA_NListtree_DropTarget, MUIA_NListtree_DropTargetPos
689 \fNListtree.mcc/MUIA_NListtree_DupNodeNamesttree.mcc/MUIA_NListtree_DupNodeName
693 MUIA_NListtree_DupNodeName -- [IS.], BOOL
701 If this attribute is set to FALSE the names of the node will not be
702 duplicated, only the string pointers are used. Be careful the strings
703 have to be valid everytime.
713 \fNListtree.mcc/MUIA_NListtree_EmptyNodesListtree.mcc/MUIA_NListtree_EmptyNodes
717 MUIA_NListtree_EmptyNodes -- [IS.], BOOL
725 Setting this attribute to TRUE will display all empty nodes as leaves,
726 this means no list indicator is shown. Nevertheless the entry is
737 \fNListtree.mcc/MUIA_NListtree_FindNameHooktree.mcc/MUIA_NListtree_FindNameHook
741 MUIA_NListtree_FindNameHook -- [IS.],
746 MUIV_NListtree_FindNameHook_CaseSensitive
747 Search for the complete string, case sensitive.
749 MUIV_NListtree_FindNameHook_CaseInsensitive
750 Search for the complete string, case insensitive.
752 MUIV_NListtree_FindNameHook_Part
753 Search for the first part of the string, case sensitive.
755 MUIV_NListtree_FindNameHook_PartCaseInsensitive
756 Search for the first part of the string, case insensitive.
758 MUIV_NListtree_FindNameHook_PointerCompare
759 Do only a pointer comparision. Note, that this is in fact
760 a pointer subtraction to fit into the rules. It returns
761 the difference (~0) of the two fields if no match.
765 You can install a FindName hook to specify your own search
768 The find name hook will be called with the hook in A0, the object in
769 A2 and a MUIP_NListtree_FindNameMessage struct in A1
770 (see nlisttree_mcc.h). It should return ~ 0 for entries which are
771 not matching the pattern and a value of 0 if a match.
773 The find name message structure holds a pointer to a string
774 containing the name to search for and pointers to the name- and user-
775 field of the node which is currently processed.
777 The MUIV_NListtree_FindNameHook_CaseSensitive will be used as default.
785 \fNListtree.mcc/MUIA_NListtree_FindUserDataHook/MUIA_NListtree_FindUserDataHook
789 MUIA_NListtree_FindUserDataHook -- [IS.],
794 MUIV_NListtree_FindUserDataHook_CaseSensitive
795 Search for the complete string, case sensitive.
797 MUIV_NListtree_FindUserDataHook_CaseInsensitive
798 Search for the complete string, case insensitive.
800 MUIV_NListtree_FindUserDataHook_Part
801 Search for the first part of the string, case sensitive.
803 MUIV_NListtree_FindUserDataHook_PartCaseInsensitive
804 Search for the first part of the string, case insensitive.
806 MUIV_NListtree_FindUserDataHook_PointerCompare
807 Do only a pointer comparision. Note, that this is in fact
808 a pointer subtraction to fit into the rules. It returns
809 the difference (~0) of the two user fields if no match.
814 You can install a FindUserData hook to specify your own search
817 The find user data hook will be called with the hook in A0, the object
818 in A2 and a MUIP_NListtree_FindUserDataMessage struct in A1
819 (see nlisttree_mcc.h). It should return ~ 0 for entries which are
820 not matching the pattern and a value of 0 if a match.
822 The find user data message structure holds a pointer to a string
823 containing the data to search for and pointers to the user- and name-
824 field of the node which is currently processed.
826 MUIV_NListtree_FindUserDataHook_CaseSensitive will be used as
835 \fNListtree.mcc/MUIA_NListtree_Format NListtree.mcc/MUIA_NListtree_Format
839 MUIA_NListtree_Format -- [IS.], STRPTR
847 Same as MUIA_NList_Format, but one column is reserved for the tree
848 indicators and the names of the nodes.
850 For further detailed information see MUIA_NList_Format!
858 MUIA_NList_Format, MUIA_NListtree_DisplayHook,
862 \fNListtree.mcc/MUIA_NListtree_MultiSelectsttree.mcc/MUIA_NListtree_MultiSelect
866 MUIA_NListtree_MultiSelect -- [I..],
871 MUIV_NListtree_MultiSelect_None
872 MUIV_NListtree_MultiSelect_Default
873 MUIV_NListtree_MultiSelect_Shifted
874 MUIV_NListtree_MultiSelect_Always
879 Four possibilities exist for a listviews multi select
882 MUIV_NListtree_MultiSelect_None:
883 The list tree cannot multiselect at all.
885 MUIV_NListtree_MultiSelect_Default:
886 The multi select type (with or without shift)
887 depends on the users preferences setting.
889 MUIV_NListtree_MultiSelect_Shifted:
890 Overrides the users prefs, multi selecting only
891 together with shift key.
893 MUIV_NListtree_MultiSelect_Always:
894 Overrides the users prefs, multi selecting
904 MUIA_NListtree_MultiTestHook, MUIM_NListtree_MultiSelect
907 \fNListtree.mcc/MUIA_NListtree_MultiTestHookee.mcc/MUIA_NListtree_MultiTestHook
911 MUIA_NListtree_MultiTestHook -- [IS.], struct Hook *
919 If you plan to have a multi selecting list tree but not
920 all of your entries are actually multi selectable, you
921 can supply a MUIA_NListtree_MultiTestHook.
923 The multi test hook will be called with the hook in A0, the object
924 in A2 and a MUIP_NListtree_MultiTestMessage struct in A1 (see
925 nlisttree_mcc.h) and should return TRUE if the entry is multi
926 selectable, FALSE otherwise.
928 To remove the hook set this to NULL.
936 MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
939 \fNListtree.mcc/MUIA_NListtree_OpenHook NListtree.mcc/MUIA_NListtree_OpenHook
943 MUIA_NListtree_OpenHook -- [IS.], struct Hook *
951 The open hook is called whenever a list node will be opened, so you
952 can change the list before the node is open.
954 The open hook will be called with the hook in A0, the object in A2
955 and a MUIP_NListtree_OpenMessage struct in A1 (see nlisttree_mcc.h).
957 To remove the hook set this to NULL.
965 MUIA_NListtree_Open, MUIA_NListtree_CloseHook
968 \fNListtree.mcc/MUIA_NListtree_Quiet NListtree.mcc/MUIA_NListtree_Quiet
972 MUIA_NListtree_Quiet -- [.S.], QUIET
980 If you add/remove lots of entries to/from a listtree, this will cause
981 lots of screen action and slow down the operation. Setting
982 MUIA_NListtree_Quiet to TRUE will temporarily prevent the listtree from
983 being refreshed, this refresh will take place only once when you set
984 it back to FALSE again.
986 MUIA_NListtree_Quiet holds a nesting count to avoid trouble with
987 multiple setting/unsetting this attribute. You are encoraged to
988 always use TRUE/FALSE pairs here or you will went in trouble.
990 DO NOT USE MUIA_NList_Quiet here!
998 MUIM_NListtree_Insert, MUIM_NListtree_Remove
1001 \fNListtree.mcc/MUIA_NListtree_ShowTree NListtree.mcc/MUIA_NListtree_ShowTree
1005 MUIA_NListtree_ShowTree -- [ISG], ULONG
1012 Specify FALSE here if you want the whole tree to be disappear.
1021 \fNListtree.mcc/MUIA_NListtree_Title NListtree.mcc/MUIA_NListtree_Title
1025 MUIA_NListtree_Title -- [IS.], BOOL
1033 Specify a title for the current listtree.
1035 For detailed information see MUIA_NList_Title!
1043 The title should not be a string as for single column listviews. This
1044 attribute can only be set to TRUE or FALSE.
1051 \fNListtree.mcc/MUIA_NListtree_TreeColumnListtree.mcc/MUIA_NListtree_TreeColumn
1055 MUIA_NListtree_TreeColumn -- [ISG], ULONG
1062 Specify the column of the list tree, the node indicator and the name
1063 of the node are displayed in.
1071 MUIA_NListtree_DisplayHook, MUIA_NListtree_Format
1074 \fNListtree.mcc/MUIM_NListtree_Active NListtree.mcc/MUIM_NListtree_Active
1078 MUIM_NListtree_Active -- Called for every active change. (V1)
1083 DoMethodA(obj, MUIM_NListtree_Active,
1084 struct MUIP_NListtree_Active *activemessage);
1089 This method must not be called directly. It will be called by
1090 NListtree if the active entry changes. This is an addition to
1091 MUIA_NListtree_Active
1106 MUIA_NListtree_Active
1109 \fNListtree.mcc/MUIM_NListtree_Clear NListtree.mcc/MUIM_NListtree_Clear
1113 MUIM_NListtree_Clear -- Clear the complete listview. (V1)
1118 DoMethod(obj, MUIM_NListtree_Clear, NULL, 0)
1123 Clear the complete listview, calling destruct hook for each entry.
1132 // Clear the listview!
1133 DoMethod( nlisttree, MUIM_NListtree_Clear, NULL, 0 );
1138 For now, when using this method, you MUST supply NULL for the list
1139 node and 0 for flags for future compatibility.
1140 This will definitely change!
1147 MUIM_NListtree_Remove, MUIA_NListtree_DestructHook,
1150 \fNListtree.mcc/MUIM_NListtree_Close NListtree.mcc/MUIM_NListtree_Close
1154 MUIM_NListtree_Close -- Close the specified list node. (V1)
1159 DoMethod(obj, MUIM_NListtree_Close,
1160 struct MUI_NListtree_TreeNode *listnode,
1161 struct MUI_NListtree_TreeNode *treenode,
1167 Close a node or nodes of a listtree. It is checked if the tree node
1168 is a node, not a leaf!
1170 When the active entry was a child of the closed node, the closed node
1176 listnode - Specify the node which list is used to find the entry. The
1177 search is started at the head of this list.
1179 MUIV_NListtree_Close_ListNode_Root
1180 The root list is used.
1182 MUIV_NListtree_Close_ListNode_Parent
1183 The list which is the parent of the active list is used.
1185 MUIV_NListtree_Close_ListNode_Active
1186 The list of the active node is used.
1189 treenode - The node which should be closed. If there are children
1190 of the node, they are also closed.
1192 MUIV_NListtree_Close_TreeNode_Head
1193 The head of the list defined in 'listnode' is closed.
1195 MUIV_NListtree_Close_TreeNode_Tail:
1196 Closes the tail of the list defined in 'listnode'.
1198 MUIV_NListtree_Close_TreeNode_Active:
1199 Closes the active node.
1201 MUIV_NListtree_Close_TreeNode_All:
1202 Closes all nodes of the list which is specified in
1210 // Close the active list.
1211 DoMethod(obj, MUIM_NListtree_Close,
1212 MUIV_NListtree_Close_ListNode_Active,
1213 MUIV_NListtree_Close_TreeNode_Active, 0);
1224 \fNListtree.mcc/MUIM_NListtree_Compare NListtree.mcc/MUIM_NListtree_Compare
1228 MUIM_NListtree_Compare -- Compare two nodes
1233 DoMethod(obj, MUIM_NListtree_Compare,
1234 struct MUI_NListtree_TreeNode *TreeNode1,
1235 struct MUI_NListtree_TreeNode *TreeNode2,
1241 Compares the two given treenodes. You should return something like:
1243 <0 (TreeNode1 < TreeNode2)
1244 0 (TreeNode1 == TreeNode2)
1245 >0 (TreeNode1 > TreeNode2)
1253 MUIA_NListtree_CompareHook
1256 \fNListtree.mcc/MUIA_NListtree_Construct NListtree.mcc/MUIA_NListtree_Construct
1260 MUIN_NListtree_Construct -- Create a new treenode
1265 DoMethod(obj, MUIM_NListtree_Construct,
1274 This method is called whenever a new treenode is to be added to the
1275 listtree. See MUIA_NListtree_ConstructHook for more details.
1277 If the method returns NULL, nothing will be added to the list.
1285 MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
1288 \fNListtree.mcc/MUIM_NListtree_Copy NListtree.mcc/MUIM_NListtree_Copy
1292 MUIM_NListtree_Copy -- Copy an entry (create it) to the spec. pos. (V1)
1297 DoMethod(obj, MUIM_NListtree_Copy,
1298 struct MUI_NListtree_TreeNode *srclistnode,
1299 struct MUI_NListtree_TreeNode *srctreenode,
1300 struct MUI_NListtree_TreeNode *destlistnode,
1301 struct MUI_NListtree_TreeNode *desttreenode,
1307 Copy an entry to the position after a defined node. The complete
1308 child structure will be copied.
1313 srclistnode - Specify the node which list is used to find the
1314 entry. The search is started at the head of this
1317 MUIV_NListtree_Copy_SourceListNode_Root
1318 The root list is used as the starting point.
1320 MUIV_NListtree_Copy_SourceListNode_Active
1321 The active list (the list of the active node) is used as
1324 srctreenode - Specifies the node which should be copied.
1326 MUIV_NListtree_Copy_SourceTreeNode_Head
1327 The head of the list defined in 'srclistnode' is copied.
1329 MUIV_NListtree_Copy_SourceTreeNode_Tail
1330 The tail of the list defined in 'srclistnode' is copied.
1332 MUIV_NListtree_Copy_SourceTreeNode_Active
1333 The active node is copied.
1335 destlistnode - Specify the node which list is used to find the
1336 entry. The search is started at the head of this
1339 MUIV_NListtree_Copy_DestListNode_Root
1342 MUIV_NListtree_Copy_DestListNode_Active
1343 The list of the active node.
1345 desttreenode - This node is the predecessor of the entry which is
1348 MUIV_NListtree_Copy_DestTreeNode_Head
1349 The node is copied to the head of the list defined in
1352 MUIV_NListtree_Copy_DestTreeNode_Tail
1353 The node is copied to the tail of the list defined in
1356 MUIV_NListtree_Copy_DestTreeNode_Active:
1357 The node is copied to one entry after the active node.
1359 MUIV_NListtree_Copy_DestTreeNode_Sorted:
1360 The node is copied to the list using the sort hook.
1362 flags - Some flags to adjust moving.
1364 MUIV_NListtree_Copy_Flag_KeepStructure
1365 The full tree structure from the selected entry to
1366 the root list is copied (created) at destination.
1373 // Copy the active entry to the head of
1374 // another list node.
1376 MUIV_NListtree_Copy_SourceListNode_Active,
1377 MUIV_NListtree_Copy_SourceTreeNode_Active,
1379 MUIV_NListtree_Copy_DestTreeNode_Head,
1389 MUIM_NListtree_Insert, MUIM_NListtree_Remove,
1390 MUIM_NListtree_Exchange, MUIA_NListtree_CompareHook,
1394 \fNListtree.mcc/MUIM_NListtree_CopyToClipListtree.mcc/MUIM_NListtree_CopyToClip
1398 MUIM_NListtree_CopyToClip -- Called for every clipboard copy action. (V1)
1403 DoMethodA(obj, MUIM_NListtree_CopyToClip,
1404 struct MUIP_NListtree_CopyToClip *ctcmessage);
1409 Do a copy to clipboard from an entry/entry content.
1414 TreeNode - Tree node to copy contents from. Use
1415 MUIV_NListtree_CopyToClip_Active to copy the
1418 Pos - Entry position.
1420 Unit - Clipboard unit to copy entry contents to.
1433 MUIA_NListtree_CopyToClipHook
1436 \fNListtree.mcc/MUIA_NListtree_Destruct NListtree.mcc/MUIA_NListtree_Destruct
1440 MUIN_NListtree_Destruct -- Free a new treenode
1445 DoMethod(obj, MUIM_NListtree_Destruct,
1454 This method is called whenever a new treenode is to be removed from the
1455 listtree. See MUIA_NListtree_DestructHook for more details.
1463 MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
1465 \fNListtree.mcc/MUIM_NListtree_Display NListtree.mcc/MUIA_NListtree_Display
1469 MUIN_NListtree_Display -- Display a treenode
1474 DoMethod(obj, MUIM_NListtree_Dispose,
1475 struct MUI_NListtree_TreeNode *TreeNode,
1483 This method is called whenever a new treenode is to be displayed in the
1484 listtree. See MUIA_NListtree_DisplayHook for more details.
1492 MUIA_NListtree_DisplayHook
1495 \fNListtree.mcc/MUIM_NListtree_DoubleClicksttree.mcc/MUIM_NListtree_DoubleClick
1499 MUIM_NListtree_DoubleClick -- Called for every double click. (V1)
1504 DoMethodA(obj, MUIM_NListtree_DoubleClick,
1505 struct MUIP_NListtree_DoubleClick *doubleclickmsg);
1510 This method must not be called directly. It will be called by
1511 NListtree if an double click event occurs. This is an addition to
1512 MUIA_NListtree_DoubleClick
1527 MUIA_NListtree_DoubleClick
1530 \fNListtree.mcc/MUIM_NListtree_DropDraw NListtree.mcc/MUIM_NListtree_DropDraw
1534 MUIM_NListtree_DropDraw --
1539 DoMethod(obj, MUIM_NListtree_DropDraw, LONG pos, LONG type,
1540 LONG minx, LONG maxx, LONG miny, LONG maxy);
1545 This method MUST NOT be called directly!
1547 It will be called by NListtree, and will draw the drop mark
1548 previously fixed (pos and type) by MUIM_NListtree_DropType
1549 within the minx, maxx, miny, maxy in the _rp(obj) rasport.
1551 For further information see method MUIM_NList_DropDraw.
1569 \fNListtree.mcc/MUIM_NListtree_DropType NListtree.mcc/MUIM_NListtree_DropType
1573 MUIM_NListtree_DropType --
1578 DoMethod(obj, MUIM_NListtree_DropType, LONG *pos, LONG *type,
1579 LONG minx, LONG maxx, LONG miny, LONG maxy,
1580 LONG mousex, LONG mousey);
1585 This method MUST NOT be called directly !
1587 It will be called by NListreet while the DragReport, with
1588 default *pos and *type values depending on the drag pointer
1589 position that you can modify as you want.
1591 For further information see method MUIM_NList_DropDraw.
1609 \fNListtree.mcc/MUIM_NListtree_Exchange NListtree.mcc/MUIM_NListtree_Exchange
1613 MUIM_NListtree_Exchange -- Exchanges two tree nodes. (V1)
1618 DoMethod(obj, MUIM_NListtree_Exchange,
1619 struct MUI_NListtree_TreeNode *listnode1,
1620 struct MUI_NListtree_TreeNode *treenode1,
1621 struct MUI_NListtree_TreeNode *listnode2,
1622 struct MUI_NListtree_TreeNode *treenode2,
1628 Exchange two tree nodes.
1633 listnode1 - Specify the list node of the entry which
1634 should be exchanged.
1636 MUIV_NListtree_Exchange_ListNode1_Root
1637 The root list is used.
1639 MUIV_NListtree_Exchange_ListNode1_Active
1640 The active list (the list of the active node) is used.
1642 treenode1 - Specify the node which should be exchanged.
1644 MUIV_NListtree_Exchange_TreeNode1_Head
1645 The head of the list defined in 'listnode1' is
1648 MUIV_NListtree_Exchange_TreeNode1_Tail
1649 The tail of the list defined in 'listnode1' is
1652 MUIV_NListtree_Exchange_TreeNode1_Active
1653 The active node is exchanged.
1655 listnode2 - Specify the second list node which is used for exchange.
1657 MUIV_NListtree_Exchange_ListNode2_Root
1660 MUIV_NListtree_Exchange_ListNode2_Active
1661 The list of the active node.
1663 treenode2 - This node is the second entry which is exchanged.
1665 MUIV_NListtree_Exchange_TreeNode2_Head
1666 The node 'treenode1' is exchanged with the head of the
1667 list defined in 'listnode2'.
1669 MUIV_NListtree_Exchange_TreeNode2_Tail
1670 The node 'treenode1' is exchanged with the tail of the
1671 list defined in 'ln2'.
1673 MUIV_NListtree_Exchange_TreeNode2_Active:
1674 The node 'treenode1' is exchanged with the active node.
1676 MUIV_NListtree_Exchange_TreeNode2_Up:
1677 The node 'treenode1' is exchanged with the entry
1678 previous to the one specified in 'treenode1'.
1680 MUIV_NListtree_Exchange_TreeNode2_Down:
1681 The node 'treenode1' is exchanged with the entry next
1682 (the successor) to the one specified in 'treenode1'.
1689 // Exchange the active entry with the successor.
1691 MUIV_NListtree_Exchange_ListNode1_Active,
1692 MUIV_NListtree_Exchange_TreeNode1_Active,
1693 MUIV_NListtree_Exchange_ListNode2_Active,
1694 MUIV_NListtree_Exchange_TreeNode2_Down,
1704 MUIM_NListtree_Move, MUIM_NListtree_Insert,
1705 MUIM_NListtree_Remove
1708 \fNListtree.mcc/MUIM_NListtree_FindName NListtree.mcc/MUIM_NListtree_FindName
1712 MUIM_NListtree_FindName -- Find node using name match. (V1)
1717 struct MUI_NListtree_TreeNode *treenode =
1718 DoMethod(obj, MUIM_NListtree_FindName,
1719 struct MUI_NListtree_TreeNode *listnode,
1720 STRPTR name, ULONG flags);
1725 Find a node which name matches the specified one using the list node as
1730 listnode - Specify the node which list is used to find the name.
1732 MUIV_NListtree_FindName_ListNode_Root
1733 Use the root list as the base list.
1735 MUIV_NListtree_FindName_ListNode_Active
1736 Use the list of the active node as the base.
1738 name - Specify the name of the node to find. But you can search
1739 for anything in tn_Name or tn_User field here by simply
1740 supplying the searched data and handling it in your
1745 MUIV_NListtree_FindName_Flag_SameLevel
1746 Only nodes on the same level are affected.
1748 MUIV_NListtree_FindName_Flag_Visible
1749 The node is only returned if it is visible (only visible
1750 entries are checked).
1752 MUIV_NListtree_FindName_Flag_Activate
1753 If found, the entry will be activated.
1755 MUIV_NListtree_FindName_Flag_Selected
1756 Find only selected nodes.
1758 MUIV_NListtree_FindName_Flag_StartNode
1759 The specified entry in listnode is the start point for
1760 search and must not be a list node. It can also be a
1765 Returns the found node if available, NULL otherwise.
1770 // Find 2nd node by name.
1771 struct MUI_NListtree_TreeNode *treenode =
1772 DoMethod(obj, MUIM_NListtree_FindName,
1773 listnode, "2nd node",
1774 MUIV_NListtree_FindName_SameLevel|
1775 MUIV_NListtree_FindName_Visible);
1777 if ( treenode == NULL )
1779 PrintToUser( "No matching entry found." );
1789 MUIM_NListtree_FindUserData, MUIM_NListtree_GetEntry,
1790 MUIA_NListtree_FindNameHook
1793 \fNListtree.mcc/MUIM_NListtree_FindUserDatatree.mcc/MUIM_NListtree_FindUserData
1797 MUIM_NListtree_FindUserData -- Find node upon user data. (V1)
1802 struct MUI_NListtree_TreeNode *treenode =
1803 DoMethod(obj, MUIM_NListtree_FindUserData,
1804 struct MUI_NListtree_TreeNode *listnode,
1805 APTR userdata, ULONG flags);
1810 Find a node which user data matches the specified one using the list
1811 node as start point..
1812 This method is designed as a second possibility for searching.
1813 Because you are able to search for anything, you may set special
1814 hooks for searching two different fields in two different hooks with
1819 listnode - Specify the node which list is used to find the user data.
1821 MUIV_NListtree_FindUserData_ListNode_Root
1822 Use the root list as the base list.
1824 MUIV_NListtree_FindUserData_ListNode_Active
1825 Use the list of the active node as the base.
1827 userdata - Specify the user data of the node to find. You can search
1828 for anything in tn_Name or tn_User field here by simply
1829 supplying the searched data and handling it in your
1830 own FindUserDataHook.
1834 MUIV_NListtree_FindUserData_Flag_SameLevel
1835 Only nodes on the same level are affected.
1837 MUIV_NListtree_FindUserData_Flag_Visible
1838 The node is only returned if it is visible (only visible
1839 entries are checked).
1841 MUIV_NListtree_FindUserData_Flag_Activate
1842 If found, the entry will be activated.
1844 MUIV_NListtree_FindUserData_Flag_Selected
1845 Find only selected nodes.
1847 MUIV_NListtree_FindUserData_Flag_StartNode
1848 The specified entry in listnode is the start point for
1849 search and must not be a list node. It can also be a
1854 Returns the found node if available, NULL otherwise.
1859 // Find node by user data.
1860 struct MUI_NListtree_TreeNode *treenode =
1861 DoMethod(obj, MUIM_NListtree_FindUserData,
1862 listnode, "my data",
1863 MUIV_NListtree_FindUserData_SameLevel|
1864 MUIV_NListtree_FindUserData_Visible);
1866 if ( treenode == NULL )
1868 PrintToUser( "No matching entry found." );
1878 MUIM_NListtree_FindName, MUIM_NListtree_GetEntry,
1879 MUIA_NListtree_FindUserDataHook
1882 \fNListtree.mcc/MUIM_NListtree_GetEntry NListtree.mcc/MUIM_NListtree_GetEntry
1886 MUIM_NListtree_GetEntry -- Get another node in relation to this. (V1)
1891 struct MUI_NListtree_TreeNode *rettreenode =
1892 DoMethod(obj, MUIM_NListtree_GetEntry,
1893 struct MUI_NListtree_TreeNode *treenode,
1894 LONG pos, ULONG flags);
1899 Get another node in relation to the specified list or node.
1904 treenode - Define the node which is used to find another one.
1905 This can also be a list node, if the position is
1908 MUIV_NListtree_GetEntry_ListNode_Root
1909 The root list is used.
1911 MUIV_NListtree_GetEntry_ListNode_Active:
1912 The list with the active entry is used.
1914 pos - The relative position of the node 'treenode'.
1916 MUIV_NListtree_GetEntry_Position_Head
1917 The head of the list is returned.
1919 MUIV_NListtree_GetEntry_Position_Tail
1920 The tail of the list is returned.
1922 MUIV_NListtree_GetEntry_Position_Active
1923 The active node is returned. If there is no active entry,
1926 MUIV_NListtree_GetEntry_Position_Next
1927 The node next to the specified node is returned. Returns NULL
1928 if there is no next entry.
1930 MUIV_NListtree_GetEntry_Position_Previous
1931 The node right before the specified node is returned.
1932 Returns NULL if there is no previous entry (if 'treenode'
1933 is the head of the list.
1935 MUIV_NListtree_GetEntry_Position_Parent
1936 The list node of the specified 'treenode' is returned.
1940 MUIV_NListtree_GetEntry_Flag_SameLevel:
1941 Only nodes in the same level are affected.
1943 MUIV_NListtree_GetEntry_Flag_Visible:
1944 The position is counted on visible entries only.
1949 Returns the requested node if available, NULL otherwise.
1954 // Get the next entry.
1955 struct MUI_NListtree_TreeNode *treenode =
1956 DoMethod(obj, MUIM_NListtree_GetEntry, treenode,
1957 MUIV_NListtree_GetEntry_Position_Next, 0);
1959 if ( treenode != NULL )
1961 PrintToUser( "Next entry found!" );
1974 \fNListtree.mcc/MUIM_NListtree_GetNr NListtree.mcc/MUIM_NListtree_GetNr
1978 MUIM_NListtree_GetNr -- Get the position number of a tree node. (V1)
1983 ULONG number = DoMethod(obj, MUIM_NListtree_GetNr,
1984 struct MUI_NListtree_TreeNode *treenode, ULONG flags);
1989 Get the position number of the specified tree node.
1994 treenode - Specify the node to count the position of.
1996 MUIV_NListtree_GetNr_TreeNode_Active:
1997 The position is counted related to the active node.
2001 MUIV_NListtree_GetNr_Flag_CountAll
2002 Returns the number of all entries.
2004 MUIV_NListtree_GetNr_Flag_CountLevel
2005 Returns the number of entries of the list the
2006 specified node is in.
2008 MUIV_NListtree_GetNr_Flag_CountList
2009 Returns the number of the entries of the active list node
2010 (the specified node is in).
2012 MUIV_NListtree_GetNr_Flag_ListEmpty
2013 Returns TRUE if the specified list node is empty.
2015 MUIV_NListtree_GetNr_Flag_Visible
2016 Returns the position number of an visible entry. -1 if the
2017 entry is invisible. The position is counted on visible entries
2025 // Check if the active (list) node is empty.
2026 ULONG empty = DoMethod(obj, MUIM_NListtree_GetNr,
2027 MUIV_NListtree_GetNr_TreeNode_Active,
2028 MUIV_NListtree_GetNr_Flag_ListEmpty);
2030 if ( empty == TRUE )
2032 AddThousandEntries();
2041 MUIM_NListtree_GetEntry
2043 \fNListtree.mcc/MUIM_NListtree_Insert NListtree.mcc/MUIM_NListtree_Insert
2047 MUIM_NListtree_Insert -- Insert an entry at the specified position. (V1)
2052 struct MUI_NListtree_TreeNode *treenode =
2053 DoMethod(obj, MUIM_NListtree_Insert,
2054 STRPTR name, APTR userdata,
2055 struct MUI_NListtree_TreeNode *listnode,
2056 struct MUI_NListtree_TreeNode *prevtreenode,
2062 Insert an entry at the position, which is defined in 'listnode'
2063 and 'prevtreenode'. Name contains the name of the entry as string
2064 which is buffered. The user entry can be used as you like.
2069 name/userdata - What the names say ;-)
2072 listnode - Specify the node which list is used to insert
2075 MUIV_NListtree_Insert_ListNode_Root
2078 MUIV_NListtree_Insert_ListNode_Active
2079 Use the list of the active node.
2081 MUIV_NListtree_Insert_ListNode_ActiveFallback
2082 Use the list of the active node. If no list is active,
2083 an automatic fallback to the root list is done.
2085 MUIV_NListtree_Insert_ListNode_LastInserted
2086 Insert entry in the list the last entry was inserted.
2089 prevtreenode - The node which is the predecessor of the node
2092 MUIV_NListtree_Insert_PrevNode_Head
2093 The entry will be inserted at the head of the list.
2095 MUIV_NListtree_Insert_PrevNode_Tail
2096 The entry will be inserted at the tail of the list.
2098 MUIV_NListtree_Insert_PrevNode_Active
2099 The entry will be inserted after the active node of
2100 the list. If no entry is active, the entry will be
2101 inserted at the tail.
2103 MUIV_NListtree_Insert_PrevNode_Sorted:
2104 The entry will be inserted using the defined sort hook.
2108 MUIV_NListtree_Insert_Flag_Active
2109 The inserted entry will be set to active. This means the
2110 cursor is moved to the newly inserted entry. If the entry
2111 was inserted into a closed node, it will be opened.
2113 MUIV_NListtree_Insert_Flag_NextNode
2114 'prevtreenode' is the successor, not the predecessor.
2119 A pointer to the newly inserted entry.
2124 // Insert an entry after the active one and make it active.
2125 DoMethod(obj, MUIM_NListtree_Insert, "Hello", NULL,
2126 MUIV_NListtree_Insert_ListNode_Active,
2127 MUIV_NListtree_Insert_PrevNode_Active,
2128 MUIV_NListtree_Insert_Flag_Active);
2135 Not implemented yet:
2136 MUIV_NListtree_Insert_Flag_NextNode
2141 MUIA_NListtree_ConstructHook, MUIA_NListtree_CompareHook
2144 \fNListtree.mcc/MUIM_NListtree_InsertStructtree.mcc/MUIM_NListtree_InsertStruct
2148 MUIM_NListtree_InsertStruct -- Insert a structure such as a path
2149 using a delimiter. (V1)
2154 struct MUI_NListtree_TreeNode *treenode =
2155 DoMethod(obj, MUIM_NListtree_InsertStruct,
2156 STRPTR name, APTR userdata,
2157 STRPTR delimiter, ULONG flags);
2162 Insert a structure into the list such as a path or
2163 something similar (like ListtreeName.mcc does). The name is
2164 splitted using the supplied delimiter. For each name part a
2165 new tree entry is generated. If you have Images/aphaso/Image.mbr,
2166 the structure will be build es follows:
2172 If a part of the structure is already present, it will be used to
2178 name - Data containing (must not) one or more delimiters as
2179 specified in delimiter (Images/aphaso/Image.mbr for
2182 userdata - Your personal data.
2184 delimiter - The delimiter(s) used in the name field (":/" or
2189 Use normal insert flags here (see there).
2194 A pointer to the last instance of newly inserted entries.
2199 // Insert a directory path.
2200 path = MyGetPath( lock );
2202 DoMethod(obj, MUIM_NListtree_InsertStruct,
2203 path, NULL, ":/", 0);
2212 MUIA_NListtree_Insert
2215 \fNListtree.mcc/MUIM_NListtree_Move NListtree.mcc/MUIM_NListtree_Move
2219 MUIM_NListtree_Move -- Move an entry to the specified position. (V1)
2224 DoMethod(obj, MUIM_NListtree_Move,
2225 struct MUI_NListtree_TreeNode *oldlistnode,
2226 struct MUI_NListtree_TreeNode *oldtreenode,
2227 struct MUI_NListtree_TreeNode *newlistnode,
2228 struct MUI_NListtree_TreeNode *newtreenode,
2234 Move an entry to the position after a defined node.
2239 oldlistnode - Specify the node which list is used to find the
2240 entry. The search is started at the head of this
2243 MUIV_NListtree_Move_OldListNode_Root
2244 The root list is used as the starting point.
2246 MUIV_NListtree_Move_OldListNode_Active
2247 The active list (the list of the active node) is used as
2250 oldtreenode - Specify the node which should be moved.
2252 MUIV_NListtree_Move_OldTreeNode_Head
2253 The head of the list defined in 'oldlistnode' is moved.
2255 MUIV_NListtree_Move_OldTreeNode_Tail
2256 The tail of the list defined in 'oldlistnode' is moved.
2258 MUIV_NListtree_Move_OldTreeNode_Active
2259 The active node is moved.
2261 newlistnode - Specify the node which list is used to find the
2262 entry. The search is started at the head of this
2265 MUIV_NListtree_Move_NewListNode_Root
2268 MUIV_NListtree_Move_NewListNode_Active
2269 The list of the active node.
2271 newtreenode - This node is the predecessor of the entry which is
2274 MUIV_NListtree_Move_NewTreeNode_Head
2275 The node is moved to the head of the list defined in
2278 MUIV_NListtree_Move_NewTreeNode_Tail
2279 The node is moved to the tail of the list defined in
2282 MUIV_NListtree_Move_NewTreeNode_Active:
2283 The node is moved to one entry after the active node.
2285 MUIV_NListtree_Move_NewTreeNode_Sorted:
2286 The node is moved to the list using the sort hook.
2288 flags - Some flags to adjust moving.
2290 MUIV_NListtree_Move_Flag_KeepStructure
2291 The full tree structure from the selected entry to
2292 the root list is moved (created at destination).
2299 // Move an entry to the head of another list-node.
2301 MUIV_NListtree_Move_OldListNode_Active,
2302 MUIV_NListtree_Move_OldTreeNode_Active,
2304 MUIV_NListtree_Move_NewTreeNode_Head,
2314 MUIM_NListtree_Insert, MUIM_NListtree_Remove,
2315 MUIM_NListtree_Exchange, MUIA_NListtree_CompareHook,
2318 \fNListtree.mcc/MUIM_NListtree_MultiTest NListtree.mcc/MUIM_NListtree_MultiTest
2322 MUIM_NListtree_MultiTest -- Called for every selection. (V1)
2327 DoMethodA(obj, MUIM_NListtree_MultiTest,
2328 struct MUIP_NListtree_MultiTest *multimessage);
2333 This method must not be called directly. It will be called by
2334 NListtree just before multiselection. You can overload it and
2335 return TRUE or FALSE whether you want the entry to be multi-
2351 MUIM_NListtree_Select, MUIA_NListtree_MultiTest
2354 \fNListtree.mcc/MUIM_NListtree_NextSelectedtree.mcc/MUIM_NListtree_NextSelected
2358 MUIM_NListtree_NextSelected -- Get next selected tree node. (V1)
2363 DoMethod(obj, MUIM_NListtree_NextSelected,
2364 struct MUI_NListtree_TreeNode **treenode);
2369 Iterate through the selected entries of a tree. This method steps
2370 through the contents of a (multi select) list tree and returns
2371 every entry that is currently selected. When no entry is selected
2372 but an entry is active, only the active entry will be returned.
2374 This behaviour will result in not returning the active entry when
2375 you have some other selected entries somewhere in your list. Since
2376 the active entry just acts as some kind of cursor mark, this seems
2377 to be the only sensible possibility to handle multi selection
2378 together with keyboard control.
2383 treenode - A pointer to a pointer of struct MUI_NListtree_TreeNode
2384 that will hold the returned entry. Must be set to
2385 MUIV_NListtree_NextSelected_Start at start of iteration
2386 and is set to MUIV_NListtree_NextSelected_End when
2387 iteration is finished.
2389 MUIV_NListtree_NextSelected_Start Set this to start iteration.
2390 MUIV_NListtree_NextSelected_End Will be set to this, if
2391 last selected entry reached.
2398 // Iterate through a list
2399 struct MUI_NListtree_TreeNode *treenode;
2401 treenode = MUIV_NListtree_NextSelected_Start;
2405 DoMethod(listtree, MUIM_NListtree_NextSelected, &treenode);
2407 if (treenode==MUIV_NListtree_NextSelected_End)
2410 printf("selected: %s\n", treenode->tn_Name);
2420 MUIM_NListtree_PrevSelected, MUIM_NListtree_Select
2423 \fNListtree.mcc/MUIM_NListtree_Open NListtree.mcc/MUIM_NListtree_Open
2427 MUIM_NListtree_Open -- Open the specified tree node. (V1)
2432 DoMethod(obj, MUIM_NListtree_Open,
2433 struct MUI_NListtree_TreeNode *listnode,
2434 struct MUI_NListtree_TreeNode *treenode,
2440 Opens a node in the listtree. To open a child, which isn't displayed,
2441 use 'MUIV_NListtree_Open_ListNode_Parent' to open all its parents, too.
2443 Only nodes can be opened.
2448 listnode - Specify the node which list is used to open the node.
2450 MUIV_NListtree_Open_ListNode_Root
2451 The root list is used.
2453 MUIV_NListtree_Open_ListNode_Parent
2454 Indicates, that all the parents of the node specified in
2455 'treenode' should be opened too.
2457 MUIV_NListtree_Open_ListNode_Active
2458 The list of the active node is used.
2460 treenode - The node to open.
2462 MUIV_NListtree_Open_TreeNode_Head
2463 Opens the head node of the list.
2465 MUIV_NListtree_Open_TreeNode_Tail
2466 Opens the tail node of the list.
2468 MUIV_NListtree_Open_TreeNode_Active
2469 The active node will be opened.
2471 MUIV_NListtree_Open_TreeNode_All:
2472 All the nodes of the list are opened.
2478 // Open the active list.
2479 DoMethod(obj, MUIM_NListtree_Open,
2480 MUIV_NListtree_Open_ListNode_Active,
2481 MUIV_NListtree_Open_TreeNode_Active, 0);
2489 MUIM_NListtree_Close
2492 \fNListtree.mcc/MUIM_NListtree_PrevSelectedtree.mcc/MUIM_NListtree_PrevSelected
2496 MUIM_NListtree_PrevSelected -- Get previous selected tree node. (V1)
2501 DoMethod(obj, MUIM_NListtree_PrevSelected,
2502 struct MUI_NListtree_TreeNode **treenode);
2507 Iterate reverse through the selected entries of a tree. This method
2508 steps through the contents of a (multi select) list tree and returns
2509 every entry that is currently selected. When no entry is selected
2510 but an entry is active, only the active entry will be returned.
2512 This behaviour will result in not returning the active entry when
2513 you have some other selected entries somewhere in your list. Since
2514 the active entry just acts as some kind of cursor mark, this seems
2515 to be the only sensible possibility to handle multi selection
2516 together with keyboard control.
2521 treenode - A pointer to a pointer of struct MUI_NListtree_TreeNode
2522 that will hold the returned entry. Must be set to
2523 MUIV_NListtree_PrevSelected_Start at start of iteration
2524 an the end and is set to MUIV_NListtree_PrevSelected_End
2525 when first selected entry is reached and iteration is
2528 MUIV_NListtree_PrevSelected_Start Set this to start iteration.
2529 MUIV_NListtree_PrevSelected_End Will be set to this, if
2530 last selected entry reached.
2537 // Iterate through a list (reverse)
2538 struct MUI_NListtree_TreeNode *treenode;
2540 treenode = MUIV_NListtree_PrevSelected_Start;
2544 DoMethod(listtree, MUIM_NListtree_PrevSelected, &treenode);
2546 if (treenode==MUIV_NListtree_PrevSelected_End)
2549 printf("selected: %s\n", treenode->tn_Name);
2559 MUIM_NListtree_NextSelected, MUIM_NListtree_Select
2562 \fNListtree.mcc/MUIM_NListtree_Redraw NListtree.mcc/MUIM_NListtree_Redraw
2566 MUIM_NListtree_Redraw -- Redraw the specified tree node. (V1)
2571 DoMethod(obj, MUIM_NListtree_Redraw,
2572 struct MUI_NListtree_TreeNode *treenode, ULONG flags);
2577 Redraw the specified entry. See special values for completeness.
2582 treenode - The tree node to be redrawn.
2584 MUIV_NListtree_Redraw_Active
2585 Redraw the active entry.
2587 MUIV_NListtree_Redraw_All
2588 Redraw the complete visible tree.
2593 MUIV_NListtree_Redraw_Flag_Nr
2594 The data specified in 'treenode' is the entry number,
2595 not the tree node itself.
2602 // Redraw the active entry.
2603 DoMethod(obj, MUIM_NListtree_Redraw,
2604 MUIV_NListtree_Redraw_Active, 0);
2616 \fNListtree.mcc/MUIM_NListtree_Remove NListtree.mcc/MUIM_NListtree_Remove
2620 MUIM_NListtree_Remove -- Remove the specified entry(ies). (V1)
2625 DoMethod(obj, MUIM_NListtree_Remove,
2626 struct MUI_NListtree_TreeNode *listnode,
2627 struct MUI_NListtree_TreeNode *treenode,
2633 Removes a node or nodes from the listtree. When the active entry
2634 is removed, the successor will become active.
2639 listnode - Specify the node which list is used to find the entry
2640 which should be removed. The search is started at the
2643 MUIV_NListtree_Remove_ListNode_Root
2644 The root list is used.
2646 MUIV_NListtree_Remove_ListNode_Active
2647 The list of the active node is used.
2650 treenode - The node which should be removed. If there are children
2651 of this node, they are also removed.
2653 MUIV_NListtree_Remove_TreeNode_Head
2654 The head of the list defined in 'listnode' is removed.
2656 MUIV_NListtree_Remove_TreeNode_Tail
2657 The tail of the list defined in 'listnode' is removed.
2659 MUIV_NListtree_Remove_TreeNode_Active
2660 Removes the active node.
2662 MUIV_NListtree_Remove_TreeNode_All
2663 All nodes of the list which is specified in 'listnode',
2664 are removed. Other nodes of parent lists are not
2667 MUIV_NListtree_Remove_TreeNode_Selected
2668 All selected nodes are removed.
2674 // Remove the active entry if delete is pressed!
2675 DoMethod(bt_delete, MUIM_Notify, MUIA_Pressed, FALSE,
2676 lt_list, 4, MUIM_NListtree_Remove,
2677 MUIV_NListtree_Remove_ListNode_Active,
2678 MUIV_NListtree_Remove_TreeNode_Active, 0);
2687 MUIM_NListtree_Insert, MUIA_NListtree_DestructHook,
2691 \fNListtree.mcc/MUIM_NListtree_Rename NListtree.mcc/MUIM_NListtree_Rename
2695 MUIM_NListtree_Rename -- Rename the specified node. (V1)
2700 struct MUI_NListtree_TreeNode *treenode =
2701 DoMethod(obj, MUIM_NListtree_Rename,
2702 struct MUI_NListtree_TreeNode *treenode,
2703 STRPTR newname, ULONG flags);
2708 Rename the specified node.
2710 If you want to rename the tn_User field (see flags below), the construct
2711 and destruct hooks are used!
2712 If you have not specified these hooks, only the pointers will be copied.
2717 treenode - Specifies the node which should be renamed.
2719 MUIV_NListtree_Rename_TreeNode_Active:
2720 Rename the active tree node.
2722 newname - The new name or pointer.
2726 MUIV_NListtree_Rename_Flag_User
2727 The tn_User field is renamed.
2729 MUIV_NListtree_Rename_Flag_NoRefresh
2730 The list entry will not be refreshed.
2735 Returns the pointer of the renamed tree node.
2740 // Rename the active tree node.
2741 DoMethod(obj, MUIM_NListtree_Rename,
2742 MUIV_NListtree_Rename_TreeNode_Active,
2743 "Very new name", 0);
2752 MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
2755 \fNListtree.mcc/MUIM_NListtree_Select NListtree.mcc/MUIM_NListtree_Select
2759 MUIM_NListtree_Select -- Select the specified tree node. (V1)
2764 DoMethod(obj, MUIM_NListtree_Select,
2765 struct MUI_NListtree_TreeNode *treenode, LONG seltype,
2766 LONG selflags, LONG *state);
2771 Select or unselect a tree entry or ask an entry about its state.
2772 See special values for completeness.
2777 treenode - The tree node to be selected/unselected/asked.
2779 MUIV_NListtree_Select_Active For the active entry.
2780 MUIV_NListtree_Select_All For all entries.
2781 MUIV_NListtree_Select_Visible For all visible entries.
2783 seltype - Type of selection/unselection/ask
2785 MUIV_NListtree_Select_Off Unselect entry.
2786 MUIV_NListtree_Select_On Select entry.
2787 MUIV_NListtree_Select_Toggle Toggle entries state.
2788 MUIV_NListtree_Select_Ask Just ask about the state.
2790 selflags - Some kind of specials.
2792 MUIV_NListtree_Select_Flag_Force
2793 Adding this flag to seltype forces the selection by
2794 bypassing the multi test hook.
2796 state - Pointer to a longword. If not NULL, it will be filled
2797 with the current selection state of the entry.
2804 // Select the active entry.
2807 DoMethod(obj, MUIM_NListtree_Select,
2808 MUIV_NListtree_Select_Active, MUIV_NListtree_Select_On,
2811 // We must check this, because the multi test hook may
2812 // cancel our selection.
2813 if (retstate == MUIV_NListtree_Select_On) {
2820 If ( treenode == MUIV_NListtree_Select_All ) and
2821 ( seltype == MUIV_NListtree_Select_Ask ), state will be filled
2822 with the total number of selected entries.
2825 If (treenode == MUIV_NListtree_Select_Active ) and
2826 ( seltype == MUIV_NListtree_Select_Ask ), state will be the
2827 active entry, if any, or NULL.
2829 If only the active entry is selected, has a cursor mark (see
2830 MUIM_NListtree_NextSelected for that), you will receive 0 as
2831 the number of selected entries.
2838 MUIA_NListtree_MultiTestHook
2841 \fNListtree.mcc/MUIM_NListtree_Sort NListtree.mcc/MUIM_NListtree_Sort
2845 MUIM_NListtree_Sort -- Sort the specified list node. (V1)
2850 DoMethod(obj, MUIM_NListtree_Sort,
2851 struct MUI_NListtree_TreeNode *listnode,
2857 Sort the specified list node using the sort hook.
2862 listnode - List node to sort.
2864 MUIV_NListtree_Sort_ListNode_Root
2867 MUIV_NListtree_Sort_ListNode_Active
2868 Sort the list node of the active entry.
2870 MUIV_NListtree_Sort_TreeNode_Active
2871 Sorts the childs of the active entry if a list.
2873 flags - Control the part where sorting is done.
2875 MUIV_NListtree_Sort_Flag_RecursiveOpen
2876 Sort the list recursive. All open child nodes of the
2877 node specified in 'listnode' will be sorted too.
2879 MUIV_NListtree_Sort_Flag_RecursiveAll
2880 Sort the list recursive with ALL child nodes of the
2881 node specified in 'listnode'.
2887 // Sort the list of the active node.
2888 DoMethod(obj, MUIM_NListtree_Sort,
2889 MUIV_NListtree_Sort_ListNode_Active, 0);
2897 MUIA_NListtree_SortHook
2899 \fNListtree.mcc/MUIM_NListtree_TestPos NListtree.mcc/MUIM_NListtree_TestPos
2903 MUIM_NListtree_TestPos -- Get information about entry at x/y pos. (V1)
2908 DoMethod(obj, MUIM_NListtree_TestPos, LONG xpos, LONG ypos,
2909 struct MUI_NListtree_TestPos_Result *testposresult);
2914 Find out some information about the currently displayed entry at a
2915 certain position (x/y-pos).
2917 This is very useful for Drag&Drop operations.
2924 testposresult - Pointer to a valid MUI_NListtree_TestPos_Result
2930 tpr_TreeNode - The tree node under the requested position or NULL
2931 if there is no entry displayed.
2933 The tpr_Type field contains detailed information about the relative
2936 MUIV_NListtree_TestPos_Result_Above
2937 MUIV_NListtree_TestPos_Result_Below
2938 MUIV_NListtree_TestPos_Result_Onto
2939 MUIV_NListtree_TestPos_Result_Sorted
2941 tpr_Column - The column unter the specified position or -1 if
2947 // Entry under the cursor?
2948 struct MUI_NListtree_TestPos_Result tpres;
2950 DoMethod(obj, MUIM_NListtree_TestPos, msg->imsg->MouseX,
2951 msg->imsg->MouseY, &tpres);
2953 if ( tpres.tpr_Entry != NULL )
2955 // Do something very special here...