]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataview.h
use wxString's UTF8 methods in wxCocoa, it's slightly more efficient in UTF8 build
[wxWidgets.git] / include / wx / dataview.h
index f569ab23ad547fc6dcc0670f2d53b9c4e34a525e..76b98fcf144d3b91a65e553426478f8e9c93fb9c 100644 (file)
@@ -2,7 +2,7 @@
 // Name:        wx/dataview.h
 // Purpose:     wxDataViewCtrl base classes
 // Author:      Robert Roebling
-// Modified by:
+// Modified by: Bo Yang
 // Created:     08.01.06
 // RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
 #include "wx/bitmap.h"
 #include "wx/variant.h"
 #include "wx/listctrl.h"
+#include "wx/dynarray.h"
 
 #if defined(__WXGTK20__)
     // for testing
-    // #define wxUSE_GENERICDATAVIEWCTRL 1
+    #define wxUSE_GENERICDATAVIEWCTRL 1
 #elif defined(__WXMAC__)
 #else
     #define wxUSE_GENERICDATAVIEWCTRL 1
@@ -44,7 +45,6 @@ class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
 class WXDLLIMPEXP_FWD_ADV wxDataViewColumn;
 class WXDLLIMPEXP_FWD_ADV wxDataViewRenderer;
 class WXDLLIMPEXP_FWD_ADV wxDataViewModelNotifier;
-class                 wxDataViewEventModelNotifier;
 
 extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxDataViewCtrlNameStr[];
 
@@ -74,6 +74,7 @@ public:
         { m_id = item.m_id; }
     bool IsOk() const                  { return m_id != NULL; }
     void* GetID() const                { return m_id; }
+    operator const void* () const      { return m_id; }
     
 private:
     void* m_id;
@@ -153,7 +154,7 @@ public:
     // default compare function
     virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2, 
                          unsigned int column, bool ascending );
-    
+
 protected:
     // the user should not delete this class directly: he should use DecRef() instead!
     virtual ~wxDataViewModel() { }
@@ -396,6 +397,8 @@ protected:
 // wxDataViewCtrlBase
 // ---------------------------------------------------------
 
+WX_DEFINE_ARRAY(wxDataViewItem, wxDataViewItemArray);
+
 #define wxDV_SINGLE                  0x0000     // for convenience
 #define wxDV_MULTIPLE                0x0001     // can select multiple items
 
@@ -472,8 +475,23 @@ public:
     int GetIndent() const 
         { return m_indent; } 
 
-    // TODO selection code
     virtual wxDataViewItem GetSelection() = 0;
+    virtual int GetSelections( wxDataViewItemArray & sel ) const = 0;
+    virtual void SetSelections( const wxDataViewItemArray & sel ) = 0;
+    virtual void Select( const wxDataViewItem & item ) = 0;
+    virtual void Unselect( const wxDataViewItem & item ) = 0;
+    virtual bool IsSelected( const wxDataViewItem & item ) const = 0;
+
+    virtual void SelectAll() = 0;
+    virtual void UnselectAll() = 0;
+
+    virtual void EnsureVisible( const wxDataViewItem & item,
+                                wxDataViewColumn *column = NULL ) = 0;
+                                
+    virtual void HitTest( const wxPoint &point, 
+                          wxDataViewItem &item, unsigned int &column ) const = 0;
+    virtual wxRect GetItemRect( const wxDataViewItem &item, 
+                          unsigned int column ) const = 0;
 
 protected:
     virtual void DoSetExpanderColumn() = 0 ;
@@ -482,7 +500,6 @@ protected:
 private:
     wxDataViewModel        *m_model;
     wxList                  m_cols;
-    wxDataViewEventModelNotifier *m_eventNotifier;
     unsigned int m_expander_column;
     int m_indent ;
        
@@ -546,7 +563,12 @@ private:
 
 BEGIN_DECLARE_EVENT_TYPES()
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_SELECTED, -1)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_DESELECTED, -1)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, -1)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, -1)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, -1)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, -1)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, -1)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, -1)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, -1)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, -1)
@@ -567,8 +589,11 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&);
     wx__DECLARE_EVT1(wxEVT_COMMAND_DATAVIEW_ ## evt, id, wxDataViewEventHandler(fn))
 
 #define EVT_DATAVIEW_ITEM_SELECTED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_SELECTED, id, fn)
+#define EVT_DATAVIEW_ITEM_DESELECTED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_DESELECTED, id, fn)
 #define EVT_DATAVIEW_ITEM_ACTIVATED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_ACTIVATED, id, fn)
+#define EVT_DATAVIEW_ITEM_COLLAPSING(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_COLLAPSING, id, fn)
 #define EVT_DATAVIEW_ITEM_COLLAPSED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_COLLAPSED, id, fn)
+#define EVT_DATAVIEW_ITEM_EXPANDING(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_EXPANDING, id, fn)
 #define EVT_DATAVIEW_ITEM_EXPANDED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_EXPANDED, id, fn)
 #define EVT_DATAVIEW_COLUMN_HEADER_CLICK(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_HEADER_CLICK, id, fn)
 #define EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKED(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_HEADER_RIGHT_CLICK, id, fn)