]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/common/sysopt.cpp
Add another test for the insertion point position after SetValue().
[wxWidgets.git] / src / common / sysopt.cpp
... / ...
CommitLineData
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$
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(wxT("."), wxT("_")); // '.'s not allowed in env var names
86 var.Replace(wxT("-"), wxT("_")); // and neither are '-'s
87
88 wxString appname;
89 if ( wxTheApp )
90 appname = wxTheApp->GetAppName();
91
92 if ( !appname.empty() )
93 val = wxGetenv(wxT("wx_") + appname + wxT('_') + var);
94
95 if ( val.empty() )
96 val = wxGetenv(wxT("wx_") + var);
97 }
98
99 return val;
100}
101
102int wxSystemOptions::GetOptionInt(const wxString& name)
103{
104#ifdef _PACC_VER
105 // work around the PalmOS pacc compiler bug
106 return wxAtoi (GetOption(name).data());
107#else
108 return wxAtoi (GetOption(name));
109#endif
110}
111
112bool wxSystemOptions::HasOption(const wxString& name)
113{
114 return !GetOption(name).empty();
115}
116
117#endif // wxUSE_SYSTEM_OPTIONS