X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/026767c6aee4c61b904fe68b79af186258fd6005..cc4d5638c66a409e421420ed7110917755a66788:/src/propgrid/props.cpp?ds=sidebyside diff --git a/src/propgrid/props.cpp b/src/propgrid/props.cpp index f8d0857e7c..f1112a0ac8 100644 --- a/src/propgrid/props.cpp +++ b/src/propgrid/props.cpp @@ -4,7 +4,6 @@ // Author: Jaakko Salli // Modified by: // Created: 2005-05-14 -// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -95,7 +94,9 @@ wxString wxStringProperty::ValueToString( wxVariant& value, if ( GetChildCount() && HasFlag(wxPG_PROP_COMPOSED_VALUE) ) { // Value stored in m_value is non-editable, non-full value - if ( (argFlags & wxPG_FULL_VALUE) || (argFlags & wxPG_EDITABLE_VALUE) ) + if ( (argFlags & wxPG_FULL_VALUE) || + (argFlags & wxPG_EDITABLE_VALUE) || + !s.length() ) { // Calling this under incorrect conditions will fail wxASSERT_MSG( argFlags & wxPG_VALUE_IS_CURRENT, @@ -186,8 +187,10 @@ wxNumericPropertyValidator:: { arr.Add(wxS("+")); arr.Add(wxS("-")); - arr.Add(wxS(".")); arr.Add(wxS("e")); + + // Use locale-specific decimal point + arr.Add(wxString::Format("%g", 1.1)[1]); } SetIncludes(arr); @@ -199,14 +202,14 @@ bool wxNumericPropertyValidator::Validate(wxWindow* parent) return false; wxWindow* wnd = GetWindow(); - if ( !wnd->IsKindOf(CLASSINFO(wxTextCtrl)) ) + if ( !wxDynamicCast(wnd, wxTextCtrl) ) return true; // Do not allow zero-length string wxTextCtrl* tc = static_cast(wnd); wxString text = tc->GetValue(); - if ( !text.length() ) + if ( text.empty() ) return false; return true; @@ -256,7 +259,7 @@ bool wxIntProperty::StringToValue( wxVariant& variant, const wxString& text, int wxString s; long value32; - if ( text.length() == 0 ) + if ( text.empty() ) { variant.MakeNull(); return true; @@ -470,9 +473,9 @@ wxValidator* wxIntProperty::DoGetValidator() const #define wxPG_UINT_TEMPLATE_MAX 8 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") + wxT("%lx"),wxT("0x%lx"),wxT("$%lx"), + wxT("%lX"),wxT("0x%lX"),wxT("$%lX"), + wxT("%lu"),wxT("%lo") }; static const char* const gs_uintTemplates64[wxPG_UINT_TEMPLATE_MAX] = { @@ -535,7 +538,7 @@ bool wxUIntProperty::StringToValue( wxVariant& variant, const wxString& text, in wxString variantType = variant.GetType(); bool isPrevLong = variantType == wxPG_VARIANT_TYPE_LONG; - if ( text.length() == 0 ) + if ( text.empty() ) { variant.MakeNull(); return true; @@ -666,11 +669,11 @@ wxFloatProperty::~wxFloatProperty() { } // This helper method provides standard way for floating point-using // properties to convert values to string. -void wxPropertyGrid::DoubleToString(wxString& target, - double value, - int precision, - bool removeZeroes, - wxString* precTemplate) +const wxString& wxPropertyGrid::DoubleToString(wxString& target, + double value, + int precision, + bool removeZeroes, + wxString* precTemplate) { if ( precision >= 0 ) { @@ -678,7 +681,7 @@ void wxPropertyGrid::DoubleToString(wxString& target, if (!precTemplate) precTemplate = &text1; - if ( !precTemplate->length() ) + if ( precTemplate->empty() ) { *precTemplate = wxS("%."); *precTemplate << wxString::Format( wxS("%i"), precision ); @@ -692,7 +695,7 @@ void wxPropertyGrid::DoubleToString(wxString& target, target.Printf( wxS("%f"), value ); } - if ( removeZeroes && precision != 0 && target.length() ) + if ( removeZeroes && precision != 0 && !target.empty() ) { // Remove excess zeroes (do not remove this code just yet, // since sprintf can't do the same consistently across platforms). @@ -713,6 +716,27 @@ void wxPropertyGrid::DoubleToString(wxString& target, if ( new_len != target.length() ) target.resize(new_len); } + + // Remove sign from zero + if ( target.length() >= 2 && target[0] == wxS('-') ) + { + bool isZero = true; + wxString::const_iterator i = target.begin() + 1; + + for ( ; i != target.end(); i++ ) + { + if ( *i != wxS('0') && *i != wxS('.') && *i != wxS(',') ) + { + isZero = false; + break; + } + } + + if ( isZero ) + target.erase(target.begin()); + } + + return target; } wxString wxFloatProperty::ValueToString( wxVariant& value, @@ -735,7 +759,7 @@ bool wxFloatProperty::StringToValue( wxVariant& variant, const wxString& text, i wxString s; double value; - if ( text.length() == 0 ) + if ( text.empty() ) { variant.MakeNull(); return true; @@ -889,7 +913,7 @@ bool wxBoolProperty::StringToValue( wxVariant& variant, const wxString& text, in text.CmpNoCase(m_label) == 0 ) boolValue = true; - if ( text.length() == 0 ) + if ( text.empty() ) { variant.MakeNull(); return true; @@ -1055,7 +1079,7 @@ bool wxEnumProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& WXUNUS // unless property has string as preferred value type // To reduce code size, use conversion here as well if ( value.GetType() == wxPG_VARIANT_TYPE_STRING && - !this->IsKindOf(CLASSINFO(wxEditEnumProperty)) ) + !wxDynamicCastThis(wxEditEnumProperty) ) return ValueFromString_( value, value.GetString(), wxPG_PROPERTY_SPECIFIC ); return true; @@ -1102,7 +1126,7 @@ bool wxEnumProperty::ValueFromString_( wxVariant& value, const wxString& text, i bool asText = false; - bool isEdit = this->IsKindOf(CLASSINFO(wxEditEnumProperty)); + bool isEdit = this->IsKindOf(wxCLASSINFO(wxEditEnumProperty)); // If text not any of the choices, store as text instead // (but only if we are wxEditEnumProperty) @@ -1493,7 +1517,7 @@ bool wxFlagsProperty::StringToValue( wxVariant& variant, const wxString& text, i // semicolons are no longer valid delimeters WX_PG_TOKENIZER1_BEGIN(text,wxS(',')) - if ( token.length() ) + if ( !token.empty() ) { // Determine which one it is long bit = IdToBit( token ); @@ -1658,14 +1682,14 @@ bool wxPGFileDialogAdapter::DoShowDialog( wxPropertyGrid* propGrid, wxPGProperty wxString path; int indFilter = -1; - if ( property->IsKindOf(CLASSINFO(wxFileProperty)) ) + if ( wxDynamicCast(property, wxFileProperty) ) { fileProp = ((wxFileProperty*)property); wxFileName filename = fileProp->GetValue().GetString(); path = filename.GetPath(); indFilter = fileProp->m_indFilter; - if ( !path.length() && fileProp->m_basePath.length() ) + if ( path.empty() && !fileProp->m_basePath.empty() ) path = fileProp->m_basePath; } else @@ -1678,8 +1702,8 @@ bool wxPGFileDialogAdapter::DoShowDialog( wxPropertyGrid* propGrid, wxPGProperty property->GetAttribute(wxS("DialogTitle"), _("Choose a file")), property->GetAttribute(wxS("InitialPath"), path), wxEmptyString, - property->GetAttribute(wxPG_FILE_WILDCARD, _("All files (*.*)|*.*")), - 0, + property->GetAttribute(wxPG_FILE_WILDCARD, wxALL_FILES), + property->GetAttributeAsLong(wxPG_FILE_DIALOG_STYLE, 0), wxDefaultPosition ); if ( indFilter >= 0 ) @@ -1707,7 +1731,7 @@ wxFileProperty::wxFileProperty( const wxString& label, const wxString& name, { m_flags |= wxPG_PROP_SHOW_FULL_FILENAME; m_indFilter = -1; - SetAttribute( wxPG_FILE_WILDCARD, _("All files (*.*)|*.*") ); + SetAttribute( wxPG_FILE_WILDCARD, wxALL_FILES); SetValue(value); } @@ -1756,7 +1780,7 @@ void wxFileProperty::OnSetValue() } // Find index for extension. - if ( m_indFilter < 0 && fnstr.length() ) + if ( m_indFilter < 0 && !fnstr.empty() ) { wxString ext = filename.GetExt(); int curind = 0; @@ -1773,7 +1797,7 @@ void wxFileProperty::OnSetValue() pos = len; wxString found_ext = m_wildcard.substr(ext_begin, pos-ext_begin); - if ( found_ext.length() > 0 ) + if ( !found_ext.empty() ) { if ( found_ext[0] == wxS('*') ) { @@ -1814,7 +1838,7 @@ wxString wxFileProperty::ValueToString( wxVariant& value, return wxEmptyString; wxString fullName = filename.GetFullName(); - if ( !fullName.length() ) + if ( fullName.empty() ) return wxEmptyString; if ( argFlags & wxPG_FULL_VALUE ) @@ -1823,7 +1847,7 @@ wxString wxFileProperty::ValueToString( wxVariant& value, } else if ( m_flags & wxPG_PROP_SHOW_FULL_FILENAME ) { - if ( m_basePath.Length() ) + if ( !m_basePath.empty() ) { wxFileName fn2(filename); fn2.MakeRelativeTo(m_basePath); @@ -2161,7 +2185,7 @@ bool wxPGArrayEditorDialog::Create( wxWindow *parent, wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL ); // Message - if ( message.length() ) + if ( !message.empty() ) topsizer->Add( new wxStaticText(this,-1,message), 0, wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL|wxALL, spacing ); @@ -2184,26 +2208,26 @@ bool wxPGArrayEditorDialog::Create( wxWindow *parent, but = m_elb->GetNewButton(); m_elbSubPanel = but->GetParent(); - but->Connect(but->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, + but->Connect(but->GetId(), wxEVT_BUTTON, wxCommandEventHandler(wxPGArrayEditorDialog::OnAddClick), NULL, this); but = m_elb->GetDelButton(); - but->Connect(but->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, + but->Connect(but->GetId(), wxEVT_BUTTON, wxCommandEventHandler(wxPGArrayEditorDialog::OnDeleteClick), NULL, this); but = m_elb->GetUpButton(); - but->Connect(but->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, + but->Connect(but->GetId(), wxEVT_BUTTON, wxCommandEventHandler(wxPGArrayEditorDialog::OnUpClick), NULL, this); but = m_elb->GetDownButton(); - but->Connect(but->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, + but->Connect(but->GetId(), wxEVT_BUTTON, wxCommandEventHandler(wxPGArrayEditorDialog::OnDownClick), NULL, this); - lc->Connect(lc->GetId(), wxEVT_COMMAND_LIST_END_LABEL_EDIT, + lc->Connect(lc->GetId(), wxEVT_LIST_END_LABEL_EDIT, wxListEventHandler(wxPGArrayEditorDialog::OnEndLabelEdit), NULL, this); @@ -2512,7 +2536,8 @@ wxArrayStringProperty::ArrayStringToString( wxString& dst, if ( flags & Escape ) { preas = delimiter; - pdr = wxS("\\") + static_cast(delimiter); + pdr = wxS("\\"); + pdr += delimiter; } if ( itemCount ) @@ -2530,7 +2555,7 @@ wxArrayStringProperty::ArrayStringToString( wxString& dst, if ( flags & Escape ) { str.Replace( wxS("\\"), wxS("\\\\"), true ); - if ( pdr.length() ) + if ( !pdr.empty() ) str.Replace( preas, pdr, true ); }