X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/618a5e382af2e469f9cc9d2aa81114403637a4b3..47dc9f78713d756fe0426a9f747a0f1151323b6a:/include/wx/generic/treectlg.h diff --git a/include/wx/generic/treectlg.h b/include/wx/generic/treectlg.h index a330263f1d..8d88362e3a 100644 --- a/include/wx/generic/treectlg.h +++ b/include/wx/generic/treectlg.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h +// Name: wx/generic/treectlg.h // Purpose: wxTreeCtrl class // Author: Robert Roebling // Modified by: @@ -12,7 +12,7 @@ #ifndef _GENERIC_TREECTRL_H_ #define _GENERIC_TREECTRL_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "treectlg.h" #endif @@ -20,17 +20,18 @@ #include "wx/scrolwin.h" #include "wx/pen.h" +#include "wx/imaglist.h" // ----------------------------------------------------------------------------- // forward declaration // ----------------------------------------------------------------------------- -class WXDLLEXPORT wxImageList; class WXDLLEXPORT wxGenericTreeItem; class WXDLLEXPORT wxTreeItemData; class WXDLLEXPORT wxTreeRenameTimer; +class WXDLLEXPORT wxTreeFindTimer; class WXDLLEXPORT wxTreeTextCtrl; // ----------------------------------------------------------------------------- @@ -81,10 +82,10 @@ public: void SetSpacing(unsigned int spacing); // image list: these functions allow to associate an image list with - // the control and retrieve it. Note that when assigned with + // the control and retrieve it. Note that when assigned with // SetImageList, 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. If you use + // lists to be shared between different controls. If you use // AssignImageList, the control _does_ delete the image list. // // The normal image list is for the icons which correspond to the @@ -222,7 +223,6 @@ public: // Only for internal use right now, but should probably be public wxTreeItemId GetNext(const wxTreeItemId& item) const; - wxTreeItemId GetPrev(const wxTreeItemId& item) const; // operations // ---------- @@ -329,6 +329,10 @@ public: // implementation only from now on + // overridden base class virtuals + virtual bool SetBackgroundColour(const wxColour& colour); + virtual bool SetForegroundColour(const wxColour& colour); + // callbacks void OnPaint( wxPaintEvent &event ); void OnSetFocus( wxFocusEvent &event ); @@ -338,33 +342,30 @@ public: void OnIdle( wxIdleEvent &event ); // implementation helpers - void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted); - - void DrawBorder(const wxTreeItemId& item); - void DrawLine(const wxTreeItemId& item, bool below); - protected: friend class wxGenericTreeItem; friend class wxTreeRenameTimer; + friend class wxTreeFindTimer; friend class wxTreeTextCtrl; wxFont m_normalFont; wxFont m_boldFont; wxGenericTreeItem *m_anchor; - wxGenericTreeItem *m_current, *m_key_current, *m_currentEdit; + wxGenericTreeItem *m_current, + *m_key_current; unsigned short m_indent; unsigned short m_spacing; int m_lineHeight; wxPen m_dottedPen; - wxBrush *m_hilightBrush; + wxBrush *m_hilightBrush, + *m_hilightUnfocusedBrush; bool m_hasFocus; bool m_dirty; - bool m_ownsImageListNormal, + bool m_ownsImageListNormal, m_ownsImageListState, m_ownsImageListButtons; bool m_isDragging; // true between BEGIN/END drag events - bool m_renameAccept; bool m_lastOnSame; // last click on the same item as prev wxImageList *m_imageListNormal, *m_imageListState, @@ -377,22 +378,37 @@ protected: wxGenericTreeItem *m_oldSelection; wxTimer *m_renameTimer; - wxString m_renameRes; + + wxBitmap *m_arrowRight, + *m_arrowDown; + + // incremental search data + wxString m_findPrefix; + wxTimer *m_findTimer; // the common part of all ctors void Init(); // misc helpers + void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted); + + void DrawBorder(const wxTreeItemId& item); + void DrawLine(const wxTreeItemId& item, bool below); + void DrawDropEffect(wxGenericTreeItem *item); + wxTreeItemId DoInsertItem(const wxTreeItemId& parent, size_t previous, const wxString& text, int image, int selectedImage, wxTreeItemData *data); + + // find the first item starting with the given prefix after the given item + wxTreeItemId FindItem(const wxTreeItemId& id, const wxString& prefix) const; + bool HasButtons(void) const { return (m_imageListButtons != NULL) || HasFlag(wxTR_TWIST_BUTTONS|wxTR_HAS_BUTTONS); } -protected: void CalculateLineHeight(); int GetLineHeight(wxGenericTreeItem *item) const; void PaintLevel( wxGenericTreeItem *item, wxDC& dc, int level, int &y ); @@ -405,8 +421,15 @@ protected: void RefreshSubtree( wxGenericTreeItem *item ); void RefreshLine( wxGenericTreeItem *item ); + // redraw all selected items + void RefreshSelected(); + + // RefreshSelected() recursive helper + void RefreshSelectedUnder(wxGenericTreeItem *item); + void OnRenameTimer(); - void OnRenameAccept(); + bool OnRenameAccept(wxGenericTreeItem *item, const wxString& value); + void OnRenameCancelled(wxGenericTreeItem *item); void FillArray(wxGenericTreeItem*, wxArrayTreeItemIds&) const; void SelectItemRange( wxGenericTreeItem *item1, wxGenericTreeItem *item2 ); @@ -414,8 +437,6 @@ protected: bool TagNextChildren(wxGenericTreeItem *crt_item, wxGenericTreeItem *last_item, bool select); void UnselectAllChildren( wxGenericTreeItem *item ); - void DrawDropEffect(wxGenericTreeItem *item); - private: DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxGenericTreeCtrl)