1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-16 15:41:11 +02:00

Fix bug #923 and allow for varying decimal sepatators in settings

This commit is contained in:
Leland Lucius
2015-06-02 15:06:52 -05:00
parent a25a8f8f26
commit 7d359ef010
5 changed files with 107 additions and 186 deletions

View File

@@ -44,6 +44,7 @@
#include <wx/cmdline.h>
#include <wx/fileconf.h>
#include <wx/intl.h>
class EffectAutomationParameters : public wxFileConfig
{
@@ -82,6 +83,22 @@ public:
return wxFileConfig::DoReadLong(NormalizeName(key), pl);
}
virtual bool DoReadDouble(const wxString & key, double *pd) const
{
wxString str;
if (Read(key, &str))
{
wxString dec = wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER);
str.Replace(wxT(","), dec);
str.Replace(wxT("."), dec);
return str.ToDouble(pd);
}
return false;
}
virtual bool DoWriteString(const wxString & key, const wxString & szValue)
{
return wxFileConfig::DoWriteString(NormalizeName(key), szValue);
@@ -94,7 +111,7 @@ public:
virtual bool DoWriteDouble(const wxString & key, double value)
{
return DoWriteString(key, wxString::Format(wxT("%.12g"), value));
return DoWriteString(key, wxString::Format(wxT("%.12f"), value));
}
bool ReadFloat(const wxString & key, float *pf) const
@@ -209,19 +226,6 @@ public:
return (*val != wxNOT_FOUND);
}
wxString NormalizeName(const wxString & name) const
{
wxString cleaned = name;
cleaned.Trim(true).Trim(false);
cleaned.Replace(wxT(" "), wxT("_"));
cleaned.Replace(wxT("/"), wxT("_"));
cleaned.Replace(wxT("\\"), wxT("_"));
cleaned.Replace(wxT(":"), wxT("_"));
return cleaned;
}
bool GetParameters(wxString & parms)
{
wxFileConfig::SetPath(wxT("/"));
@@ -270,6 +274,19 @@ public:
return true;
}
wxString NormalizeName(const wxString & name) const
{
wxString cleaned = name;
cleaned.Trim(true).Trim(false);
cleaned.Replace(wxT(" "), wxT("_"));
cleaned.Replace(wxT("/"), wxT("_"));
cleaned.Replace(wxT("\\"), wxT("_"));
cleaned.Replace(wxT(":"), wxT("_"));
return cleaned;
}
wxString Escape(wxString val)
{
val.Replace(wxT("\\"), wxT("\\\\"), true);