X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31f0b4831e9f5b02a319b653505deb4d6afd0a69..87b3708781255019ea1731dce40d699217f1b675:/src/propgrid/props.cpp diff --git a/src/propgrid/props.cpp b/src/propgrid/props.cpp index 805be5a022..eee0cca8cf 100644 --- a/src/propgrid/props.cpp +++ b/src/propgrid/props.cpp @@ -134,7 +134,7 @@ bool wxStringProperty::DoSetAttribute( const wxString& name, wxVariant& value ) if ( name == wxPG_STRING_PASSWORD ) { m_flags &= ~(wxPG_PROP_PASSWORD); - if ( wxPGVariantToInt(value) ) m_flags |= wxPG_PROP_PASSWORD; + if ( value.GetLong() ) m_flags |= wxPG_PROP_PASSWORD; RecreateEditor(); return false; } @@ -169,11 +169,10 @@ wxString wxIntProperty::ValueToString( wxVariant& value, { return wxString::Format(wxS("%li"),value.GetLong()); } - else if ( value.GetType() == wxLongLong_VariantType ) + else if ( value.GetType() == wxPG_VARIANT_TYPE_LONGLONG ) { - wxLongLong ll; - ll << value; - return ll.ToString(); + wxLongLong ll = value.GetLongLong(); + return ll.ToString(); } return wxEmptyString; @@ -221,10 +220,9 @@ bool wxIntProperty::StringToValue( wxVariant& variant, const wxString& text, int { bool doChangeValue = isPrevLong; - if ( !isPrevLong && variantType == wxLongLong_VariantType ) + if ( !isPrevLong && variantType == wxPG_VARIANT_TYPE_LONGLONG ) { - wxLongLong oldValue; - oldValue << variant; + wxLongLong oldValue = variant.GetLongLong(); if ( oldValue.GetValue() != value64 ) doChangeValue = true; } @@ -232,7 +230,7 @@ bool wxIntProperty::StringToValue( wxVariant& variant, const wxString& text, int if ( doChangeValue ) { wxLongLong ll(value64); - variant << ll; + variant = ll; return true; } } @@ -274,14 +272,14 @@ bool wxIntProperty::DoValidation( const wxPGProperty* property, wxLongLong_t& va variant = property->GetAttribute(wxPGGlobalVars->m_strMin); if ( !variant.IsNull() ) { - wxPGVariantToLongLong(variant, &min); + min = variant.GetLongLong().GetValue(); minOk = true; } variant = property->GetAttribute(wxPGGlobalVars->m_strMax); if ( !variant.IsNull() ) { - wxPGVariantToLongLong(variant, &max); + max = variant.GetLongLong().GetValue(); maxOk = true; } @@ -319,12 +317,12 @@ bool wxIntProperty::DoValidation( const wxPGProperty* property, wxLongLong_t& va return true; } -bool wxIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const +bool wxIntProperty::ValidateValue( wxVariant& value, + wxPGValidationInfo& validationInfo ) const { - wxLongLong_t ll; - if ( wxPGVariantToLongLong(value, &ll) ) - return DoValidation(this, ll, &validationInfo, wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); - return true; + wxLongLong_t ll = value.GetLongLong().GetValue(); + return DoValidation(this, ll, &validationInfo, + wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); } wxValidator* wxIntProperty::GetClassValidator() @@ -354,21 +352,21 @@ wxValidator* wxIntProperty::DoGetValidator() const #define wxPG_UINT_TEMPLATE_MAX 8 -static const wxChar* gs_uintTemplates32[wxPG_UINT_TEMPLATE_MAX] = { +static const wxChar* const gs_uintTemplates32[wxPG_UINT_TEMPLATE_MAX] = { wxT("%x"),wxT("0x%x"),wxT("$%x"), wxT("%X"),wxT("0x%X"),wxT("$%X"), wxT("%u"),wxT("%o") }; -static const wxChar* gs_uintTemplates64[wxPG_UINT_TEMPLATE_MAX] = { - wxT("%") wxLongLongFmtSpec wxT("x"), - wxT("0x%") wxLongLongFmtSpec wxT("x"), - wxT("$%") wxLongLongFmtSpec wxT("x"), - wxT("%") wxLongLongFmtSpec wxT("X"), - wxT("0x%") wxLongLongFmtSpec wxT("X"), - wxT("$%") wxLongLongFmtSpec wxT("X"), - wxT("%") wxLongLongFmtSpec wxT("u"), - wxT("%") wxLongLongFmtSpec wxT("o") +static const char* const gs_uintTemplates64[wxPG_UINT_TEMPLATE_MAX] = { + "%" wxLongLongFmtSpec "x", + "0x%" wxLongLongFmtSpec "x", + "$%" wxLongLongFmtSpec "x", + "%" wxLongLongFmtSpec "X", + "0x%" wxLongLongFmtSpec "X", + "$%" wxLongLongFmtSpec "X", + "%" wxLongLongFmtSpec "u", + "%" wxLongLongFmtSpec "o" }; WX_PG_IMPLEMENT_PROPERTY_CLASS(wxUIntProperty,wxPGProperty, @@ -406,11 +404,11 @@ wxString wxUIntProperty::ValueToString( wxVariant& value, if ( value.GetType() == wxPG_VARIANT_TYPE_LONG ) { - return wxString::Format(gs_uintTemplates32[index], (unsigned long)value.GetLong()); + return wxString::Format(gs_uintTemplates32[index], + (unsigned long)value.GetLong()); } - wxULongLong ull; - ull << value; + wxULongLong ull = value.GetULongLong(); return wxString::Format(gs_uintTemplates64[index], ull.GetValue()); } @@ -439,18 +437,16 @@ bool wxUIntProperty::StringToValue( wxVariant& variant, const wxString& text, in { bool doChangeValue = isPrevLong; - if ( !isPrevLong && variantType == wxULongLong_VariantType ) + if ( !isPrevLong && variantType == wxPG_VARIANT_TYPE_ULONGLONG ) { - wxULongLong oldValue; - oldValue << variant; + wxULongLong oldValue = variant.GetULongLong(); if ( oldValue.GetValue() != value64 ) doChangeValue = true; } if ( doChangeValue ) { - wxULongLong ull(value64); - variant << ull; + variant = wxULongLong(value64); return true; } } @@ -478,49 +474,40 @@ bool wxUIntProperty::IntToValue( wxVariant& variant, int number, int WXUNUSED(ar return false; } -#ifdef ULLONG_MAX - #define wxUINT64_MAX ULLONG_MAX - #define wxUINT64_MIN wxULL(0) -#else - #define wxUINT64_MAX wxULL(0xFFFFFFFFFFFFFFFF) - #define wxUINT64_MIN wxULL(0) -#endif - bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const { // Check for min/max - wxULongLong_t ll; - if ( wxPGVariantToULongLong(value, &ll) ) - { - wxULongLong_t min = wxUINT64_MIN; - wxULongLong_t max = wxUINT64_MAX; - wxVariant variant; + wxULongLong_t ll = value.GetULongLong().GetValue(); + + wxULongLong_t min = 0; + wxULongLong_t max = wxUINT64_MAX; + wxVariant variant; - variant = GetAttribute(wxPGGlobalVars->m_strMin); - if ( !variant.IsNull() ) + variant = GetAttribute(wxPGGlobalVars->m_strMin); + if ( !variant.IsNull() ) + { + min = variant.GetULongLong().GetValue(); + if ( ll < min ) { - wxPGVariantToULongLong(variant, &min); - if ( ll < min ) - { - validationInfo.SetFailureMessage( - wxString::Format(_("Value must be %llu or higher"),min) - ); - return false; - } + validationInfo.SetFailureMessage( + wxString::Format(_("Value must be %llu or higher"),min) + ); + return false; } - variant = GetAttribute(wxPGGlobalVars->m_strMax); - if ( !variant.IsNull() ) + } + variant = GetAttribute(wxPGGlobalVars->m_strMax); + if ( !variant.IsNull() ) + { + max = variant.GetULongLong().GetValue(); + if ( ll > max ) { - wxPGVariantToULongLong(variant, &max); - if ( ll > max ) - { - validationInfo.SetFailureMessage( - wxString::Format(_("Value must be %llu or less"),max) - ); - return false; - } + validationInfo.SetFailureMessage( + wxString::Format(_("Value must be %llu or less"),max) + ); + return false; } } + return true; } @@ -632,7 +619,7 @@ wxString wxFloatProperty::ValueToString( wxVariant& value, value, m_precision, !(argFlags & wxPG_FULL_VALUE), - (wxString*) NULL); + NULL); } return text; } @@ -663,7 +650,10 @@ bool wxFloatProperty::StringToValue( wxVariant& variant, const wxString& text, i return false; } -bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value, wxPGValidationInfo* pValidationInfo, int mode ) +bool wxFloatProperty::DoValidation( const wxPGProperty* property, + double& value, + wxPGValidationInfo* pValidationInfo, + int mode ) { // Check for min/max double min = (double)wxINT64_MIN; @@ -675,14 +665,14 @@ bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value, variant = property->GetAttribute(wxPGGlobalVars->m_strMin); if ( !variant.IsNull() ) { - wxPGVariantToDouble(variant, &min); + min = variant.GetDouble(); minOk = true; } variant = property->GetAttribute(wxPGGlobalVars->m_strMax); if ( !variant.IsNull() ) { - wxPGVariantToDouble(variant, &max); + max = variant.GetDouble(); maxOk = true; } @@ -704,7 +694,7 @@ bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value, if ( maxOk ) { - wxPGVariantToDouble(variant, &max); + max = variant.GetDouble(); if ( value > max ) { if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) @@ -721,12 +711,13 @@ bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value, return true; } -bool wxFloatProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const +bool +wxFloatProperty::ValidateValue( wxVariant& value, + wxPGValidationInfo& validationInfo ) const { - double fpv; - if ( wxPGVariantToDouble(value, &fpv) ) - return DoValidation(this, fpv, &validationInfo, wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); - return true; + double fpv = value.GetDouble(); + return DoValidation(this, fpv, &validationInfo, + wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); } bool wxFloatProperty::DoSetAttribute( const wxString& name, wxVariant& value ) @@ -857,8 +848,7 @@ bool wxBoolProperty::DoSetAttribute( const wxString& name, wxVariant& value ) #if wxPG_INCLUDE_CHECKBOX if ( name == wxPG_BOOL_USE_CHECKBOX ) { - int ival = wxPGVariantToInt(value); - if ( ival ) + if ( value.GetLong() ) m_flags |= wxPG_PROP_USE_CHECKBOX; else m_flags &= ~(wxPG_PROP_USE_CHECKBOX); @@ -867,8 +857,7 @@ bool wxBoolProperty::DoSetAttribute( const wxString& name, wxVariant& value ) #endif if ( name == wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING ) { - int ival = wxPGVariantToInt(value); - if ( ival ) + if ( value.GetLong() ) m_flags |= wxPG_PROP_USE_DCC; else m_flags &= ~(wxPG_PROP_USE_DCC); @@ -885,7 +874,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxEnumProperty, wxPGProperty) WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxEnumProperty,long,Choice) -wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, +wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, const wxChar* const* labels, const long* values, int value ) : wxPGProperty(label,name) { SetIndex(0); @@ -899,7 +888,7 @@ wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, con } } -wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, +wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, const wxChar* const* labels, const long* values, wxPGChoices* choicesCache, int value ) : wxPGProperty(label,name) { @@ -963,18 +952,23 @@ wxEnumProperty::~wxEnumProperty () } int wxEnumProperty::ms_nextIndex = -2; -int wxEnumProperty::ms_prevIndex = -1; void wxEnumProperty::OnSetValue() { wxString variantType = m_value.GetType(); if ( variantType == wxPG_VARIANT_TYPE_LONG ) + { ValueFromInt_( m_value, m_value.GetLong(), wxPG_FULL_VALUE ); + } else if ( variantType == wxPG_VARIANT_TYPE_STRING ) + { ValueFromString_( m_value, m_value.GetString(), 0 ); + } else + { wxFAIL; + } if ( ms_nextIndex != -2 ) { @@ -1040,9 +1034,7 @@ bool wxEnumProperty::ValueFromString_( wxVariant& value, const wxString& text, i // If text not any of the choices, store as text instead // (but only if we are wxEditEnumProperty) - if ( useIndex == -1 && - (value.GetType() != wxPG_VARIANT_TYPE_STRING || (m_value.GetString() != text)) && - isEdit ) + if ( useIndex == -1 && isEdit ) { asText = true; } @@ -1118,13 +1110,11 @@ void wxEnumProperty::OnValidationFailure( wxVariant& WXUNUSED(pendingValue) ) { // Revert index - m_index = ms_prevIndex; ResetNextIndex(); } void wxEnumProperty::SetIndex( int index ) { - ms_prevIndex = m_index; ms_nextIndex = -2; m_index = index; } @@ -1148,14 +1138,14 @@ IMPLEMENT_DYNAMIC_CLASS(wxEditEnumProperty, wxPGProperty) WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxEditEnumProperty,wxString,ComboBox) -wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, +wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, const wxChar* const* labels, const long* values, const wxString& value ) : wxEnumProperty(label,name,labels,values,0) { SetValue( value ); } -wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, const wxChar** labels, +wxEditEnumProperty::wxEditEnumProperty( const wxString& label, const wxString& name, const wxChar* const* labels, const long* values, wxPGChoices* choicesCache, const wxString& value ) : wxEnumProperty(label,name,labels,values,choicesCache,0) { @@ -1190,8 +1180,6 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(wxFlagsProperty,long,TextCtrl) void wxFlagsProperty::Init() { - SetParentalType(wxPG_PROP_AGGREGATE); - long value = m_value; // @@ -1229,6 +1217,12 @@ void wxFlagsProperty::Init() m_children.clear(); + // Relay wxPG_BOOL_USE_CHECKBOX and wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING + // to child bool property controls. + long attrUseCheckBox = GetAttributeAsLong(wxPG_BOOL_USE_CHECKBOX, 0); + long attrUseDCC = GetAttributeAsLong(wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING, + 0); + if ( m_choices.IsOk() ) { const wxPGChoices& choices = m_choices; @@ -1251,7 +1245,13 @@ void wxFlagsProperty::Init() { boolProp = new wxBoolProperty( label, label, child_val ); } - AddChild(boolProp); + if ( attrUseCheckBox ) + boolProp->SetAttribute(wxPG_BOOL_USE_CHECKBOX, + true); + if ( attrUseDCC ) + boolProp->SetAttribute(wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING, + true); + AddPrivateChild(boolProp); } m_oldChoicesData = m_choices.GetDataPtr(); @@ -1264,9 +1264,9 @@ void wxFlagsProperty::Init() } wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, - const wxChar** labels, const long* values, long value ) : wxPGProperty(label,name) + const wxChar* const* labels, const long* values, long value ) : wxPGProperty(label,name) { - m_oldChoicesData = (wxPGChoicesData*) NULL; + m_oldChoicesData = NULL; if ( labels ) { @@ -1286,7 +1286,7 @@ wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, const wxArrayString& labels, const wxArrayInt& values, int value ) : wxPGProperty(label,name) { - m_oldChoicesData = (wxPGChoicesData*) NULL; + m_oldChoicesData = NULL; if ( &labels && labels.size() ) { @@ -1306,7 +1306,7 @@ wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, wxPGChoices& choices, long value ) : wxPGProperty(label,name) { - m_oldChoicesData = (wxPGChoicesData*) NULL; + m_oldChoicesData = NULL; if ( choices.IsOk() ) { @@ -1488,15 +1488,34 @@ void wxFlagsProperty::RefreshChildren() m_oldValue = flags; } -void wxFlagsProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const +wxVariant wxFlagsProperty::ChildChanged( wxVariant& thisValue, + int childIndex, + wxVariant& childValue ) const { long oldValue = thisValue.GetLong(); long val = childValue.GetLong(); unsigned long vi = m_choices.GetValue(childIndex); + if ( val ) - thisValue = (long)(oldValue | vi); - else - thisValue = (long)(oldValue & ~(vi)); + return (long) (oldValue | vi); + + return (long) (oldValue & ~(vi)); +} + +bool wxFlagsProperty::DoSetAttribute( const wxString& name, wxVariant& value ) +{ + if ( name == wxPG_BOOL_USE_CHECKBOX || + name == wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING ) + { + for ( size_t i=0; iSetAttribute(name, value); + } + // Must return false so that the attribute is stored in + // flag property's actual property storage + return false; + } + return false; } // ----------------------------------------------------------------------- @@ -1623,10 +1642,9 @@ wxFileProperty::wxFileProperty( const wxString& label, const wxString& name, wxFileProperty::~wxFileProperty() {} -#if wxUSE_VALIDATORS - wxValidator* wxFileProperty::GetClassValidator() { +#if wxUSE_VALIDATORS WX_PG_DOGETVALIDATOR_ENTRY() // Atleast wxPython 2.6.2.1 required that the string argument is given @@ -1644,6 +1662,9 @@ wxValidator* wxFileProperty::GetClassValidator() validator->SetExcludes(exChars); WX_PG_DOGETVALIDATOR_EXIT(validator) +#else + return NULL; +#endif } wxValidator* wxFileProperty::DoGetValidator() const @@ -1651,8 +1672,6 @@ wxValidator* wxFileProperty::DoGetValidator() const return GetClassValidator(); } -#endif - void wxFileProperty::OnSetValue() { const wxString& fnstr = m_value.GetString(); @@ -1781,7 +1800,7 @@ bool wxFileProperty::DoSetAttribute( const wxString& name, wxVariant& value ) // stored in m_attributes. if ( name == wxPG_FILE_SHOW_FULL_PATH ) { - if ( wxPGVariantToInt(value) ) + if ( value.GetLong() ) m_flags |= wxPG_PROP_SHOW_FULL_FILENAME; else m_flags &= ~(wxPG_PROP_SHOW_FULL_FILENAME); @@ -1926,14 +1945,14 @@ bool wxLongStringProperty::DisplayEditorDialog( wxPGProperty* prop, wxPropertyGr rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing ); topsizer->Add( rowsizer, 1, wxEXPAND, 0 ); - rowsizer = new wxBoxSizer( wxHORIZONTAL ); - const int but_sz_flags = - wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT; - rowsizer->Add( new wxButton(dlg,wxID_OK,_("Ok")), - 0, but_sz_flags, spacing ); - rowsizer->Add( new wxButton(dlg,wxID_CANCEL,_("Cancel")), - 0, but_sz_flags, spacing ); - topsizer->Add( rowsizer, 0, wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL, 0 ); + + wxStdDialogButtonSizer* buttonSizer = new wxStdDialogButtonSizer(); + buttonSizer->AddButton(new wxButton(dlg, wxID_OK)); + buttonSizer->AddButton(new wxButton(dlg, wxID_CANCEL)); + buttonSizer->Realize(); + topsizer->Add( buttonSizer, 0, + wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxBOTTOM|wxRIGHT, + spacing ); dlg->SetSizer( topsizer ); topsizer->SetSizeHints( dlg ); @@ -2088,9 +2107,6 @@ bool wxArrayEditorDialog::Create( wxWindow *parent, m_curFocus = 1; - const int but_sz_flags = - wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxALL; //wxBOTTOM|wxLEFT|wxRIGHT; - wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL ); // Message @@ -2102,12 +2118,14 @@ bool wxArrayEditorDialog::Create( wxWindow *parent, wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL ); m_edValue = new wxTextCtrl(this,21,wxEmptyString, wxDefaultPosition,wxDefaultSize,wxTE_PROCESS_ENTER); +#if wxUSE_VALIDATORS wxValidator* validator = GetTextCtrlValidator(); if ( validator ) { m_edValue->SetValidator( *validator ); delete validator; } +#endif rowsizer->Add( m_edValue, 1, wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL|wxALL, spacing ); @@ -2132,7 +2150,7 @@ bool wxArrayEditorDialog::Create( wxWindow *parent, // Manipulator buttons wxBoxSizer* colsizer = new wxBoxSizer( wxVERTICAL ); - m_butCustom = (wxButton*) NULL; + m_butCustom = NULL; if ( m_custBtText ) { m_butCustom = new wxButton(this,28,::wxGetTranslation(m_custBtText)); @@ -2160,17 +2178,14 @@ bool wxArrayEditorDialog::Create( wxWindow *parent, topsizer->Add( new wxStaticLine(this,-1), 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, spacing ); - // buttons - rowsizer = new wxBoxSizer( wxHORIZONTAL ); - /* - const int but_sz_flags = - wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT; - */ - rowsizer->Add( new wxButton(this,wxID_OK,_("Ok")), - 0, but_sz_flags, spacing ); - rowsizer->Add( new wxButton(this,wxID_CANCEL,_("Cancel")), - 0, but_sz_flags, spacing ); - topsizer->Add( rowsizer, 0, wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL, 0 ); + // Standard dialog buttons + wxStdDialogButtonSizer* buttonSizer = new wxStdDialogButtonSizer(); + buttonSizer->AddButton(new wxButton(this, wxID_OK)); + buttonSizer->AddButton(new wxButton(this, wxID_CANCEL)); + buttonSizer->Realize(); + topsizer->Add( buttonSizer, 0, + wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxALL, + spacing ); m_edValue->SetFocus(); @@ -2342,7 +2357,7 @@ wxPGArrayStringEditorDialog::wxPGArrayStringEditorDialog() void wxPGArrayStringEditorDialog::Init() { - m_pCallingClass = (wxArrayStringProperty*) NULL; + m_pCallingClass = NULL; } void wxPGArrayStringEditorDialog::OnCustomEditClick(wxCommandEvent& ) @@ -2559,7 +2574,7 @@ bool wxArrayStringProperty::StringToValue( wxVariant& variant, const wxString& t // Need to replace backslashes with empty characters // (opposite what is done in GenerateValueString). - token.Replace ( wxS("\\"), wxEmptyString, true ); + token.Replace ( wxS("\\\\"), wxS("\\"), true ); arr.Add( token );