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
This commit is contained in:
Vadim Zeitlin 2006-06-27 14:33:14 +00:00
parent 7b4eedf698
commit bf85ddfc8a

View File

@ -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