From: Vadim Zeitlin Date: Tue, 27 Jun 2006 14:33:14 +0000 (+0000) Subject: look in the environment for the options values X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/bf85ddfc8a05c4d8306a1dc013bc2af7eccac00d look in the environment for the options values git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39851 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/sysopt.cpp b/src/common/sysopt.cpp index cb3c3429bb..56227995c9 100644 --- a/src/common/sysopt.cpp +++ b/src/common/sysopt.cpp @@ -29,6 +29,7 @@ #include "wx/sysopt.h" #ifndef WX_PRECOMP + #include "wx/app.h" #include "wx/list.h" #include "wx/string.h" #include "wx/arrstr.h" @@ -68,11 +69,33 @@ void wxSystemOptions::SetOption(const wxString& name, int value) wxString wxSystemOptions::GetOption(const wxString& name) { + wxString val; + int idx = gs_optionNames.Index(name, false); - if (idx == wxNOT_FOUND) - return wxEmptyString; - else - return gs_optionValues[idx]; + if ( idx != wxNOT_FOUND ) + { + val = gs_optionValues[idx]; + } + else // not set explicitely + { + // look in the environment: first for a variable named "wx_appname_name" + // which can be set to affect the behaviour or just this application + // and then for "wx_name" which can be set to change the option globally + wxString var(name); + var.Replace(_T("."), _T("_")); // '.'s not allowed in env var names + + wxString appname; + if ( wxTheApp ) + appname = wxTheApp->GetAppName(); + + if ( !appname.empty() ) + val = wxGetenv(_T("wx_") + appname + _T('_') + var); + + if ( val.empty() ) + val = wxGetenv(_T("wx_") + var); + } + + return val; } int wxSystemOptions::GetOptionInt(const wxString& name) @@ -82,7 +105,7 @@ int wxSystemOptions::GetOptionInt(const wxString& name) bool wxSystemOptions::HasOption(const wxString& name) { - return gs_optionNames.Index(name, false) != wxNOT_FOUND; + return !GetOption(name).empty(); } #endif // wxUSE_SYSTEM_OPTIONS