| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/os2/treectrl.h
 
- // Purpose:     wxTreeCtrl class
 
- // Author:      David Webster
 
- // Modified by:
 
- // Created:     01/23/03
 
- // Copyright:   (c) David Webster
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_TREECTRL_H_
 
- #define _WX_TREECTRL_H_
 
- // ----------------------------------------------------------------------------
 
- // headers
 
- // ----------------------------------------------------------------------------
 
- #if wxUSE_TREECTRL
 
- #include "wx/textctrl.h"
 
- #include "wx/dynarray.h"
 
- #include "wx/treebase.h"
 
- #include "wx/hashmap.h"
 
- // the type for "untyped" data
 
- typedef long wxDataType;
 
- // fwd decl
 
- class  WXDLLIMPEXP_CORE wxImageList;
 
- class  WXDLLIMPEXP_CORE wxDragImage;
 
- struct WXDLLIMPEXP_FWD_CORE wxTreeViewItem;
 
- // a callback function used for sorting tree items, it should return -1 if the
 
- // first item precedes the second, +1 if the second precedes the first or 0 if
 
- // they're equivalent
 
- class wxTreeItemData;
 
- #if WXWIN_COMPATIBILITY_2_6
 
-     // flags for deprecated InsertItem() variant
 
-     #define wxTREE_INSERT_FIRST 0xFFFF0001
 
-     #define wxTREE_INSERT_LAST  0xFFFF0002
 
- #endif
 
- // hash storing attributes for our items
 
- WX_DECLARE_EXPORTED_VOIDPTR_HASH_MAP(wxTreeItemAttr *, wxMapTreeAttr);
 
- // ----------------------------------------------------------------------------
 
- // wxTreeCtrl
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxTreeCtrl : public wxControl
 
- {
 
- public:
 
-     // creation
 
-     // --------
 
-     wxTreeCtrl() { Init(); }
 
-     wxTreeCtrl( wxWindow*          pParent
 
-                ,wxWindowID         vId = wxID_ANY
 
-                ,const wxPoint&     rPos = wxDefaultPosition
 
-                ,const wxSize&      rSize = wxDefaultSize
 
-                ,long               lStyle = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT
 
-                ,const wxValidator& rValidator = wxDefaultValidator
 
-                ,const wxString&    rsName = wxTreeCtrlNameStr
 
-               )
 
-     {
 
-         Create( pParent
 
-                ,vId
 
-                ,rPos
 
-                ,rSize
 
-                ,lStyle
 
-                ,rValidator
 
-                ,rsName
 
-               );
 
-     }
 
-     virtual ~wxTreeCtrl();
 
-     bool Create( wxWindow*          pParent
 
-                 ,wxWindowID         vId = wxID_ANY
 
-                 ,const wxPoint&     rPos = wxDefaultPosition
 
-                 ,const wxSize&      rSize = wxDefaultSize
 
-                 ,long               lStyle = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT
 
-                 ,const wxValidator& rValidator = wxDefaultValidator
 
-                 ,const wxString&    rsName = wxTreeCtrlNameStr
 
-                );
 
-     //
 
-     // Accessors
 
-     // ---------
 
-     //
 
-     //
 
-     // Get the total number of items in the control
 
-     //
 
-     virtual unsigned int GetCount(void) const;
 
-     //
 
-     // Indent is the number of pixels the children are indented relative to
 
-     // the parents position. SetIndent() also redraws the control
 
-     // immediately.
 
-     //
 
-     unsigned int GetIndent(void) const;
 
-     void         SetIndent(unsigned int uIndent);
 
-     //
 
-     // Spacing is the number of pixels between the start and the Text
 
-     //
 
-     unsigned int GetSpacing(void) const { return 18; } // return wxGTK default
 
-     void SetSpacing(unsigned int uSpacing) { }
 
-     //
 
-     // Image list: these functions allow to associate an image list with
 
-     // the control and retrieve it. Note that the control does _not_ delete
 
-     // the associated image list when it's deleted in order to allow image
 
-     // lists to be shared between different controls.
 
-     //
 
-     // OS/2 doesn't really use imagelists as MSW does, but since the MSW
 
-     // control is the basis for this one, until I decide how to get rid of
 
-     // the need for them they are here for now.
 
-     //
 
-     wxImageList* GetImageList(void) const;
 
-     wxImageList* GetStateImageList(void) const;
 
-     void         AssignImageList(wxImageList* pImageList);
 
-     void         AssignStateImageList(wxImageList* pImageList);
 
-     void         SetImageList(wxImageList* pImageList);
 
-     void         SetStateImageList(wxImageList* pImageList);
 
-     //
 
-     // Functions to work with tree ctrl items. Unfortunately, they can _not_ be
 
-     // member functions of wxTreeItem because they must know the tree the item
 
-     // belongs to for Windows implementation and storing the pointer to
 
-     // wxTreeCtrl in each wxTreeItem is just too much waste.
 
-     //
 
-     // Item's label
 
-     //
 
-     wxString GetItemText(const wxTreeItemId& rItem) const;
 
-     void     SetItemText( const wxTreeItemId& rItem
 
-                          ,const wxString&     rsText
 
-                         );
 
-     //
 
-     // One of the images associated with the item (normal by default)
 
-     //
 
-     int  GetItemImage( const wxTreeItemId& rItem
 
-                       ,wxTreeItemIcon      vWhich = wxTreeItemIcon_Normal
 
-                      ) const;
 
-     void SetItemImage( const wxTreeItemId& rItem
 
-                       ,int                 nImage
 
-                       ,wxTreeItemIcon      vWhich = wxTreeItemIcon_Normal
 
-                      );
 
-     //
 
-     // Data associated with the item
 
-     //
 
-     wxTreeItemData* GetItemData(const wxTreeItemId& rItem) const;
 
-     void            SetItemData( const wxTreeItemId& rItem
 
-                                 ,wxTreeItemData*     pData
 
-                                );
 
-     //
 
-     // Item's text colour
 
-     //
 
-     wxColour GetItemTextColour(const wxTreeItemId& rItem) const;
 
-     void     SetItemTextColour( const wxTreeItemId& rItem
 
-                                ,const wxColour&     rColor
 
-                               );
 
-     //
 
-     // Item's background colour
 
-     //
 
-     wxColour GetItemBackgroundColour(const wxTreeItemId& rItem) const;
 
-     void     SetItemBackgroundColour( const wxTreeItemId& rItem
 
-                                      ,const wxColour&     rColour
 
-                                     );
 
-     //
 
-     // Item's font
 
-     //
 
-     wxFont GetItemFont(const wxTreeItemId& rItem) const;
 
-     void   SetItemFont( const wxTreeItemId& rItem
 
-                        ,const wxFont&       rFont
 
-                       );
 
-     //
 
-     // Force appearance of [+] button near the item. This is useful to
 
-     // allow the user to expand the items which don't have any children now
 
-     // - but instead add them only when needed, thus minimizing memory
 
-     // usage and loading time.
 
-     //
 
-     void SetItemHasChildren( const wxTreeItemId& rItem
 
-                             ,bool                bHas = true
 
-                            );
 
-     //
 
-     // The item will be shown in bold
 
-     //
 
-     void SetItemBold( const wxTreeItemId& rItem
 
-                      ,bool                bBold = true
 
-                     );
 
-     //
 
-     // The item will be shown with a drop highlight
 
-     //
 
-     void SetItemDropHighlight( const wxTreeItemId& rItem
 
-                               ,bool                bHighlight = true
 
-                              );
 
-     //
 
-     // Item status inquiries
 
-     // ---------------------
 
-     //
 
-     //
 
-     // Is the item visible (it might be outside the view or not expanded)?
 
-     //
 
-     bool IsVisible(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Does the item has any children?
 
-     //
 
-     bool ItemHasChildren(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Is the item expanded (only makes sense if HasChildren())?
 
-     //
 
-     bool IsExpanded(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Is this item currently selected (the same as has focus)?
 
-     //
 
-     bool IsSelected(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Is item text in bold font?
 
-     //
 
-     bool IsBold(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Number of children
 
-     // ------------------
 
-     //
 
-     //
 
-     // If 'bRecursively' is false, only immediate children count, otherwise
 
-     // the returned number is the number of all items in this branch
 
-     //
 
-     size_t GetChildrenCount( const wxTreeItemId& rItem
 
-                             ,bool                bRecursively = true
 
-                            ) const;
 
-     //
 
-     // Navigation
 
-     // ----------
 
-     //
 
-     //
 
-     // Get the root tree item
 
-     //
 
-     wxTreeItemId GetRootItem(void) const;
 
-     //
 
-     // Get the item currently selected (may return NULL if no selection)
 
-     //
 
-     wxTreeItemId GetSelection(void) const;
 
-     //
 
-     // Get the items currently selected, return the number of such item
 
-     //
 
-     size_t GetSelections(wxArrayTreeItemIds& rSelections) const;
 
-     //
 
-     // Get the parent of this item (may return NULL if root)
 
-     //
 
-     wxTreeItemId GetItemParent(const wxTreeItemId& rItem) const;
 
-         // for this enumeration function you must pass in a "cookie" parameter
 
-         // which is opaque for the application but is necessary for the library
 
-         // to make these functions reentrant (i.e. allow more than one
 
-         // enumeration on one and the same object simultaneously). Of course,
 
-         // the "cookie" passed to GetFirstChild() and GetNextChild() should be
 
-         // the same!
 
-         // get the first child of this item
 
-     wxTreeItemId GetFirstChild(const wxTreeItemId& item,
 
-                                wxTreeItemIdValue& cookie) const;
 
-         // get the next child
 
-     wxTreeItemId GetNextChild(const wxTreeItemId& item,
 
-                               wxTreeItemIdValue& cookie) const;
 
-     //
 
-     // Get the last child of this item - this method doesn't use cookies
 
-     //
 
-     wxTreeItemId GetLastChild(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Get the next sibling of this item
 
-     //
 
-     wxTreeItemId GetNextSibling(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Get the previous sibling
 
-     //
 
-     wxTreeItemId GetPrevSibling(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Get first visible item
 
-     //
 
-     wxTreeItemId GetFirstVisibleItem(void) const;
 
-     //
 
-     // Get the next visible item: item must be visible itself!
 
-     // see IsVisible() and wxTreeCtrl::GetFirstVisibleItem()
 
-     //
 
-     wxTreeItemId GetNextVisible(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Get the previous visible item: item must be visible itself!
 
-     //
 
-     wxTreeItemId GetPrevVisible(const wxTreeItemId& rItem) const;
 
-     //
 
-     // Operations
 
-     // ----------
 
-     //
 
-     //
 
-     // Add the root node to the tree
 
-     //
 
-     wxTreeItemId AddRoot( const wxString& rsText
 
-                          ,int             nImage = -1
 
-                          ,int             nSelectedImage = -1
 
-                          ,wxTreeItemData* pData = NULL
 
-                         );
 
-     //
 
-     // Insert a new item in as the first child of the parent
 
-     //
 
-     wxTreeItemId PrependItem( const wxTreeItemId& rParent
 
-                              ,const wxString&     rsText
 
-                              ,int                 nImage = -1
 
-                              ,int                 nSelectedImage = -1
 
-                              ,wxTreeItemData*     pData = NULL
 
-                             );
 
-     //
 
-     // Insert a new item after a given one
 
-     //
 
-     wxTreeItemId InsertItem( const wxTreeItemId& rParent
 
-                             ,const wxTreeItemId& rIdPrevious
 
-                             ,const wxString&     rsText
 
-                             ,int                 nImage = -1
 
-                             ,int                 nSelectedImage = -1
 
-                             ,wxTreeItemData*     pData = NULL
 
-                            );
 
-     //
 
-     // Insert a new item before the one with the given index
 
-     //
 
-     wxTreeItemId InsertItem( const wxTreeItemId& pParent
 
-                             ,size_t              nIndex
 
-                             ,const wxString&     rsText
 
-                             ,int                 nImage = -1
 
-                             ,int                 nSelectedImage = -1
 
-                             ,wxTreeItemData*     pData = NULL
 
-                            );
 
-     //
 
-     // Insert a new item in as the last child of the parent
 
-     //
 
-     wxTreeItemId AppendItem( const wxTreeItemId& rParent
 
-                             ,const wxString&     rsText
 
-                             ,int                 nImage = -1
 
-                             ,int                 nSelectedImage = -1
 
-                             ,wxTreeItemData*     pData = NULL
 
-                            );
 
-     //
 
-     // Delete this item and associated data if any
 
-     //
 
-     void Delete(const wxTreeItemId& rItem);
 
-     //
 
-     // Delete all children (but don't delete the item itself)
 
-     //
 
-     void DeleteChildren(const wxTreeItemId& rItem);
 
-     //
 
-     // Delete all items from the tree
 
-     //
 
-     void DeleteAllItems(void);
 
-     //
 
-     // Expand this item
 
-     //
 
-     void Expand(const wxTreeItemId& rItem);
 
-     //
 
-     // Collapse the item without removing its children
 
-     //
 
-     void Collapse(const wxTreeItemId& rItem);
 
-     //
 
-     // Collapse the item and remove all children
 
-     //
 
-     void CollapseAndReset(const wxTreeItemId& rItem);
 
-     //
 
-     // Toggles the current state
 
-     //
 
-     void Toggle(const wxTreeItemId& rItem);
 
-     //
 
-     // Remove the selection from currently selected item (if any)
 
-     //
 
-     void Unselect(void);
 
-     //
 
-     // Unselect all items (only makes sense for multiple selection control)
 
-     //
 
-     void UnselectAll(void);
 
-     //
 
-     // Select this item
 
-     //
 
-     void SelectItem(const wxTreeItemId& rItem);
 
-     //
 
-     // Make sure this item is visible (expanding the parent item and/or
 
-     // scrolling to this item if necessary)
 
-     //
 
-     void EnsureVisible(const wxTreeItemId& rItem);
 
-     //
 
-     // Scroll to this item (but don't expand its parent)
 
-     //
 
-     void ScrollTo(const wxTreeItemId& rItem);
 
-     //
 
-     // OS/2 does not use a separate edit field for editting text. Here for
 
-     // interface compatibility, only.
 
-     //
 
-     wxTextCtrl* EditLabel( const wxTreeItemId& rItem
 
-                           ,wxClassInfo*        pTextCtrlClass = wxCLASSINFO(wxTextCtrl)
 
-                          );
 
-     //
 
-     // returns NULL for OS/2 in ALL cases
 
-     //
 
-     wxTextCtrl* GetEditControl(void) const {return NULL;}
 
-     //
 
-     // End editing and accept or discard the changes to item label
 
-     //
 
-     void EndEditLabel( const wxTreeItemId& rItem
 
-                       ,bool                bDiscardChanges = false
 
-                      );
 
-     //
 
-     // Sorting
 
-     // -------
 
-     //
 
-     //
 
-     // This function is called to compare 2 items and should return -1, 0
 
-     // or +1 if the first item is less than, equal to or greater than the
 
-     // second one. The base class version performs alphabetic comparaison
 
-     // of item labels (GetText)
 
-     //
 
-     virtual int OnCompareItems( const wxTreeItemId& rItem1
 
-                                ,const wxTreeItemId& rItem2
 
-                               );
 
-     //
 
-     // Sort the children of this item using OnCompareItems
 
-     //
 
-     void SortChildren(const wxTreeItemId& rItem);
 
-     //
 
-     // Helpers
 
-     // -------
 
-     //
 
-     //
 
-     // Determine to which item (if any) belongs the given point (the
 
-     // coordinates specified are relative to the client area of tree ctrl)
 
-     // and fill the flags parameter with a bitmask of wxTREE_HITTEST_xxx
 
-     // constants.
 
-     //
 
-     // The first function is more portable (because easier to implement
 
-     // on other platforms), but the second one returns some extra info.
 
-     //
 
-     wxTreeItemId HitTest(const wxPoint& rPoint)
 
-         { int nDummy = 0; return HitTest(rPoint, nDummy); }
 
-     wxTreeItemId HitTest( const wxPoint& rPoint
 
-                          ,int&           rFlags
 
-                         );
 
-     //
 
-     // Get the bounding rectangle of the item (or of its label only)
 
-     //
 
-     bool GetBoundingRect( const wxTreeItemId& rItem
 
-                          ,wxRect&             rRect
 
-                          ,bool                bTextOnly = false
 
-                         ) const;
 
-     //
 
-     // Implementation
 
-     // --------------
 
-     //
 
-     virtual MRESULT OS2WindowProc( WXUINT   uMsg
 
-                                   ,WXWPARAM wParam
 
-                                   ,WXLPARAM lParam
 
-                                  );
 
-     virtual bool    OS2Command( WXUINT uParam
 
-                                ,WXWORD wId
 
-                               );
 
- //    virtual bool    OMSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
 
-     //
 
-     // Override some base class virtuals
 
-     //
 
-     virtual bool SetBackgroundColour(const wxColour& rColour);
 
-     virtual bool SetForegroundColour(const wxColour& rColour);
 
-     //
 
-     // Get/set the check state for the item (only for wxTR_MULTIPLE)
 
-     //
 
-     bool IsItemChecked(const wxTreeItemId& rItem) const;
 
-     void SetItemCheck( const wxTreeItemId& rItem
 
-                       ,bool                bCheck = true
 
-                      );
 
- protected:
 
-     //
 
-     // SetImageList helper
 
-     //
 
-     void SetAnyImageList( wxImageList* pImageList
 
-                          ,int          nWhich
 
-                         );
 
-     //
 
-     // Refresh a single item
 
-     //
 
-     void RefreshItem(const wxTreeItemId& rItem);
 
-     wxImageList*                    m_pImageListNormal; // images for tree elements
 
-     wxImageList*                    m_pImageListState;  // special images for app defined states
 
-     bool                            m_bOwnsImageListNormal;
 
-     bool                            m_bOwnsImageListState;
 
- private:
 
-     //
 
-     // The common part of all ctors
 
-     //
 
-     void Init(void);
 
-     //
 
-     // Helper functions
 
-     //
 
-     inline bool DoGetItem(wxTreeViewItem* pTvItem) const;
 
-     inline void DoSetItem(wxTreeViewItem* pTvItem);
 
-     inline void DoExpand( const wxTreeItemId& rItem
 
-                          ,int                 nFlag
 
-                         );
 
-     wxTreeItemId DoInsertItem( const wxTreeItemId& pParent
 
-                               ,wxTreeItemId        hInsertAfter
 
-                               ,const wxString&     rsText
 
-                               ,int                 nImage
 
-                               ,int                 nSelectedImage
 
-                               ,wxTreeItemData*     pData
 
-                              );
 
-     int  DoGetItemImageFromData( const wxTreeItemId& rItem
 
-                                 ,wxTreeItemIcon      vWhich
 
-                                ) const;
 
-     void DoSetItemImageFromData( const wxTreeItemId& rItem
 
-                                 ,int                 nImage
 
-                                 ,wxTreeItemIcon      vWhich
 
-                                ) const;
 
-     void DoSetItemImages( const wxTreeItemId& rItem
 
-                          ,int                 nImage
 
-                          ,int                 nImageSel
 
-                         );
 
-     void DeleteTextCtrl() { }
 
-     //
 
-     // support for additional item images which we implement using
 
-     // wxTreeItemIndirectData technique - see the comments in msw/treectrl.cpp
 
-     //
 
-     void SetIndirectItemData( const wxTreeItemId&           rItem
 
-                              ,class wxTreeItemIndirectData* pData
 
-                             );
 
-     bool HasIndirectData(const wxTreeItemId& rItem) const;
 
-     bool IsDataIndirect(wxTreeItemData* pData) const
 
-         { return pData && pData->GetId().m_pItem == 0; }
 
-     //
 
-     // The hash storing the items attributes (indexed by items ids)
 
-     //
 
-     wxMapTreeAttr                   m_vAttrs;
 
-     //
 
-     // true if the hash above is not empty
 
-     //
 
-     bool                            m_bHasAnyAttr;
 
-     //
 
-     // Used for dragging
 
-     //
 
-     wxDragImage*                    m_pDragImage;
 
-     // Virtual root item, if wxTR_HIDE_ROOT is set.
 
- //    void* m_pVirtualRoot;
 
-     // the starting item for selection with Shift
 
- //    WXHTREEITEM m_htSelStart;
 
- //
 
-     friend class wxTreeItemIndirectData;
 
-     friend class wxTreeSortHelper;
 
-     DECLARE_DYNAMIC_CLASS(wxTreeCtrl)
 
-     wxDECLARE_NO_COPY_CLASS(wxTreeCtrl);
 
- }; // end of CLASS wxTreeCtrl
 
- #endif // wxUSE_TREECTRL
 
- #endif
 
-     // _WX_TREECTRL_H_
 
 
  |