1///////////////////////////////////////////////////////////////////////////// 2// Name: src/common/sysopt.cpp 3// Purpose: wxSystemOptions 4// Author: Julian Smart 5// Modified by: 6// Created: 2001-07-10 7// RCS-ID: $Id: sysopt.cpp 39851 2006-06-27 14:33:14Z VZ $ 8// Copyright: (c) Julian Smart 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12// ============================================================================ 13// declarations 14// ============================================================================ 15 16// --------------------------------------------------------------------------- 17// headers 18// --------------------------------------------------------------------------- 19 20// For compilers that support precompilation, includes "wx.h". 21#include "wx/wxprec.h" 22 23#if defined(__BORLANDC__) 24 #pragma hdrstop 25#endif 26 27#if wxUSE_SYSTEM_OPTIONS 28 29#include "wx/sysopt.h" 30 31#ifndef WX_PRECOMP 32 #include "wx/app.h" 33 #include "wx/list.h" 34 #include "wx/string.h" 35 #include "wx/arrstr.h" 36#endif 37 38// ---------------------------------------------------------------------------- 39// private globals 40// ---------------------------------------------------------------------------- 41 42static wxArrayString gs_optionNames, 43 gs_optionValues; 44 45// ============================================================================ 46// wxSystemOptions implementation 47// ============================================================================ 48 49// Option functions (arbitrary name/value mapping) 50void wxSystemOptions::SetOption(const wxString& name, const wxString& value) 51{ 52 int idx = gs_optionNames.Index(name, false); 53 if (idx == wxNOT_FOUND) 54 { 55 gs_optionNames.Add(name); 56 gs_optionValues.Add(value); 57 } 58 else 59 { 60 gs_optionNames[idx] = name; 61 gs_optionValues[idx] = value; 62 } 63} 64 65void wxSystemOptions::SetOption(const wxString& name, int value) 66{ 67 SetOption(name, wxString::Format(wxT("%d"), value)); 68} 69 70wxString wxSystemOptions::GetOption(const wxString& name) 71{ 72 wxString val; 73 74 int idx = gs_optionNames.Index(name, false); 75 if ( idx != wxNOT_FOUND ) 76 { 77 val = gs_optionValues[idx]; 78 } 79 else // not set explicitely 80 { 81 // look in the environment: first for a variable named "wx_appname_name" 82 // which can be set to affect the behaviour or just this application 83 // and then for "wx_name" which can be set to change the option globally 84 wxString var(name); 85 var.Replace(_T("."), _T("_")); // '.'s not allowed in env var names 86 87 wxString appname; 88 if ( wxTheApp ) 89 appname = wxTheApp->GetAppName(); 90 91 if ( !appname.empty() ) 92 val = wxGetenv(_T("wx_") + appname + _T('_') + var); 93 94 if ( val.empty() ) 95 val = wxGetenv(_T("wx_") + var); 96 } 97 98 return val; 99} 100 101int wxSystemOptions::GetOptionInt(const wxString& name) 102{ 103 return wxAtoi(GetOption(name)); 104} 105 106bool wxSystemOptions::HasOption(const wxString& name) 107{ 108 return !GetOption(name).empty(); 109} 110 111#endif // wxUSE_SYSTEM_OPTIONS 112