+
+\subsection{Image sample}\label{sampleimage}
+
+The image sample demonstrates use of the \helpref{wxImage}{wximage} class
+and shows how to download images in a variety of formats, currently PNG, GIF,
+TIFF, JPEG, BMP, PNM and PCX. The top of the sample shows two rectangles, one
+of which is drawn directly in the window, the other one is drawn into a
+\helpref{wxBitmap}{wxbitmap}, converted to a wxImage, saved as a PNG image
+and then reloaded from the PNG file again so that conversions between wxImage
+and wxBitmap as well as loading and saving PNG files are tested.
+
+At the bottom of the main frame there is a test for using a monochrome bitmap by
+drawing into a \helpref{wxMemoryDC}{wxmemorydc}. The bitmap is then drawn
+specifying the foreground and background colours with
+\helpref{wxDC::SetTextForeground}{wxdcsettextforeground} and
+\helpref{wxDC::SetTextBackground}{wxdcsettextbackground} (on the left). The
+bitmap is then converted to a wxImage and the foreground colour (black) is
+replaced with red using \helpref{wxImage::Replace}{wximagereplace}.
+
+This sample also contains the code for testing the image rotation and resizing
+and using raw bitmap access, see the corresponding menu commands.
+
+
+\subsection{Internat(ionalization) sample}\label{sampleinternat}
+
+The not very clearly named internat sample demonstrates the wxWidgets
+internationalization (i18n for short from now on) features. To be more
+precise, it only shows localization support, i.e. support for translating the
+program messages into another language while true i18n would also involve
+changing the other aspects of the programs behaviour.
+
+More information about this sample can be found in the {\tt readme.txt} file in
+its directory. Please see also \helpref{i18n overview}{internationalization}.
+
+
+\subsection{Layout sample}\label{samplelayout}
+
+The layout sample demonstrates the two different layout systems offered
+by wxWidgets. When starting the program, you will see a frame with some
+controls and some graphics. The controls will change their size whenever
+you resize the entire frame and the exact behaviour of the size changes
+is determined using the \helpref{wxLayoutConstraints}{wxlayoutconstraints}
+class. See also the \helpref{overview}{constraintsoverview} and the
+\helpref{wxIndividualLayoutConstraint}{wxindividuallayoutconstraint}
+class for further information.
+
+The menu in this sample offers two more tests, one showing how to use
+a \helpref{wxBoxSizer}{wxboxsizer} in a simple dialog and the other one
+showing how to use sizers in connection with a \helpref{wxNotebook}{wxnotebook}
+class. See also \helpref{wxSizer}{wxsizer}.
+
+
+\subsection{Listctrl sample}\label{samplelistctrl}
+
+This sample shows the \helpref{wxListCtrl}{wxlistctrl} control. Different modes
+supported by the control (list, icons, small icons, report) may be chosen from
+the menu.
+
+The sample also provides some timings for adding/deleting/sorting a lot of
+(several thousands) items into the control.
+
+
+\subsection{Mediaplayer sample}\label{samplemediaplayer}
+
+This sample demonstrates how to use all the features of
+\helpref{wxMediaCtrl}{wxmediactrl} and play various types of sound, video,
+and other files.
+
+
+It replaces the old dynamic sample.
+
+\subsection{Notebook sample}\label{samplenotebook}
+
+This samples shows \helpref{wxBookCtrl}{wxbookctrloverview} family of controls.
+Although initially it was written to demonstrate \helpref{wxNotebook}{wxnotebook}
+only, it can now be also used to see \helpref{wxListbook}{wxlistbook},
+\helpref{wxChoicebook}{wxchoicebook} and \helpref{wxTreebook}{wxtreebook} in action.
+Test each of the controls, their orientation, images and pages using commands through menu.
+
+
+
+\subsection{Render sample}\label{samplerender}
+
+This sample shows how to replace the default wxWidgets
+\helpref{renderer}{wxrenderernative} and also how to write a shared library
+(DLL) implementing a renderer and load and unload it during the run-time.
+
+
+
+\subsection{Scroll subwindow sample}\label{samplescrollsub}
+
+This sample demonstrates use of the \helpref{wxScrolledWindow}{wxscrolledwindow}
+class including placing subwindows into it and drawing simple graphics. It uses the
+\helpref{SetTargetWindow}{wxscrolledwindowsettargetwindow} method and thus the effect
+of scrolling does not show in the scrolled window itself, but in one of its subwindows.
+
+Additionally, this samples demonstrates how to optimize drawing operations in wxWidgets,
+in particular using the \helpref{wxWindow::IsExposed}{wxwindowisexposed} method with
+the aim to prevent unnecessary drawing in the window and thus reducing or removing
+flicker on screen.
+
+
+\subsection{Sockets sample}\label{samplesockets}
+
+The sockets sample demonstrates how to use the communication facilities
+provided by \helpref{wxSocket}{wxsocketbase}. There are two different
+applications in this sample: a server, which is implemented using a
+\helpref{wxSocketServer}{wxsocketserver} object, and a client, which
+is implemented as a \helpref{wxSocketClient}{wxsocketclient}.
+
+The server binds to the local address, using TCP port number 3000,
+sets up an event handler to be notified of incoming connection requests
+({\bf wxSOCKET\_CONNECTION} events), and sits there, waiting for clients
+({\it listening}, in socket parlance). For each accepted connection,
+a new \helpref{wxSocketBase}{wxsocketbase} object is created. These
+socket objects are independent from the server that created them, so
+they set up their own event handler, and then request to be notified
+of {\bf wxSOCKET\_INPUT} (incoming data) or {\bf wxSOCKET\_LOST}
+(connection closed at the remote end) events. In the sample, the event
+handler is the same for all connections; to find out which socket the
+event is addressed to, the \helpref{GetSocket}{wxsocketeventgetsocket} function
+is used.
+
+Although it might take some time to get used to the event-oriented
+system upon which wxSocket is built, the benefits are many. See, for
+example, that the server application, while being single-threaded
+(and of course without using fork() or ugly select() loops) can handle
+an arbitrary number of connections.
+
+The client starts up unconnected, so you can use the Connect... option
+to specify the address of the server you are going to connect to (the
+TCP port number is hard-coded as 3000). Once connected, a number of
+tests are possible. Currently, three tests are implemented. They show
+how to use the basic IO calls in \helpref{wxSocketBase}{wxsocketbase},
+such as \helpref{Read}{wxsocketbaseread}, \helpref{Write}{wxsocketbasewrite},
+\helpref{ReadMsg}{wxsocketbasereadmsg} and \helpref{WriteMsg}{wxsocketbasewritemsg},
+and how to set up the correct IO flags depending on what you are going to
+do. See the comments in the code for more information. Note that because
+both clients and connection objects in the server set up an event handler
+to catch {\bf wxSOCKET\_LOST} events, each one is immediately notified
+if the other end closes the connection.
+
+There is also a URL test which shows how to use
+the \helpref{wxURL}{wxurl} class to fetch data from a given URL.
+
+The sockets sample is work in progress. Some things to do:
+
+\begin{itemize}\itemsep=0pt
+\item More tests for basic socket functionality.
+\item More tests for protocol classes (wxProtocol and its descendants).
+\item Tests for the recently added (and still in alpha stage) datagram sockets.
+\item New samples which actually do something useful (suggestions accepted).
+\end{itemize}
+
+
+\subsection{Sound sample}\label{samplesound}
+
+The {\tt sound} sample shows how to use \helpref{wxSound}{wxsound} for simple
+audio output (e.g. notifications).
+
+
+\subsection{Statbar sample}\label{samplestatbar}
+
+This sample shows how to create and use wxStatusBar. Although most of the
+samples have a statusbar, they usually only create a default one and only
+do it once.
+
+Here you can see how to recreate the statusbar (with possibly different number
+of fields) and how to use it to show icons/bitmaps and/or put arbitrary
+controls into it.
+
+
+\subsection{Tab order sample}\label{sampletaborder}
+
+This sample allows to test keyboard navigation (mostly done using the
+\texttt{\textsc{TAB}} key, hence the sample name) between different controls.
+It shows the use of
+\helpref{wxWindow::MoveBeforeInTabOrder()}{wxwindowmovebeforeintaborder} and
+\helpref{MoveAfterInTabOrder()}{wxwindowmoveafterintaborder} methods to change
+the default order of the windows in the navigation chain and of
+\helpref{wxWindow::Navigate()}{wxwindownavigate} for moving focus along this
+chain.
+
+
+\subsection{Text sample}\label{sampletext}
+
+This sample demonstrates four features: firstly the use and many variants of
+the \helpref{wxTextCtrl}{wxtextctrl} class (single line, multi line, read only,
+password, ignoring TAB, ignoring ENTER).
+
+Secondly it shows how to intercept a \helpref{wxKeyEvent}{wxkeyevent} in both
+the raw form using the {\tt EVT\_KEY\_UP} and {\tt EVT\_KEY\_DOWN} macros and the
+higher level from using the {\tt EVT\_CHAR} macro. All characters will be logged
+in a log window at the bottom of the main window. By pressing some of the function
+keys, you can test some actions in the text ctrl as well as get statistics on the
+text ctrls, which is useful for testing if these statistics actually are correct.
+
+Thirdly, on platforms which support it, the sample will offer to copy text to the
+\helpref{wxClipboard}{wxclipboard} and to paste text from it. The GTK version will
+use the so called PRIMARY SELECTION, which is the pseudo clipboard under X and
+best known from pasting text to the XTerm program.
+
+Last not least: some of the text controls have tooltips and the sample also shows
+how tooltips can be centrally disabled and their latency controlled.
+
+
+\subsection{Thread sample}\label{samplethread}
+
+This sample demonstrates use of threads in connection with GUI programs.
+There are two fundamentally different ways to use threads in GUI programs and
+either way has to take care of the fact that the GUI library itself usually
+is not multi-threading safe, i.e. that it might crash if two threads try to
+access the GUI class simultaneously. One way to prevent that is have a normal
+GUI program in the main thread and some worker threads which work in the
+background. In order to make communication between the main thread and the
+worker threads possible, wxWidgets offers the \helpref{wxPostEvent}{wxpostevent}
+function and this sample makes use of this function.
+
+The other way to use a so called Mutex (such as those offered in the \helpref{wxMutex}{wxmutex}
+class) that prevent threads from accessing the GUI classes as long as any other
+thread accesses them. For this, wxWidgets has the \helpref{wxMutexGuiEnter}{wxmutexguienter}
+and \helpref{wxMutexGuiLeave}{wxmutexguileave} functions, both of which are
+used and tested in the sample as well.
+
+See also \helpref{Multithreading overview}{wxthreadoverview} and \helpref{wxThread}{wxthread}.
+
+