]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/treectrl.h
DC change header change for wxMemoryDC and wxPostscriptDC.
[wxWidgets.git] / include / wx / generic / treectrl.h
index 44b152b9703eb3db27284d65599437ff24114830..407e7c573ce65b150c816b33750e1ffef556cd16 100644 (file)
     #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
@@ -37,7 +44,7 @@ static const int wxTREE_HITTEST_ONITEMLABEL      = 0x0080;
     // anywhere on the item
 static const int wxTREE_HITTEST_ONITEM  = wxTREE_HITTEST_ONITEMICON |
                                           wxTREE_HITTEST_ONITEMLABEL;
-                                         
+
 // -----------------------------------------------------------------------------
 // forward declaration
 // -----------------------------------------------------------------------------
@@ -46,7 +53,6 @@ class wxImageList;
 class wxGenericTreeItem;
 
 class wxTreeItemData;
-typedef int (*wxTreeItemCmpFunc)(wxTreeItemData *item1, wxTreeItemData *item2);
 
 // -----------------------------------------------------------------------------
 // wxTreeItemId - unique identifier of a tree element
@@ -201,8 +207,8 @@ public:
                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);
     }
@@ -213,8 +219,8 @@ public:
                 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
     // ---------
@@ -228,6 +234,10 @@ public:
     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
@@ -327,6 +337,8 @@ public:
     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;
@@ -401,7 +413,7 @@ public:
     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
@@ -415,14 +427,19 @@ public:
         // 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 );
@@ -430,6 +447,9 @@ public:
     void OnMouse( wxMouseEvent &event );
     void OnIdle( wxIdleEvent &event );
 
+    // implementation
+    void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted);
+
 protected:
     wxGenericTreeItem   *m_anchor;
     wxGenericTreeItem   *m_current;
@@ -437,11 +457,13 @@ protected:
     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();