one (especially because creating a wxFileConfig object might be a time
consuming operation). In this case, you may create this global config object
in the very start of the program and {\it Set()} it as the default. Then, from
-anywhere in your program, you may access it using the {\it Get()} function. Of
-course, you should delete it on the program termination (otherwise, not only a
-memory leak will result, but even more importantly the changes won't be
-written back!).
+anywhere in your program, you may access it using the {\it Get()} function.
+Note that wxWindows will delete this config object for you during the program
+shutdown (from \helpref{wxApp::OnExit}{wxapponexit} to be precise) but you can
+also do it yourself earlier if needed.
As it happens, you may even further simplify the procedure described above:
you may forget about calling {\it Set()}. When {\it Get()} is called and there
change in the near future). To work with other types: for {\it int} or {\it
bool} you can work with function taking/returning {\it long} and just use the
casts. Better yet, just use {\it long} for all variables which you're going to
-save in the config file: chances are that \verb$sizeof(bool) == sizeof(int) == sizeof(long)$ anyhow on your system. For {\it float}, {\it double} and, in
+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
general, any other type you'd have to translate them to/from string
representation and use string functions.
# the following syntax is valud only under Windows
UserData = %windir%\\data.dat
\end{verbatim}
-
-the call to \verb$config->Read("UserData")$ will return something like
-\verb$"/home/zeitlin/data"$ if you're lucky enough to run a Linux system ;-)
+% $ % help EMACS syntax highlighting...
+the call to \tt{config->Read("UserData")} will return something like
+\tt{"/home/zeitlin/data"} if you're lucky enough to run a Linux system ;-)
Although this feature is very useful, it may be annoying if you read a value
which containts '\$' or '\%' symbols (\% is used for environment variables
consisting of the continue flag, the value string, and the index for
the next call.}
+\perlnote{In wxPerl this method takes no arguments and returns a 3-element
+list {\tt ( continue, str, index )}.}
+
\membersection{wxConfigBase::GetFirstEntry}\label{wxconfigbasegetfirstentry}
\constfunc{bool}{GetFirstEntry}{\param{wxString\& }{str}, \param{long\&}{ index}}
consisting of the continue flag, the value string, and the index for
the next call.}
+\perlnote{In wxPerl this method takes no arguments and returns a 3-element
+list {\tt ( continue, str, index )}.}
+
\membersection{wxConfigBase::GetNextGroup}\label{wxconfigbasegetnextgroup}
\constfunc{bool}{GetNextGroup}{\param{wxString\& }{str}, \param{long\&}{ index}}
consisting of the continue flag, the value string, and the index for
the next call.}
+\perlnote{In wxPerl this method only takes the {\tt index} parameter
+and returns a 3-element list {\tt ( continue, str, index )}.}
+
\membersection{wxConfigBase::GetNextEntry}\label{wxconfigbasegetnextentry}
\constfunc{bool}{GetNextEntry}{\param{wxString\& }{str}, \param{long\&}{ index}}
consisting of the continue flag, the value string, and the index for
the next call.}
+\perlnote{In wxPerl this method only takes the {\tt index} parameter
+and returns a 3-element list {\tt ( continue, str, index )}.}
+
\membersection{wxConfigBase::GetNumberOfEntries}\label{wxconfigbasegetnumberofentries}
\constfunc{uint }{GetNumberOfEntries}{\param{bool }{bRecursive = FALSE}}
NB: writing
-{\small \begin{verbatim} conf->Read("key", 0); \end{verbatim} }
+{\small
+\begin{verbatim}
+ conf->Read("key", 0);
+\end{verbatim}
+}
won't work because the call is ambiguous: compiler can not choose between two
{\it Read} functions. Instead, write:
-{\small \begin{verbatim} conf->Read("key", 0l); \end{verbatim} }
+{\small
+\begin{verbatim}
+ conf->Read("key", 0l);
+\end{verbatim}
+}
\constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{double*}{ d}}
\end{twocollist}}
}
+\perlnote{In place of a single overloaded method, wxPerl uses:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{{\bf Read(key, default="")}}{Returns a string}
+\twocolitem{{\bf ReadInt(key, default=0)}}{Returns an integer}
+\twocolitem{{\bf ReadFloat(key, default=0.0)}}{Returns a floating point number}
+\twocolitem{{\bf ReadBool(key, default=0)}}{Returns a boolean}
+\end{twocollist}
+}}
+
\membersection{wxConfigBase::RenameEntry}\label{wxconfigbaserenameentry}
\func{bool}{RenameEntry}{\param{const wxString\& }{ oldName}, \param{const wxString\& }{ newName}}
\func{void}{SetRecordDefaults}{\param{bool }{bDoIt = TRUE}}
-Sets whether defaults are written back to the config file.
+Sets whether defaults are recorded to the config file whenever an attempt to
+read read the value which is not present in it is done.
-If on (default is off) all default values are written back to the config file.
-This allows the user to see what config options may be changed and is probably
-useful only for wxFileConfig.
+If on (default is off) all default values for the settings used by the program
+are written back to the config file. This allows the user to see what config
+options may be changed and is probably useful only for wxFileConfig.
\membersection{wxConfigBase::SetUmask}\label{wxfileconfigsetumask}
\end{twocollist}}
}
+\perlnote{In place of a single overloaded method, wxPerl uses:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{{\bf Write(key, value)}}{Writes a string}
+\twocolitem{{\bf WriteInt(key, value)}}{Writes an integer}
+\twocolitem{{\bf WriteFloat(key, value)}}{Writes a floating point number}
+\twocolitem{{\bf WriteBool(key, value)}}{Writes a boolean}
+\end{twocollist}
+}}