#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 wxSize& size = wxDefaultSize,
long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
const wxValidator &validator = wxDefaultValidator,
- const wxString& name = "wxTreeCtrl")
+ const wxString& name = wxTreeCtrlNameStr)
{
Create(parent, id, pos, size, style, validator, name);
}
const wxSize& size = wxDefaultSize,
long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
const wxValidator &validator = wxDefaultValidator,
- const wxString& name = "wxTreeCtrl");
+ const wxString& name = wxTreeCtrlNameStr);
// accessors
// ---------
// delete this item and associated data if any
void Delete(const wxTreeItemId& item);
+ // delete all children (but don't delete the item itself)
+ // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events
+ void DeleteChildren(const wxTreeItemId& item);
// delete all items from the tree
+ // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events
void DeleteAllItems();
// expand this item
// 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;
wxBrush *m_hilightBrush;
wxImageList *m_imageListNormal,
*m_imageListState;
+ int m_dragCount;
// the common part of all ctors
void Init();