X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/22574b4a9c8a805d2d476aa6f531e408b647523e..ca44dbde5f44e358fba98c24adf792a97f7db19c:/include/wx/treectrl.h diff --git a/include/wx/treectrl.h b/include/wx/treectrl.h index 0b4587bc79..77a10793c7 100644 --- a/include/wx/treectrl.h +++ b/include/wx/treectrl.h @@ -24,13 +24,13 @@ #include "wx/treebase.h" #include "wx/textctrl.h" // wxTextCtrl::ms_classinfo used through CLASSINFO macro -class WXDLLEXPORT wxImageList; +class WXDLLIMPEXP_FWD_CORE wxImageList; // ---------------------------------------------------------------------------- // wxTreeCtrlBase // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeCtrlBase : public wxControl +class WXDLLIMPEXP_CORE wxTreeCtrlBase : public wxControl { public: wxTreeCtrlBase() @@ -42,6 +42,9 @@ public: // arbitrary default m_spacing = 18; + + // quick DoGetBestSize calculation + m_quickBestSize = true; } virtual ~wxTreeCtrlBase(); @@ -50,7 +53,7 @@ public: // --------- // get the total number of items in the control - virtual size_t GetCount() const = 0; + virtual unsigned int GetCount() const = 0; // indent is the number of pixels the children are indented relative to // the parents position. SetIndent() also redraws the control @@ -115,12 +118,18 @@ public: // get the item's font virtual wxFont GetItemFont(const wxTreeItemId& item) const = 0; + // get the items state + int GetItemState(const wxTreeItemId& item) const + { + return DoGetItemState(item); + } + // modifiers // --------- // set items label virtual void SetItemText(const wxTreeItemId& item, const wxString& text) = 0; - // get one of the images associated with the item (normal by default) + // set one of the images associated with the item (normal by default) virtual void SetItemImage(const wxTreeItemId& item, int image, wxTreeItemIcon which = wxTreeItemIcon_Normal) = 0; @@ -153,6 +162,9 @@ public: virtual void SetItemFont(const wxTreeItemId& item, const wxFont& font) = 0; + // set the items state (special state values: wxTREE_ITEMSTATE_NONE/NEXT/PREV) + void SetItemState(const wxTreeItemId& item, int state); + // item status inquiries // --------------------- @@ -169,6 +181,9 @@ public: virtual bool IsSelected(const wxTreeItemId& item) const = 0; // is item text in bold font? virtual bool IsBold(const wxTreeItemId& item) const = 0; + // is the control empty? + bool IsEmpty() const; + // number of children // ------------------ @@ -284,8 +299,16 @@ public: // expand this item virtual void Expand(const wxTreeItemId& item) = 0; + // expand the item and all its children recursively + void ExpandAllChildren(const wxTreeItemId& item); + // expand all items + void ExpandAll(); // collapse the item without removing its children virtual void Collapse(const wxTreeItemId& item) = 0; + // collapse the item and all its children + void CollapseAllChildren(const wxTreeItemId& item); + // collapse all items + void CollapseAll(); // collapse the item and remove all children virtual void CollapseAndReset(const wxTreeItemId& item) = 0; // toggles the current state @@ -350,9 +373,9 @@ public: // coordinates specified are relative to the client area of tree ctrl) // and, in the second variant, fill the flags parameter with a bitmask // of wxTREE_HITTEST_xxx constants. - wxTreeItemId HitTest(const wxPoint& point) + wxTreeItemId HitTest(const wxPoint& point) const { int dummy; return DoTreeHitTest(point, dummy); } - wxTreeItemId HitTest(const wxPoint& point, int& flags) + wxTreeItemId HitTest(const wxPoint& point, int& flags) const { return DoTreeHitTest(point, flags); } // get the bounding rectangle of the item (or of its label only) @@ -366,9 +389,17 @@ public: virtual bool ShouldInheritColours() const { return false; } + // hint whether to calculate best size quickly or accurately + void SetQuickBestSize(bool q) { m_quickBestSize = q; } + bool GetQuickBestSize() const { return m_quickBestSize; } + protected: virtual wxSize DoGetBestSize() const; + // comon part of Get/SetItemState() + virtual int DoGetItemState(const wxTreeItemId& item) const = 0; + virtual void DoSetItemState(const wxTreeItemId& item, int state) = 0; + // common part of Append/Prepend/InsertItem() // // pos is the position at which to insert the item or (size_t)-1 to append @@ -391,7 +422,8 @@ protected: // real HitTest() implementation: again, can't be called just HitTest() // because it's overloaded and so the non-virtual overload would be hidden // (and can't be called DoHitTest() because this is already in wxWindow) - virtual wxTreeItemId DoTreeHitTest(const wxPoint& point, int& flags) = 0; + virtual wxTreeItemId DoTreeHitTest(const wxPoint& point, + int& flags) const = 0; wxImageList *m_imageListNormal, // images for tree elements @@ -402,6 +434,9 @@ protected: // spacing between left border and the text unsigned int m_spacing; + // whether full or quick calculation is done in DoGetBestSize + bool m_quickBestSize; + DECLARE_NO_COPY_CLASS(wxTreeCtrlBase) }; @@ -413,7 +448,7 @@ protected: #if defined(__WXUNIVERSAL__) #include "wx/generic/treectlg.h" #elif defined(__WXPALMOS__) - #include "wx/palmos/treectrl.h" + #include "wx/generic/treectlg.h" #elif defined(__WXMSW__) #include "wx/msw/treectrl.h" #elif defined(__WXMOTIF__)