]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/listctrl/listtest.cpp
Fix docs for Bind
[wxWidgets.git] / samples / listctrl / listtest.cpp
index 8377d92ca49ecb399dc29f3b467edea7fb12e291..4a23f885dd0f3a630e66416e5fdf2d162e7c7c82 100644 (file)
@@ -78,6 +78,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(LIST_THAW, MyFrame::OnThaw)
 
     EVT_UPDATE_UI(LIST_SHOW_COL_INFO, MyFrame::OnUpdateShowColInfo)
+    EVT_UPDATE_UI(LIST_TOGGLE_MULTI_SEL, MyFrame::OnUpdateToggleMultiSel)    
 END_EVENT_TABLE()
 
 BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
@@ -266,6 +267,17 @@ void MyFrame::DoSize()
     m_logWindow->SetSize(0, y + 1, size.x, size.y - y);
 }
 
+bool MyFrame::CheckNonVirtual() const
+{
+    if ( !m_listCtrl->HasFlag(wxLC_VIRTUAL) )
+        return true;
+
+    // "this" == whatever
+    wxLogWarning(_T("Can't do this in virtual view, sorry."));
+
+    return false;
+}
+
 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 {
     Close(TRUE);
@@ -307,11 +319,14 @@ void MyFrame::OnFocusLast(wxCommandEvent& WXUNUSED(event))
 
 void MyFrame::OnToggleFirstSel(wxCommandEvent& WXUNUSED(event))
 {
-    m_listCtrl->SetItemState(0, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
+    m_listCtrl->SetItemState(0, (~m_listCtrl->GetItemState(0, wxLIST_STATE_SELECTED) ) & wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
 }
 
 void MyFrame::OnDeselectAll(wxCommandEvent& WXUNUSED(event))
 {
+    if ( !CheckNonVirtual() )
+        return;
+
     int n = m_listCtrl->GetItemCount();
     for (int i = 0; i < n; i++)
         m_listCtrl->SetItemState(i,0,wxLIST_STATE_SELECTED);
@@ -319,6 +334,9 @@ void MyFrame::OnDeselectAll(wxCommandEvent& WXUNUSED(event))
 
 void MyFrame::OnSelectAll(wxCommandEvent& WXUNUSED(event))
 {
+    if ( !CheckNonVirtual() )
+        return;
+
     int n = m_listCtrl->GetItemCount();
     for (int i = 0; i < n; i++)
         m_listCtrl->SetItemState(i,wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
@@ -574,6 +592,11 @@ void MyFrame::OnToggleMultiSel(wxCommandEvent& WXUNUSED(event))
     RecreateList(flags);
 }
 
+void MyFrame::OnUpdateToggleMultiSel(wxUpdateUIEvent& event)
+{
+     event.Check((m_listCtrl->GetWindowStyleFlag() & wxLC_SINGLE_SEL) == 0);
+}
+
 void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event))
 {
     m_listCtrl->SetForegroundColour(wxGetColourFromUser(this));