X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/410c3efc0518390dbdc39f42100682cffa446dcc..af4168e2cfbeffbe3b53380471aa31e9ab63a598:/src/common/sysopt.cpp diff --git a/src/common/sysopt.cpp b/src/common/sysopt.cpp index b04061e2d1..ede2e7a547 100644 --- a/src/common/sysopt.cpp +++ b/src/common/sysopt.cpp @@ -1,10 +1,9 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: common/sysopt.cpp +// Name: src/common/sysopt.cpp // Purpose: wxSystemOptions // Author: Julian Smart // Modified by: // Created: 2001-07-10 -// RCS-ID: $Id$ // Copyright: (c) Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -17,10 +16,6 @@ // headers // --------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "sysopt.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -30,14 +25,15 @@ #if wxUSE_SYSTEM_OPTIONS +#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/string.h" -#include "wx/sysopt.h" -#include "wx/arrstr.h" - // ---------------------------------------------------------------------------- // private globals // ---------------------------------------------------------------------------- @@ -72,22 +68,44 @@ 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 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 -