\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
-In addition to the core wxWidgets library, a number of further
-libraries and utilities are supplied with each distribution.
-
-Some are under the 'contrib' hierarchy which mirrors the
-structure of the main wxWidgets hierarchy. See also the 'utils'
-hierarchy. The first place to look for documentation about
-these tools and libraries is under the wxWidgets 'docs' hierarchy,
-for example {\tt docs/htmlhelp/fl.chm}.
+In addition to the \helpref{wxWidgets libraries}{librarieslist}, some
+additional utilities are supplied in the \tt{utils} hierarchy.
For other user-contributed packages, please see the Contributions page
on the \urlref{wxWidgets Web site}{http://www.wxwidgets.org}.
Xnest-based display emulator for X11-based PDA applications. On some
systems, the Xnest window does not synchronise with the
'skin' window. This program can be found in {\tt utils/emulator}.
-\item[{\bf XRC resource system}]
-This is the sizer-aware resource system, and uses
-XML-based resource specifications that can be generated by tools
-such as \urlref{wxDesigner}{http://www.roebling.de}.
-You can find this in {\tt src/xrc}, {\tt include/wx/xrc}, {\tt samples/xrc}.
-For more information, see the \helpref{XML-based resource system overview}{xrcoverview}.
-\item[{\bf Net library}]
-Net is a collection of very simple mail and web related classes. Currently
-there is only wxEmail, which makes it easy to send email messages via MAPI on Windows or sendmail on Unix.
-You can find this in {\tt contrib/src/net} and {\tt contrib/include/wx/net}.
-\item[{\bf Styled Text Control library}]
-STC is a wrapper around Scintilla, a syntax-highlighting text editor.
-You can find this in {\tt src/stc}, {\tt include/wx/stc}, and {\tt samples/stc}.
\end{description}
\chapter{Programming strategies}\label{strategies}
\subsection{Use ASSERT}\label{useassert}
-Although I haven't done this myself within wxWidgets, it is good
-practice to use ASSERT statements liberally, that check for conditions that
-should or should not hold, and print out appropriate error messages.
+It is good practice to use ASSERT statements liberally, that check for conditions
+that should or should not hold, and print out appropriate error messages.
+
These can be compiled out of a non-debugging version of wxWidgets
and your application. Using ASSERT is an example of `defensive programming':
it can alert you to problems later on.
+See \helpref{wxASSERT}{wxassert} for more info.
+
\subsection{Use wxString in preference to character arrays}\label{usewxstring}
-Using wxString can be much safer and more convenient than using wxChar *.
-Again, I haven't practiced what I'm preaching, but I'm now trying to use
-wxString wherever possible. You can reduce the possibility of memory
-leaks substantially, and it is much more convenient to use the overloaded
-operators than functions such as strcmp. wxString won't add a significant
-overhead to your program; the overhead is compensated for by easier
-manipulation (which means less code).
+Using \helpref{wxString}{wxstring} can be much safer and more convenient than using wxChar *.
+
+You can reduce the possibility of memory leaks substantially, and it is much more
+convenient to use the overloaded operators than functions such as \tt{strcmp}.
+wxString won't add a significant overhead to your program; the overhead is compensated
+for by easier manipulation (which means less code).
The same goes for other data types: use classes wherever possible.
\section{Strategies for portability}\label{portability}
-\subsection{Use relative positioning or constraints}\label{userelativepositioning}
+\subsection{Use sizers}\label{usesizers}
Don't use absolute panel item positioning if you can avoid it. Different GUIs have
-very differently sized panel items. Consider using the constraint system, although this
-can be complex to program.
-
-Alternatively, you could use alternative .wrc (wxWidgets resource files) on different
-platforms, with slightly different dimensions in each. Or space your panel items out
-to avoid problems.
+very differently sized panel items. Consider using the \helpref{sizers}{sizeroverview} instead.
\subsection{Use wxWidgets resource files}\label{useresources}
Use .xrc (wxWidgets resource files) where possible, because they can be easily changed
-independently of source code.
+independently of source code. See the \helpref{XRC overview}{xrcoverview} for more info.
\section{Strategies for debugging}\label{debugstrategies}
\subsection{Use the wxWidgets debugging facilities}\label{usedebuggingfacilities}
-You can use wxDebugContext to check for
+You can use \helpref{wxDebugContext}{wxdebugcontext} to check for
memory leaks and corrupt memory: in fact in debugging mode, wxWidgets will
automatically check for memory leaks at the end of the program if wxWidgets is suitably
configured. Depending on the operating system and compiler, more or less
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
-Starting from version 2.5.0 wxWidgets can be built either as a single large
+wxWidgets can be built either as a single large
library (this is called the {\it monolithic build}) or as several smaller
libraries ({\it multilib build}). Multilib build is the default.
\image{}{libs.gif}
\end{center}
-{\large {\bf wxAui}}
-
-This contains the Advanced User Interface docking library.
-
{\large {\bf wxBase}}
Every wxWidgets application must link against this library. It contains
applications, it does not require any GUI libraries or running X Window System
on Unix.
+{\large {\bf wxCore}}
+
+Basic GUI classes such as GDI classes or controls are in this library. All
+wxWidgets GUI applications must link against this library, only console mode
+applications don't.
+
+{\large {\bf wxAui}}
+
+This contains the Advanced User Interface docking library.
+
+Requires wxHTML, wxAdvanced, wxCore, wxBase, wxXML.
+
{\large {\bf wxNet}}
Classes for network access:
\helpref{wxTCPConnection}{wxddeconnection}) }
\item{ \helpref{wxURL}{wxurl} }
\item{ wxInternetFSHandler (a \helpref{wxFileSystem handler}{fs}) }
-Requires wxBase.
\end{itemize}
+Requires wxBase.
+
{\large {\bf wxRichText}}
This contains generic rich text control functionality.
-{\large {\bf wxXML}}
+Requires wxAdvanced, wxHTML, wxCore, wxXML, wxBase.
-This library contains simple classes for parsing XML documents. Note that
-their API {\em will} change in the future and backward
-compatibility will not be preserved. Use of this library in your applications
-is not recommended, it is only meant for use by XML resources system. Future
-versions of wxWidgets will contain new XML handling classes with DOM-like API.
-Requires wxBase.
+{\large {\bf wxXML}}
-{\large {\bf wxCore}}
+This library contains simple classes for parsing XML documents.
-Basic GUI classes such as GDI classes or controls are in this library. All
-wxWidgets GUI applications must link against this library, only console mode
-applications don't.
+Requires wxBase.
{\large {\bf wxAdvanced}}
Advanced or rarely used GUI classes:
\begin{itemize}\itemsep=0pt
-\item{ wxBufferedDC }
+\item{ \helpref{wxBufferedDC}{wxbuffereddc} }
\item{ \helpref{wxCalendarCtrl}{wxcalendarctrl} }
\item{ \helpref{wxGrid classes}{gridoverview} }
\item{ \helpref{wxJoystick}{wxjoystick} }
\item{ \helpref{wxWizard}{wxwizard} }
\item{ \helpref{wxSashLayoutWindow}{wxsashlayoutwindow} }
\item{ \helpref{wxSashWindow}{wxsashwindow} }
+\item{ ...others }
\end{itemize}
Requires wxCore and wxBase.
This library contains \helpref{wxGLCanvas}{wxglcanvas} class for integrating
OpenGL library with wxWidgets. Unlike all others, this library is {\em not}
part of the monolithic library, it is always built as separate library.
+
Requires wxCore and wxBase.
{\large {\bf wxHTML}}
contained in this library, as well as
\helpref{wxHtmlHelpController}{wxhtmlhelpcontroller},
\helpref{wxBestHelpController}{wxhelpcontroller} and
- \helpref{wxHtmlListBox}{wxhtmllistbox}. Requires wxCore and wxBase.
+ \helpref{wxHtmlListBox}{wxhtmllistbox}.
+
+Requires wxCore and wxBase.
{\large {\bf wxODBC}}
\helpref{wxDbGridTableBase}{wxdbgridtablebase} class which combines
\helpref{wxGrid}{wxgrid} and \helpref{wxDbTable}{wxdbtable}.
+
Requires wxODBC and wxAdvanced.
{\large {\bf wxXRC}}
This library contains \helpref{wxXmlResource}{wxxmlresource} class that
-provides access to XML resource files in XRC format.
+provides access to XML resource files in XRC format
+
Requires wxXML, wxCore, wxAdvanced and wxHTML.
+{\large {\bf wxSTC}}
+
+STC (Styled Text Control) is a wrapper around Scintilla, a syntax-highlighting text editor.
+
+Requires wxCore, wxBase.