]> git.saurik.com Git - wxWidgets.git/commitdiff
Added API for adding/deleting/changing multiple items
authorRobert Roebling <robert@roebling.de>
Mon, 1 Oct 2007 10:54:57 +0000 (10:54 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 1 Oct 2007 10:54:57 +0000 (10:54 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/dataviewmodel.tex
docs/latex/wx/dataviewmodelnotifier.tex
include/wx/dataview.h
src/common/datavcmn.cpp

index b80c86fe7a605fe92161e6b3ecad54362f11c03d..92624d850104e25b6259c91f304c1adcdaf99813 100644 (file)
@@ -179,11 +179,24 @@ to the data.
 
 Call this to inform the model that an item has changed.
 
-\membersection{wxDataViewModel::ItemDeleted}\label{wxdataviewmodelitemdeleted}
+\membersection{wxDataViewModel::ItemsAdded}\label{wxdataviewmodelitemsadded}
 
-\func{virtual bool}{ItemDeleted}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItem\& }{item}}
+\func{virtual bool}{ItemsAdded}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItemArray\& }{items}}
 
-Call this to inform the model that an item has been deleted.
+Call this to inform the model that several items have been added
+to the data.
+
+\membersection{wxDataViewModel::ItemsChanged}\label{wxdataviewmodelitemschanged}
+
+\func{virtual bool}{ItemsChanged}{\param{const wxDataViewItemArray\& }{items}}
+
+Call this to inform the model that several items have changed.
+
+\membersection{wxDataViewModel::ItemsDeleted}\label{wxdataviewmodelitemsdeleted}
+
+\func{virtual bool}{ItemsDeleted}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItemArray\& }{items}}
+
+Call this to inform the model that several items have been deleted.
 
 \membersection{wxDataViewModel::RemoveNotifier}\label{wxdataviewmodelremovenotifier}
 
index 9e7708b60d51c51bd6a6a449b217808f7398881d..261d71e4bff8d8788df42d250262cf9a67ff64c8 100644 (file)
@@ -61,6 +61,24 @@ Called by owning model.
 
 Called by owning model.
 
+\membersection{wxDataViewModelNotifier::ItemsAdded}\label{wxdataviewmodelnotifieritemsadded}
+
+\func{bool}{ItemsAdded}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItemArray\& }{items}}
+
+Called by owning model.
+
+\membersection{wxDataViewModelNotifier::ItemsChanged}\label{wxdataviewmodelnotifieritemschanged}
+
+\func{bool}{ItemsChanged}{\param{const wxDataViewItemArray\& }{items}}
+
+Called by owning model.
+
+\membersection{wxDataViewModelNotifier::ItemsDeleted}\label{wxdataviewmodelnotifieritemsdeleted}
+
+\func{bool}{ItemsDeleted}{\param{const wxDataViewItem\& }{parent}, \param{const wxDataViewItemArray\& }{items}}
+
+Called by owning model.
+
 \membersection{wxDataViewModelNotifier::Resort}\label{wxdataviewmodelnotifierresort}
 
 \func{void}{Resort}{\void}
index 2bb0076259cd578dd66b3064e3bbcb62f3efb99a..8aace083f927ad6801e073c57f0cea4edfef2eb9 100644 (file)
@@ -98,6 +98,9 @@ public:
     virtual bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item ) = 0;
     virtual bool ItemDeleted( const wxDataViewItem &parent, const wxDataViewItem &item ) = 0;
     virtual bool ItemChanged( const wxDataViewItem &item ) = 0;
+    virtual bool ItemsAdded( const wxDataViewItem &parent, const wxDataViewItemArray &items );
+    virtual bool ItemsDeleted( const wxDataViewItem &parent, const wxDataViewItemArray &items );
+    virtual bool ItemsChanged( const wxDataViewItemArray &items );
     virtual bool ValueChanged( const wxDataViewItem &item, unsigned int col ) = 0;
     virtual bool Cleared() = 0;
     
@@ -142,8 +145,11 @@ public:
 
     // 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();
 
index 2adea130200f29ec37f93f76c7d1fa5c0cfa0436..a9b651bb8efb5046f80dc60902eb4840ed8dd47d 100644 (file)
@@ -33,12 +33,46 @@ bool operator == (const wxDataViewItem &left, const wxDataViewItem &right)
 
 
 // ---------------------------------------------------------
-// wxDataViewModel
+// wxDataViewModelNotifier
 // ---------------------------------------------------------
 
 #include "wx/listimpl.cpp"
 WX_DEFINE_LIST(wxDataViewModelNotifiers);
 
+bool wxDataViewModelNotifier::ItemsAdded( const wxDataViewItem &parent, const wxDataViewItemArray &items )
+{
+    size_t count = items.GetCount();
+    size_t i;
+    for (i = 0; i < count; i++)
+        if (!ItemAdded( parent, items[i] )) return false;
+        
+    return true;
+}
+
+bool wxDataViewModelNotifier::ItemsDeleted( const wxDataViewItem &parent, const wxDataViewItemArray &items )
+{
+    size_t count = items.GetCount();
+    size_t i;
+    for (i = 0; i < count; i++)
+        if (!ItemDeleted( parent, items[i] )) return false;
+    
+    return true;
+}
+
+bool wxDataViewModelNotifier::ItemsChanged( const wxDataViewItemArray &items )
+{
+    size_t count = items.GetCount();
+    size_t i;
+    for (i = 0; i < count; i++)
+        if (!ItemChanged( items[i] )) return false;
+        
+    return true;
+}
+
+// ---------------------------------------------------------
+// wxDataViewModel
+// ---------------------------------------------------------
+
 wxDataViewModel::wxDataViewModel()
 {
     m_notifiers.DeleteContents( true );
@@ -89,6 +123,51 @@ bool wxDataViewModel::ItemChanged( const wxDataViewItem &item )
     return ret;
 }
 
+bool wxDataViewModel::ItemsAdded( const wxDataViewItem &parent, const wxDataViewItemArray &items )
+{
+    bool ret = true;
+
+    wxDataViewModelNotifiers::iterator iter;
+    for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
+    {
+        wxDataViewModelNotifier* notifier = *iter;
+        if (!notifier->ItemsAdded( parent, items ))
+            ret = false;
+    }
+
+    return ret;
+}
+
+bool wxDataViewModel::ItemsDeleted( const wxDataViewItem &parent, const wxDataViewItemArray &items )
+{
+    bool ret = true;
+
+    wxDataViewModelNotifiers::iterator iter;
+    for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
+    {
+        wxDataViewModelNotifier* notifier = *iter;
+        if (!notifier->ItemsDeleted( parent, items ))
+            ret = false;
+    }
+
+    return ret;
+}
+
+bool wxDataViewModel::ItemsChanged( const wxDataViewItemArray &items )
+{
+    bool ret = true;
+
+    wxDataViewModelNotifiers::iterator iter;
+    for (iter = m_notifiers.begin(); iter != m_notifiers.end(); ++iter)
+    {
+        wxDataViewModelNotifier* notifier = *iter;
+        if (!notifier->ItemsChanged( items ))
+            ret = false;
+    }
+
+    return ret;
+}
+
 bool wxDataViewModel::ValueChanged( const wxDataViewItem &item, unsigned int col )
 {
     bool ret = true;