/////////////////////////////////////////////////////////////////////////////
-// Name: treectrl.h
+// Name: wx/generic/treectlg.h
// Purpose: wxTreeCtrl class
// Author: Robert Roebling
// Modified by:
#ifndef _GENERIC_TREECTRL_H_
#define _GENERIC_TREECTRL_H_
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "treectlg.h"
#endif
#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;
// -----------------------------------------------------------------------------
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
// Only for internal use right now, but should probably be public
wxTreeItemId GetNext(const wxTreeItemId& item) const;
- wxTreeItemId GetPrev(const wxTreeItemId& item) const;
// operations
// ----------
// 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 );
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,
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 );
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 );
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)