diff --git a/include/wx/propgrid/props.h b/include/wx/propgrid/props.h index 29d4b6a0e6..dd4b2a86c8 100644 --- a/include/wx/propgrid/props.h +++ b/include/wx/propgrid/props.h @@ -133,18 +133,27 @@ protected: // ----------------------------------------------------------------------- // Constants used with NumericValidation<>(). -enum wxPGNumericValidationConstants +enum class wxPGNumericValidationMode { // Instead of modifying the value, show an error message. - wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE = 0, + ErrorMessage, // Modify value, but stick with the limitations. - wxPG_PROPERTY_VALIDATION_SATURATE = 1, + Saturate, // Modify value, wrap around on overflow. - wxPG_PROPERTY_VALIDATION_WRAP = 2 + Wrap }; +#if WXWIN_COMPATIBILITY_3_2 +wxDEPRECATED_MSG("use wxPGNumericValidationMode::ErrorMessage instead") +constexpr wxPGNumericValidationMode wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE { wxPGNumericValidationMode::ErrorMessage }; +wxDEPRECATED_MSG("use wxPGNumericValidationMode::Saturate instead") +constexpr wxPGNumericValidationMode wxPG_PROPERTY_VALIDATION_SATURATE { wxPGNumericValidationMode::Saturate }; +wxDEPRECATED_MSG("use wxPGNumericValidationMode::Wrap instead") +constexpr wxPGNumericValidationMode wxPG_PROPERTY_VALIDATION_WRAP { wxPGNumericValidationMode::Wrap }; +#endif // WXWIN_COMPATIBILITY_3_2 + // ----------------------------------------------------------------------- #if wxUSE_VALIDATORS @@ -182,9 +191,16 @@ public: bool UseSpinMotion() const { return m_spinMotion; } // Common validation code - for internal use. +#if WXWIN_COMPATIBILITY_3_2 template + wxDEPRECATED_MSG("use DoNumericValidation with 'mode' argument as wxPGNumericValidationMode") bool DoNumericValidation(T& value, wxPGValidationInfo* pValidationInfo, int mode, T defMin, T defMax) const; +#endif // WXWIN_COMPATIBILITY_3_2 + + template + bool DoNumericValidation(T& value, wxPGValidationInfo* pValidationInfo, + wxPGNumericValidationMode mode, T defMin, T defMax) const; protected: wxNumericProperty(const wxString& label, const wxString& name); @@ -255,14 +271,12 @@ private: static bool DoValidation( const wxNumericProperty* property, wxLongLong& value, wxPGValidationInfo* pValidationInfo, - int mode = - wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ); + wxPGNumericValidationMode = wxPGNumericValidationMode::ErrorMessage); #endif // wxUSE_LONGLONG static bool DoValidation(const wxNumericProperty* property, long& value, wxPGValidationInfo* pValidationInfo, - int mode = - wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + wxPGNumericValidationMode mode = wxPGNumericValidationMode::ErrorMessage); }; // ----------------------------------------------------------------------- @@ -332,12 +346,12 @@ private: static bool DoValidation(const wxNumericProperty* property, wxULongLong& value, wxPGValidationInfo* pValidationInfo, - int mode =wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + wxPGNumericValidationMode = wxPGNumericValidationMode::ErrorMessage); #endif // wxUSE_LONGLONG static bool DoValidation(const wxNumericProperty* property, long& value, wxPGValidationInfo* pValidationInfo, - int mode = wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + wxPGNumericValidationMode mode = wxPGNumericValidationMode::ErrorMessage); }; // ----------------------------------------------------------------------- @@ -390,7 +404,7 @@ private: static bool DoValidation(const wxNumericProperty* property, double& value, wxPGValidationInfo* pValidationInfo, - int mode = wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + wxPGNumericValidationMode mode = wxPGNumericValidationMode::ErrorMessage); }; // ----------------------------------------------------------------------- diff --git a/interface/wx/propgrid/props.h b/interface/wx/propgrid/props.h index 34a8ff9426..bed6dc08a9 100644 --- a/interface/wx/propgrid/props.h +++ b/interface/wx/propgrid/props.h @@ -63,19 +63,19 @@ public: /** Constants used with NumericValidation<>(). */ -enum wxPGNumericValidationConstants +enum class wxPGNumericValidationMode { /** Instead of modifying the value, show an error message. */ - wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE = 0, + ErrorMessage, /** Modify value, but stick with the limitations. */ - wxPG_PROPERTY_VALIDATION_SATURATE = 1, + Saturate, /** Modify value, wrap around on overflow. */ - wxPG_PROPERTY_VALIDATION_WRAP = 2 + Wrap }; diff --git a/src/propgrid/props.cpp b/src/propgrid/props.cpp index fb0951d5b6..1b01d0e25a 100644 --- a/src/propgrid/props.cpp +++ b/src/propgrid/props.cpp @@ -265,9 +265,19 @@ namespace { // Common validation code to be called in ValidateValue() implementations. // Note that 'value' is reference on purpose, so we can write // back to it when mode is wxPG_PROPERTY_VALIDATION_SATURATE or wxPG_PROPERTY_VALIDATION_WRAP. +#if WXWIN_COMPATIBILITY_3_2 template bool wxNumericProperty::DoNumericValidation(T& value, wxPGValidationInfo* pValidationInfo, int mode, T defMin, T defMax) const +{ + return DoNumericValidation(value, pValidationInfo, + static_cast(mode), defMin, defMax); +} +#endif // WXWIN_COMPATIBILITY_3_2 + +template +bool wxNumericProperty::DoNumericValidation(T& value, wxPGValidationInfo* pValidationInfo, + wxPGNumericValidationMode mode, T defMin, T defMax) const { T min = defMin; T max = defMax; @@ -304,7 +314,7 @@ bool wxNumericProperty::DoNumericValidation(T& value, wxPGValidationInfo* pValid { if ( value < min ) { - if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) + if ( mode == wxPGNumericValidationMode::ErrorMessage ) { wxString msg; wxVariant vmin = WXVARIANT(min); @@ -319,7 +329,7 @@ bool wxNumericProperty::DoNumericValidation(T& value, wxPGValidationInfo* pValid } pValidationInfo->SetFailureMessage(msg); } - else if ( mode == wxPG_PROPERTY_VALIDATION_SATURATE ) + else if ( mode == wxPGNumericValidationMode::Saturate ) value = min; else value = max - (min - value); @@ -331,7 +341,7 @@ bool wxNumericProperty::DoNumericValidation(T& value, wxPGValidationInfo* pValid { if ( value > max ) { - if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) + if ( mode == wxPGNumericValidationMode::ErrorMessage ) { wxString msg; wxVariant vmax = WXVARIANT(max); @@ -346,7 +356,7 @@ bool wxNumericProperty::DoNumericValidation(T& value, wxPGValidationInfo* pValid } pValidationInfo->SetFailureMessage(msg); } - else if ( mode == wxPG_PROPERTY_VALIDATION_SATURATE ) + else if ( mode == wxPGNumericValidationMode::Saturate ) value = max; else value = min + (value - max); @@ -470,7 +480,7 @@ bool wxIntProperty::IntToValue( wxVariant& variant, int value, wxPGPropValFormat bool wxIntProperty::DoValidation( const wxNumericProperty* property, wxLongLong& value, wxPGValidationInfo* pValidationInfo, - int mode ) + wxPGNumericValidationMode mode ) { return property->DoNumericValidation(value, pValidationInfo, @@ -481,7 +491,7 @@ bool wxIntProperty::DoValidation( const wxNumericProperty* property, bool wxIntProperty::DoValidation(const wxNumericProperty* property, long& value, wxPGValidationInfo* pValidationInfo, - int mode) + wxPGNumericValidationMode mode) { return property->DoNumericValidation(value, pValidationInfo, mode, wxPG_LONG_MIN, wxPG_LONG_MAX); @@ -496,7 +506,7 @@ bool wxIntProperty::ValidateValue( wxVariant& value, long ll = value.GetLong(); #endif return DoValidation(this, ll, &validationInfo, - wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + wxPGNumericValidationMode::ErrorMessage); } wxValidator* wxIntProperty::GetClassValidator() @@ -520,8 +530,8 @@ wxValidator* wxIntProperty::DoGetValidator() const wxVariant wxIntProperty::AddSpinStepValue(long stepScale) const { - int mode = m_spinWrap ? wxPG_PROPERTY_VALIDATION_WRAP - : wxPG_PROPERTY_VALIDATION_SATURATE; + wxPGNumericValidationMode mode = m_spinWrap ? wxPGNumericValidationMode::Wrap + : wxPGNumericValidationMode::Saturate; wxVariant value = GetValue(); if ( value.GetType() == wxPG_VARIANT_TYPE_LONG ) { @@ -733,7 +743,7 @@ bool wxUIntProperty::IntToValue( wxVariant& variant, int number, wxPGPropValForm bool wxUIntProperty::DoValidation(const wxNumericProperty* property, wxULongLong& value, wxPGValidationInfo* pValidationInfo, - int mode ) + wxPGNumericValidationMode mode ) { return property->DoNumericValidation(value, pValidationInfo, mode, wxULongLong(0), wxULongLong(wxPG_ULLONG_MAX)); @@ -743,7 +753,7 @@ bool wxUIntProperty::DoValidation(const wxNumericProperty* property, bool wxUIntProperty::DoValidation(const wxNumericProperty* property, long& value, wxPGValidationInfo* pValidationInfo, - int mode) + wxPGNumericValidationMode mode) { return property->DoNumericValidation(value, pValidationInfo, mode, 0, wxPG_ULONG_MAX); @@ -757,7 +767,7 @@ bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& valida long uul = value.GetLong(); #endif return DoValidation(this, uul, &validationInfo, - wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + wxPGNumericValidationMode::ErrorMessage); } wxValidator* wxUIntProperty::DoGetValidator() const @@ -806,8 +816,8 @@ bool wxUIntProperty::DoSetAttribute( const wxString& name, wxVariant& value ) wxVariant wxUIntProperty::AddSpinStepValue(long stepScale) const { - int mode = m_spinWrap ? wxPG_PROPERTY_VALIDATION_WRAP - : wxPG_PROPERTY_VALIDATION_SATURATE; + wxPGNumericValidationMode mode = m_spinWrap ? wxPGNumericValidationMode::Wrap + : wxPGNumericValidationMode::Saturate; wxVariant value = GetValue(); if ( value.GetType() == wxPG_VARIANT_TYPE_LONG ) { @@ -964,7 +974,7 @@ bool wxFloatProperty::StringToValue( wxVariant& variant, const wxString& text, w bool wxFloatProperty::DoValidation( const wxNumericProperty* property, double& value, wxPGValidationInfo* pValidationInfo, - int mode ) + wxPGNumericValidationMode mode ) { return property->DoNumericValidation(value, pValidationInfo, mode, wxPG_DBL_MIN, wxPG_DBL_MAX); @@ -976,7 +986,7 @@ wxFloatProperty::ValidateValue( wxVariant& value, { double fpv = value.GetDouble(); return DoValidation(this, fpv, &validationInfo, - wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); + wxPGNumericValidationMode::ErrorMessage); } bool wxFloatProperty::DoSetAttribute( const wxString& name, wxVariant& value ) @@ -1011,8 +1021,8 @@ wxValidator* wxFloatProperty::DoGetValidator() const wxVariant wxFloatProperty::AddSpinStepValue(long stepScale) const { - int mode = m_spinWrap ? wxPG_PROPERTY_VALIDATION_WRAP - : wxPG_PROPERTY_VALIDATION_SATURATE; + wxPGNumericValidationMode mode = m_spinWrap ? wxPGNumericValidationMode::Wrap + : wxPGNumericValidationMode::Saturate; wxVariant value = GetValue(); double v = value.GetDouble(); double step = m_spinStep.GetDouble();