#pragma interface "treectrl.h"
#endif
+#ifdef __WXMSW__
+WXDLLEXPORT_DATA(extern const char*) wxTreeCtrlNameStr;
+#else
+#define wxTreeCtrlNameStr "wxTreeCtrl"
+#endif
+
#include "wx/defs.h"
#include "wx/string.h"
#include "wx/object.h"
#include "wx/event.h"
#include "wx/scrolwin.h"
#include "wx/textctrl.h"
+#include "wx/pen.h"
// -----------------------------------------------------------------------------
// constants
// anywhere on the item
static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON |
wxTREE_HITTEST_ONITEMLABEL;
-
+
// -----------------------------------------------------------------------------
// forward declaration
// -----------------------------------------------------------------------------
class wxGenericTreeItem;
class wxTreeItemData;
-typedef int (*wxTreeItemCmpFunc)(wxTreeItemData *item1, wxTreeItemData *item2);
// -----------------------------------------------------------------------------
// wxTreeItemId - unique identifier of a tree element
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
- const wxValidator &validator = wxDefaultValidator,
- const wxString& name = "wxTreeCtrl")
+ const wxValidator &validator = wxDefaultValidator,
+ const wxString& name = wxTreeCtrlNameStr)
{
Create(parent, id, pos, size, style, validator, name);
}
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
- const wxValidator &validator = wxDefaultValidator,
- const wxString& name = "wxTreeCtrl");
+ const wxValidator &validator = wxDefaultValidator,
+ const wxString& name = wxTreeCtrlNameStr);
// accessors
// ---------
unsigned int GetIndent() const { return m_indent; }
void SetIndent(unsigned int indent);
+ // spacing is the number of pixels between the start and the Text
+ unsigned int GetSpacing() const { return m_spacing; }
+ void SetSpacing(unsigned int spacing);
+
// image list: these functions allow to associate an image list with
// the control and retrieve it. Note that the control does _not_ delete
// the associated image list when it's deleted in order to allow image
wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& cookie) const;
// get the next child
wxTreeItemId GetNextChild(const wxTreeItemId& item, long& cookie) const;
+ // get the last child of this item - this method doesn't use cookies
+ wxTreeItemId GetLastChild(const wxTreeItemId& item) const;
// get the next sibling of this item
wxTreeItemId GetNextSibling(const wxTreeItemId& item) const;
wxTreeItemId HitTest(const wxPoint& point)
{ int dummy; return HitTest(point, dummy); }
wxTreeItemId HitTest(const wxPoint& point, int& flags);
-
+
// start editing the item label: this (temporarily) replaces the item
// with a one line edit control. The item will be selected if it hadn't
// been before. textCtrlClass parameter allows you to create an edit
// end editing and accept or discard the changes to item label
void EndEditLabel(const wxTreeItemId& item, bool discardChanges = FALSE);
- // sort the children of this item using the specified callback function
- // (it should return -1, 0 or +1 as usual), if it's not specified
- // alphabetical comparaison is performed.
+ // sorting
+ // this function is called to compare 2 items and should return -1, 0
+ // or +1 if the first item is less than, equal to or greater than the
+ // second one. The base class version performs alphabetic comparaison
+ // of item labels (GetText)
+ virtual int OnCompareItems(const wxTreeItemId& item1,
+ const wxTreeItemId& item2);
+ // sort the children of this item using OnCompareItems
//
- // NB: this function is not reentrant!
- void SortChildren(const wxTreeItemId& item,
- wxTreeItemCmpFunc *cmpFunction = NULL);
+ // NB: this function is not reentrant and not MT-safe (FIXME)!
+ void SortChildren(const wxTreeItemId& item);
+ // callbacks
void OnPaint( wxPaintEvent &event );
void OnSetFocus( wxFocusEvent &event );
void OnKillFocus( wxFocusEvent &event );
void OnMouse( wxMouseEvent &event );
void OnIdle( wxIdleEvent &event );
+ // implementation
+ void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted);
+
protected:
wxGenericTreeItem *m_anchor;
wxGenericTreeItem *m_current;
bool m_dirty;
int m_xScroll,m_yScroll;
unsigned int m_indent;
+ unsigned int m_spacing;
int m_lineHeight;
wxPen m_dottedPen;
wxBrush *m_hilightBrush;
wxImageList *m_imageListNormal,
*m_imageListState;
+ int m_dragCount;
// the common part of all ctors
void Init();