X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/16e93305f2bae16652b6750dffe3bcf05c20d839..74295623bb14ed23da081f002aa99380d5c1a2e2:/include/wx/msw/treectrl.h?ds=sidebyside diff --git a/include/wx/msw/treectrl.h b/include/wx/msw/treectrl.h index 716be96073..429aa6983e 100644 --- a/include/wx/msw/treectrl.h +++ b/include/wx/msw/treectrl.h @@ -21,10 +21,16 @@ #include "wx/control.h" #include "wx/event.h" +#include "wx/textctrl.h" -#ifdef __MINGW32__ -#undef GetFirstChild() -#undef GetNextSibling() +#ifdef __GNUWIN32__ +# ifdef GetFirstChild +# undef GetFirstChild +# endif + +# ifdef GetNextSibling +# undef GetNextSibling +# endif #endif // the type for "untyped" data @@ -38,7 +44,6 @@ struct WXDLLEXPORT wxTreeViewItem; // first item precedes the second, +1 if the second precedes the first or 0 if // they're equivalent class wxTreeItemData; -typedef int (*wxTreeItemCmpFunc)(wxTreeItemData *item1, wxTreeItemData *item2); // ---------------------------------------------------------------------------- // constants @@ -146,7 +151,11 @@ public: // accessors: set/get the item associated with this node void SetId(const wxTreeItemId& id) { m_itemId = id; } +#ifdef __WATCOMC__ + const wxTreeItemId GetId() const { return m_itemId; } +#else const wxTreeItemId& GetId() const { return (wxTreeItemId&) m_itemId; } +#endif }; // ---------------------------------------------------------------------------- @@ -190,6 +199,11 @@ public: unsigned int GetIndent() const; void SetIndent(unsigned int indent); + // spacing is the number of pixels between the start and the Text + // not implemented under wxMSW + unsigned int GetSpacing() const { return 18; } // return wxGTK default + void SetSpacing(unsigned int ) {} + // 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 @@ -244,6 +258,9 @@ public: // the item will be shown in bold void SetItemBold(const wxTreeItemId& item, bool bold = TRUE); + // the item will be shown with a drop highlight + void SetItemDropHighlight(const wxTreeItemId& item, bool highlight = TRUE); + // item status inquiries // --------------------- @@ -290,6 +307,8 @@ public: wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& _cookie) const; // get the next child wxTreeItemId GetNextChild(const wxTreeItemId& item, long& _cookie) const; + // get the last child of this item - this method doesn't use cookies + wxTreeItemId GetLastChild(const wxTreeItemId& item) const; // get the next sibling of this item wxTreeItemId GetNextSibling(const wxTreeItemId& item) const; @@ -333,7 +352,11 @@ public: // delete this item and associated data if any void Delete(const wxTreeItemId& item); + // delete all children (but don't delete the item itself) + // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events + void DeleteChildren(const wxTreeItemId& item); // delete all items from the tree + // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events void DeleteAllItems(); // expand this item @@ -368,13 +391,17 @@ public: // end editing and accept or discard the changes to item label void EndEditLabel(const wxTreeItemId& item, bool discardChanges = FALSE); - // sort the children of this item using the specified callback function - // (it should return -1, 0 or +1 as usual), if it's not specified - // alphabetical comparaison is performed. + // 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& item1, + const wxTreeItemId& item2); + // sort the children of this item using OnCompareItems // - // NB: this function is not reentrant! - void SortChildren(const wxTreeItemId& item, - wxTreeItemCmpFunc *cmpFunction = NULL); + // NB: this function is not reentrant and not MT-safe (FIXME)! + void SortChildren(const wxTreeItemId& item); // helpers // ------- @@ -391,8 +418,7 @@ public: wxTreeItemId HitTest(const wxPoint& point, int& flags); // get the bounding rectangle of the item (or of its label only) - // @@@ do we really need to expose this functions to the application? - void GetBoundingRect(const wxTreeItemId& item, + bool GetBoundingRect(const wxTreeItemId& item, wxRect& rect, bool textOnly = FALSE) const; @@ -421,9 +447,8 @@ public: // implementation // -------------- - void Command(wxCommandEvent& event) { ProcessCommand(event); }; virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); + virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); protected: // SetImageList helper @@ -530,5 +555,8 @@ typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&); // be deleted just after the return of this event handler (if any) #define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, +// GetItem() returns the item that was activated (double click, enter, space) +#define EVT_TREE_ITEM_ACTIVATED(id, fn) { wxEVT_COMMAND_TREE_ITEM_ACTIVATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, + #endif // _WX_TREECTRL_H_