]> git.saurik.com Git - wxWidgets.git/commitdiff
Allow associating a validator with wxGridCellTextEditor.
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 16 May 2013 14:32:55 +0000 (14:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 16 May 2013 14:32:55 +0000 (14:32 +0000)
Add wxGridCellTextEditor::SetValidator() for finer control over text input in
wxGrid.

Closes #15176.

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

docs/changes.txt
include/wx/generic/grideditors.h
interface/wx/grid.h
src/generic/grideditors.cpp

index 11fb2bf55cb00d6256e788eb5454ca321dcc9a6d..b16eb57c1898f1bf412b3272df7b01dfd34f5fd1 100644 (file)
@@ -655,6 +655,7 @@ All (GUI):
 - Add chainable wxWizardPageSimple::Chain() overload.
 - Add wxTextEntryDialog::SetMaxLength() (derEine).
 - Fix maximum width support in wxGridCellTextEditor (derEine).
+- Allow associating a validator with wxGridCellTextEditor (derEine).
 - Add more convenient wxFont(wxFontInfo) ctor.
 - Pass menu events to the handler in the associated wxMenuBar.
 
index 7fc563b427a36e864c7d3855b5becf7dd6c7261d..116758901252e6bf3c6a30b5238eff28c333c4da 100644 (file)
@@ -75,9 +75,9 @@ public:
 
     // parameters string format is "max_width"
     virtual void SetParameters(const wxString& params);
+    virtual void SetValidator(const wxValidator& validator);
 
-    virtual wxGridCellEditor *Clone() const
-        { return new wxGridCellTextEditor(m_maxChars); }
+    virtual wxGridCellEditor *Clone() const;
 
     // added GetValue so we can get the value which is in the control
     virtual wxString GetValue() const;
@@ -92,8 +92,9 @@ protected:
     void DoReset(const wxString& startValue);
 
 private:
-    size_t   m_maxChars;        // max number of chars allowed
-    wxString m_value;
+    size_t                   m_maxChars;        // max number of chars allowed
+    wxScopedPtr<wxValidator> m_validator;
+    wxString                 m_value;
 
     wxDECLARE_NO_COPY_CLASS(wxGridCellTextEditor);
 };
index e55affd1871428e90b6609aff89087017f869af7..2bdabe866a6e211220ba74037795d3e79522fc62 100644 (file)
@@ -638,6 +638,13 @@ public:
         the maximum width.
     */
     virtual void SetParameters(const wxString& params);
+
+    /**
+        Set validator to validate user input.
+
+        @since 2.9.5
+    */
+    virtual void SetValidator(const wxValidator& validator);
 };
 
 /**
index aee78e2fe8833dd6b88e156eec5f89beafe053aa..2963e77821dbd270d13eadcb062a15c687da72f4 100644 (file)
@@ -416,6 +416,11 @@ void wxGridCellTextEditor::DoCreate(wxWindow* parent,
     {
         Text()->SetMaxLength(m_maxChars);
     }
+    // validate text in textctrl, if validator is set
+    if ( m_validator )
+    {
+        Text()->SetValidator(*m_validator);
+    }
 
     wxGridCellEditor::Create(parent, id, evtHandler);
 }
@@ -634,6 +639,21 @@ void wxGridCellTextEditor::SetParameters(const wxString& params)
     }
 }
 
+void wxGridCellTextEditor::SetValidator(const wxValidator& validator)
+{
+    m_validator.reset(static_cast<wxValidator*>(validator.Clone()));
+}
+
+wxGridCellEditor *wxGridCellTextEditor::Clone() const
+{
+    wxGridCellTextEditor* editor = new wxGridCellTextEditor(m_maxChars);
+    if ( m_validator )
+    {
+        editor->SetValidator(*m_validator);
+    }
+    return editor;
+}
+
 // return the value in the text control
 wxString wxGridCellTextEditor::GetValue() const
 {