X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7009f411aac9aea4fd76b33dd55b1f4da3d60886..ef094fa075bc56bcbc33b12159c395ea28afda3b:/include/wx/generic/treectlg.h diff --git a/include/wx/generic/treectlg.h b/include/wx/generic/treectlg.h index d10a4e7d42..72da30c0f2 100644 --- a/include/wx/generic/treectlg.h +++ b/include/wx/generic/treectlg.h @@ -1,18 +1,18 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h +// Name: wx/generic/treectlg.h // Purpose: wxTreeCtrl class // Author: Robert Roebling // Modified by: // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) 1997,1998 Robert Roebling -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _GENERIC_TREECTRL_H_ #define _GENERIC_TREECTRL_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "treectlg.h" #endif @@ -20,18 +20,20 @@ #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; +class WXDLLEXPORT wxTextCtrl; // ----------------------------------------------------------------------------- // wxGenericTreeCtrl - the tree control @@ -116,6 +118,15 @@ public: // get the data associated with the item wxTreeItemData *GetItemData(const wxTreeItemId& item) const; + // get the item's text colour + wxColour GetItemTextColour(const wxTreeItemId& item) const; + + // get the item's background colour + wxColour GetItemBackgroundColour(const wxTreeItemId& item) const; + + // get the item's font + wxFont GetItemFont(const wxTreeItemId& item) const; + // modifiers // --------- @@ -191,7 +202,16 @@ public: size_t GetSelections(wxArrayTreeItemIds&) const; // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; + wxTreeItemId GetItemParent(const wxTreeItemId& item) const; + +#if WXWIN_COMPATIBILITY_2_2 + // deprecated: Use GetItemParent instead. + wxTreeItemId GetParent(const wxTreeItemId& item) const + { return GetItemParent( item ); } + + // Expose the base class method hidden by the one above. + wxWindow *GetParent() const { return wxScrolledWindow::GetParent(); } +#endif // WXWIN_COMPATIBILITY_2_2 // for this enumeration function you must pass in a "cookie" parameter // which is opaque for the application but is necessary for the library @@ -305,6 +325,10 @@ public: // been before. void EditLabel( const wxTreeItemId& item ) { Edit( item ); } void Edit( const wxTreeItemId& item ); + // returns a pointer to the text edit control if the item is being + // edited, NULL otherwise (it's assumed that no more than one item may + // be edited simultaneously) + wxTextCtrl* GetEditControl() const; // sorting // this function is called to compare 2 items and should return -1, 0 @@ -341,21 +365,20 @@ 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, + // A hint to select a parent item after deleting a child + *m_select_me; unsigned short m_indent; unsigned short m_spacing; int m_lineHeight; @@ -368,7 +391,6 @@ protected: 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, @@ -379,24 +401,43 @@ protected: wxGenericTreeItem *m_dropTarget; wxCursor m_oldCursor; // cursor is changed while dragging wxGenericTreeItem *m_oldSelection; + wxTreeTextCtrl *m_textCtrl; 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); + + // called by wxTextTreeCtrl when it marks itself for deletion + void ResetTextControl(); + + // 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 ); @@ -416,7 +457,8 @@ protected: 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 ); @@ -424,11 +466,10 @@ 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) + DECLARE_NO_COPY_CLASS(wxGenericTreeCtrl) }; #if !defined(__WXMSW__) || defined(__WIN16__) || defined(__WXUNIVERSAL__)