]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/treectrl.h
Removed unnecessary code from utilsunx.cpp
[wxWidgets.git] / include / wx / generic / treectrl.h
index 3155e83cbe74226f1a015b0f57be71d7dd790ec9..7d1dd7e39de669a3c05071135d9366d5e602eaa2 100644 (file)
     #pragma interface "treectrl.h"
 #endif
 
     #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/defs.h"
 #include "wx/string.h"
 #include "wx/object.h"
@@ -32,51 +26,6 @@ WXDLLEXPORT_DATA(extern const char*) wxTreeCtrlNameStr;
 #include "wx/dynarray.h"
 #include "wx/timer.h"
 
 #include "wx/dynarray.h"
 #include "wx/timer.h"
 
-//those defines should only be done in generic/treectrl.h,
-//because wxMSW doesn't allow mutiple selection
-
-#ifndef wxTR_SINGLE
-#define wxTR_SINGLE                 0x0000
-#define wxTR_MULTIPLE               0x0020
-#define wxTR_EXTENDED               0x0040
-#define wxTR_HAS_VARIABLE_ROW_HIGHT 0x0080
-#endif
-
-// -----------------------------------------------------------------------------
-// constants
-// -----------------------------------------------------------------------------
-
-// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine
-// where exactly the specified point is situated:
-
-static const int wxTREE_HITTEST_ABOVE            = 0x0001;
-static const int wxTREE_HITTEST_BELOW            = 0x0002;
-static const int wxTREE_HITTEST_NOWHERE          = 0x0004;
-    // on the button associated with an item.
-static const int wxTREE_HITTEST_ONITEMBUTTON     = 0x0008;
-    // on the bitmap associated with an item.
-static const int wxTREE_HITTEST_ONITEMICON       = 0x0010;
-    // on the ident associated with an item.
-static const int wxTREE_HITTEST_ONITEMIDENT      = 0x0020;
-    // on the label (string) associated with an item.
-static const int wxTREE_HITTEST_ONITEMLABEL      = 0x0040;
-    // on the right of the label associated with an item.
-static const int wxTREE_HITTEST_ONITEMRIGHT      = 0x0080;
-    // on the label (string) associated with an item.
-//static const int wxTREE_HITTEST_ONITEMSTATEICON  = 0x0100;
-    // on the left of the wxTreeCtrl.
-static const int wxTREE_HITTEST_TOLEFT           = 0x0200;
-    // on the right of the wxTreeCtrl.
-static const int wxTREE_HITTEST_TORIGHT          = 0x0400;
-    // on the upper part (first half) of the item.
-static const int wxTREE_HITTEST_ONITEMUPPERPART  = 0x0800;
-    // on the lower part (second half) of the item.
-static const int wxTREE_HITTEST_ONITEMLOWERPART  = 0x1000;
-
-    // anywhere on the item
-static const int wxTREE_HITTEST_ONITEM  = wxTREE_HITTEST_ONITEMICON |
-                                          wxTREE_HITTEST_ONITEMLABEL;
-
 // -----------------------------------------------------------------------------
 // forward declaration
 // -----------------------------------------------------------------------------
 // -----------------------------------------------------------------------------
 // forward declaration
 // -----------------------------------------------------------------------------
@@ -147,54 +96,6 @@ protected:
     wxTreeItemId m_pItem;
 };
 
     wxTreeItemId m_pItem;
 };
 
-//-----------------------------------------------------------------------------
-// wxTreeRenameTimer (internal)
-//-----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxTreeRenameTimer: public wxTimer
-{
- private:
-   wxTreeCtrl   *m_owner;
-
- public:
-   wxTreeRenameTimer( wxTreeCtrl *owner );
-   void Notify();
-};
-
-//-----------------------------------------------------------------------------
-//  wxTreeTextCtrl (internal)
-//-----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxTreeTextCtrl: public wxTextCtrl
-{
-  DECLARE_DYNAMIC_CLASS(wxTreeTextCtrl);
-
-  private:
-    bool               *m_accept;
-    wxString           *m_res;
-    wxTreeCtrl         *m_owner;
-    wxString            m_startValue;
-
-  public:
-    wxTreeTextCtrl(void) {};
-    wxTreeTextCtrl( wxWindow *parent, const wxWindowID id,
-                    bool *accept, wxString *res, wxTreeCtrl *owner,
-                    const wxString &value = wxEmptyString,
-                    const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
-#if wxUSE_VALIDATORS
-#  if defined(__VISAGECPP__)
-                    int style = 0, const wxValidator* validator = wxDefaultValidator,
-#  else
-                    int style = 0, const wxValidator& validator = wxDefaultValidator,
-#  endif
-#endif
-                    const wxString &name = wxTextCtrlNameStr );
-    void OnChar( wxKeyEvent &event );
-    void OnKillFocus( wxFocusEvent &event );
-
-  DECLARE_EVENT_TABLE()
-};
-
 // -----------------------------------------------------------------------------
 // wxTreeCtrl - the tree control
 // -----------------------------------------------------------------------------
 // -----------------------------------------------------------------------------
 // wxTreeCtrl - the tree control
 // -----------------------------------------------------------------------------
@@ -210,13 +111,7 @@ public:
                const wxPoint& pos = wxDefaultPosition,
                const wxSize& size = wxDefaultSize,
                long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
                const wxPoint& pos = wxDefaultPosition,
                const wxSize& size = wxDefaultSize,
                long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
-#if wxUSE_VALIDATORS
-#  if defined(__VISAGECPP__)
-               const wxValidator *validator = wxDefaultValidator,
-#  else
                const wxValidator &validator = wxDefaultValidator,
                const wxValidator &validator = wxDefaultValidator,
-#  endif
-#endif
                const wxString& name = wxTreeCtrlNameStr)
     {
         Create(parent, id, pos, size, style, validator, name);
                const wxString& name = wxTreeCtrlNameStr)
     {
         Create(parent, id, pos, size, style, validator, name);
@@ -228,13 +123,7 @@ public:
                 const wxPoint& pos = wxDefaultPosition,
                 const wxSize& size = wxDefaultSize,
                 long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
                 const wxPoint& pos = wxDefaultPosition,
                 const wxSize& size = wxDefaultSize,
                 long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT,
-#if wxUSE_VALIDATORS
-#  if defined(__VISAGECPP__)
-                const wxValidator *validator = wxDefaultValidator,
-#  else
                 const wxValidator &validator = wxDefaultValidator,
                 const wxValidator &validator = wxDefaultValidator,
-#  endif
-#endif
                 const wxString& name = wxTreeCtrlNameStr);
 
     // accessors
                 const wxString& name = wxTreeCtrlNameStr);
 
     // accessors
@@ -302,6 +191,15 @@ public:
         // the item will be shown in bold
     void SetItemBold(const wxTreeItemId& item, bool bold = TRUE);
 
         // the item will be shown in bold
     void SetItemBold(const wxTreeItemId& item, bool bold = TRUE);
 
+        // set the items text colour
+    void SetItemTextColour(const wxTreeItemId& item, const wxColour& col);
+
+        // set the items background colour
+    void SetItemBackgroundColour(const wxTreeItemId& item, const wxColour& col);
+
+        // set the items font (should be of the same height for all items)
+    void SetItemFont(const wxTreeItemId& item, const wxFont& font);
+
     // item status inquiries
     // ---------------------
 
     // item status inquiries
     // ---------------------
 
@@ -390,6 +288,13 @@ public:
                             int image = -1, int selectedImage = -1,
                             wxTreeItemData *data = NULL);
 
                             int image = -1, int selectedImage = -1,
                             wxTreeItemData *data = NULL);
 
+        // insert a new item before the one with the given index
+    wxTreeItemId InsertItem(const wxTreeItemId& parent,
+                            size_t index,
+                            const wxString& text,
+                            int image = -1, int selectedImage = -1,
+                            wxTreeItemData *data = NULL);
+
         // insert a new item in as the last child of the parent
     wxTreeItemId AppendItem(const wxTreeItemId& parent,
                             const wxString& text,
         // insert a new item in as the last child of the parent
     wxTreeItemId AppendItem(const wxTreeItemId& parent,
                             const wxString& text,
@@ -457,7 +362,7 @@ public:
     void SetItemSelectedImage(const wxTreeItemId& item, int image)
         { SetItemImage(item, image, wxTreeItemIcon_Selected); }
 
     void SetItemSelectedImage(const wxTreeItemId& item, int image)
         { SetItemImage(item, image, wxTreeItemIcon_Selected); }
 
-    // implementation
+    // implementation only from now on
 
     // callbacks
     void OnPaint( wxPaintEvent &event );
 
     // callbacks
     void OnPaint( wxPaintEvent &event );
@@ -467,18 +372,20 @@ public:
     void OnMouse( wxMouseEvent &event );
     void OnIdle( wxIdleEvent &event );
 
     void OnMouse( wxMouseEvent &event );
     void OnIdle( wxIdleEvent &event );
 
-    // implementation
+    // implementation helpers
     void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted);
 
     void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted);
 
-    // Draw Special Information
-    void DrawBorder(wxTreeItemId& item);
-    void DrawLine(wxTreeItemId& item, bool below);
+    void DrawBorder(const wxTreeItemId& item);
+    void DrawLine(const wxTreeItemId& item, bool below);
 
 protected:
     friend class wxGenericTreeItem;
     friend class wxTreeRenameTimer;
     friend class wxTreeTextCtrl;
 
 
 protected:
     friend class wxGenericTreeItem;
     friend class wxTreeRenameTimer;
     friend class wxTreeTextCtrl;
 
+    wxFont               m_normalFont;
+    wxFont               m_boldFont;
+
     wxGenericTreeItem   *m_anchor;
     wxGenericTreeItem   *m_current, *m_key_current, *m_currentEdit;
     bool                 m_hasFocus;
     wxGenericTreeItem   *m_anchor;
     wxGenericTreeItem   *m_current, *m_key_current, *m_currentEdit;
     bool                 m_hasFocus;
@@ -491,8 +398,14 @@ protected:
     wxBrush             *m_hilightBrush;
     wxImageList         *m_imageListNormal,
                         *m_imageListState;
     wxBrush             *m_hilightBrush;
     wxImageList         *m_imageListNormal,
                         *m_imageListState;
+
     int                  m_dragCount;
     wxPoint              m_dragStart;
     int                  m_dragCount;
     wxPoint              m_dragStart;
+    bool                 m_isDragging; // true between BEGIN/END drag events
+    wxGenericTreeItem   *m_dropTarget;
+    wxCursor             m_oldCursor;  // cursor is changed while dragging
+    wxGenericTreeItem   *m_oldSelection;
+
     wxTimer             *m_renameTimer;
     bool                 m_renameAccept;
     wxString             m_renameRes;
     wxTimer             *m_renameTimer;
     bool                 m_renameAccept;
     wxString             m_renameRes;
@@ -528,6 +441,8 @@ protected:
     bool TagNextChildren(wxGenericTreeItem *crt_item, wxGenericTreeItem *last_item, bool select);
     void UnselectAllChildren( wxGenericTreeItem *item );
 
     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(wxTreeCtrl)
 private:
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxTreeCtrl)