]>
Commit | Line | Data |
---|---|---|
c4afa2cb VZ |
1 | \section{\class{wxConfigBase}}\label{wxconfigbase} |
2 | ||
3 | wxConfigBase class defines the basic interface of all config classes. It can | |
f6bcfd97 | 4 | not be used by itself (it is an abstract base class) and you will always use one |
2319d2b0 | 5 | of its derivations: wxIniConfig, wxFileConfig, wxRegConfig or any other. |
c4afa2cb VZ |
6 | |
7 | However, usually you don't even need to know the precise nature of the class | |
8 | you're working with but you would just use the wxConfigBase methods. This | |
9 | allows you to write the same code regardless of whether you're working with | |
10 | the registry under Win32 or text-based config files under Unix (or even | |
11 | Windows 3.1 .INI files if you're really unlucky). To make writing the portable | |
052ae0e5 | 12 | code even easier, wxWindows provides a typedef wxConfig |
c4afa2cb VZ |
13 | which is mapped onto the native wxConfigBase implementation on the given |
14 | platform: i.e. wxRegConfig under Win32, wxIniConfig under Win16 and | |
15 | wxFileConfig otherwise. | |
16 | ||
5f3cd8a2 VZ |
17 | See \helpref{config overview}{wxconfigoverview} for the descriptions of all |
18 | features of this class. | |
c4afa2cb | 19 | |
eee786e9 VS |
20 | It is highly recommended to use static functions {\it Get()} and/or {\it Set()}, |
21 | so please have a \helpref{look at them.}{wxconfigstaticfunctions} | |
22 | ||
c4afa2cb VZ |
23 | \wxheading{Derived from} |
24 | ||
25 | No base class | |
26 | ||
954b8ae6 JS |
27 | \wxheading{Include files} |
28 | ||
29 | <wx/config.h> (to let wxWindows choose a wxConfig class for your platform)\\ | |
30 | <wx/confbase.h> (base config class)\\ | |
31 | <wx/fileconf.h> (wxFileconfig class)\\ | |
32 | <wx/msw/regconf.h> (wxRegConfig class)\\ | |
33 | <wx/msw/iniconf.h> (wxIniConfig class) | |
34 | ||
c4afa2cb VZ |
35 | \wxheading{Example} |
36 | ||
37 | Here is how you would typically use this class: | |
38 | ||
39 | \begin{verbatim} | |
40 | // using wxConfig instead of writing wxFileConfig or wxRegConfig enhances | |
41 | // portability of the code | |
42 | wxConfig *config = new wxConfig("MyAppName"); | |
43 | ||
44 | wxString str; | |
052ae0e5 | 45 | if ( config->Read("LastPrompt", &str) ) { |
b8de493f | 46 | // last prompt was found in the config file/registry and its value is now |
c4afa2cb VZ |
47 | // in str |
48 | ... | |
49 | } | |
50 | else { | |
51 | // no last prompt... | |
52 | } | |
53 | ||
54 | // another example: using default values and the full path instead of just | |
55 | // key name: if the key is not found , the value 17 is returned | |
873fb06d | 56 | long value = config->Read("/LastRun/CalculatedValues/MaxValue", 17); |
c4afa2cb VZ |
57 | ... |
58 | ... | |
59 | ... | |
60 | // at the end of the program we would save everything back | |
61 | config->Write("LastPrompt", str); | |
62 | config->Write("/LastRun/CalculatedValues/MaxValue", value); | |
63 | ||
64 | // the changes will be written back automatically | |
65 | delete config; | |
66 | \end{verbatim} | |
67 | ||
68 | This basic example, of course, doesn't show all wxConfig features, such as | |
69 | enumerating, testing for existence and deleting the entries and groups of | |
b8de493f | 70 | entries in the config file, its abilities to automatically store the default |
c4afa2cb VZ |
71 | values or expand the environment variables on the fly. However, the main idea |
72 | is that using this class is easy and that it should normally do what you | |
73 | expect it to. | |
74 | ||
75 | NB: in the documentation of this class, the words "config file" also mean | |
76 | "registry hive" for wxRegConfig and, generally speaking, might mean any | |
b8de493f | 77 | physical storage where a wxConfigBase-derived class stores its data. |
c4afa2cb | 78 | |
b8de493f | 79 | \latexignore{\rtfignore{\wxheading{Function groups}}} |
c4afa2cb | 80 | |
eee786e9 | 81 | \membersection{Static functions}\label{wxconfigstaticfunctions} |
c4afa2cb | 82 | |
052ae0e5 | 83 | These functions deal with the "default" config object. Although its usage is |
c4afa2cb VZ |
84 | not at all mandatory it may be convenient to use a global config object |
85 | instead of creating and deleting the local config objects each time you need | |
86 | one (especially because creating a wxFileConfig object might be a time | |
87 | consuming operation). In this case, you may create this global config object | |
88 | in the very start of the program and {\it Set()} it as the default. Then, from | |
b52ea5c5 VZ |
89 | anywhere in your program, you may access it using the {\it Get()} function. |
90 | Note that wxWindows will delete this config object for you during the program | |
91 | shutdown (from \helpref{wxApp::OnExit}{wxapponexit} to be precise) but you can | |
92 | also do it yourself earlier if needed. | |
c4afa2cb VZ |
93 | |
94 | As it happens, you may even further simplify the procedure described above: | |
95 | you may forget about calling {\it Set()}. When {\it Get()} is called and there | |
96 | is no current object, it will create one using {\it Create()} function. To | |
97 | disable this behaviour {\it DontCreateOnDemand()} is provided. | |
98 | ||
eee786e9 VS |
99 | {\bf Note:} You should use either {\it Set()} or {\it Get()} because wxWindows |
100 | library itself would take advantage of it and could save various information | |
101 | in it. For example \helpref{wxFontMapper}{wxfontmapper} or Unix version | |
102 | of \helpref{wxFileDialog}{wxfiledialog} have ability to use wxConfig class. | |
103 | ||
b8de493f JS |
104 | \helpref{Set}{wxconfigbaseset}\\ |
105 | \helpref{Get}{wxconfigbaseget}\\ | |
106 | \helpref{Create}{wxconfigbasecreate}\\ | |
107 | \helpref{DontCreateOnDemand}{wxconfigbasedontcreateondemand} | |
c4afa2cb | 108 | |
b8de493f | 109 | \membersection{Constructor and destructor} |
c4afa2cb | 110 | |
b8de493f JS |
111 | \helpref{wxConfigBase}{wxconfigbasector}\\ |
112 | \helpref{\destruct{wxConfigBase}}{wxconfigbasedtor} | |
c4afa2cb | 113 | |
b8de493f | 114 | \membersection{Path management} |
c4afa2cb | 115 | |
5f3cd8a2 VZ |
116 | As explained in \helpref{config overview}{wxconfigoverview}, the config classes |
117 | support a file system-like hierarchy of keys (files) and groups (directories). | |
c4afa2cb VZ |
118 | As in the file system case, to specify a key in the config class you must use |
119 | a path to it. Config classes also support the notion of the current group, | |
120 | which makes it possible to use the relative paths. To clarify all this, here | |
f6bcfd97 | 121 | is an example (it is only for the sake of demonstration, it doesn't do anything |
c4afa2cb VZ |
122 | sensible!): |
123 | ||
124 | \begin{verbatim} | |
125 | wxConfig *config = new wxConfig("FooBarApp"); | |
126 | ||
127 | // right now the current path is '/' | |
128 | conf->Write("RootEntry", 1); | |
129 | ||
130 | // go to some other place: if the group(s) don't exist, they will be created | |
131 | conf->SetPath("/Group/Subgroup"); | |
132 | ||
133 | // create an entry in subgroup | |
134 | conf->Write("SubgroupEntry", 3); | |
21f280f4 | 135 | |
c4afa2cb VZ |
136 | // '..' is understood |
137 | conf->Write("../GroupEntry", 2); | |
138 | conf->SetPath(".."); | |
139 | ||
140 | wxASSERT( conf->Read("Subgroup/SubgroupEntry", 0l) == 3 ); | |
141 | ||
f6bcfd97 | 142 | // use absolute path: it is allowed, too |
c4afa2cb VZ |
143 | wxASSERT( conf->Read("/RootEntry", 0l) == 1 ); |
144 | \end{verbatim} | |
145 | ||
f6bcfd97 | 146 | {\it Warning}: it is probably a good idea to always restore the path to its |
c4afa2cb | 147 | old value on function exit: |
b8de493f | 148 | |
c4afa2cb VZ |
149 | \begin{verbatim} |
150 | void foo(wxConfigBase *config) | |
151 | { | |
152 | wxString strOldPath = config->GetPath(); | |
153 | ||
154 | config->SetPath("/Foo/Data"); | |
155 | ... | |
156 | ||
157 | config->SetPath(strOldPath); | |
158 | } | |
159 | \end{verbatim} | |
160 | ||
161 | because otherwise the assert in the following example will surely fail | |
162 | (we suppose here that {\it foo()} function is the same as above except that it | |
163 | doesn't save and restore the path): | |
164 | ||
165 | \begin{verbatim} | |
166 | void bar(wxConfigBase *config) | |
167 | { | |
168 | config->Write("Test", 17); | |
21f280f4 | 169 | |
c4afa2cb VZ |
170 | foo(config); |
171 | ||
172 | // we're reading "/Foo/Data/Test" here! -1 will probably be returned... | |
173 | wxASSERT( config->Read("Test", -1) == 17 ); | |
174 | } | |
175 | \end{verbatim} | |
176 | ||
177 | Finally, the path separator in wxConfigBase and derived classes is always '/', | |
f6bcfd97 | 178 | regardless of the platform (i.e. it is {\bf not} '$\backslash\backslash$' under Windows). |
c4afa2cb | 179 | |
b8de493f JS |
180 | \helpref{SetPath}{wxconfigbasesetpath}\\ |
181 | \helpref{GetPath}{wxconfigbasegetpath} | |
c4afa2cb | 182 | |
b8de493f | 183 | \membersection{Enumeration} |
c4afa2cb VZ |
184 | |
185 | The functions in this section allow to enumerate all entries and groups in the | |
b8de493f | 186 | config file. All functions here return FALSE when there are no more items. |
c4afa2cb | 187 | |
b8de493f | 188 | You must pass the same index to GetNext and GetFirst (don't modify it). |
f6bcfd97 | 189 | Please note that it is {\bf not} the index of the current item (you will have |
c4afa2cb | 190 | some great surprizes with wxRegConfig if you assume this) and you shouldn't |
f6bcfd97 | 191 | even look at it: it is just a "cookie" which stores the state of the |
c4afa2cb VZ |
192 | enumeration. It can't be stored inside the class because it would prevent you |
193 | from running several enumerations simultaneously, that's why you must pass it | |
194 | explicitly. | |
195 | ||
196 | Having said all this, enumerating the config entries/groups is very simple: | |
197 | ||
198 | \begin{verbatim} | |
199 | wxArrayString aNames; | |
200 | ||
201 | // enumeration variables | |
202 | wxString str; | |
203 | long dummy; | |
204 | ||
205 | // first enum all entries | |
206 | bool bCont = config->GetFirstEntry(str, dummy); | |
207 | while ( bCont ) { | |
208 | aNames.Add(str); | |
209 | ||
210 | bCont = GetConfig()->GetNextEntry(str, dummy); | |
211 | } | |
212 | ||
213 | ... we have all entry names in aNames... | |
214 | ||
215 | // now all groups... | |
216 | bCont = GetConfig()->GetFirstGroup(str, dummy); | |
217 | while ( bCont ) { | |
218 | aNames.Add(str); | |
219 | ||
220 | bCont = GetConfig()->GetNextGroup(str, dummy); | |
221 | } | |
222 | ||
223 | ... we have all group (and entry) names in aNames... | |
224 | ||
225 | \end{verbatim} | |
226 | ||
b8de493f | 227 | There are also functions to get the number of entries/subgroups without |
c4afa2cb VZ |
228 | actually enumerating them, but you will probably never need them. |
229 | ||
b8de493f JS |
230 | \helpref{GetFirstGroup}{wxconfigbasegetfirstgroup}\\ |
231 | \helpref{GetNextGroup}{wxconfigbasegetnextgroup}\\ | |
232 | \helpref{GetFirstEntry}{wxconfigbasegetfirstentry}\\ | |
233 | \helpref{GetNextEntry}{wxconfigbasegetnextentry}\\ | |
234 | \helpref{GetNumberOfEntries}{wxconfigbasegetnumberofentries}\\ | |
235 | \helpref{GetNumberOfGroups}{wxconfigbasegetnumberofgroups} | |
c4afa2cb | 236 | |
b8de493f | 237 | \membersection{Tests of existence} |
c4afa2cb | 238 | |
b8de493f JS |
239 | \helpref{HasGroup}{wxconfigbasehasgroup}\\ |
240 | \helpref{HasEntry}{wxconfigbasehasentry}\\ | |
19d40bab VZ |
241 | \helpref{Exists}{wxconfigbaseexists}\\ |
242 | \helpref{GetEntryType}{wxconfigbasegetentrytype} | |
c4afa2cb | 243 | |
f6bcfd97 | 244 | \membersection{Miscellaneous functions} |
052ae0e5 | 245 | |
052ae0e5 | 246 | \helpref{GetAppName}{wxconfigbasegetappname}\\ |
f6bcfd97 BP |
247 | \helpref{GetVendorName}{wxconfigbasegetvendorname}\\ |
248 | \helpref{SetUmask}{wxfileconfigsetumask} | |
052ae0e5 | 249 | |
b8de493f | 250 | \membersection{Key access} |
c4afa2cb VZ |
251 | |
252 | These function are the core of wxConfigBase class: they allow you to read and | |
253 | write config file data. All {\it Read} function take a default value which | |
254 | will be returned if the specified key is not found in the config file. | |
255 | ||
256 | Currently, only two types of data are supported: string and long (but it might | |
257 | change in the near future). To work with other types: for {\it int} or {\it | |
258 | bool} you can work with function taking/returning {\it long} and just use the | |
259 | casts. Better yet, just use {\it long} for all variables which you're going to | |
6aa358ae | 260 | save in the config file: chances are that \tt{sizeof(bool) == sizeof(int) == sizeof(long)} anyhow on your system. For {\it float}, {\it double} and, in |
c4afa2cb VZ |
261 | general, any other type you'd have to translate them to/from string |
262 | representation and use string functions. | |
263 | ||
264 | Try not to read long values into string variables and vice versa: although it | |
265 | just might work with wxFileConfig, you will get a system error with | |
266 | wxRegConfig because in the Windows registry the different types of entries are | |
267 | indeed used. | |
268 | ||
269 | Final remark: the {\it szKey} parameter for all these functions can contain an | |
270 | arbitrary path (either relative or absolute), not just the key name. | |
271 | ||
b8de493f JS |
272 | \helpref{Read}{wxconfigbaseread}\\ |
273 | \helpref{Write}{wxconfigbasewrite}\\ | |
274 | \helpref{Flush}{wxconfigbaseflush} | |
275 | ||
5d1902d6 VZ |
276 | \membersection{Rename entries/groups} |
277 | ||
278 | The functions in this section allow to rename entries or subgroups of the | |
279 | current group. They will return FALSE on error. typically because either the | |
280 | entry/group with the original name doesn't exist, because the entry/group with | |
281 | the new name already exists or because the function is not supported in this | |
282 | wxConfig implementation. | |
283 | ||
284 | \helpref{RenameEntry}{wxconfigbaserenameentry}\\ | |
285 | \helpref{RenameGroup}{wxconfigbaserenamegroup} | |
286 | ||
b8de493f JS |
287 | \membersection{Delete entries/groups} |
288 | ||
289 | The functions in this section delete entries and/or groups of entries from the | |
290 | config file. {\it DeleteAll()} is especially useful if you want to erase all | |
291 | traces of your program presence: for example, when you uninstall it. | |
292 | ||
293 | \helpref{DeleteEntry}{wxconfigbasedeleteentry}\\ | |
294 | \helpref{DeleteGroup}{wxconfigbasedeletegroup}\\ | |
295 | \helpref{DeleteAll}{wxconfigbasedeleteall} | |
296 | ||
297 | \membersection{Options} | |
298 | ||
299 | Some aspects of wxConfigBase behaviour can be changed during run-time. The | |
300 | first of them is the expansion of environment variables in the string values | |
301 | read from the config file: for example, if you have the following in your | |
302 | config file: | |
303 | ||
304 | \begin{verbatim} | |
305 | # config file for my program | |
306 | UserData = $HOME/data | |
307 | ||
308 | # the following syntax is valud only under Windows | |
309 | UserData = %windir%\\data.dat | |
310 | \end{verbatim} | |
311 | ||
6aa358ae GT |
312 | the call to \tt{config->Read("UserData")} will return something like |
313 | \tt{"/home/zeitlin/data"} if you're lucky enough to run a Linux system ;-) | |
b8de493f JS |
314 | |
315 | Although this feature is very useful, it may be annoying if you read a value | |
316 | which containts '\$' or '\%' symbols (\% is used for environment variables | |
317 | expansion under Windows) which are not used for environment variable | |
318 | expansion. In this situation you may call SetExpandEnvVars(FALSE) just before | |
319 | reading this value and SetExpandEnvVars(TRUE) just after. Another solution | |
320 | would be to prefix the offending symbols with a backslash. | |
321 | ||
322 | The following functions control this option: | |
323 | ||
324 | \helpref{IsExpandingEnvVars}{wxconfigbaseisexpandingenvvars}\\ | |
f6bcfd97 | 325 | \helpref{SetExpandEnvVars}{wxconfigbasesetexpandenvvars}\\ |
b8de493f JS |
326 | \helpref{SetRecordDefaults}{wxconfigbasesetrecorddefaults}\\ |
327 | \helpref{IsRecordingDefaults}{wxconfigbaseisrecordingdefaults} | |
328 | ||
329 | %%%%% MEMBERS HERE %%%%% | |
330 | \helponly{\insertatlevel{2}{ | |
331 | ||
332 | \wxheading{Members} | |
333 | ||
334 | }} | |
335 | ||
052ae0e5 | 336 | \membersection{wxConfigBase::wxConfigBase}\label{wxconfigbasector} |
b8de493f | 337 | |
052ae0e5 JS |
338 | \func{}{wxConfigBase}{\param{const wxString\& }{appName = wxEmptyString}, |
339 | \param{const wxString\& }{vendorName = wxEmptyString}, | |
340 | \param{const wxString\& }{localFilename = wxEmptyString}, | |
341 | \param{const wxString\& }{globalFilename = wxEmptyString}, | |
342 | \param{long}{ style = 0}} | |
b8de493f | 343 | |
5f3cd8a2 VZ |
344 | This is the default and only constructor of the wxConfigBase class, and |
345 | derived classes. | |
b8de493f | 346 | |
052ae0e5 | 347 | \wxheading{Parameters} |
b8de493f | 348 | |
5f3cd8a2 VZ |
349 | \docparam{appName}{The application name. If this is empty, the class will |
350 | normally use \helpref{wxApp::GetAppName}{wxappgetappname} to set it. The | |
351 | application name is used in the registry key on Windows, and can be used to | |
352 | deduce the local filename parameter if that is missing.} | |
b8de493f | 353 | |
052ae0e5 JS |
354 | \docparam{vendorName}{The vendor name. If this is empty, it is assumed that |
355 | no vendor name is wanted, if this is optional for the current config class. | |
356 | The vendor name is appended to the application name for wxRegConfig.} | |
b8de493f | 357 | |
5f3cd8a2 VZ |
358 | \docparam{localFilename}{Some config classes require a local filename. If this |
359 | is not present, but required, the application name will be used instead.} | |
b8de493f | 360 | |
5f3cd8a2 VZ |
361 | \docparam{globalFilename}{Some config classes require a global filename. If |
362 | this is not present, but required, the application name will be used instead.} | |
b8de493f | 363 | |
5f3cd8a2 VZ |
364 | \docparam{style}{Can be one of wxCONFIG\_USE\_LOCAL\_FILE and |
365 | wxCONFIG\_USE\_GLOBAL\_FILE. The style interpretation depends on the config | |
366 | class and is ignored by some. For wxFileConfig, these styles determine whether | |
367 | a local or global config file is created or used. If the flag is present but | |
368 | the parameter is empty, the parameter will be set to a default. If the | |
369 | parameter is present but the style flag not, the relevant flag will be added | |
3135da71 | 370 | to the style. For wxFileConfig you can also add wxCONFIG\_USE\_RELATIVE\_PATH |
7c0ea335 | 371 | by logicaly or'ing it to either of the \_FILE options to tell wxFileConfig to |
3135da71 | 372 | use relative instead of absolute paths. } |
b8de493f | 373 | |
052ae0e5 | 374 | \wxheading{Remarks} |
b8de493f | 375 | |
5f3cd8a2 VZ |
376 | By default, environment variable expansion is on and recording defaults is |
377 | off. | |
b8de493f | 378 | |
052ae0e5 | 379 | \membersection{wxConfigBase::\destruct{wxConfigBase}}\label{wxconfigbasedtor} |
b8de493f | 380 | |
052ae0e5 | 381 | \func{}{\destruct{wxConfigBase}}{\void} |
b8de493f | 382 | |
052ae0e5 | 383 | Empty but ensures that dtor of all derived classes is virtual. |
b8de493f JS |
384 | |
385 | \membersection{wxConfigBase::Create}\label{wxconfigbasecreate} | |
386 | ||
052ae0e5 | 387 | \func{static wxConfigBase *}{Create}{\void} |
b8de493f JS |
388 | |
389 | Create a new config object: this function will create the "best" | |
5f3cd8a2 VZ |
390 | implementation of wxConfig available for the current platform, see comments |
391 | near the definition of wxCONFIG\_WIN32\_NATIVE for details. It returns the | |
392 | created object and also sets it as the current one. | |
b8de493f JS |
393 | |
394 | \membersection{wxConfigBase::DontCreateOnDemand}\label{wxconfigbasedontcreateondemand} | |
395 | ||
396 | \func{void}{DontCreateOnDemand}{\void} | |
397 | ||
398 | Calling this function will prevent {\it Get()} from automatically creating a | |
399 | new config object if the current one is NULL. It might be useful to call it | |
400 | near the program end to prevent new config object "accidental" creation. | |
401 | ||
052ae0e5 | 402 | \membersection{wxConfigBase::DeleteAll}\label{wxconfigbasedeleteall} |
b8de493f | 403 | |
052ae0e5 | 404 | \func{bool}{DeleteAll}{\void} |
b8de493f | 405 | |
052ae0e5 JS |
406 | Delete the whole underlying object (disk file, registry key, ...). Primarly |
407 | for use by desinstallation routine. | |
b8de493f | 408 | |
052ae0e5 | 409 | \membersection{wxConfigBase::DeleteEntry}\label{wxconfigbasedeleteentry} |
b8de493f | 410 | |
f6bcfd97 | 411 | \func{bool}{DeleteEntry}{\param{const wxString\& }{ key}, \param{bool}{ bDeleteGroupIfEmpty = TRUE}} |
b8de493f | 412 | |
5f3cd8a2 VZ |
413 | Deletes the specified entry and the group it belongs to if it was the last key |
414 | in it and the second parameter is true. | |
b8de493f | 415 | |
052ae0e5 | 416 | \membersection{wxConfigBase::DeleteGroup}\label{wxconfigbasedeletegroup} |
b8de493f | 417 | |
052ae0e5 | 418 | \func{bool}{DeleteGroup}{\param{const wxString\& }{ key}} |
b8de493f | 419 | |
052ae0e5 JS |
420 | Delete the group (with all subgroups) |
421 | ||
422 | \membersection{wxConfigBase::Exists}\label{wxconfigbaseexists} | |
423 | ||
424 | \constfunc{bool}{Exists}{\param{wxString\& }{strName}} | |
425 | ||
426 | returns TRUE if either a group or an entry with a given name exists | |
427 | ||
428 | \membersection{wxConfigBase::Flush}\label{wxconfigbaseflush} | |
429 | ||
430 | \func{bool}{Flush}{\param{bool }{bCurrentOnly = FALSE}} | |
431 | ||
432 | permanently writes all changes (otherwise, they're only written from object's | |
433 | destructor) | |
434 | ||
435 | \membersection{wxConfigBase::Get}\label{wxconfigbaseget} | |
436 | ||
eee786e9 | 437 | \func{wxConfigBase *}{Get}{\param{bool }{CreateOnDemand = TRUE}} |
052ae0e5 | 438 | |
eee786e9 VS |
439 | Get the current config object. If there is no current object and |
440 | {\it CreateOnDemand} is TRUE, creates one | |
052ae0e5 JS |
441 | (using {\it Create}) unless DontCreateOnDemand was called previously. |
442 | ||
443 | \membersection{wxConfigBase::GetAppName}\label{wxconfigbasegetappname} | |
444 | ||
445 | \constfunc{wxString}{GetAppName}{\void} | |
446 | ||
447 | Returns the application name. | |
448 | ||
19d40bab VZ |
449 | \membersection{wxConfigBase::GetEntryType}\label{wxconfigbasegetentrytype} |
450 | ||
451 | \constfunc{enum wxConfigBase::EntryType}{GetEntryType}{\param{const wxString\& }{name}} | |
452 | ||
453 | Returns the type of the given entry or {\it Unknown} if the entry doesn't | |
454 | exist. This function should be used to decide which version of Read() should | |
455 | be used because some of wxConfig implementations will complain about type | |
456 | mismatch otherwise: e.g., an attempt to read a string value from an integer | |
6776a0b2 | 457 | key with wxRegConfig will fail. |
19d40bab VZ |
458 | |
459 | The result is an element of enum EntryType: | |
460 | ||
461 | \begin{verbatim} | |
462 | enum EntryType | |
463 | { | |
464 | Unknown, | |
465 | String, | |
466 | Boolean, | |
467 | Integer, | |
468 | Float | |
469 | }; | |
470 | \end{verbatim} | |
471 | ||
052ae0e5 JS |
472 | \membersection{wxConfigBase::GetFirstGroup}\label{wxconfigbasegetfirstgroup} |
473 | ||
f6bcfd97 | 474 | \constfunc{bool}{GetFirstGroup}{\param{wxString\& }{str}, \param{long\&}{ index}} |
052ae0e5 JS |
475 | |
476 | Gets the first group. | |
477 | ||
21f280f4 RD |
478 | \pythonnote{The wxPython version of this method returns a 3-tuple |
479 | consisting of the continue flag, the value string, and the index for | |
480 | the next call.} | |
481 | ||
052ae0e5 JS |
482 | \membersection{wxConfigBase::GetFirstEntry}\label{wxconfigbasegetfirstentry} |
483 | ||
f6bcfd97 | 484 | \constfunc{bool}{GetFirstEntry}{\param{wxString\& }{str}, \param{long\&}{ index}} |
052ae0e5 JS |
485 | |
486 | Gets the first entry. | |
487 | ||
21f280f4 RD |
488 | \pythonnote{The wxPython version of this method returns a 3-tuple |
489 | consisting of the continue flag, the value string, and the index for | |
490 | the next call.} | |
491 | ||
052ae0e5 JS |
492 | \membersection{wxConfigBase::GetNextGroup}\label{wxconfigbasegetnextgroup} |
493 | ||
f6bcfd97 | 494 | \constfunc{bool}{GetNextGroup}{\param{wxString\& }{str}, \param{long\&}{ index}} |
052ae0e5 JS |
495 | |
496 | Gets the next group. | |
497 | ||
21f280f4 RD |
498 | \pythonnote{The wxPython version of this method returns a 3-tuple |
499 | consisting of the continue flag, the value string, and the index for | |
500 | the next call.} | |
501 | ||
052ae0e5 JS |
502 | \membersection{wxConfigBase::GetNextEntry}\label{wxconfigbasegetnextentry} |
503 | ||
f6bcfd97 | 504 | \constfunc{bool}{GetNextEntry}{\param{wxString\& }{str}, \param{long\&}{ index}} |
052ae0e5 JS |
505 | |
506 | Gets the next entry. | |
507 | ||
21f280f4 RD |
508 | \pythonnote{The wxPython version of this method returns a 3-tuple |
509 | consisting of the continue flag, the value string, and the index for | |
510 | the next call.} | |
511 | ||
052ae0e5 JS |
512 | \membersection{wxConfigBase::GetNumberOfEntries}\label{wxconfigbasegetnumberofentries} |
513 | ||
514 | \constfunc{uint }{GetNumberOfEntries}{\param{bool }{bRecursive = FALSE}} | |
515 | ||
516 | \membersection{wxConfigBase::GetNumberOfGroups}\label{wxconfigbasegetnumberofgroups} | |
517 | ||
518 | \constfunc{uint}{GetNumberOfGroups}{\param{bool }{bRecursive = FALSE}} | |
519 | ||
5f3cd8a2 VZ |
520 | Get number of entries/subgroups in the current group, with or without its |
521 | subgroups. | |
b8de493f JS |
522 | |
523 | \membersection{wxConfigBase::GetPath}\label{wxconfigbasegetpath} | |
524 | ||
052ae0e5 | 525 | \constfunc{const wxString\&}{GetPath}{\void} |
b8de493f JS |
526 | |
527 | Retrieve the current path (always as absolute path). | |
528 | ||
052ae0e5 | 529 | \membersection{wxConfigBase::GetVendorName}\label{wxconfigbasegetvendorname} |
b8de493f | 530 | |
052ae0e5 | 531 | \constfunc{wxString}{GetVendorName}{\void} |
b8de493f | 532 | |
052ae0e5 | 533 | Returns the vendor name. |
b8de493f JS |
534 | |
535 | \membersection{wxConfigBase::HasEntry}\label{wxconfigbasehasentry} | |
536 | ||
537 | \constfunc{bool}{HasEntry}{\param{wxString\& }{strName}} | |
538 | ||
539 | returns TRUE if the entry by this name exists | |
540 | ||
052ae0e5 | 541 | \membersection{wxConfigBase::HasGroup}\label{wxconfigbasehasgroup} |
b8de493f | 542 | |
052ae0e5 | 543 | \constfunc{bool}{HasGroup}{\param{const wxString\& }{strName}} |
b8de493f | 544 | |
052ae0e5 JS |
545 | returns TRUE if the group by this name exists |
546 | ||
547 | \membersection{wxConfigBase::IsExpandingEnvVars}\label{wxconfigbaseisexpandingenvvars} | |
548 | ||
549 | \constfunc{bool}{IsExpandingEnvVars}{\void} | |
550 | ||
551 | Returns TRUE if we are expanding environment variables in key values. | |
552 | ||
553 | \membersection{wxConfigBase::IsRecordingDefaults}\label{wxconfigbaseisrecordingdefaults} | |
554 | ||
f6bcfd97 | 555 | \constfunc{bool}{IsRecordingDefaults}{\void} |
052ae0e5 JS |
556 | |
557 | Returns TRUE if we are writing defaults back to the config file. | |
b8de493f JS |
558 | |
559 | \membersection{wxConfigBase::Read}\label{wxconfigbaseread} | |
560 | ||
f6bcfd97 | 561 | \constfunc{bool}{Read}{\param{const wxString\& }{key}, \param{wxString*}{ str}} |
052ae0e5 | 562 | |
5f3cd8a2 VZ |
563 | Read a string from the key, returning TRUE if the value was read. If the key |
564 | was not found, {\it str} is not changed. | |
052ae0e5 | 565 | |
f6bcfd97 | 566 | \constfunc{bool}{Read}{\param{const wxString\& }{key}, \param{wxString*}{ str}, \param{const wxString\& }{defaultVal}} |
052ae0e5 | 567 | |
5f3cd8a2 VZ |
568 | Read a string from the key. The default value is returned if the key was not |
569 | found. | |
c4afa2cb | 570 | |
052ae0e5 | 571 | Returns TRUE if value was really read, FALSE if the default was used. |
c4afa2cb | 572 | |
5f3cd8a2 VZ |
573 | \constfunc{wxString}{Read}{\param{const wxString\& }{key}, \param{const |
574 | wxString\& }{defaultVal}} | |
c4afa2cb | 575 | |
052ae0e5 | 576 | Another version of {\it Read()}, returning the string value directly. |
c4afa2cb | 577 | |
052ae0e5 | 578 | \constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{long*}{ l}} |
c4afa2cb | 579 | |
5f3cd8a2 VZ |
580 | Reads a long value, returning TRUE if the value was found. If the value was |
581 | not found, {\it l} is not changed. | |
c4afa2cb | 582 | |
5f3cd8a2 VZ |
583 | \constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{long*}{ l}, |
584 | \param{long}{ defaultVal}} | |
052ae0e5 | 585 | |
5f3cd8a2 VZ |
586 | Reads a long value, returning TRUE if the value was found. If the value was |
587 | not found, {\it defaultVal} is used instead. | |
052ae0e5 | 588 | |
f6bcfd97 | 589 | \constfunc{long }{Read}{\param{const wxString\& }{key}, \param{long}{ defaultVal}} |
052ae0e5 | 590 | |
5f3cd8a2 VZ |
591 | Reads a long value from the key and returns it. {\it defaultVal} is returned |
592 | if the key is not found. | |
c4afa2cb VZ |
593 | |
594 | NB: writing | |
052ae0e5 | 595 | |
6aa358ae GT |
596 | {\small |
597 | \begin{verbatim} | |
598 | conf->Read("key", 0); | |
599 | \end{verbatim} | |
600 | } | |
052ae0e5 | 601 | |
5f3cd8a2 VZ |
602 | won't work because the call is ambiguous: compiler can not choose between two |
603 | {\it Read} functions. Instead, write: | |
052ae0e5 | 604 | |
6aa358ae GT |
605 | {\small |
606 | \begin{verbatim} | |
607 | conf->Read("key", 0l); | |
608 | \end{verbatim} | |
609 | } | |
c4afa2cb | 610 | |
052ae0e5 | 611 | \constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{double*}{ d}} |
c4afa2cb | 612 | |
5f3cd8a2 VZ |
613 | Reads a double value, returning TRUE if the value was found. If the value was |
614 | not found, {\it d} is not changed. | |
c4afa2cb | 615 | |
5f3cd8a2 | 616 | \constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{double*}{ d}, |
0d57be45 | 617 | \param{double}{ defaultVal}} |
b8de493f | 618 | |
5f3cd8a2 VZ |
619 | Reads a double value, returning TRUE if the value was found. If the value was |
620 | not found, {\it defaultVal} is used instead. | |
b8de493f | 621 | |
052ae0e5 | 622 | \constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{bool*}{ b}} |
c4afa2cb | 623 | |
5f3cd8a2 VZ |
624 | Reads a bool value, returning TRUE if the value was found. If the value was |
625 | not found, {\it b} is not changed. | |
b8de493f | 626 | |
5f3cd8a2 VZ |
627 | \constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{bool*}{ d}, |
628 | \param{bool}{ defaultVal}} | |
c4afa2cb | 629 | |
5f3cd8a2 VZ |
630 | Reads a bool value, returning TRUE if the value was found. If the value was |
631 | not found, {\it defaultVal} is used instead. | |
c4afa2cb | 632 | |
21f280f4 RD |
633 | \pythonnote{In place of a single overloaded method name, wxPython |
634 | implements the following methods:\par | |
635 | \indented{2cm}{\begin{twocollist} | |
c9110876 VS |
636 | \twocolitem{{\bf Read(key, default="")}}{Returns a string.} |
637 | \twocolitem{{\bf ReadInt(key, default=0)}}{Returns an int.} | |
638 | \twocolitem{{\bf ReadFloat(key, default=0.0)}}{Returns a floating point number.} | |
21f280f4 RD |
639 | \end{twocollist}} |
640 | } | |
641 | ||
5d1902d6 VZ |
642 | \membersection{wxConfigBase::RenameEntry}\label{wxconfigbaserenameentry} |
643 | ||
644 | \func{bool}{RenameEntry}{\param{const wxString\& }{ oldName}, \param{const wxString\& }{ newName}} | |
645 | ||
646 | Renames an entry in the current group. The entries names (both the old and | |
647 | the new one) shouldn't contain backslashes, i.e. only simple names and not | |
648 | arbitrary paths are accepted by this function. | |
649 | ||
650 | Returns FALSE if the {\it oldName} doesn't exist or if {\it newName} already | |
651 | exists. | |
652 | ||
653 | \membersection{wxConfigBase::RenameGroup}\label{wxconfigbaserenamegroup} | |
654 | ||
655 | \func{bool}{RenameGroup}{\param{const wxString\& }{ oldName}, \param{const wxString\& }{ newName}} | |
656 | ||
657 | Renames a subgroup of the current group. The subgroup names (both the old and | |
658 | the new one) shouldn't contain backslashes, i.e. only simple names and not | |
659 | arbitrary paths are accepted by this function. | |
660 | ||
661 | Returns FALSE if the {\it oldName} doesn't exist or if {\it newName} already | |
662 | exists. | |
663 | ||
052ae0e5 | 664 | \membersection{wxConfigBase::Set}\label{wxconfigbaseset} |
c4afa2cb | 665 | |
052ae0e5 | 666 | \func{wxConfigBase *}{Set}{\param{wxConfigBase *}{pConfig}} |
c4afa2cb | 667 | |
052ae0e5 JS |
668 | Sets the config object as the current one, returns the pointer to the previous |
669 | current object (both the parameter and returned value may be NULL) | |
c4afa2cb | 670 | |
f6bcfd97 | 671 | \membersection{wxConfigBase::SetExpandEnvVars}\label{wxconfigbasesetexpandenvvars} |
c4afa2cb | 672 | |
052ae0e5 | 673 | \func{void}{SetExpandEnvVars }{\param{bool }{bDoIt = TRUE}} |
b8de493f | 674 | |
052ae0e5 | 675 | Determine whether we wish to expand environment variables in key values. |
c4afa2cb | 676 | |
052ae0e5 | 677 | \membersection{wxConfigBase::SetPath}\label{wxconfigbasesetpath} |
c4afa2cb | 678 | |
052ae0e5 | 679 | \func{void}{SetPath}{\param{const wxString\& }{strPath}} |
c4afa2cb | 680 | |
f6bcfd97 BP |
681 | Set current path: if the first character is '/', it is the absolute path, |
682 | otherwise it is a relative path. '..' is supported. If the strPath doesn't | |
5f3cd8a2 | 683 | exist it is created. |
c4afa2cb | 684 | |
052ae0e5 | 685 | \membersection{wxConfigBase::SetRecordDefaults}\label{wxconfigbasesetrecorddefaults} |
c4afa2cb | 686 | |
052ae0e5 JS |
687 | \func{void}{SetRecordDefaults}{\param{bool }{bDoIt = TRUE}} |
688 | ||
689 | Sets whether defaults are written back to the config file. | |
c4afa2cb | 690 | |
5f3cd8a2 VZ |
691 | If on (default is off) all default values are written back to the config file. |
692 | This allows the user to see what config options may be changed and is probably | |
693 | useful only for wxFileConfig. | |
c4afa2cb | 694 | |
f6bcfd97 BP |
695 | \membersection{wxConfigBase::SetUmask}\label{wxfileconfigsetumask} |
696 | ||
697 | \func{void}{SetUmask}{\param{int }{mode}} | |
698 | ||
699 | {\bf NB:} this function is not in the base wxConfigBase class but is only | |
700 | implemented in wxFileConfig. Moreover, this function is Unix-specific and | |
701 | doesn't do anything on other platforms. | |
702 | ||
703 | SetUmask() allows to set the mode to be used for the config file creation. | |
704 | For example, to create a config file which is not readable by other users | |
705 | (useful if it stores some sensitive information, such as passwords), you | |
706 | should do {\tt SetUmask(0077)}. | |
707 | ||
052ae0e5 JS |
708 | \membersection{wxConfigBase::Write}\label{wxconfigbasewrite} |
709 | ||
5f3cd8a2 VZ |
710 | \func{bool}{Write}{\param{const wxString\& }{ key}, \param{const wxString\& }{ |
711 | value}} | |
052ae0e5 JS |
712 | |
713 | \func{bool}{Write}{\param{const wxString\& }{ key}, \param{long}{ value}} | |
714 | ||
715 | \func{bool}{Write}{\param{const wxString\& }{ key}, \param{double}{ value}} | |
716 | ||
717 | \func{bool}{Write}{\param{const wxString\& }{ key}, \param{bool}{ value}} | |
718 | ||
5f3cd8a2 VZ |
719 | These functions write the specified value to the config file and return TRUE |
720 | on success. | |
c4afa2cb | 721 | |
21f280f4 RD |
722 | \pythonnote{In place of a single overloaded method name, wxPython |
723 | implements the following methods:\par | |
724 | \indented{2cm}{\begin{twocollist} | |
c9110876 VS |
725 | \twocolitem{{\bf Write(key, value)}}{Writes a string.} |
726 | \twocolitem{{\bf WriteInt(key, value)}}{Writes an int.} | |
727 | \twocolitem{{\bf WriteFloat(key, value)}}{Writes a floating point number.} | |
21f280f4 RD |
728 | \end{twocollist}} |
729 | } | |
730 |