#include "wx/sysopt.h"
#ifndef WX_PRECOMP
+ #include "wx/app.h"
#include "wx/list.h"
#include "wx/string.h"
#include "wx/arrstr.h"
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)
bool wxSystemOptions::HasOption(const wxString& name)
{
- return gs_optionNames.Index(name, false) != wxNOT_FOUND;
+ return !GetOption(name).empty();
}
#endif // wxUSE_SYSTEM_OPTIONS