X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e4f8ee25683fe9c7ec6e8272608124e332700ac..e733c4ce1e24cf7e4b0b0d8362fc59aaa7a7641c:/include/wx/generic/treectlg.h diff --git a/include/wx/generic/treectlg.h b/include/wx/generic/treectlg.h index 833cfd1cc7..53b3942835 100644 --- a/include/wx/generic/treectlg.h +++ b/include/wx/generic/treectlg.h @@ -4,7 +4,6 @@ // Author: Robert Roebling // Modified by: // Created: 01/02/97 -// RCS-ID: $Id$ // Copyright: (c) 1997,1998 Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -21,20 +20,20 @@ // forward declaration // ----------------------------------------------------------------------------- -class WXDLLEXPORT wxGenericTreeItem; +class WXDLLIMPEXP_FWD_CORE wxGenericTreeItem; -class WXDLLEXPORT wxTreeItemData; +class WXDLLIMPEXP_FWD_CORE wxTreeItemData; -class WXDLLEXPORT wxTreeRenameTimer; -class WXDLLEXPORT wxTreeFindTimer; -class WXDLLEXPORT wxTreeTextCtrl; -class WXDLLEXPORT wxTextCtrl; +class WXDLLIMPEXP_FWD_CORE wxTreeRenameTimer; +class WXDLLIMPEXP_FWD_CORE wxTreeFindTimer; +class WXDLLIMPEXP_FWD_CORE wxTreeTextCtrl; +class WXDLLIMPEXP_FWD_CORE wxTextCtrl; // ----------------------------------------------------------------------------- // wxGenericTreeCtrl - the tree control // ----------------------------------------------------------------------------- -class WXDLLEXPORT wxGenericTreeCtrl : public wxTreeCtrlBase, +class WXDLLIMPEXP_CORE wxGenericTreeCtrl : public wxTreeCtrlBase, public wxScrollHelper { public: @@ -65,11 +64,10 @@ public: const wxValidator &validator = wxDefaultValidator, const wxString& name = wxTreeCtrlNameStr); - // implement base class pure virtuals // ---------------------------------- - virtual size_t GetCount() const; + virtual unsigned int GetCount() const; virtual unsigned int GetIndent() const { return m_indent; } virtual void SetIndent(unsigned int indent); @@ -112,8 +110,18 @@ public: // ---------- virtual wxTreeItemId GetRootItem() const { return m_anchor; } - virtual wxTreeItemId GetSelection() const { return m_current; } + virtual wxTreeItemId GetSelection() const + { + wxASSERT_MSG( !HasFlag(wxTR_MULTIPLE), + wxT("must use GetSelections() with this control") ); + + return m_current; + } virtual size_t GetSelections(wxArrayTreeItemIds&) const; + virtual wxTreeItemId GetFocusedItem() const { return m_current; } + + virtual void ClearFocusedItem(); + virtual void SetFocusedItem(const wxTreeItemId& item); virtual wxTreeItemId GetItemParent(const wxTreeItemId& item) const; virtual wxTreeItemId GetFirstChild(const wxTreeItemId& item, @@ -148,16 +156,19 @@ public: virtual void Unselect(); virtual void UnselectAll(); virtual void SelectItem(const wxTreeItemId& item, bool select = true); + virtual void SelectChildren(const wxTreeItemId& parent); virtual void EnsureVisible(const wxTreeItemId& item); virtual void ScrollTo(const wxTreeItemId& item); virtual wxTextCtrl *EditLabel(const wxTreeItemId& item, - wxClassInfo* textCtrlClass = CLASSINFO(wxTextCtrl)); + wxClassInfo* textCtrlClass = wxCLASSINFO(wxTextCtrl)); virtual wxTextCtrl *GetEditControl() const; virtual void EndEditLabel(const wxTreeItemId& item, bool discardChanges = false); + virtual void EnableBellOnNoMatch(bool on = true); + virtual void SortChildren(const wxTreeItemId& item); // items geometry @@ -180,36 +191,18 @@ public: wxTreeItemId GetNext(const wxTreeItemId& item) const; - void ExpandAll(const wxTreeItemId& item); - #if WXWIN_COMPATIBILITY_2_6 // use EditLabel() instead void Edit( const wxTreeItemId& item ) { EditLabel(item); } #endif // WXWIN_COMPATIBILITY_2_6 -#if WXWIN_COMPATIBILITY_2_4 - // deprecated functions: use Set/GetItemImage directly - wxDEPRECATED( int GetItemSelectedImage(const wxTreeItemId& item) const ); - wxDEPRECATED( void SetItemSelectedImage(const wxTreeItemId& item, int image) ); - - // use the versions taking wxTreeItemIdValue cookies (note that - // GetNextChild() is not inside wxDEPRECATED on purpose, as otherwise we - // get twice as many warnings without any added benefit: it is always used - // with GetFirstChild() anyhow) - wxDEPRECATED( wxTreeItemId GetFirstChild(const wxTreeItemId& item, - long& cookie) const ); - wxTreeItemId GetNextChild(const wxTreeItemId& item, - long& cookie) const; -#endif // WXWIN_COMPATIBILITY_2_4 - // implementation only from now on // overridden base class virtuals virtual bool SetBackgroundColour(const wxColour& colour); virtual bool SetForegroundColour(const wxColour& colour); - virtual void Freeze(); - virtual void Thaw(); + virtual void Refresh(bool eraseBackground = true, const wxRect *rect = NULL); virtual bool SetFont( const wxFont &font ); virtual void SetWindowStyle(const long styles); @@ -218,9 +211,11 @@ public: void OnPaint( wxPaintEvent &event ); void OnSetFocus( wxFocusEvent &event ); void OnKillFocus( wxFocusEvent &event ); + void OnKeyDown( wxKeyEvent &event ); void OnChar( wxKeyEvent &event ); void OnMouse( wxMouseEvent &event ); void OnGetToolTip( wxTreeEvent &event ); + void OnSize( wxSizeEvent &event ); void OnInternalIdle( ); virtual wxVisualAttributes GetDefaultAttributes() const @@ -262,26 +257,37 @@ protected: bool m_lastOnSame; // last click on the same item as prev wxImageList *m_imageListButtons; - int m_freezeCount; int m_dragCount; wxPoint m_dragStart; wxGenericTreeItem *m_dropTarget; wxCursor m_oldCursor; // cursor is changed while dragging wxGenericTreeItem *m_oldSelection; wxGenericTreeItem *m_underMouse; // for visual effects + + enum { NoEffect, BorderEffect, AboveEffect, BelowEffect } m_dndEffect; + wxGenericTreeItem *m_dndEffectItem; + wxTreeTextCtrl *m_textCtrl; + wxTimer *m_renameTimer; // incremental search data wxString m_findPrefix; wxTimer *m_findTimer; + // This flag is set to 0 if the bell is disabled, 1 if it is enabled and -1 + // if it is globally enabled but has been temporarily disabled because we + // had already beeped for this particular search. + int m_findBell; bool m_dropEffectAboveItem; // the common part of all ctors void Init(); + // overridden wxWindow methods + virtual void DoThaw(); + // misc helpers void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted); @@ -293,6 +299,9 @@ protected: bool unselect_others = true, bool extended_select = false); + virtual int DoGetItemState(const wxTreeItemId& item) const; + virtual void DoSetItemState(const wxTreeItemId& item, int state); + virtual wxTreeItemId DoInsertItem(const wxTreeItemId& parent, size_t previous, const wxString& text, @@ -304,7 +313,7 @@ protected: const wxString& text, int image = -1, int selImage = -1, wxTreeItemData *data = NULL); - virtual wxTreeItemId DoHitTest(const wxPoint& point, int& flags); + virtual wxTreeItemId DoTreeHitTest(const wxPoint& point, int& flags) const; // called by wxTextTreeCtrl when it marks itself for deletion void ResetTextControl(); @@ -321,7 +330,6 @@ protected: void CalculateLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y ); void CalculatePositions(); - void CalculateSize( wxGenericTreeItem *item, wxDC &dc ); void RefreshSubtree( wxGenericTreeItem *item ); void RefreshLine( wxGenericTreeItem *item ); @@ -343,10 +351,18 @@ protected: void UnselectAllChildren( wxGenericTreeItem *item ); void ChildrenClosing(wxGenericTreeItem* item); + void DoDirtyProcessing(); + + virtual wxSize DoGetBestSize() const; + private: + // Reset the state of the last find (i.e. keyboard incremental search) + // operation. + void ResetFindState(); + DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxGenericTreeCtrl) - DECLARE_NO_COPY_CLASS(wxGenericTreeCtrl) + wxDECLARE_NO_COPY_CLASS(wxGenericTreeCtrl); }; #if !defined(__WXMSW__) || defined(__WXUNIVERSAL__) @@ -355,7 +371,7 @@ private: * the run-time information. */ -class WXDLLEXPORT wxTreeCtrl: public wxGenericTreeCtrl +class WXDLLIMPEXP_CORE wxTreeCtrl: public wxGenericTreeCtrl { DECLARE_DYNAMIC_CLASS(wxTreeCtrl) @@ -377,4 +393,3 @@ public: #endif // wxUSE_TREECTRL #endif // _GENERIC_TREECTRL_H_ -