]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxCheckListBox::GetCheckedItems() helper.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 21 Jan 2013 11:18:55 +0000 (11:18 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 21 Jan 2013 11:18:55 +0000 (11:18 +0000)
This method is similar to wxListBox::GetSelections() and allows to retrieve
all checked items at once.

Closes #14969.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/checklst.h
interface/wx/checklst.h
src/common/checklstcmn.cpp
tests/controls/checklistboxtest.cpp

index d202fc9ace0fc760fd3319f5698fe8ee3a02fe12..3637bd1d598e928e75a43d1e08e3572584682e41 100644 (file)
@@ -607,6 +607,7 @@ All (GUI):
 - Fix wrong tab order in wxAuiNotebook after dragging (Mark Barber).
 - Fix bug in generic wxDataViewCtrl column dragging (jobuz).
 - Add wxMask::GetBitmap() for wxMSW, wxGTK and wxOSX
+- Add wxCheckListBox::GetCheckedItems() (hartwigw).
 
 wxGTK:
 
index a96c2ae3da007b45dda415490f641901e1aaa969..80f08b37ec4c5e4cb6e80ae224d1645408efd34c 100644 (file)
@@ -37,6 +37,8 @@ public:
     virtual bool IsChecked(unsigned int item) const = 0;
     virtual void Check(unsigned int item, bool check = true) = 0;
 
+    virtual unsigned int GetCheckedItems(wxArrayInt& checkedItems) const;
+
     wxDECLARE_NO_COPY_CLASS(wxCheckListBoxBase);
 };
 
index aa5fc9804958462568faf9a8ddd99afbb61bd5ee..9689955c6b31c602591e967215ee4470eba3c023 100644 (file)
@@ -151,6 +151,19 @@ public:
             Index of item whose check status is to be returned.
     */
     bool IsChecked(unsigned int item) const;
-    
+
+    /**
+        Return the indices of the checked items.
+
+        @param checkedItems
+            A reference to the array that is filled with the indices of the
+            checked items.
+        @return The number of checked items.
+
+        @see Check(), IsChecked()
+
+        @since 2.9.5
+    */
+    unsigned int GetCheckedItems(wxArrayInt& checkedItems) const;
 };
 
index 6721038c152c2b6bae033f86b46f4b41c63609f9..fe451702a7b4e69885795f9341cc4498cec8c1e2 100644 (file)
@@ -99,4 +99,22 @@ wxCONSTRUCTOR_4( wxCheckListBox, wxWindow*, Parent, wxWindowID, Id, \
                  wxPoint, Position, wxSize, Size )
 
 
+// ============================================================================
+// implementation
+// ============================================================================
+
+unsigned int wxCheckListBoxBase::GetCheckedItems(wxArrayInt& checkedItems) const
+{
+    unsigned int const numberOfItems = GetCount();
+
+    checkedItems.clear();
+    for ( unsigned int i = 0; i < numberOfItems; ++i )
+    {
+        if ( IsChecked(i) )
+            checkedItems.push_back(i);
+    }
+
+    return checkedItems.size();
+}
+
 #endif
index 16f3664d26a2ba5187e0059d29cd673201b2b626..cf61babec09109adfb38caadf32635edff984410 100644 (file)
@@ -67,6 +67,7 @@ void CheckListBoxTestCase::Check()
 {
     EventCounter toggled(m_check, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED);
 
+    wxArrayInt checkedItems;
     wxArrayString testitems;
     testitems.Add("item 0");
     testitems.Add("item 1");
@@ -84,6 +85,9 @@ void CheckListBoxTestCase::Check()
     CPPUNIT_ASSERT_EQUAL(true, m_check->IsChecked(0));
     CPPUNIT_ASSERT_EQUAL(false, m_check->IsChecked(1));
 
+    CPPUNIT_ASSERT_EQUAL(1, m_check->GetCheckedItems(checkedItems));
+    CPPUNIT_ASSERT_EQUAL(0, checkedItems[0]);
+
     //Make sure a double check of an items doesn't deselect it
     m_check->Check(0);