]> git.saurik.com Git - wxWidgets.git/commitdiff
allow to test changing combobox selection too
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 26 Apr 2007 02:10:36 +0000 (02:10 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 26 Apr 2007 02:10:36 +0000 (02:10 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/widgets/combobox.cpp

index 933864004cede505614612236410c473e2ca8e74..d92a7989f1aa78882ec2f936d6dc832d855cae4f 100644 (file)
@@ -53,6 +53,7 @@
 enum
 {
     ComboPage_Reset = wxID_HIGHEST,
+    ComboPage_SetCurrent,
     ComboPage_CurText,
     ComboPage_InsertionPointText,
     ComboPage_Insert,
@@ -104,13 +105,13 @@ protected:
     void OnButtonAdd(wxCommandEvent& event);
     void OnButtonAddSeveral(wxCommandEvent& event);
     void OnButtonAddMany(wxCommandEvent& event);
+    void OnButtonSetCurrent(wxCommandEvent& event);
 
     void OnComboBox(wxCommandEvent& event);
     void OnComboText(wxCommandEvent& event);
 
     void OnCheckOrRadioBox(wxCommandEvent& event);
 
-    void OnUpdateUICurText(wxUpdateUIEvent& event);
     void OnUpdateUIInsertionPointText(wxUpdateUIEvent& event);
 
     void OnUpdateUIInsert(wxUpdateUIEvent& event);
@@ -119,6 +120,7 @@ protected:
     void OnUpdateUIDeleteButton(wxUpdateUIEvent& event);
     void OnUpdateUIDeleteSelButton(wxUpdateUIEvent& event);
     void OnUpdateUIResetButton(wxUpdateUIEvent& event);
+    void OnUpdateUISetCurrent(wxUpdateUIEvent& event);
 
     // reset the combobox parameters
     void Reset();
@@ -145,7 +147,8 @@ protected:
     wxTextCtrl *m_textInsert,
                *m_textAdd,
                *m_textChange,
-               *m_textDelete;
+               *m_textDelete,
+               *m_textCur;
 
 private:
     DECLARE_EVENT_TABLE()
@@ -166,12 +169,12 @@ BEGIN_EVENT_TABLE(ComboboxWidgetsPage, WidgetsPage)
     EVT_BUTTON(ComboPage_Add, ComboboxWidgetsPage::OnButtonAdd)
     EVT_BUTTON(ComboPage_AddSeveral, ComboboxWidgetsPage::OnButtonAddSeveral)
     EVT_BUTTON(ComboPage_AddMany, ComboboxWidgetsPage::OnButtonAddMany)
+    EVT_BUTTON(ComboPage_SetCurrent, ComboboxWidgetsPage::OnButtonSetCurrent)
 
     EVT_TEXT_ENTER(ComboPage_InsertText, ComboboxWidgetsPage::OnButtonInsert)
     EVT_TEXT_ENTER(ComboPage_AddText, ComboboxWidgetsPage::OnButtonAdd)
     EVT_TEXT_ENTER(ComboPage_DeleteText, ComboboxWidgetsPage::OnButtonDelete)
 
-    EVT_UPDATE_UI(ComboPage_CurText, ComboboxWidgetsPage::OnUpdateUICurText)
     EVT_UPDATE_UI(ComboPage_InsertionPointText, ComboboxWidgetsPage::OnUpdateUIInsertionPointText)
 
     EVT_UPDATE_UI(ComboPage_Reset, ComboboxWidgetsPage::OnUpdateUIResetButton)
@@ -183,6 +186,7 @@ BEGIN_EVENT_TABLE(ComboboxWidgetsPage, WidgetsPage)
     EVT_UPDATE_UI(ComboPage_Change, ComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
     EVT_UPDATE_UI(ComboPage_ChangeText, ComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
     EVT_UPDATE_UI(ComboPage_DeleteSel, ComboboxWidgetsPage::OnUpdateUIDeleteSelButton)
+    EVT_UPDATE_UI(ComboPage_SetCurrent, ComboboxWidgetsPage::OnUpdateUISetCurrent)
 
     EVT_COMBOBOX(ComboPage_Combo, ComboboxWidgetsPage::OnComboBox)
     EVT_TEXT(ComboPage_Combo, ComboboxWidgetsPage::OnComboText)
@@ -265,14 +269,14 @@ void ComboboxWidgetsPage::CreateContent()
 
     wxSizer *sizerRow;
 
-    wxTextCtrl *text;
-    sizerRow = CreateSizerWithTextAndLabel(_T("Current selection"),
-                                           ComboPage_CurText,
-                                           &text);
-    text->SetEditable(false);
+    sizerRow = CreateSizerWithTextAndButton(ComboPage_SetCurrent,
+                                            _T("Current &selection"),
+                                            ComboPage_CurText,
+                                            &m_textCur);
 
     sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
 
+    wxTextCtrl *text;
     sizerRow = CreateSizerWithTextAndLabel(_T("Insertion Point"),
                                            ComboPage_InsertionPointText,
                                            &text);
@@ -496,6 +500,15 @@ void ComboboxWidgetsPage::OnButtonAddMany(wxCommandEvent& WXUNUSED(event))
     }
 }
 
+void ComboboxWidgetsPage::OnButtonSetCurrent(wxCommandEvent& WXUNUSED(event))
+{
+    long n;
+    if ( !m_textCur->GetValue().ToLong(&n) )
+        return;
+
+    m_combobox->SetSelection(n);
+}
+
 void ComboboxWidgetsPage::OnButtonAddSeveral(wxCommandEvent& WXUNUSED(event))
 {
     m_combobox->Append(_T("First"));
@@ -503,12 +516,6 @@ void ComboboxWidgetsPage::OnButtonAddSeveral(wxCommandEvent& WXUNUSED(event))
     m_combobox->Append(_T("and the last (very very very very very very very very very very long) one"));
 }
 
-void ComboboxWidgetsPage::OnUpdateUICurText(wxUpdateUIEvent& event)
-{
-    if (m_combobox)
-        event.SetText( wxString::Format(_T("%d"), m_combobox->GetSelection()) );
-}
-
 void ComboboxWidgetsPage::OnUpdateUIInsertionPointText(wxUpdateUIEvent& event)
 {
     if (m_combobox)
@@ -561,6 +568,14 @@ void ComboboxWidgetsPage::OnUpdateUIAddSeveral(wxUpdateUIEvent& event)
         event.Enable(!(m_combobox->GetWindowStyle() & wxCB_SORT));
 }
 
+void ComboboxWidgetsPage::OnUpdateUISetCurrent(wxUpdateUIEvent& event)
+{
+    long n;
+    event.Enable( m_textCur->GetValue().ToLong(&n) &&
+                    (n == wxNOT_FOUND ||
+                        (n >= 0 && (unsigned)n < m_combobox->GetCount())) );
+}
+
 void ComboboxWidgetsPage::OnComboText(wxCommandEvent& event)
 {
     if (!m_combobox)
@@ -580,7 +595,9 @@ void ComboboxWidgetsPage::OnComboText(wxCommandEvent& event)
 void ComboboxWidgetsPage::OnComboBox(wxCommandEvent& event)
 {
     long sel = event.GetInt();
-    m_textDelete->SetValue(wxString::Format(_T("%ld"), sel));
+    const wxString selstr = wxString::Format(_T("%ld"), sel);
+    m_textDelete->SetValue(selstr);
+    m_textCur->SetValue(selstr);
 
     wxLogMessage(_T("Combobox item %ld selected"), sel);