Moving to main tree, needed by SysExplorer
[AROS.git] / workbench / classes / zune / nlist / docs / MCC_NListtree.doc
blob35c6b3be3fb183e79aef67dff9717ce028866504
1 TABLE OF CONTENTS
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
67     or nodes.
69     Every node is structured as follows:
71         struct MUI_NListtree_TreeNode {
73             struct    MinNode    tn_Node;
74             STRPTR    tn_Name;
75             UWORD    tn_Flags;
76             APTR    tn_User;
77         };
79     It contains a name field tn_Name, flags tn_Flags and a pointer to
80     user data tn_User.
82     The tn_Flags field can hold the following flags:
84         TNF_LIST        The node contains a list where other nodes
85                         can be inserted.
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
131     shows where to drop.
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
141     any of its members.
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
148    NAME
150     MUIA_NListtree_Active -- [.SG], struct MUI_NListtree_TreeNode *
153    SPECIAL VALUES
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
162    FUNCTION
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
167     vanish the cursor.
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.
178    NOTIFICATIONS
180     You can create a notification on MUIA_NListtree_Active. The
181     TriggerValue is the active tree node.
184    SEE ALSO
186     MUIA_NListtree_AutoVisible, MUIA_NList_First, MUIA_NList_Visible,
187     MUIA_NListtree_ActiveList
189 \fNListtree.mcc/MUIA_NListtree_ActiveListListtree.mcc/MUIA_NListtree_ActiveList
191    NAME
193     MUIA_NListtree_ActiveList -- [..G], struct MUI_NListtree_TreeNode *
196    SPECIAL VALUES
198         MUIV_NListtree_ActiveList_Off
201    FUNCTION
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).
209    NOTIFICATIONS
211     You can create notifications on MUIA_NListtree_ActiveList. The
212     TriggerValue is the active list node.
215    SEE ALSO
217     MUIA_NListtree_Active
219 \fNListtree.mcc/MUIA_NListtree_AutoVisiblesttree.mcc/MUIA_NListtree_AutoVisible
221    NAME
223     MUIA_NListtree_AutoVisible -- [ISG], struct MUI_NListtree_TreeNode *
226    SPECIAL VALUES
228         MUIV_NListtree_AutoVisible_Off
229         MUIV_NListtree_AutoVisible_Normal
230         MUIV_NListtree_AutoVisible_FirstOpen
231         MUIV_NListtree_AutoVisible_Expand
234    FUNCTION
236     Set this to make your list automatically jump to the active
237     entry.
239         MUIV_NListtree_AutoVisible_Off:
240             The display does NOT scroll the active entry into the
241             visible area.
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).
246             This is the default.
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
256             visible area.
259    NOTIFICATIONS
262    SEE ALSO
264     MUIA_NListtree_Active, MUIA_NList_AutoVisible
266 \fNListtree.mcc/MUIA_NListtree_CloseHook NListtree.mcc/MUIA_NListtree_CloseHook
268    NAME
270     MUIA_NListtree_CloseHook -- [IS.], struct Hook *
273    SPECIAL VALUES
276    FUNCTION
278     The close hook is called after a list node is closed, then you can
279     change the list.
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.
287    NOTIFICATION
290    SEE ALSO
292     MUIA_NListtree_Open, MUIA_NListtree_CloseHook
295 \fNListtree.mcc/MUIA_NListtree_CompareHooksttree.mcc/MUIA_NListtree_CompareHook
297    NAME
299     MUIA_NListtree_CompareHook -- [IS.], struct Hook *
302    SPECIAL VALUES
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
311    FUNCTION
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)
348    NOTIFICATION
351    SEE ALSO
353     MUIA_NListtree_Insert, MUIM_DragDrop,
354     MUIA_NList_CompareHook
357 \fNListtree.mcc/MUIA_NListtree_ConstructHookee.mcc/MUIA_NListtree_ConstructHook
359    NAME
361     MUIA_NListtree_ConstructHook -- [IS.], struct Hook *
364    SPECIAL VALUES
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
372             allocating memory.
375    FUNCTION
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
382     called.
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
386     nlisttree_mcc.h).
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
396     string is copied.
397     Of course you have to use MUIV_NListtree_DestructHook_String in
398     this case!
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!
406    NOTIFICATION
409    SEE ALSO
411     MUIA_NList_ConstructHook, MUIA_NListtree_DestructHook,
412     MUIA_NListtree_DisplayHook
415 \fNListtree.mcc/MUIA_NListtree_CopyToClipHook.mcc/MUIA_NListtree_CopyToClipHook
417    NAME
419     MUIA_NListtree_CopyToClipHook -- [IS.],
422    SPECIAL VALUES
424         MUIV_NListtree_CopyToClipHook_Default
427    FUNCTION
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
437         between columns.
440    NOTIFICATION
443    SEE ALSO
445     MUIM_NListtree_CopyToClip
448 \fNListtree.mcc/MUIA_NListtree_DestructHooktree.mcc/MUIA_NListtree_DestructHook
450    NAME
452     MUIA_NListtree_DestructHook -- [IS.], struct Hook *
455    SPECIAL VALUES
457         MUIV_NListtree_DestructHook_String
460    FUNCTION
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
468     nlisttree_mcc.h).
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.
481    NOTIFICATION
484    SEE ALSO
486     MUIA_NList_ConstructHook, MUIA_NListtree_ConstructHook,
487     MUIA_NListtree_DisplayHook
490 \fNListtree.mcc/MUIA_NListtree_DisplayHooksttree.mcc/MUIA_NListtree_DisplayHook
492    NAME
494     MUIA_NListtree_DisplayHook -- [IS.],
497    SPECIAL VALUES
500    FUNCTION
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
513     node should appear.
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
528     to NULL.
531    NOTIFICATION
534    SEE ALSO
536     MUIA_NList_Format, MUIA_Text_Contents
539 \fNListtree.mcc/MUIA_NListtree_DoubleClicksttree.mcc/MUIA_NListtree_DoubleClick
541    NAME
543     MUIA_NListtree_DoubleClick -- [ISG], ULONG
546    SPECIAL VALUES
548         MUIV_NListtree_DoubleClick_Off
549         MUIV_NListtree_DoubleClick_All
550         MUIV_NListtree_DoubleClick_Tree
551         MUIV_NListtree_DoubleClick_NoTrigger
554    FUNCTION
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
560     values:
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!
575    NOTIFICATION
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.
584    SEE ALSO
587 \fNListtree.mcc/MUIA_NListtree_DragDropSorttree.mcc/MUIA_NListtree_DragDropSort
589    NAME
591     MUIA_NListtree_DragDropSort -- [IS.], BOOL
594    SPECIAL VALUES
597    FUNCTION
599     Setting this attribute to FALSE will disable the ability to sort the
600     list tree by drag & drop. Defaults to TRUE.
603    NOTIFICATION
606    SEE ALSO
610 \fNListtree.mcc/MUIA_NListtree_DropTargetListtree.mcc/MUIA_NListtree_DropTarget
612    NAME
614     MUIA_NListtree_DropTarget -- [..G], ULONG
617    SPECIAL VALUES
619    FUNCTION
621     After a successfull 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.
626    NOTIFICATION
629    SEE ALSO
631     MUIA_NListtree_DropTargetPos, MUIA_NListtree_DropType
634 \fNListtree.mcc/MUIA_NListtree_DropTargetPosee.mcc/MUIA_NListtree_DropTargetPos
636    NAME
638     MUIA_NListtree_DropTargetPos -- [..G], ULONG
641    SPECIAL VALUES
643    FUNCTION
645     After a successfull 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.
652    NOTIFICATION
655    SEE ALSO
657     MUIA_NListtree_DropTarget, MUIA_NListtree_DropType
660 \fNListtree.mcc/MUIA_NListtree_DropType   NListtree.mcc/MUIA_NListtree_DropType
662    NAME
664     MUIA_NListtree_DropType -- [..G], ULONG
667    SPECIAL VALUES
669         MUIV_NListtree_DropType_None
670         MUIV_NListtree_DropType_Above
671         MUIV_NListtree_DropType_Below
672         MUIV_NListtree_DropType_Onto
675    FUNCTION
677     After a successfull drop operation, this value holds the position
678     relative to the value of MUIA_NListtree_DropTarget/DropTargetPos.
681    NOTIFICATION
684    SEE ALSO
686     MUIA_NListtree_DropTarget, MUIA_NListtree_DropTargetPos
689 \fNListtree.mcc/MUIA_NListtree_DupNodeNamesttree.mcc/MUIA_NListtree_DupNodeName
691    NAME
693     MUIA_NListtree_DupNodeName -- [IS.], BOOL
696    SPECIAL VALUES
699    FUNCTION
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.
706    NOTIFICATION
709    SEE ALSO
713 \fNListtree.mcc/MUIA_NListtree_EmptyNodesListtree.mcc/MUIA_NListtree_EmptyNodes
715    NAME
717     MUIA_NListtree_EmptyNodes -- [IS.], BOOL
720    SPECIAL VALUES
723    FUNCTION
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
727     handled like a node.
730    NOTIFICATION
733    SEE ALSO
737 \fNListtree.mcc/MUIA_NListtree_FindNameHooktree.mcc/MUIA_NListtree_FindNameHook
739    NAME
741     MUIA_NListtree_FindNameHook -- [IS.],
744    SPECIAL VALUES
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.
763    FUNCTION
765     You can install a FindName hook to specify your own search
766     criteria.
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.
779    NOTIFICATION
782    SEE ALSO
785 \fNListtree.mcc/MUIA_NListtree_FindUserDataHook/MUIA_NListtree_FindUserDataHook
787    NAME
789     MUIA_NListtree_FindUserDataHook -- [IS.],
792    SPECIAL VALUES
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.
812    FUNCTION
814     You can install a FindUserData hook to specify your own search
815     criteria.
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
827     default.
829    NOTIFICATION
832    SEE ALSO
835 \fNListtree.mcc/MUIA_NListtree_Format       NListtree.mcc/MUIA_NListtree_Format
837    NAME
839     MUIA_NListtree_Format -- [IS.], STRPTR
842    SPECIAL VALUES
845    FUNCTION
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!
853    NOTIFICATION
856    SEE ALSO
858     MUIA_NList_Format, MUIA_NListtree_DisplayHook,
859     MUIA_Text_Contents
862 \fNListtree.mcc/MUIA_NListtree_MultiSelectsttree.mcc/MUIA_NListtree_MultiSelect
864    NAME
866     MUIA_NListtree_MultiSelect -- [I..],
869    SPECIAL VALUES
871         MUIV_NListtree_MultiSelect_None
872         MUIV_NListtree_MultiSelect_Default
873         MUIV_NListtree_MultiSelect_Shifted
874         MUIV_NListtree_MultiSelect_Always
877    FUNCTION
879     Four possibilities exist for a listviews multi select
880     capabilities:
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
895             without shift key.
898    NOTIFICATION
900     NOTES
902    SEE ALSO
904     MUIA_NListtree_MultiTestHook, MUIM_NListtree_MultiSelect
907 \fNListtree.mcc/MUIA_NListtree_MultiTestHookee.mcc/MUIA_NListtree_MultiTestHook
909    NAME
911     MUIA_NListtree_MultiTestHook -- [IS.], struct Hook *
914    SPECIAL VALUES
917    FUNCTION
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.
931    NOTIFICATION
934    SEE ALSO
936     MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
939 \fNListtree.mcc/MUIA_NListtree_OpenHook   NListtree.mcc/MUIA_NListtree_OpenHook
941    NAME
943     MUIA_NListtree_OpenHook -- [IS.], struct Hook *
946    SPECIAL VALUES
949    FUNCTION
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.
960    NOTIFICATION
963    SEE ALSO
965     MUIA_NListtree_Open, MUIA_NListtree_CloseHook
968 \fNListtree.mcc/MUIA_NListtree_Quiet         NListtree.mcc/MUIA_NListtree_Quiet
970    NAME
972     MUIA_NListtree_Quiet -- [.S.], QUIET
975    SPECIAL VALUES
978    FUNCTION
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!
993    NOTIFICATION
996    SEE ALSO
998     MUIM_NListtree_Insert, MUIM_NListtree_Remove
1001 \fNListtree.mcc/MUIA_NListtree_ShowTree   NListtree.mcc/MUIA_NListtree_ShowTree
1003    NAME
1005     MUIA_NListtree_ShowTree -- [ISG], ULONG
1008    SPECIAL VALUES
1010    FUNCTION
1012     Specify FALSE here if you want the whole tree to be disappear.
1013     Defaults to TRUE;
1015    NOTIFICATION
1018    SEE ALSO
1021 \fNListtree.mcc/MUIA_NListtree_Title         NListtree.mcc/MUIA_NListtree_Title
1023    NAME
1025     MUIA_NListtree_Title -- [IS.], BOOL
1028    SPECIAL VALUES
1031    FUNCTION
1033     Specify a title for the current listtree.
1035     For detailed information see MUIA_NList_Title!
1038    NOTIFICATION
1041     BUGS
1043     The title should not be a string as for single column listviews. This
1044     attribute can only be set to TRUE or FALSE.
1047    SEE ALSO
1051 \fNListtree.mcc/MUIA_NListtree_TreeColumnListtree.mcc/MUIA_NListtree_TreeColumn
1053    NAME
1055     MUIA_NListtree_TreeColumn -- [ISG], ULONG
1058    SPECIAL VALUES
1060    FUNCTION
1062     Specify the column of the list tree, the node indicator and the name
1063     of the node are displayed in.
1066    NOTIFICATION
1069    SEE ALSO
1071     MUIA_NListtree_DisplayHook, MUIA_NListtree_Format
1074 \fNListtree.mcc/MUIM_NListtree_Active       NListtree.mcc/MUIM_NListtree_Active
1076    NAME
1078     MUIM_NListtree_Active -- Called for every active change. (V1)
1081    SYNOPSIS
1083     DoMethodA(obj, MUIM_NListtree_Active,
1084         struct MUIP_NListtree_Active *activemessage);
1087    FUNCTION
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
1094    INPUTS
1096    RESULT
1098    EXAMPLE
1100    NOTES
1102    BUGS
1104    SEE ALSO
1106     MUIA_NListtree_Active
1109 \fNListtree.mcc/MUIM_NListtree_Clear         NListtree.mcc/MUIM_NListtree_Clear
1111    NAME
1113     MUIM_NListtree_Clear -- Clear the complete listview. (V1)
1116    SYNOPSIS
1118     DoMethod(obj, MUIM_NListtree_Clear, NULL, 0)
1121    FUNCTION
1123     Clear the complete listview, calling destruct hook for each entry.
1126    INPUTS
1128    RESULT
1130    EXAMPLE
1132         // Clear the listview!
1133         DoMethod( nlisttree, MUIM_NListtree_Clear, NULL, 0 );
1136    NOTES
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!
1143    BUGS
1145    SEE ALSO
1147     MUIM_NListtree_Remove, MUIA_NListtree_DestructHook,
1150 \fNListtree.mcc/MUIM_NListtree_Close         NListtree.mcc/MUIM_NListtree_Close
1152    NAME
1154     MUIM_NListtree_Close -- Close the specified list node. (V1)
1157    SYNOPSIS
1159     DoMethod(obj, MUIM_NListtree_Close,
1160         struct MUI_NListtree_TreeNode *listnode,
1161         struct MUI_NListtree_TreeNode *treenode,
1162         ULONG flags);
1165    FUNCTION
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
1171     will become active.
1174    INPUTS
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
1203             'listnode'.
1206    RESULT
1208    EXAMPLE
1210         // Close the active list.
1211         DoMethod(obj, MUIM_NListtree_Close,
1212             MUIV_NListtree_Close_ListNode_Active,
1213             MUIV_NListtree_Close_TreeNode_Active, 0);
1216    NOTES
1218    BUGS
1220    SEE ALSO
1221     MUIM_NListtree_Open
1224 \fNListtree.mcc/MUIM_NListtree_Compare     NListtree.mcc/MUIM_NListtree_Compare
1226    NAME
1228     MUIM_NListtree_Compare -- Compare two nodes
1231    SYNOPSIS
1233     DoMethod(obj, MUIM_NListtree_Compare,
1234         struct MUI_NListtree_TreeNode *TreeNode1,
1235         struct MUI_NListtree_TreeNode *TreeNode2,
1236         ULONG SortType);
1239    FUNCTION
1241     Compares the two given treenodes. You should return something like:
1243         <0    (TreeNode1 <  TreeNode2)
1244          0    (TreeNode1 == TreeNode2)
1245         >0    (TreeNode1 >  TreeNode2)
1248    NOTIFICATION
1251    SEE ALSO
1253     MUIA_NListtree_CompareHook
1256 \fNListtree.mcc/MUIA_NListtree_Construct NListtree.mcc/MUIA_NListtree_Construct
1258    NAME
1260     MUIN_NListtree_Construct -- Create a new treenode
1263    SYNOPSIS
1265     DoMethod(obj, MUIM_NListtree_Construct,
1266         STRPTR Name,
1267         APTR UserData,
1268         APTR MemPool,
1269         ULONG Flags);
1272    FUNCTION
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.
1280    NOTIFICATION
1283    SEE ALSO
1285     MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
1288 \fNListtree.mcc/MUIM_NListtree_Copy           NListtree.mcc/MUIM_NListtree_Copy
1290    NAME
1292     MUIM_NListtree_Copy -- Copy an entry (create it) to the spec. pos. (V1)
1295    SYNOPSIS
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,
1302         ULONG flags);
1305    FUNCTION
1307     Copy an entry to the position after a defined node. The complete
1308     child structure will be copied.
1311    INPUTS
1313     srclistnode -    Specify the node which list is used to find the
1314                     entry. The search is started at the head of this
1315                     list.
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
1322             the starting point.
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
1337                     list.
1339         MUIV_NListtree_Copy_DestListNode_Root
1340             The root list.
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
1346                     inserted.
1348         MUIV_NListtree_Copy_DestTreeNode_Head
1349             The node is copied to the head of the list defined in
1350             'destlistnode'.
1352         MUIV_NListtree_Copy_DestTreeNode_Tail
1353             The node is copied to the tail of the list defined in
1354             'destlistnode'.
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.
1369    RESULT
1371    EXAMPLE
1373         // Copy the active entry to the head of
1374         // another list node.
1375         DoMethod(obj,
1376             MUIV_NListtree_Copy_SourceListNode_Active,
1377             MUIV_NListtree_Copy_SourceTreeNode_Active,
1378             anylistnode,
1379             MUIV_NListtree_Copy_DestTreeNode_Head,
1380             0);
1383    NOTES
1385    BUGS
1387    SEE ALSO
1389     MUIM_NListtree_Insert, MUIM_NListtree_Remove,
1390     MUIM_NListtree_Exchange, MUIA_NListtree_CompareHook,
1391     MUIM_NListtree_Move
1394 \fNListtree.mcc/MUIM_NListtree_CopyToClipListtree.mcc/MUIM_NListtree_CopyToClip
1396    NAME
1398     MUIM_NListtree_CopyToClip -- Called for every clipboard copy action. (V1)
1401    SYNOPSIS
1403     DoMethodA(obj, MUIM_NListtree_CopyToClip,
1404         struct MUIP_NListtree_CopyToClip *ctcmessage);
1407    FUNCTION
1409     Do a copy to clipboard from an entry/entry content.
1412    INPUTS
1414         TreeNode    - Tree node to copy contents from. Use
1415                      MUIV_NListtree_CopyToClip_Active to copy the
1416                       active entry.
1418         Pos            - Entry position.
1420         Unit        - Clipboard unit to copy entry contents to.
1423    RESULT
1425    EXAMPLE
1427    NOTES
1429    BUGS
1431    SEE ALSO
1433     MUIA_NListtree_CopyToClipHook
1436 \fNListtree.mcc/MUIA_NListtree_Destruct   NListtree.mcc/MUIA_NListtree_Destruct
1438    NAME
1440     MUIN_NListtree_Destruct -- Free a new treenode
1443    SYNOPSIS
1445     DoMethod(obj, MUIM_NListtree_Destruct,
1446         STRPTR Name,
1447         APTR UserData,
1448         APTR MemPool,
1449         ULONG Flags);
1452    FUNCTION
1454     This method is called whenever a new treenode is to be removed from the
1455     listtree. See MUIA_NListtree_DestructHook for more details.
1458    NOTIFICATION
1461    SEE ALSO
1463     MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
1465 \fNListtree.mcc/MUIM_NListtree_Display     NListtree.mcc/MUIA_NListtree_Display
1467    NAME
1469     MUIN_NListtree_Display -- Display a treenode
1472    SYNOPSIS
1474     DoMethod(obj, MUIM_NListtree_Dispose,
1475         struct MUI_NListtree_TreeNode *TreeNode,
1476         LONG EntryPos,
1477         STRPTR *Array,
1478         STRPTR *Preparse);
1481    FUNCTION
1483     This method is called whenever a new treenode is to be displayed in the
1484     listtree. See MUIA_NListtree_DisplayHook for more details.
1487    NOTIFICATION
1490    SEE ALSO
1492     MUIA_NListtree_DisplayHook
1495 \fNListtree.mcc/MUIM_NListtree_DoubleClicksttree.mcc/MUIM_NListtree_DoubleClick
1497    NAME
1499     MUIM_NListtree_DoubleClick -- Called for every double click. (V1)
1502    SYNOPSIS
1504     DoMethodA(obj, MUIM_NListtree_DoubleClick,
1505         struct MUIP_NListtree_DoubleClick *doubleclickmsg);
1508    FUNCTION
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
1515    INPUTS
1517    RESULT
1519    EXAMPLE
1521    NOTES
1523    BUGS
1525    SEE ALSO
1527     MUIA_NListtree_DoubleClick
1530 \fNListtree.mcc/MUIM_NListtree_DropDraw   NListtree.mcc/MUIM_NListtree_DropDraw
1532    NAME
1534     MUIM_NListtree_DropDraw --
1537    SYNOPSIS
1539     DoMethod(obj, MUIM_NListtree_DropDraw, LONG pos, LONG type,
1540         LONG minx, LONG maxx, LONG miny, LONG maxy);
1543    FUNCTION
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.
1554    INPUTS
1556    RESULT
1558    EXAMPLE
1560    NOTES
1562    BUGS
1564    SEE ALSO
1566     MUIM_NList_DropDraw
1569 \fNListtree.mcc/MUIM_NListtree_DropType   NListtree.mcc/MUIM_NListtree_DropType
1571    NAME
1573     MUIM_NListtree_DropType --
1576    SYNOPSIS
1578     DoMethod(obj, MUIM_NListtree_DropType, LONG *pos, LONG *type,
1579         LONG minx, LONG maxx, LONG miny, LONG maxy,
1580         LONG mousex, LONG mousey);
1583    FUNCTION
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.
1594    INPUTS
1596    RESULT
1598    EXAMPLE
1600    NOTES
1602    BUGS
1604    SEE ALSO
1606     MUIM_NList_DropType
1609 \fNListtree.mcc/MUIM_NListtree_Exchange   NListtree.mcc/MUIM_NListtree_Exchange
1611    NAME
1613     MUIM_NListtree_Exchange -- Exchanges two tree nodes. (V1)
1616    SYNOPSIS
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,
1623         ULONG flags);
1626    FUNCTION
1628     Exchange two tree nodes.
1631    INPUTS
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
1646             exchanged.
1648         MUIV_NListtree_Exchange_TreeNode1_Tail
1649             The tail of the list defined in 'listnode1' is
1650             exchanged.
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
1658             The root list.
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'.
1685    RESULT
1687    EXAMPLE
1689         // Exchange the active entry with the successor.
1690         DoMethod(obj,
1691             MUIV_NListtree_Exchange_ListNode1_Active,
1692             MUIV_NListtree_Exchange_TreeNode1_Active,
1693             MUIV_NListtree_Exchange_ListNode2_Active,
1694             MUIV_NListtree_Exchange_TreeNode2_Down,
1695             0);
1698    NOTES
1700    BUGS
1702    SEE ALSO
1704     MUIM_NListtree_Move, MUIM_NListtree_Insert,
1705     MUIM_NListtree_Remove
1708 \fNListtree.mcc/MUIM_NListtree_FindName   NListtree.mcc/MUIM_NListtree_FindName
1710    NAME
1712     MUIM_NListtree_FindName -- Find node using name match. (V1)
1715    SYNOPSIS
1717     struct MUI_NListtree_TreeNode *treenode =
1718         DoMethod(obj, MUIM_NListtree_FindName,
1719             struct MUI_NListtree_TreeNode *listnode,
1720             STRPTR name, ULONG flags);
1723    FUNCTION
1725     Find a node which name matches the specified one using the list node as
1726     start point..
1729    INPUTS
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
1741                 own FindNameHook.
1743     flags:
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
1761             normal entry.
1763    RESULT
1765     Returns the found node if available, NULL otherwise.
1768    EXAMPLE
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 )
1778         {
1779             PrintToUser( "No matching entry found." );
1780         }
1783    NOTES
1785    BUGS
1787    SEE ALSO
1789     MUIM_NListtree_FindUserData, MUIM_NListtree_GetEntry,
1790     MUIA_NListtree_FindNameHook
1793 \fNListtree.mcc/MUIM_NListtree_FindUserDatatree.mcc/MUIM_NListtree_FindUserData
1795    NAME
1797     MUIM_NListtree_FindUserData -- Find node upon user data. (V1)
1800    SYNOPSIS
1802     struct MUI_NListtree_TreeNode *treenode =
1803         DoMethod(obj, MUIM_NListtree_FindUserData,
1804             struct MUI_NListtree_TreeNode *listnode,
1805             APTR userdata, ULONG flags);
1808    FUNCTION
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
1815     these two methods.
1818    INPUTS
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.
1832     flags:
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
1850             normal entry.
1852    RESULT
1854     Returns the found node if available, NULL otherwise.
1857    EXAMPLE
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 )
1867         {
1868             PrintToUser( "No matching entry found." );
1869         }
1872    NOTES
1874    BUGS
1876    SEE ALSO
1878     MUIM_NListtree_FindName, MUIM_NListtree_GetEntry,
1879     MUIA_NListtree_FindUserDataHook
1882 \fNListtree.mcc/MUIM_NListtree_GetEntry   NListtree.mcc/MUIM_NListtree_GetEntry
1884    NAME
1886     MUIM_NListtree_GetEntry -- Get another node in relation to this. (V1)
1889    SYNOPSIS
1891     struct MUI_NListtree_TreeNode *rettreenode =
1892         DoMethod(obj, MUIM_NListtree_GetEntry,
1893             struct MUI_NListtree_TreeNode *treenode,
1894             LONG pos, ULONG flags);
1897    FUNCTION
1899     Get another node in relation to the specified list or node.
1902    INPUTS
1904     treenode -    Define the node which is used to find another one.
1905                 This can also be a list node, if the position is
1906                 related to a list.
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,
1924             NULL is returned.
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.
1938     flags:
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.
1947    RESULT
1949     Returns the requested node if available, NULL otherwise.
1952    EXAMPLE
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 )
1960         {
1961             PrintToUser( "Next entry found!" );
1962         }
1965    NOTES
1967    BUGS
1969    SEE ALSO
1971     MUIM_NList_GetEntry
1974 \fNListtree.mcc/MUIM_NListtree_GetNr         NListtree.mcc/MUIM_NListtree_GetNr
1976    NAME
1978     MUIM_NListtree_GetNr -- Get the position number of a tree node. (V1)
1981    SYNOPSIS
1983     ULONG number = DoMethod(obj, MUIM_NListtree_GetNr,
1984         struct MUI_NListtree_TreeNode *treenode, ULONG flags);
1987    FUNCTION
1989     Get the position number of the specified tree node.
1992    INPUTS
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.
1999     flags:
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
2018             only.
2021    RESULT
2023    EXAMPLE
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 )
2031         {
2032             AddThousandEntries();
2033         }
2035    NOTES
2037    BUGS
2039    SEE ALSO
2041     MUIM_NListtree_GetEntry
2043 \fNListtree.mcc/MUIM_NListtree_Insert       NListtree.mcc/MUIM_NListtree_Insert
2045    NAME
2047     MUIM_NListtree_Insert -- Insert an entry at the specified position. (V1)
2050    SYNOPSIS
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,
2057             ULONG flags);
2060    FUNCTION
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.
2067    INPUTS
2069     name/userdata - What the names say ;-)
2072     listnode -        Specify the node which list is used to insert
2073                     the entry.
2075         MUIV_NListtree_Insert_ListNode_Root
2076             Use the root list.
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
2090                     to insert.
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.
2106     flags:
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.
2117    RESULT
2119     A pointer to the newly inserted entry.
2122    EXAMPLE
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);
2131    NOTES
2133    BUGS
2135     Not implemented yet:
2136         MUIV_NListtree_Insert_Flag_NextNode
2139    SEE ALSO
2141     MUIA_NListtree_ConstructHook, MUIA_NListtree_CompareHook
2144 \fNListtree.mcc/MUIM_NListtree_InsertStructtree.mcc/MUIM_NListtree_InsertStruct
2146    NAME
2148     MUIM_NListtree_InsertStruct -- Insert a structure such as a path
2149                                     using a delimiter. (V1)
2152    SYNOPSIS
2154     struct MUI_NListtree_TreeNode *treenode =
2155         DoMethod(obj, MUIM_NListtree_InsertStruct,
2156             STRPTR name, APTR userdata,
2157             STRPTR delimiter, ULONG flags);
2160    FUNCTION
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:
2168         + Images
2169           + aphaso
2170             - Image.mbr
2172     If a part of the structure is already present, it will be used to
2173     insert.
2176    INPUTS
2178     name -        Data containing (must not) one or more delimiters as
2179                 specified in delimiter (Images/aphaso/Image.mbr for
2180                 example).
2182     userdata -    Your personal data.
2184     delimiter -    The delimiter(s) used in the name field (":/" or
2185                 something).
2187     flags:
2189         Use normal insert flags here (see there).
2192    RESULT
2194     A pointer to the last instance of newly inserted entries.
2197    EXAMPLE
2199         // Insert a directory path.
2200        path = MyGetPath( lock );
2202         DoMethod(obj, MUIM_NListtree_InsertStruct,
2203             path, NULL, ":/", 0);
2206    NOTES
2208    BUGS
2210    SEE ALSO
2212     MUIA_NListtree_Insert
2215 \fNListtree.mcc/MUIM_NListtree_Move           NListtree.mcc/MUIM_NListtree_Move
2217    NAME
2219     MUIM_NListtree_Move -- Move an entry to the specified position. (V1)
2222    SYNOPSIS
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,
2229         ULONG flags);
2232    FUNCTION
2234     Move an entry to the position after a defined node.
2237    INPUTS
2239     oldlistnode -    Specify the node which list is used to find the
2240                     entry. The search is started at the head of this
2241                     list.
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
2248             the starting point.
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
2263                     list.
2265         MUIV_NListtree_Move_NewListNode_Root
2266             The root list.
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
2272                     inserted.
2274         MUIV_NListtree_Move_NewTreeNode_Head
2275             The node is moved to the head of the list defined in
2276             'newlistnode'.
2278         MUIV_NListtree_Move_NewTreeNode_Tail
2279             The node is moved to the tail of the list defined in
2280             'newlistnode'.
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).
2295    RESULT
2297    EXAMPLE
2299         // Move an entry to the head of another list-node.
2300         DoMethod(obj,
2301             MUIV_NListtree_Move_OldListNode_Active,
2302             MUIV_NListtree_Move_OldTreeNode_Active,
2303             somelistmode,
2304             MUIV_NListtree_Move_NewTreeNode_Head,
2305             0);
2308    NOTES
2310    BUGS
2312    SEE ALSO
2314     MUIM_NListtree_Insert, MUIM_NListtree_Remove,
2315     MUIM_NListtree_Exchange, MUIA_NListtree_CompareHook,
2316     MUIM_NListtree_Copy
2318 \fNListtree.mcc/MUIM_NListtree_MultiTest NListtree.mcc/MUIM_NListtree_MultiTest
2320    NAME
2322     MUIM_NListtree_MultiTest -- Called for every selection. (V1)
2325    SYNOPSIS
2327     DoMethodA(obj, MUIM_NListtree_MultiTest,
2328         struct MUIP_NListtree_MultiTest *multimessage);
2331    FUNCTION
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-
2336     selectable or not.
2339    INPUTS
2341    RESULT
2343    EXAMPLE
2345    NOTES
2347    BUGS
2349    SEE ALSO
2351     MUIM_NListtree_Select, MUIA_NListtree_MultiTest
2354 \fNListtree.mcc/MUIM_NListtree_NextSelectedtree.mcc/MUIM_NListtree_NextSelected
2356    NAME
2358     MUIM_NListtree_NextSelected -- Get next selected tree node. (V1)
2361    SYNOPSIS
2363     DoMethod(obj, MUIM_NListtree_NextSelected,
2364         struct MUI_NListtree_TreeNode **treenode);
2367    FUNCTION
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.
2381    INPUTS
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.
2394    RESULT
2396    EXAMPLE
2398     // Iterate through a list
2399     struct MUI_NListtree_TreeNode *treenode;
2401     treenode = MUIV_NListtree_NextSelected_Start;
2403     for (;;)
2404     {
2405         DoMethod(listtree, MUIM_NListtree_NextSelected, &treenode);
2407         if (treenode==MUIV_NListtree_NextSelected_End)
2408             break;
2410         printf("selected: %s\n", treenode->tn_Name);
2411     }
2414    NOTES
2416    BUGS
2418    SEE ALSO
2420     MUIM_NListtree_PrevSelected, MUIM_NListtree_Select
2423 \fNListtree.mcc/MUIM_NListtree_Open           NListtree.mcc/MUIM_NListtree_Open
2425    NAME
2427     MUIM_NListtree_Open -- Open the specified tree node. (V1)
2430    SYNOPSIS
2432     DoMethod(obj, MUIM_NListtree_Open,
2433         struct MUI_NListtree_TreeNode *listnode,
2434         struct MUI_NListtree_TreeNode *treenode,
2435         ULONG flags);
2438    FUNCTION
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.
2446    INPUTS
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.
2475    RESULT
2477    EXAMPLE
2478         // Open the active list.
2479         DoMethod(obj, MUIM_NListtree_Open,
2480             MUIV_NListtree_Open_ListNode_Active,
2481             MUIV_NListtree_Open_TreeNode_Active, 0);
2484    NOTES
2486    BUGS
2488    SEE ALSO
2489     MUIM_NListtree_Close
2492 \fNListtree.mcc/MUIM_NListtree_PrevSelectedtree.mcc/MUIM_NListtree_PrevSelected
2494    NAME
2496     MUIM_NListtree_PrevSelected -- Get previous selected tree node. (V1)
2499    SYNOPSIS
2501     DoMethod(obj, MUIM_NListtree_PrevSelected,
2502         struct MUI_NListtree_TreeNode **treenode);
2505    FUNCTION
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.
2519    INPUTS
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
2526                 finished.
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.
2533    RESULT
2535    EXAMPLE
2537     // Iterate through a list (reverse)
2538     struct MUI_NListtree_TreeNode *treenode;
2540     treenode = MUIV_NListtree_PrevSelected_Start;
2542     for (;;)
2543     {
2544         DoMethod(listtree, MUIM_NListtree_PrevSelected, &treenode);
2546         if (treenode==MUIV_NListtree_PrevSelected_End)
2547             break;
2549         printf("selected: %s\n", treenode->tn_Name);
2550     }
2553    NOTES
2555    BUGS
2557    SEE ALSO
2559     MUIM_NListtree_NextSelected, MUIM_NListtree_Select
2562 \fNListtree.mcc/MUIM_NListtree_Redraw       NListtree.mcc/MUIM_NListtree_Redraw
2564    NAME
2566     MUIM_NListtree_Redraw -- Redraw the specified tree node. (V1)
2569    SYNOPSIS
2571     DoMethod(obj, MUIM_NListtree_Redraw,
2572         struct MUI_NListtree_TreeNode *treenode, ULONG flags);
2575    FUNCTION
2577     Redraw the specified entry. See special values for completeness.
2580    INPUTS
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.
2591     flags:
2593         MUIV_NListtree_Redraw_Flag_Nr
2594             The data specified in 'treenode' is the entry number,
2595             not the tree node itself.
2598    RESULT
2600    EXAMPLE
2602         // Redraw the active entry.
2603         DoMethod(obj, MUIM_NListtree_Redraw,
2604             MUIV_NListtree_Redraw_Active, 0);
2607    NOTES
2609    BUGS
2611    SEE ALSO
2613     MUIM_NList_TestPos
2616 \fNListtree.mcc/MUIM_NListtree_Remove       NListtree.mcc/MUIM_NListtree_Remove
2618    NAME
2620     MUIM_NListtree_Remove -- Remove the specified entry(ies). (V1)
2623    SYNOPSIS
2625     DoMethod(obj, MUIM_NListtree_Remove,
2626         struct MUI_NListtree_TreeNode *listnode,
2627         struct MUI_NListtree_TreeNode *treenode,
2628         ULONG flags);
2631    FUNCTION
2633     Removes a node or nodes from the listtree. When the active entry
2634     is removed, the successor will become active.
2637    INPUTS
2639     listnode -    Specify the node which list is used to find the entry
2640                 which should be removed. The search is started at the
2641                 begin of this list.
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
2665             affected.
2667         MUIV_NListtree_Remove_TreeNode_Selected
2668             All selected nodes are removed.
2670    RESULT
2672    EXAMPLE
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);
2681    NOTES
2683    BUGS
2685    SEE ALSO
2687     MUIM_NListtree_Insert, MUIA_NListtree_DestructHook,
2688     MUIM_NList_Active
2691 \fNListtree.mcc/MUIM_NListtree_Rename       NListtree.mcc/MUIM_NListtree_Rename
2693    NAME
2695     MUIM_NListtree_Rename -- Rename the specified node. (V1)
2698    SYNOPSIS
2700     struct MUI_NListtree_TreeNode *treenode =
2701         DoMethod(obj, MUIM_NListtree_Rename,
2702             struct MUI_NListtree_TreeNode *treenode,
2703             STRPTR newname, ULONG flags);
2706    FUNCTION
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.
2715    INPUTS
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.
2724     flags:
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.
2733    RESULT
2735     Returns the pointer of the renamed tree node.
2738    EXAMPLE
2740         // Rename the active tree node.
2741         DoMethod(obj, MUIM_NListtree_Rename,
2742             MUIV_NListtree_Rename_TreeNode_Active,
2743             "Very new name", 0);
2746    NOTES
2748    BUGS
2750    SEE ALSO
2752     MUIA_NListtree_ConstructHook, MUIA_NListtree_DestructHook
2755 \fNListtree.mcc/MUIM_NListtree_Select       NListtree.mcc/MUIM_NListtree_Select
2757    NAME
2759     MUIM_NListtree_Select -- Select the specified tree node. (V1)
2762    SYNOPSIS
2764     DoMethod(obj, MUIM_NListtree_Select,
2765         struct MUI_NListtree_TreeNode *treenode, LONG seltype,
2766         LONG selflags, LONG *state);
2769    FUNCTION
2771     Select or unselect a tree entry or ask an entry about its state.
2772     See special values for completeness.
2775    INPUTS
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.
2800    RESULT
2802    EXAMPLE
2804         // Select the active entry.
2805         LONG retstate;
2807         DoMethod(obj, MUIM_NListtree_Select,
2808             MUIV_NListtree_Select_Active, MUIV_NListtree_Select_On,
2809             0, &retstate);
2811         // We must check this, because the multi test hook may
2812         // cancel our selection.
2813         if (retstate == MUIV_NListtree_Select_On) {
2814             ...
2815         }
2818    NOTES
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.
2824     NEW for final 18.6:
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.
2834    BUGS
2836    SEE ALSO
2838     MUIA_NListtree_MultiTestHook
2841 \fNListtree.mcc/MUIM_NListtree_Sort           NListtree.mcc/MUIM_NListtree_Sort
2843    NAME
2845     MUIM_NListtree_Sort -- Sort the specified list node. (V1)
2848    SYNOPSIS
2850     DoMethod(obj, MUIM_NListtree_Sort,
2851         struct MUI_NListtree_TreeNode *listnode,
2852         ULONG flags);
2855    FUNCTION
2857     Sort the specified list node using the sort hook.
2860    INPUTS
2862     listnode -    List node to sort.
2864         MUIV_NListtree_Sort_ListNode_Root
2865             Sort the root list.
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'.
2883    RESULT
2885    EXAMPLE
2887         // Sort the list of the active node.
2888         DoMethod(obj, MUIM_NListtree_Sort,
2889             MUIV_NListtree_Sort_ListNode_Active, 0);
2891    NOTES
2893    BUGS
2895    SEE ALSO
2897     MUIA_NListtree_SortHook
2899 \fNListtree.mcc/MUIM_NListtree_TestPos     NListtree.mcc/MUIM_NListtree_TestPos
2901    NAME
2903     MUIM_NListtree_TestPos -- Get information about entry at x/y pos. (V1)
2906    SYNOPSIS
2908     DoMethod(obj, MUIM_NListtree_TestPos, LONG xpos, LONG ypos,
2909         struct MUI_NListtree_TestPos_Result *testposresult);
2912    FUNCTION
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.
2920    INPUTS
2922     xpos -            X-position.
2923     ypos -            Y-position.
2924     testposresult -    Pointer to a valid MUI_NListtree_TestPos_Result
2925                     structure.
2928    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
2934     position:
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
2942                     no valid column.
2945    EXAMPLE
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 )
2954         {
2955             // Do something very special here...
2956         }
2959    NOTES
2961    BUGS
2963    SEE ALSO
2965     MUIM_NList_TestPos