]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataview.h
do platform-specific checks after ensuring that the symbols we use are defined; extra...
[wxWidgets.git] / include / wx / dataview.h
index 459885406b8b6f13c834952d33b03ffda82ea9ed..bb0077fefc01221a09247181843f538feed75c7b 100644 (file)
@@ -68,30 +68,23 @@ extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxDataViewCtrlNameStr[];
 class WXDLLIMPEXP_ADV wxDataViewItem
 {
 public:
-    wxDataViewItem( wxUint32 id = 0 ) 
-        { m_id = id; m_reserved1 = 0; m_reserved2 = NULL; }
+    wxDataViewItem( void* id = NULL ) 
+        { m_id = id; }
     wxDataViewItem( const wxDataViewItem &item )
-        { m_id = item.m_id; m_reserved1 = item.m_reserved1; m_reserved2 = item.m_reserved2; }
-    bool IsOk() const                  { return m_id != 0; }
-    wxUint32 GetID() const             { return m_id; }
-    
-public:
-    wxUint32 m_reserved1;
-    void*    m_reserved2;
+        { m_id = item.m_id; }
+    bool IsOk() const                  { return m_id != NULL; }
+    void* GetID() const                { return m_id; }
     
 private:
-    wxUint32 m_id;
+    void* m_id;
 };
 
-bool operator == ( const wxDataViewItem& left, const wxDataViewItem& right );
+bool operator == (const wxDataViewItem &left, const wxDataViewItem &right);
 
 // ---------------------------------------------------------
 // wxDataViewModel
 // ---------------------------------------------------------
 
-typedef int (wxCALLBACK *wxDataViewModelCompare)
-    (const wxDataViewItem& item1, const wxDataViewItem& item2, unsigned int col, unsigned int option );
-
 class WXDLLIMPEXP_ADV wxDataViewModel: public wxObjectRefData
 {
 public:
@@ -112,11 +105,8 @@ public:
 
     // define hierachy
     virtual bool HasChildren( const wxDataViewItem &item ) const = 0;
-    virtual int GetChildCount( const wxDataViewItem &item ) const = 0;
-    virtual wxDataViewItem GetParent( const wxDataViewItem &child ) const = 0;
     virtual wxDataViewItem GetFirstChild( const wxDataViewItem &parent ) const = 0;
     virtual wxDataViewItem GetNextSibling( const wxDataViewItem &item ) const = 0;
-    virtual wxDataViewItem GetNthChild(  const wxDataViewItem &parent, unsigned int n ) const = 0;
 
     // delegated notifiers
     virtual bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item );
@@ -125,18 +115,58 @@ public:
     virtual bool ValueChanged( const wxDataViewItem &item, unsigned int col );
     virtual bool Cleared();
 
+    // delegatd action
+    virtual void Resort();
+
     void AddNotifier( wxDataViewModelNotifier *notifier );
     void RemoveNotifier( wxDataViewModelNotifier *notifier );
     
-    void SetCompareFunction( wxDataViewModelCompare func ) { m_cmpFunc = func; }
-    wxDataViewModelCompare GetCompareFunction() { return m_cmpFunc; }
+    // default compare function
+    virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2 );
+    
+    void SetSortingColumn( unsigned int col ) { m_sortingColumn = col; }
+    unsigned int GetSortingColumn() { return m_sortingColumn; }
+    void SetSortOrderAscending( bool ascending ) { m_ascending = ascending; }
+    bool GetSortOrderAscending() { return m_ascending; }
+    
     
 protected:
     // the user should not delete this class directly: he should use DecRef() instead!
     virtual ~wxDataViewModel() { }
 
     wxList                  m_notifiers;
-    wxDataViewModelCompare  m_cmpFunc;
+    unsigned int            m_sortingColumn;
+    bool                    m_ascending;
+};
+
+// ---------------------------------------------------------
+// wxDataViewVirtualListModel
+// ---------------------------------------------------------
+
+class wxDataViewIndexListModel: public wxDataViewModel
+{
+public:
+    wxDataViewIndexListModel();
+    ~wxDataViewIndexListModel();
+    
+    virtual unsigned int GetRowCount() = 0;
+    
+    virtual void GetValue( wxVariant &variant, 
+                           unsigned int row, unsigned int col ) const = 0;
+
+    virtual bool SetValue( const wxVariant &variant, 
+                           unsigned int row, unsigned int col ) = 0;
+    
+    void ItemPrepended();
+    void ItemInserted( unsigned int before );
+    void ItemAppended();
+    void ItemChanged( unsigned int row );
+    void ValueChanged( unsigned int row, unsigned int col );
+    
+    wxDataViewItem GetItem( unsigned int row );
+    
+    virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2 );
+    
 };
 
 // ---------------------------------------------------------
@@ -154,6 +184,8 @@ public:
     virtual bool ItemChanged( const wxDataViewItem &item ) = 0;
     virtual bool ValueChanged( const wxDataViewItem &item, unsigned int col ) = 0;
     virtual bool Cleared() = 0;
+    
+    virtual void Resort() { };
 
     void SetOwner( wxDataViewModel *owner ) { m_owner = owner; }
     wxDataViewModel *GetOwner()             { return m_owner; }
@@ -421,6 +453,7 @@ public:
         { return m_indent; } 
 
     // TODO selection code
+    virtual wxDataViewItem GetSelection() = 0;
 
 protected:
     virtual void DoSetExpanderColumn() = 0 ;