#include "wx/sysopt.h"
#ifndef WX_PRECOMP
+ #include "wx/app.h"
#include "wx/list.h"
#include "wx/string.h"
+ #include "wx/arrstr.h"
#endif
-#include "wx/arrstr.h"
-
// ----------------------------------------------------------------------------
// private globals
// ----------------------------------------------------------------------------
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 explicitly
+ {
+ // 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(wxT("."), wxT("_")); // '.'s not allowed in env var names
+ var.Replace(wxT("-"), wxT("_")); // and neither are '-'s
+
+ wxString appname;
+ if ( wxTheApp )
+ appname = wxTheApp->GetAppName();
+
+ if ( !appname.empty() )
+ val = wxGetenv(wxT("wx_") + appname + wxT('_') + var);
+
+ if ( val.empty() )
+ val = wxGetenv(wxT("wx_") + var);
+ }
+
+ return val;
}
int wxSystemOptions::GetOptionInt(const wxString& name)
{
- return wxAtoi(GetOption(name));
+ return wxAtoi (GetOption(name));
}
bool wxSystemOptions::HasOption(const wxString& name)
{
- return gs_optionNames.Index(name, false) != wxNOT_FOUND;
+ return !GetOption(name).empty();
}
#endif // wxUSE_SYSTEM_OPTIONS