]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataview.h
Improve main and extended messages handling in new wxMSW wxMessageDialog.
[wxWidgets.git] / include / wx / dataview.h
index b220665ddf9901b501b07be6efff8c93bbd732c5..2e324dc752b9385843c26c83dd8641cb44c5c647 100644 (file)
@@ -257,6 +257,7 @@ public:
     virtual bool HasDefaultCompare() const { return false; }
 
     // internal
+    virtual bool IsListModel() const { return false; }
     virtual bool IsVirtualListModel() const { return false; }
 
 protected:
@@ -328,6 +329,8 @@ public:
     {
         return GetAttrByRow( GetRow(item), col, attr );
     }
+
+    virtual bool IsListModel() const { return true; }
 };
 
 // ---------------------------------------------------------
@@ -639,6 +642,12 @@ public:
     int GetIndent() const
         { return m_indent; }
 
+    // Current item is the one used by the keyboard navigation, it is the same
+    // as the (unique) selected item in single selection mode so these
+    // functions are mostly useful for controls with wxDV_MULTIPLE style.
+    wxDataViewItem GetCurrentItem() const;
+    void SetCurrentItem(const wxDataViewItem& item);
+
     virtual wxDataViewItem GetSelection() const = 0;
     virtual int GetSelections( wxDataViewItemArray & sel ) const = 0;
     virtual void SetSelections( const wxDataViewItemArray & sel ) = 0;
@@ -685,6 +694,12 @@ protected:
     virtual void DoSetIndent() = 0;
 
 private:
+    // Implementation of the public Set/GetCurrentItem() methods which are only
+    // called in multi selection case (for single selection controls their
+    // implementation is trivial and is done in the base class itself).
+    virtual wxDataViewItem DoGetCurrentItem() const = 0;
+    virtual void DoSetCurrentItem(const wxDataViewItem& item) = 0;
+
     wxDataViewModel        *m_model;
     wxDataViewColumn       *m_expander_column;
     int m_indent ;
@@ -950,6 +965,20 @@ public:
     const wxDataViewListStore *GetStore() const
         { return (const wxDataViewListStore*) GetModel(); }
 
+    int ItemToRow(const wxDataViewItem &item) const
+        { return item.IsOk() ? (int)GetStore()->GetRow(item) : wxNOT_FOUND; }
+    wxDataViewItem RowToItem(int row) const
+        { return row == wxNOT_FOUND ? wxDataViewItem() : GetStore()->GetItem(row); }
+
+    int GetSelectedRow() const
+        { return ItemToRow(GetSelection()); }
+    void SelectRow(unsigned row)
+        { Select(RowToItem(row)); }
+    void UnselectRow(unsigned row)
+        { Unselect(RowToItem(row)); }
+    bool IsRowSelected(unsigned row) const
+        { return IsSelected(RowToItem(row)); }
+
     bool AppendColumn( wxDataViewColumn *column, const wxString &varianttype );
     bool PrependColumn( wxDataViewColumn *column, const wxString &varianttype );
     bool InsertColumn( unsigned int pos, wxDataViewColumn *column, const wxString &varianttype );