]> 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 fd2ec0b4d7a45d3d669cb4ef61679bfa601b19fb..2e324dc752b9385843c26c83dd8641cb44c5c647 100644 (file)
@@ -166,6 +166,8 @@ public:
     bool GetBold() const { return m_bold; }
     bool GetItalic() const { return m_italic; }
 
+    bool IsDefault() const { return !(HasColour() || HasFont()); }
+
 private:
     wxColour m_colour;
     bool     m_bold;
@@ -234,14 +236,14 @@ public:
     virtual unsigned int GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const = 0;
 
     // delegated notifiers
-    virtual bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item );
-    virtual bool ItemsAdded( const wxDataViewItem &parent, const wxDataViewItemArray &items );
-    virtual bool ItemDeleted( const wxDataViewItem &parent, const wxDataViewItem &item );
-    virtual bool ItemsDeleted( const wxDataViewItem &parent, const wxDataViewItemArray &items );
-    virtual bool ItemChanged( const wxDataViewItem &item );
-    virtual bool ItemsChanged( const wxDataViewItemArray &items );
-    virtual bool ValueChanged( const wxDataViewItem &item, unsigned int col );
-    virtual bool Cleared();
+    bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item );
+    bool ItemsAdded( const wxDataViewItem &parent, const wxDataViewItemArray &items );
+    bool ItemDeleted( const wxDataViewItem &parent, const wxDataViewItem &item );
+    bool ItemsDeleted( const wxDataViewItem &parent, const wxDataViewItemArray &items );
+    bool ItemChanged( const wxDataViewItem &item );
+    bool ItemsChanged( const wxDataViewItemArray &items );
+    bool ValueChanged( const wxDataViewItem &item, unsigned int col );
+    bool Cleared();
 
     // delegatd action
     virtual void Resort();
@@ -255,6 +257,7 @@ public:
     virtual bool HasDefaultCompare() const { return false; }
 
     // internal
+    virtual bool IsListModel() const { return false; }
     virtual bool IsVirtualListModel() const { return false; }
 
 protected:
@@ -326,6 +329,8 @@ public:
     {
         return GetAttrByRow( GetRow(item), col, attr );
     }
+
+    virtual bool IsListModel() const { return true; }
 };
 
 // ---------------------------------------------------------
@@ -416,34 +421,6 @@ private:
 };
 #endif
 
-//-----------------------------------------------------------------------------
-// wxDataViewEditorCtrlEvtHandler
-//-----------------------------------------------------------------------------
-
-class wxDataViewEditorCtrlEvtHandler: public wxEvtHandler
-{
-public:
-    wxDataViewEditorCtrlEvtHandler( wxControl *editor, wxDataViewRenderer *owner );
-
-    void AcceptChangesAndFinish();
-    void SetFocusOnIdle( bool focus = true ) { m_focusOnIdle = focus; }
-
-protected:
-    void OnChar( wxKeyEvent &event );
-    void OnTextEnter( wxCommandEvent &event );
-    void OnKillFocus( wxFocusEvent &event );
-    void OnIdle( wxIdleEvent &event );
-
-private:
-    wxDataViewRenderer     *m_owner;
-    wxControl              *m_editorCtrl;
-    bool                    m_finished;
-    bool                    m_focusOnIdle;
-
-private:
-    DECLARE_EVENT_TABLE()
-};
-
 // ----------------------------------------------------------------------------
 // wxDataViewRenderer and related classes
 // ----------------------------------------------------------------------------
@@ -665,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;
@@ -711,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 ;
@@ -976,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 );
@@ -1136,7 +1139,7 @@ public:
 
     wxDataViewItem GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const;
     int GetChildCount( const wxDataViewItem& parent ) const;
-
+    
     void SetItemText( const wxDataViewItem& item, const wxString &text );
     wxString GetItemText( const wxDataViewItem& item ) const;
     void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon );
@@ -1210,6 +1213,9 @@ public:
     const wxDataViewTreeStore *GetStore() const
         { return (const wxDataViewTreeStore*) GetModel(); }
 
+    bool IsContainer( const wxDataViewItem& item ) const
+        { return GetStore()->IsContainer(item); }
+
     void SetImageList( wxImageList *imagelist );
     wxImageList* GetImageList() { return m_imageList; }