/**
- @page page_cppconst Preprocessor symbols defined by wxWidgets
-
- These are preprocessor symbols used in the wxWidgets source, grouped
- by category (and sorted by alphabetical order inside each category).
- All of these macros except for the @c wxUSE_XXX variety is defined if the
- corresponding condition is @true and undefined if it isn't, so they should be
- always tested using @ifdef_ and not @if_.
-
- @li @ref page_cppconst_guisystem
- @li @ref page_cppconst_os
- @li @ref page_cppconst_cpu
- @li @ref page_cppconst_hardware
- @li @ref page_cppconst_compiler
- @li @ref page_cppconst_featuretests
- @li @ref page_cppconst_miscellaneous
-
- <hr>
-
-
- @section page_cppconst_guisystem GUI system
-
- @beginDefList
- @itemdef{__WINDOWS__, any Windows, you may also use __WXMSW__}
- @itemdef{__WIN16__, Win16 API (not supported since wxWidgets 2.6)}
- @itemdef{__WIN32__, Win32 API}
- @itemdef{__WXBASE__, Only wxBase, no GUI features (same as @c wxUSE_GUI $== 0$)}
- @itemdef{__WXCOCOA__, OS X using Cocoa API}
- @itemdef{__WXDFB__, wxUniversal using DirectFB}
- @itemdef{__WXWINCE__, Windows CE}
- @itemdef{__WXGTK__, GTK+}
- @itemdef{__WXGTK12__, GTK+ 1.2 or higher}
- @itemdef{__WXGTK20__, GTK+ 2.0 or higher}
- @itemdef{__WXGTK24__, GTK+ 2.4 or higher}
- @itemdef{__WXGTK26__, GTK+ 2.6 or higher}
- @itemdef{__WXGTK210__, GTK+ 2.10 or higher}
- @itemdef{__WXMOTIF__, Motif}
- @itemdef{__WXMOTIF20__, Motif 2.0 or higher}
- @itemdef{__WXMAC__, Mac OS all targets}
- @itemdef{__WXMAC_CLASSIC__, MacOS for Classic}
- @itemdef{__WXMAC_CARBON__, MacOS for Carbon CFM (running under Classic or OSX)
+@page page_cppconst Preprocessor symbols defined by wxWidgets
+
+These are preprocessor symbols used in the wxWidgets source, grouped
+by category (and sorted by alphabetical order inside each category).
+All of these macros except for the @c wxUSE_XXX variety is defined if the
+corresponding condition is @true and undefined if it isn't, so they should be
+always tested using @ifdef_ and not @if_.
+
+@li @ref page_cppconst_guisystem
+@li @ref page_cppconst_os
+@li @ref page_cppconst_cpu
+@li @ref page_cppconst_hardware
+@li @ref page_cppconst_compiler
+@li @ref page_cppconst_featuretests
+@li @ref page_cppconst_miscellaneous
+
+<hr>
+
+
+@section page_cppconst_guisystem GUI system
+
+@beginDefList
+@itemdef{__WINDOWS__, any Windows, you may also use __WXMSW__}
+@itemdef{__WIN16__, Win16 API (not supported since wxWidgets 2.6)}
+@itemdef{__WIN32__, Win32 API}
+@itemdef{__WXBASE__, Only wxBase, no GUI features (same as @c wxUSE_GUI $== 0$)}
+@itemdef{__WXCOCOA__, OS X using Cocoa API}
+@itemdef{__WXDFB__, wxUniversal using DirectFB}
+@itemdef{__WXWINCE__, Windows CE}
+@itemdef{__WXGTK__, GTK+}
+@itemdef{__WXGTK12__, GTK+ 1.2 or higher}
+@itemdef{__WXGTK20__, GTK+ 2.0 or higher}
+@itemdef{__WXGTK24__, GTK+ 2.4 or higher}
+@itemdef{__WXGTK26__, GTK+ 2.6 or higher}
+@itemdef{__WXGTK210__, GTK+ 2.10 or higher}
+@itemdef{__WXMOTIF__, Motif}
+@itemdef{__WXMOTIF20__, Motif 2.0 or higher}
+@itemdef{__WXMAC__, Mac OS all targets}
+@itemdef{__WXMAC_CLASSIC__, MacOS for Classic}
+@itemdef{__WXMAC_CARBON__, MacOS for Carbon CFM (running under Classic or OSX)
or true OS X Mach-O Builds}
- @itemdef{__WXMAC_OSX__, MacOS X Carbon Mach-O Builds}
- @itemdef{__WXMGL__, SciTech Soft MGL (__WXUNIVERSAL__ will be also defined)}
- @itemdef{__WXMSW__, Any Windows}
- @itemdef{__WXOSX__, Any Mac OS X port (either Carbon or Cocoa)}
- @itemdef{__WXPALMOS__, PalmOS}
- @itemdef{__WXPM__, OS/2 native Presentation Manager}
- @itemdef{__WXSTUBS__, Stubbed version ('template' wxWin implementation)}
- @itemdef{__WXXT__, Xt; mutually exclusive with WX_MOTIF, not implemented in wxWidgets 2.x}
- @itemdef{__WXX11__, wxX11 (__WXUNIVERSAL__ will be also defined)}
- @itemdef{__WXWINE__, WINE (i.e. WIN32 on Unix)}
- @itemdef{__WXUNIVERSAL__, wxUniversal port, always defined in addition
- to one of the symbols above so this should be tested first.}
- @itemdef{__X__, any X11-based GUI toolkit except GTK+}
- @endDefList
-
- There are two wxWidgets ports to Mac OS. One of them, wxMac, exists in two versions:
- Classic and Carbon. The Classic version is the only one to work on Mac OS version 8.
- The Carbon version may be built either as CFM or Mach-O (binary format, like ELF)
- and the former may run under OS 9 while the latter only runs under OS X.
- Finally, there is a new Cocoa port which can only be used under OS X. To
- summarize:
-
- @li If you want to test for all Mac platforms, classic and OS X, you
- should test both @c __WXMAC__ and @c __WXCOCOA__.
- @li If you want to test for any GUI Mac port under OS X, use
- @c __WXOSX__.
- @li If you want to test for any port under Mac OS X, including, for
- example, wxGTK and also wxBase, use @c __DARWIN__ (see below).
-
- The convention is to use the @c __WX prefix for these
- symbols, although this has not always been followed.
-
-
- @section page_cppconst_os Operating systems
-
- @beginDefList
- @itemdef{__APPLE__, any Mac OS version}
- @itemdef{__AIX__, AIX}
- @itemdef{__BSD__, Any *BSD system}
- @itemdef{__CYGWIN__, Cygwin: Unix on Win32}
- @itemdef{__DARWIN__, Mac OS X using the BSD Unix C library
- (as opposed to using the Metrowerks MSL C/C++ library)}
- @itemdef{__DATA_GENERAL__, DG-UX}
- @itemdef{__DOS_GENERAL__, DOS (used with wxMGL only)}
- @itemdef{__FREEBSD__, FreeBSD}
- @itemdef{__HPUX__, HP-UX (Unix)}
- @itemdef{__GNU__, GNU Hurd}
- @itemdef{__LINUX__, Linux}
- @itemdef{__MACH__, Mach-O Architecture (Mac OS X only builds)}
- @itemdef{__OSF__, OSF/1}
- @itemdef{__PALMOS__, PalmOS}
- @itemdef{__SGI__, IRIX}
- @itemdef{__SOLARIS__, Solaris}
- @itemdef{__SUN__, Any Sun}
- @itemdef{__SUNOS__, Sun OS}
- @itemdef{__SVR4__, SystemV R4}
- @itemdef{__SYSV__, SystemV generic}
- @itemdef{__ULTRIX__, Ultrix}
- @itemdef{__UNIX__, any Unix}
- @itemdef{__UNIX_LIKE__, Unix, BeOS or VMS}
- @itemdef{__VMS__, VMS}
- @itemdef{__WINDOWS__, any Windows}
- @itemdef{__WINE__, Wine}
- @endDefList
-
-
-
- @section page_cppconst_cpu Hardware architectures (CPU)
-
- Note that not all of these symbols are always defined, it depends on the
- compiler used.
-
- @beginDefList
- @itemdef{__ALPHA__, DEC Alpha architecture}
- @itemdef{__INTEL__, Intel i386 or compatible}
- @itemdef{__IA64__, Intel 64 bit architecture}
- @itemdef{__POWERPC__, Motorola Power PC}
- @endDefList
-
-
-
- @section page_cppconst_hardware Hardware type
-
- @beginDefList
- @itemdef{__SMARTPHONE__, Generic mobile devices with phone buttons and a small display}
- @itemdef{__PDA__, Personal digital assistant, usually with touch screen}
- @itemdef{__HANDHELD__, Small but powerful computer, usually with a keyboard}
- @itemdef{__POCKETPC__, Microsoft-powered PocketPC devices with touch-screen}
- @itemdef{__WINCE_STANDARDSDK__, Microsoft-powered Windows CE devices, for generic Windows CE applications}
- @itemdef{__WINCE_NET__, Microsoft-powered Windows CE .NET devices (_WIN32_WCE is 400 or greater)}
- @itemdef{WIN32_PLATFORM_WFSP, Microsoft-powered smartphone}
- @endDefList
-
-
-
- @section page_cppconst_compiler Compilers
-
- @beginDefList
- @itemdef{__BORLANDC__, Borland C++. The value of the macro corresponds
+@itemdef{__WXMAC_OSX__, MacOS X Carbon Mach-O Builds}
+@itemdef{__WXMGL__, SciTech Soft MGL (__WXUNIVERSAL__ will be also defined)}
+@itemdef{__WXMSW__, Any Windows}
+@itemdef{__WXOSX__, Any Mac OS X port (either Carbon or Cocoa)}
+@itemdef{__WXPALMOS__, PalmOS}
+@itemdef{__WXPM__, OS/2 native Presentation Manager}
+@itemdef{__WXSTUBS__, Stubbed version ('template' wxWin implementation)}
+@itemdef{__WXXT__, Xt; mutually exclusive with WX_MOTIF, not implemented in wxWidgets 2.x}
+@itemdef{__WXX11__, wxX11 (__WXUNIVERSAL__ will be also defined)}
+@itemdef{__WXWINE__, WINE (i.e. WIN32 on Unix)}
+@itemdef{__WXUNIVERSAL__, wxUniversal port, always defined in addition
+ to one of the symbols above so this should be tested first.}
+@itemdef{__X__, any X11-based GUI toolkit except GTK+}
+@endDefList
+
+There are two wxWidgets ports to Mac OS. One of them, wxMac, exists in two versions:
+Classic and Carbon. The Classic version is the only one to work on Mac OS version 8.
+The Carbon version may be built either as CFM or Mach-O (binary format, like ELF)
+and the former may run under OS 9 while the latter only runs under OS X.
+Finally, there is a new Cocoa port which can only be used under OS X. To
+summarize:
+
+@li If you want to test for all Mac platforms, classic and OS X, you
+ should test both @c __WXMAC__ and @c __WXCOCOA__.
+@li If you want to test for any GUI Mac port under OS X, use
+ @c __WXOSX__.
+@li If you want to test for any port under Mac OS X, including, for
+ example, wxGTK and also wxBase, use @c __DARWIN__ (see below).
+
+The convention is to use the @c __WX prefix for these
+symbols, although this has not always been followed.
+
+
+@section page_cppconst_os Operating systems
+
+@beginDefList
+@itemdef{__APPLE__, any Mac OS version}
+@itemdef{__AIX__, AIX}
+@itemdef{__BSD__, Any *BSD system}
+@itemdef{__CYGWIN__, Cygwin: Unix on Win32}
+@itemdef{__DARWIN__, Mac OS X using the BSD Unix C library
+ (as opposed to using the Metrowerks MSL C/C++ library)}
+@itemdef{__DATA_GENERAL__, DG-UX}
+@itemdef{__DOS_GENERAL__, DOS (used with wxMGL only)}
+@itemdef{__FREEBSD__, FreeBSD}
+@itemdef{__HPUX__, HP-UX (Unix)}
+@itemdef{__GNU__, GNU Hurd}
+@itemdef{__LINUX__, Linux}
+@itemdef{__MACH__, Mach-O Architecture (Mac OS X only builds)}
+@itemdef{__OSF__, OSF/1}
+@itemdef{__PALMOS__, PalmOS}
+@itemdef{__SGI__, IRIX}
+@itemdef{__SOLARIS__, Solaris}
+@itemdef{__SUN__, Any Sun}
+@itemdef{__SUNOS__, Sun OS}
+@itemdef{__SVR4__, SystemV R4}
+@itemdef{__SYSV__, SystemV generic}
+@itemdef{__ULTRIX__, Ultrix}
+@itemdef{__UNIX__, any Unix}
+@itemdef{__UNIX_LIKE__, Unix, BeOS or VMS}
+@itemdef{__VMS__, VMS}
+@itemdef{__WINDOWS__, any Windows}
+@itemdef{__WINE__, Wine}
+@endDefList
+
+
+
+@section page_cppconst_cpu Hardware architectures (CPU)
+
+Note that not all of these symbols are always defined, it depends on the
+compiler used.
+
+@beginDefList
+@itemdef{__ALPHA__, DEC Alpha architecture}
+@itemdef{__INTEL__, Intel i386 or compatible}
+@itemdef{__IA64__, Intel 64 bit architecture}
+@itemdef{__POWERPC__, Motorola Power PC}
+@endDefList
+
+
+
+@section page_cppconst_hardware Hardware type
+
+@beginDefList
+@itemdef{__SMARTPHONE__, Generic mobile devices with phone buttons and a small display}
+@itemdef{__PDA__, Personal digital assistant, usually with touch screen}
+@itemdef{__HANDHELD__, Small but powerful computer, usually with a keyboard}
+@itemdef{__POCKETPC__, Microsoft-powered PocketPC devices with touch-screen}
+@itemdef{__WINCE_STANDARDSDK__, Microsoft-powered Windows CE devices, for generic Windows CE applications}
+@itemdef{__WINCE_NET__, Microsoft-powered Windows CE .NET devices (_WIN32_WCE is 400 or greater)}
+@itemdef{WIN32_PLATFORM_WFSP, Microsoft-powered smartphone}
+@endDefList
+
+
+
+@section page_cppconst_compiler Compilers
+
+@beginDefList
+@itemdef{__BORLANDC__, Borland C++. The value of the macro corresponds
to the compiler version: $500$ is $5.0$.}
- @itemdef{__DJGPP__, DJGPP}
- @itemdef{__DIGITALMARS__, Digital Mars}
- @itemdef{__GNUG__, Gnu C++ on any platform, see also wxCHECK_GCC_VERSION}
- @itemdef{__GNUWIN32__, Gnu-Win32 compiler, see also wxCHECK_W32API_VERSION}
- @itemdef{__MINGW32__, MinGW}
- @itemdef{__MWERKS__, CodeWarrior MetroWerks compiler}
- @itemdef{__SUNCC__, Sun CC, see also wxCHECK_SUNCC_VERSION}
- @itemdef{__SYMANTECC__, Symantec C++}
- @itemdef{__VISAGECPP__, IBM Visual Age (OS/2)}
- @itemdef{__VISUALC__, Microsoft Visual C++, see also wxCHECK_VISUALC_VERSION.
- The value of this macro corresponds to the compiler version:
- @c 1020 for @c 4.2 (the first supported version), @c 1100 for
- @c 5.0, @c 1200 for @c 6.0 and so on. For convenience, the symbols
- __VISUALCn__ are also defined for each major compiler version from
- 5 to 9, i.e. you can use tests such @ifdef_ __VISUALC7__ to test
- for compiler version being precisely 7.}
- @itemdef{__XLC__, AIX compiler}
- @itemdef{__WATCOMC__, Watcom C++. The value of this macro corresponds to
- the compiler version, @c 1100 is @c 11.0 and @c 1200 is OpenWatcom.}
- @itemdef{_WIN32_WCE, Windows CE version}
- @endDefList
-
-
-
- @section page_cppconst_featuretests Feature tests
-
- Some library features may not be always available even if they were selected
- by the user. To make it possible to check if this is the case, the library
- predefines the symbols in the form @c wxHAS_FEATURE. Unlike
- @c wxUSE_FEATURE symbols which are defined by the library user (directly
- in @c setup.h or by running configure script) and which must be always
- defined as either $0$ or $1$, the @c wxHAS symbols are only defined if
- the corresponding feature is available and not defined at all otherwise.
-
- Currently the following symbols exist:
-
- @beginDefList
- @itemdef{wxHAS_LARGE_FILES, Defined if wxFile supports files more than 4GB in size.}
- @itemdef{wxHAS_LARGE_FFILES, Defined if wxFFile supports files more than 4GB in size.}
- @itemdef{wxHAS_POWER_EVENTS, Defined if wxPowerEvent are ever generated on the current platform.}
- @itemdef{wxHAS_RADIO_MENU_ITEMS,
- Defined if the current port supports radio menu items (see wxMenu::AppendRadioItem).}
- @itemdef{wxHAS_RAW_KEY_CODES, Defined if raw key codes (see wxKeyEvent::GetRawKeyCode are supported.}
- @itemdef{wxHAS_REGEX_ADVANCED, Defined if advanced syntax is available in wxRegEx.}
- @itemdef{wxHAS_TASK_BAR_ICON, Defined if wxTaskBarIcon is available on the current platform.}
- @endDefList
-
-
-
- @section page_cppconst_miscellaneous Miscellaneous
-
- @beginDefList
- @itemdef{__WXWINDOWS__,
- always defined in wxWidgets applications, see also wxCHECK_VERSION}
- @itemdef{__WXDEBUG__, defined in debug mode, undefined in release mode}
- @itemdef{wxUSE_XXX,
- if defined as $1$, feature XXX is active, see the
- @ref page_wxusedef (the symbols of this form are always defined,
- use @if_ and not @ifdef_ to test for them)}
- @itemdef{WX_PRECOMP,
- is defined if precompiled headers (PCH) are in use. In
- this case, @c wx/wxprec.h includes @c wx/wx.h which, in turn,
- includes a number of wxWidgets headers thus making it unnecessary to include
- them explicitly. However if this is not defined, you do need to include them
- and so the usual idiom which allows to support both cases is to first include
- @c wx/wxprec.h} and then, inside @ifndef_ WX_PRECOMP, individual
- headers you need.}
- @itemdef{_UNICODE and UNICODE, both are defined if wxUSE_UNICODE is set to @c 1}
- @itemdef{wxUSE_GUI,
- this particular feature test macro is defined to $1$
- when compiling or using the library with the GUI features activated,
- if it is defined as @c 0, only wxBase is available.}
- @itemdef{wxUSE_BASE,
- only used by wxWidgets internally (defined as $1$ when
- building wxBase code, either as a standalone library or as part of the
- monolithic wxWidgets library, defined as $0$ when building GUI library only)}
- @itemdef{wxNO_RTTI, is defined if the compiler RTTI support has been switched off}
- @itemdef{wxNO_EXCEPTIONS,
- is defined if the compiler support for C++ exceptions has been switched off}
- @itemdef{wxNO_THREADS,
- if this macro is defined, the compilation options
- don't include compiler flags needed for multithreaded code generation. This
- implies that wxUSE_THREADS is $0$ and also that other (non-wx-based) threading
- packages cannot be used neither.}
- @itemdef{WXMAKINGDLL_XXX,
- used internally and defined when building the
- library @c XXX as a DLL; when a monolithic wxWidgets build is used only a
- single @c WXMAKINGDLL symbol is defined}
- @itemdef{WXUSINGDLL,
- defined when compiling code which uses wxWidgets as a DLL/shared library}
- @itemdef{WXBUILDING,
- defined when building wxWidgets itself, whether as a static or shared library}
- @endDefList
+@itemdef{__DJGPP__, DJGPP}
+@itemdef{__DIGITALMARS__, Digital Mars}
+@itemdef{__GNUG__, Gnu C++ on any platform, see also wxCHECK_GCC_VERSION}
+@itemdef{__GNUWIN32__, Gnu-Win32 compiler, see also wxCHECK_W32API_VERSION}
+@itemdef{__MINGW32__, MinGW}
+@itemdef{__MWERKS__, CodeWarrior MetroWerks compiler}
+@itemdef{__SUNCC__, Sun CC, see also wxCHECK_SUNCC_VERSION}
+@itemdef{__SYMANTECC__, Symantec C++}
+@itemdef{__VISAGECPP__, IBM Visual Age (OS/2)}
+@itemdef{__VISUALC__, Microsoft Visual C++, see also wxCHECK_VISUALC_VERSION.
+ The value of this macro corresponds to the compiler version:
+ @c 1020 for @c 4.2 (the first supported version), @c 1100 for
+ @c 5.0, @c 1200 for @c 6.0 and so on. For convenience, the symbols
+ __VISUALCn__ are also defined for each major compiler version from
+ 5 to 9, i.e. you can use tests such @ifdef_ __VISUALC7__ to test
+ for compiler version being precisely 7.}
+@itemdef{__XLC__, AIX compiler}
+@itemdef{__WATCOMC__, Watcom C++. The value of this macro corresponds to
+ the compiler version, @c 1100 is @c 11.0 and @c 1200 is OpenWatcom.}
+@itemdef{_WIN32_WCE, Windows CE version}
+@endDefList
+
+
+
+@section page_cppconst_featuretests Feature tests
+
+Some library features may not be always available even if they were selected
+by the user. To make it possible to check if this is the case, the library
+predefines the symbols in the form @c wxHAS_FEATURE. Unlike
+@c wxUSE_FEATURE symbols which are defined by the library user (directly
+in @c setup.h or by running configure script) and which must be always
+defined as either $0$ or $1$, the @c wxHAS symbols are only defined if
+the corresponding feature is available and not defined at all otherwise.
+
+Currently the following symbols exist:
+
+@beginDefList
+@itemdef{wxHAS_LARGE_FILES, Defined if wxFile supports files more than 4GB in size.}
+@itemdef{wxHAS_LARGE_FFILES, Defined if wxFFile supports files more than 4GB in size.}
+@itemdef{wxHAS_POWER_EVENTS, Defined if wxPowerEvent are ever generated on the current platform.}
+@itemdef{wxHAS_RADIO_MENU_ITEMS,
+ Defined if the current port supports radio menu items (see wxMenu::AppendRadioItem).}
+@itemdef{wxHAS_RAW_KEY_CODES, Defined if raw key codes (see wxKeyEvent::GetRawKeyCode are supported.}
+@itemdef{wxHAS_REGEX_ADVANCED, Defined if advanced syntax is available in wxRegEx.}
+@itemdef{wxHAS_TASK_BAR_ICON, Defined if wxTaskBarIcon is available on the current platform.}
+@endDefList
+
+
+
+@section page_cppconst_miscellaneous Miscellaneous
+
+@beginDefList
+@itemdef{__WXWINDOWS__,
+ always defined in wxWidgets applications, see also wxCHECK_VERSION}
+@itemdef{__WXDEBUG__, defined in debug mode, undefined in release mode}
+@itemdef{wxUSE_XXX,
+ if defined as $1$, feature XXX is active, see the
+ @ref page_wxusedef (the symbols of this form are always defined,
+ use @if_ and not @ifdef_ to test for them)}
+@itemdef{WX_PRECOMP,
+ is defined if precompiled headers (PCH) are in use. In
+ this case, @c wx/wxprec.h includes @c wx/wx.h which, in turn,
+ includes a number of wxWidgets headers thus making it unnecessary to include
+ them explicitly. However if this is not defined, you do need to include them
+ and so the usual idiom which allows to support both cases is to first include
+ @c wx/wxprec.h} and then, inside @ifndef_ WX_PRECOMP, individual
+ headers you need.}
+@itemdef{_UNICODE and UNICODE, both are defined if wxUSE_UNICODE is set to @c 1}
+@itemdef{wxUSE_GUI,
+ this particular feature test macro is defined to $1$
+ when compiling or using the library with the GUI features activated,
+ if it is defined as @c 0, only wxBase is available.}
+@itemdef{wxUSE_BASE,
+ only used by wxWidgets internally (defined as $1$ when
+ building wxBase code, either as a standalone library or as part of the
+ monolithic wxWidgets library, defined as $0$ when building GUI library only)}
+@itemdef{wxNO_RTTI, is defined if the compiler RTTI support has been switched off}
+@itemdef{wxNO_EXCEPTIONS,
+ is defined if the compiler support for C++ exceptions has been switched off}
+@itemdef{wxNO_THREADS,
+ if this macro is defined, the compilation options
+ don't include compiler flags needed for multithreaded code generation. This
+ implies that wxUSE_THREADS is $0$ and also that other (non-wx-based) threading
+ packages cannot be used neither.}
+@itemdef{WXMAKINGDLL_XXX,
+ used internally and defined when building the
+ library @c XXX as a DLL; when a monolithic wxWidgets build is used only a
+ single @c WXMAKINGDLL symbol is defined}
+@itemdef{WXUSINGDLL,
+ defined when compiling code which uses wxWidgets as a DLL/shared library}
+@itemdef{WXBUILDING,
+ defined when building wxWidgets itself, whether as a static or shared library}
+@endDefList
*/
/**
- @page page_keycodes Keycodes
+@page page_keycodes Keycodes
- @header{wx/defs.h}
+@header{wx/defs.h}
- Keypresses are represented by an enumerated type, wxKeyCode. The possible
- values are the ASCII character codes, plus the following:
+Keypresses are represented by an enumerated type, wxKeyCode. The possible
+values are the ASCII character codes, plus the following:
- @verbatim
- WXK_BACK = 8
- WXK_TAB = 9
- WXK_RETURN = 13
- WXK_ESCAPE = 27
- WXK_SPACE = 32
- WXK_DELETE = 127
+@verbatim
+ WXK_BACK = 8
+ WXK_TAB = 9
+ WXK_RETURN = 13
+ WXK_ESCAPE = 27
+ WXK_SPACE = 32
+ WXK_DELETE = 127
- // These are by design not compatible with unicode characters.
- // If you want to get a unicode character from a key event use
- // wxKeyEvent::GetUnicodeKey instead.
- WXK_START = 300
- WXK_LBUTTON
- WXK_RBUTTON
- WXK_CANCEL
- WXK_MBUTTON
- WXK_CLEAR
- WXK_SHIFT
- WXK_ALT
- WXK_CONTROL
- WXK_MENU
- WXK_PAUSE
- WXK_CAPITAL
- WXK_END
- WXK_HOME
- WXK_LEFT
- WXK_UP
- WXK_RIGHT
- WXK_DOWN
- WXK_SELECT
- WXK_PRINT
- WXK_EXECUTE
- WXK_SNAPSHOT
- WXK_INSERT
- WXK_HELP
- WXK_NUMPAD0
- WXK_NUMPAD1
- WXK_NUMPAD2
- WXK_NUMPAD3
- WXK_NUMPAD4
- WXK_NUMPAD5
- WXK_NUMPAD6
- WXK_NUMPAD7
- WXK_NUMPAD8
- WXK_NUMPAD9
- WXK_MULTIPLY
- WXK_ADD
- WXK_SEPARATOR
- WXK_SUBTRACT
- WXK_DECIMAL
- WXK_DIVIDE
- WXK_F1
- WXK_F2
- WXK_F3
- WXK_F4
- WXK_F5
- WXK_F6
- WXK_F7
- WXK_F8
- WXK_F9
- WXK_F10
- WXK_F11
- WXK_F12
- WXK_F13
- WXK_F14
- WXK_F15
- WXK_F16
- WXK_F17
- WXK_F18
- WXK_F19
- WXK_F20
- WXK_F21
- WXK_F22
- WXK_F23
- WXK_F24
- WXK_NUMLOCK
- WXK_SCROLL
- WXK_PAGEUP,
- WXK_PAGEDOWN,
+ // These are by design not compatible with unicode characters.
+ // If you want to get a unicode character from a key event use
+ // wxKeyEvent::GetUnicodeKey instead.
+ WXK_START = 300
+ WXK_LBUTTON
+ WXK_RBUTTON
+ WXK_CANCEL
+ WXK_MBUTTON
+ WXK_CLEAR
+ WXK_SHIFT
+ WXK_ALT
+ WXK_CONTROL
+ WXK_MENU
+ WXK_PAUSE
+ WXK_CAPITAL
+ WXK_END
+ WXK_HOME
+ WXK_LEFT
+ WXK_UP
+ WXK_RIGHT
+ WXK_DOWN
+ WXK_SELECT
+ WXK_PRINT
+ WXK_EXECUTE
+ WXK_SNAPSHOT
+ WXK_INSERT
+ WXK_HELP
+ WXK_NUMPAD0
+ WXK_NUMPAD1
+ WXK_NUMPAD2
+ WXK_NUMPAD3
+ WXK_NUMPAD4
+ WXK_NUMPAD5
+ WXK_NUMPAD6
+ WXK_NUMPAD7
+ WXK_NUMPAD8
+ WXK_NUMPAD9
+ WXK_MULTIPLY
+ WXK_ADD
+ WXK_SEPARATOR
+ WXK_SUBTRACT
+ WXK_DECIMAL
+ WXK_DIVIDE
+ WXK_F1
+ WXK_F2
+ WXK_F3
+ WXK_F4
+ WXK_F5
+ WXK_F6
+ WXK_F7
+ WXK_F8
+ WXK_F9
+ WXK_F10
+ WXK_F11
+ WXK_F12
+ WXK_F13
+ WXK_F14
+ WXK_F15
+ WXK_F16
+ WXK_F17
+ WXK_F18
+ WXK_F19
+ WXK_F20
+ WXK_F21
+ WXK_F22
+ WXK_F23
+ WXK_F24
+ WXK_NUMLOCK
+ WXK_SCROLL
+ WXK_PAGEUP,
+ WXK_PAGEDOWN,
- WXK_NUMPAD_SPACE,
- WXK_NUMPAD_TAB,
- WXK_NUMPAD_ENTER,
- WXK_NUMPAD_F1,
- WXK_NUMPAD_F2,
- WXK_NUMPAD_F3,
- WXK_NUMPAD_F4,
- WXK_NUMPAD_HOME,
- WXK_NUMPAD_LEFT,
- WXK_NUMPAD_UP,
- WXK_NUMPAD_RIGHT,
- WXK_NUMPAD_DOWN,
- WXK_NUMPAD_PAGEUP,
- WXK_NUMPAD_PAGEDOWN,
- WXK_NUMPAD_END,
- WXK_NUMPAD_BEGIN,
- WXK_NUMPAD_INSERT,
- WXK_NUMPAD_DELETE,
- WXK_NUMPAD_EQUAL,
- WXK_NUMPAD_MULTIPLY,
- WXK_NUMPAD_ADD,
- WXK_NUMPAD_SEPARATOR,
- WXK_NUMPAD_SUBTRACT,
- WXK_NUMPAD_DECIMAL,
- WXK_NUMPAD_DIVIDE,
+ WXK_NUMPAD_SPACE,
+ WXK_NUMPAD_TAB,
+ WXK_NUMPAD_ENTER,
+ WXK_NUMPAD_F1,
+ WXK_NUMPAD_F2,
+ WXK_NUMPAD_F3,
+ WXK_NUMPAD_F4,
+ WXK_NUMPAD_HOME,
+ WXK_NUMPAD_LEFT,
+ WXK_NUMPAD_UP,
+ WXK_NUMPAD_RIGHT,
+ WXK_NUMPAD_DOWN,
+ WXK_NUMPAD_PAGEUP,
+ WXK_NUMPAD_PAGEDOWN,
+ WXK_NUMPAD_END,
+ WXK_NUMPAD_BEGIN,
+ WXK_NUMPAD_INSERT,
+ WXK_NUMPAD_DELETE,
+ WXK_NUMPAD_EQUAL,
+ WXK_NUMPAD_MULTIPLY,
+ WXK_NUMPAD_ADD,
+ WXK_NUMPAD_SEPARATOR,
+ WXK_NUMPAD_SUBTRACT,
+ WXK_NUMPAD_DECIMAL,
+ WXK_NUMPAD_DIVIDE,
- // the following key codes are only generated under Windows currently
- WXK_WINDOWS_LEFT,
- WXK_WINDOWS_RIGHT,
- WXK_WINDOWS_MENU,
- WXK_COMMAND,
+ // the following key codes are only generated under Windows currently
+ WXK_WINDOWS_LEFT,
+ WXK_WINDOWS_RIGHT,
+ WXK_WINDOWS_MENU,
+ WXK_COMMAND,
- // Hardware-specific buttons
- WXK_SPECIAL1 = 193,
- WXK_SPECIAL2,
- WXK_SPECIAL3,
- WXK_SPECIAL4,
- WXK_SPECIAL5,
- WXK_SPECIAL6,
- WXK_SPECIAL7,
- WXK_SPECIAL8,
- WXK_SPECIAL9,
- WXK_SPECIAL10,
- WXK_SPECIAL11,
- WXK_SPECIAL12,
- WXK_SPECIAL13,
- WXK_SPECIAL14,
- WXK_SPECIAL15,
- WXK_SPECIAL16,
- WXK_SPECIAL17,
- WXK_SPECIAL18,
- WXK_SPECIAL19,
- WXK_SPECIAL20
- @endverbatim
+ // Hardware-specific buttons
+ WXK_SPECIAL1 = 193,
+ WXK_SPECIAL2,
+ WXK_SPECIAL3,
+ WXK_SPECIAL4,
+ WXK_SPECIAL5,
+ WXK_SPECIAL6,
+ WXK_SPECIAL7,
+ WXK_SPECIAL8,
+ WXK_SPECIAL9,
+ WXK_SPECIAL10,
+ WXK_SPECIAL11,
+ WXK_SPECIAL12,
+ WXK_SPECIAL13,
+ WXK_SPECIAL14,
+ WXK_SPECIAL15,
+ WXK_SPECIAL16,
+ WXK_SPECIAL17,
+ WXK_SPECIAL18,
+ WXK_SPECIAL19,
+ WXK_SPECIAL20
+@endverbatim
*/
/**
- @page page_keymodifiers Key Modifiers
-
- @header{wx/defs.h}
-
- The following key modifier constants are defined:
-
- @verbatim
- enum wxKeyModifier
- {
- wxMOD_NONE = 0x0000,
- wxMOD_ALT = 0x0001,
- wxMOD_CONTROL = 0x0002,
- wxMOD_ALTGR = wxMOD_ALT | wxMOD_CONTROL,
- wxMOD_SHIFT = 0x0004,
- wxMOD_META = 0x0008,
- #if defined(__WXMAC__) || defined(__WXCOCOA__)
- wxMOD_CMD = wxMOD_META,
- #else
- wxMOD_CMD = wxMOD_CONTROL,
- #endif
- wxMOD_ALL = 0xffff
- };
- @endverbatim
-
- Notice that @c wxMOD_CMD should be used instead of @c wxMOD_CONTROL
- in portable code to account for the fact that although
- @c Control modifier exists under Mac OS, it is not used for the same
- purpose as under Windows or Unix there while the special Mac-specific
- @c Command modifier is used in exactly the same way.
+@page page_keymodifiers Key Modifiers
+
+@header{wx/defs.h}
+
+The following key modifier constants are defined:
+
+@verbatim
+ enum wxKeyModifier
+ {
+ wxMOD_NONE = 0x0000,
+ wxMOD_ALT = 0x0001,
+ wxMOD_CONTROL = 0x0002,
+ wxMOD_ALTGR = wxMOD_ALT | wxMOD_CONTROL,
+ wxMOD_SHIFT = 0x0004,
+ wxMOD_META = 0x0008,
+ #if defined(__WXMAC__) || defined(__WXCOCOA__)
+ wxMOD_CMD = wxMOD_META,
+ #else
+ wxMOD_CMD = wxMOD_CONTROL,
+ #endif
+ wxMOD_ALL = 0xffff
+ };
+@endverbatim
+
+Notice that @c wxMOD_CMD should be used instead of @c wxMOD_CONTROL
+in portable code to account for the fact that although
+@c Control modifier exists under Mac OS, it is not used for the same
+purpose as under Windows or Unix there while the special Mac-specific
+@c Command modifier is used in exactly the same way.
*/
/**
- @page page_languagecodes Language identifiers
+@page page_languagecodes Language identifiers
- The following wxLanguage constants may be used to specify the language
- in wxLocale::Init and are returned by wxLocale::GetSystemLanguage:
+The following wxLanguage constants may be used to specify the language
+in wxLocale::Init and are returned by wxLocale::GetSystemLanguage:
- <!-- generated code begins here -->
+<!-- generated code begins here -->
- This enum is generated by misc/languages/genlang.py
- When making changes, please put them into misc/languages/langtabl.txt
+@todo ADAPT THE PYTHON SCRIPTS TO GENERATE HERE THE LIST
- <!-- generated code ends here -->
+This enum is generated by misc/languages/genlang.py
+When making changes, please put them into misc/languages/langtabl.txt
+
+<!-- generated code ends here -->
*/
/**
- @page page_stdevtid Standard event identifiers
-
- wxWidgets defines a special identifier value @c wxID_ANY which is used in
- the following two situations:
-
- @li when creating a new window you may specify @c wxID_ANY to let
- wxWidgets assign an unused identifier to it automatically
- @li when installing an event handler using either the event table
- macros or wxEvtHandler::Connect,
- you may use it to indicate that you want to handle the events
- coming from any control, regardless of its identifier
-
- Another standard special identifier value is @c wxID_NONE: this is a value
- which is not matched by any other id.
-
- wxWidgets also defines a few standard command identifiers which may be used by
- the user code and also are sometimes used by wxWidgets itself. These reserved
- identifiers are all in the range between @c wxID_LOWEST and
- @c wxID_HIGHEST and, accordingly, the user code should avoid defining its
- own constants in this range (e.g. by using wxNewId()).
-
- @verbatim
- wxID_LOWEST = 4999,
-
- wxID_OPEN,
- wxID_CLOSE,
- wxID_NEW,
- wxID_SAVE,
- wxID_SAVEAS,
- wxID_REVERT,
- wxID_EXIT,
- wxID_UNDO,
- wxID_REDO,
- wxID_HELP,
- wxID_PRINT,
- wxID_PRINT_SETUP,
- wxID_PAGE_SETUP,
- wxID_PREVIEW,
- wxID_ABOUT,
- wxID_HELP_CONTENTS,
- wxID_HELP_INDEX,
- wxID_HELP_SEARCH,
- wxID_HELP_COMMANDS,
- wxID_HELP_PROCEDURES,
- wxID_HELP_CONTEXT,
- wxID_CLOSE_ALL,
- wxID_PREFERENCES,
-
- wxID_EDIT = 5030,
- wxID_CUT,
- wxID_COPY,
- wxID_PASTE,
- wxID_CLEAR,
- wxID_FIND,
- wxID_DUPLICATE,
- wxID_SELECTALL,
- wxID_DELETE,
- wxID_REPLACE,
- wxID_REPLACE_ALL,
- wxID_PROPERTIES,
-
- wxID_VIEW_DETAILS,
- wxID_VIEW_LARGEICONS,
- wxID_VIEW_SMALLICONS,
- wxID_VIEW_LIST,
- wxID_VIEW_SORTDATE,
- wxID_VIEW_SORTNAME,
- wxID_VIEW_SORTSIZE,
- wxID_VIEW_SORTTYPE,
-
- wxID_FILE = 5050,
- wxID_FILE1,
- wxID_FILE2,
- wxID_FILE3,
- wxID_FILE4,
- wxID_FILE5,
- wxID_FILE6,
- wxID_FILE7,
- wxID_FILE8,
- wxID_FILE9,
-
- // Standard button and menu IDs
- wxID_OK = 5100,
- wxID_CANCEL,
- wxID_APPLY,
- wxID_YES,
- wxID_NO,
- wxID_STATIC,
- wxID_FORWARD,
- wxID_BACKWARD,
- wxID_DEFAULT,
- wxID_MORE,
- wxID_SETUP,
- wxID_RESET,
- wxID_CONTEXT_HELP,
- wxID_YESTOALL,
- wxID_NOTOALL,
- wxID_ABORT,
- wxID_RETRY,
- wxID_IGNORE,
- wxID_ADD,
- wxID_REMOVE,
-
- wxID_UP,
- wxID_DOWN,
- wxID_HOME,
- wxID_REFRESH,
- wxID_STOP,
- wxID_INDEX,
-
- wxID_BOLD,
- wxID_ITALIC,
- wxID_JUSTIFY_CENTER,
- wxID_JUSTIFY_FILL,
- wxID_JUSTIFY_RIGHT,
- wxID_JUSTIFY_LEFT,
- wxID_UNDERLINE,
- wxID_INDENT,
- wxID_UNINDENT,
- wxID_ZOOM_100,
- wxID_ZOOM_FIT,
- wxID_ZOOM_IN,
- wxID_ZOOM_OUT,
- wxID_UNDELETE,
- wxID_REVERT_TO_SAVED,
-
- // System menu IDs (used by wxUniv)
- wxID_SYSTEM_MENU = 5200,
- wxID_CLOSE_FRAME,
- wxID_MOVE_FRAME,
- wxID_RESIZE_FRAME,
- wxID_MAXIMIZE_FRAME,
- wxID_ICONIZE_FRAME,
- wxID_RESTORE_FRAME,
-
- // IDs used by generic file dialog (13 consecutive starting from this value)
- wxID_FILEDLGG = 5900,
-
- // IDs used by generic file ctrl (4 consecutive starting from this value)
- wxID_FILECTRL = 5950,
-
- wxID_HIGHEST = 5999
- @endverbatim
+@page page_stdevtid Standard event identifiers
+
+wxWidgets defines a special identifier value @c wxID_ANY which is used in
+the following two situations:
+
+@li when creating a new window you may specify @c wxID_ANY to let
+ wxWidgets assign an unused identifier to it automatically
+@li when installing an event handler using either the event table
+ macros or wxEvtHandler::Connect,
+ you may use it to indicate that you want to handle the events
+ coming from any control, regardless of its identifier
+
+Another standard special identifier value is @c wxID_NONE: this is a value
+which is not matched by any other id.
+
+wxWidgets also defines a few standard command identifiers which may be used by
+the user code and also are sometimes used by wxWidgets itself. These reserved
+identifiers are all in the range between @c wxID_LOWEST and
+@c wxID_HIGHEST and, accordingly, the user code should avoid defining its
+own constants in this range (e.g. by using wxNewId()).
+
+@verbatim
+wxID_LOWEST = 4999,
+
+wxID_OPEN,
+wxID_CLOSE,
+wxID_NEW,
+wxID_SAVE,
+wxID_SAVEAS,
+wxID_REVERT,
+wxID_EXIT,
+wxID_UNDO,
+wxID_REDO,
+wxID_HELP,
+wxID_PRINT,
+wxID_PRINT_SETUP,
+wxID_PAGE_SETUP,
+wxID_PREVIEW,
+wxID_ABOUT,
+wxID_HELP_CONTENTS,
+wxID_HELP_INDEX,
+wxID_HELP_SEARCH,
+wxID_HELP_COMMANDS,
+wxID_HELP_PROCEDURES,
+wxID_HELP_CONTEXT,
+wxID_CLOSE_ALL,
+wxID_PREFERENCES,
+
+wxID_EDIT = 5030,
+wxID_CUT,
+wxID_COPY,
+wxID_PASTE,
+wxID_CLEAR,
+wxID_FIND,
+wxID_DUPLICATE,
+wxID_SELECTALL,
+wxID_DELETE,
+wxID_REPLACE,
+wxID_REPLACE_ALL,
+wxID_PROPERTIES,
+
+wxID_VIEW_DETAILS,
+wxID_VIEW_LARGEICONS,
+wxID_VIEW_SMALLICONS,
+wxID_VIEW_LIST,
+wxID_VIEW_SORTDATE,
+wxID_VIEW_SORTNAME,
+wxID_VIEW_SORTSIZE,
+wxID_VIEW_SORTTYPE,
+
+wxID_FILE = 5050,
+wxID_FILE1,
+wxID_FILE2,
+wxID_FILE3,
+wxID_FILE4,
+wxID_FILE5,
+wxID_FILE6,
+wxID_FILE7,
+wxID_FILE8,
+wxID_FILE9,
+
+// Standard button and menu IDs
+wxID_OK = 5100,
+wxID_CANCEL,
+wxID_APPLY,
+wxID_YES,
+wxID_NO,
+wxID_STATIC,
+wxID_FORWARD,
+wxID_BACKWARD,
+wxID_DEFAULT,
+wxID_MORE,
+wxID_SETUP,
+wxID_RESET,
+wxID_CONTEXT_HELP,
+wxID_YESTOALL,
+wxID_NOTOALL,
+wxID_ABORT,
+wxID_RETRY,
+wxID_IGNORE,
+wxID_ADD,
+wxID_REMOVE,
+
+wxID_UP,
+wxID_DOWN,
+wxID_HOME,
+wxID_REFRESH,
+wxID_STOP,
+wxID_INDEX,
+
+wxID_BOLD,
+wxID_ITALIC,
+wxID_JUSTIFY_CENTER,
+wxID_JUSTIFY_FILL,
+wxID_JUSTIFY_RIGHT,
+wxID_JUSTIFY_LEFT,
+wxID_UNDERLINE,
+wxID_INDENT,
+wxID_UNINDENT,
+wxID_ZOOM_100,
+wxID_ZOOM_FIT,
+wxID_ZOOM_IN,
+wxID_ZOOM_OUT,
+wxID_UNDELETE,
+wxID_REVERT_TO_SAVED,
+
+// System menu IDs (used by wxUniv)
+wxID_SYSTEM_MENU = 5200,
+wxID_CLOSE_FRAME,
+wxID_MOVE_FRAME,
+wxID_RESIZE_FRAME,
+wxID_MAXIMIZE_FRAME,
+wxID_ICONIZE_FRAME,
+wxID_RESTORE_FRAME,
+
+// IDs used by generic file dialog (13 consecutive starting from this value)
+wxID_FILEDLGG = 5900,
+
+// IDs used by generic file ctrl (4 consecutive starting from this value)
+wxID_FILECTRL = 5950,
+
+wxID_HIGHEST = 5999
+@endverbatim
*/
/**
- @page page_stockitems Stock items
+@page page_stockitems Stock items
- Window IDs for which stock buttons and menu items are created
- (see the wxButton constructor and the wxMenuItem constructor):
+Window IDs for which stock buttons and menu items are created
+(see the wxButton constructor and the wxMenuItem constructor):
- @beginDefList
- @itemdef{<b>Stock ID</b>, <b>Stock label</b>}
- @itemdef{wxID_ABOUT, "&About"}
- @itemdef{wxID_ADD, "Add" and}
- @itemdef{wxID_APPLY, "&Apply"}
- @itemdef{wxID_BOLD, "&Bold"}
- @itemdef{wxID_CANCEL, "&Cancel"}
- @itemdef{wxID_CLEAR, "&Clear"}
- @itemdef{wxID_CLOSE, "&Close"}
- @itemdef{wxID_COPY, "&Copy"}
- @itemdef{wxID_CUT, "Cu&t"}
- @itemdef{wxID_DELETE, "&Delete"}
- @itemdef{wxID_EDIT, "&Edit"}
- @itemdef{wxID_FIND, "&Find"}
- @itemdef{wxID_FILE, "&File"}
- @itemdef{wxID_REPLACE, "Find and rep&lace"}
- @itemdef{wxID_BACKWARD, "&Back"}
- @itemdef{wxID_DOWN, "&Down"}
- @itemdef{wxID_FORWARD, "&Forward"}
- @itemdef{wxID_UP, "&Up"}
- @itemdef{wxID_HELP, "&Help"}
- @itemdef{wxID_HOME, "&Home"}
- @itemdef{wxID_INDENT, "Indent"}
- @itemdef{wxID_INDEX, "&Index"}
- @itemdef{wxID_ITALIC, "&Italic"}
- @itemdef{wxID_JUSTIFY_CENTER, "Centered"}
- @itemdef{wxID_JUSTIFY_FILL, "Justified"}
- @itemdef{wxID_JUSTIFY_LEFT, "Align Left"}
- @itemdef{wxID_JUSTIFY_RIGHT, "Align Right"}
- @itemdef{wxID_NEW, "&New"}
- @itemdef{wxID_NO, "&No"}
- @itemdef{wxID_OK, "&OK"}
- @itemdef{wxID_OPEN, "&Open"}
- @itemdef{wxID_PASTE, "&Paste"}
- @itemdef{wxID_PREFERENCES, "&Preferences"}
- @itemdef{wxID_PRINT, "&Print"}
- @itemdef{wxID_PREVIEW, "Print previe&w"}
- @itemdef{wxID_PROPERTIES, "&Properties"}
- @itemdef{wxID_EXIT, "&Quit"}
- @itemdef{wxID_REDO, "&Redo"}
- @itemdef{wxID_REFRESH, "Refresh"}
- @itemdef{wxID_REMOVE, "Remove"}
- @itemdef{wxID_REVERT_TO_SAVED, "Revert to Saved"}
- @itemdef{wxID_SAVE, "&Save"}
- @itemdef{wxID_SAVEAS, "Save &As..."}
- @itemdef{wxID_SELECTALL, "Select all"}
- @itemdef{wxID_STOP, "&Stop"}
- @itemdef{wxID_UNDELETE, "Undelete"}
- @itemdef{wxID_UNDERLINE, "&Underline"}
- @itemdef{wxID_UNDO, "&Undo"}
- @itemdef{wxID_UNINDENT, "&Unindent"}
- @itemdef{wxID_YES, "&Yes"}
- @itemdef{wxID_ZOOM_100, "&Actual Size"}
- @itemdef{wxID_ZOOM_FIT, "Zoom to &Fit"}
- @itemdef{wxID_ZOOM_IN, "Zoom &In"}
- @itemdef{wxID_ZOOM_OUT, "Zoom &Out"}
- @endDefList
+@beginDefList
+@itemdef{<b>Stock ID</b>, <b>Stock label</b>}
+@itemdef{wxID_ABOUT, "&About"}
+@itemdef{wxID_ADD, "Add" and}
+@itemdef{wxID_APPLY, "&Apply"}
+@itemdef{wxID_BOLD, "&Bold"}
+@itemdef{wxID_CANCEL, "&Cancel"}
+@itemdef{wxID_CLEAR, "&Clear"}
+@itemdef{wxID_CLOSE, "&Close"}
+@itemdef{wxID_COPY, "&Copy"}
+@itemdef{wxID_CUT, "Cu&t"}
+@itemdef{wxID_DELETE, "&Delete"}
+@itemdef{wxID_EDIT, "&Edit"}
+@itemdef{wxID_FIND, "&Find"}
+@itemdef{wxID_FILE, "&File"}
+@itemdef{wxID_REPLACE, "Find and rep&lace"}
+@itemdef{wxID_BACKWARD, "&Back"}
+@itemdef{wxID_DOWN, "&Down"}
+@itemdef{wxID_FORWARD, "&Forward"}
+@itemdef{wxID_UP, "&Up"}
+@itemdef{wxID_HELP, "&Help"}
+@itemdef{wxID_HOME, "&Home"}
+@itemdef{wxID_INDENT, "Indent"}
+@itemdef{wxID_INDEX, "&Index"}
+@itemdef{wxID_ITALIC, "&Italic"}
+@itemdef{wxID_JUSTIFY_CENTER, "Centered"}
+@itemdef{wxID_JUSTIFY_FILL, "Justified"}
+@itemdef{wxID_JUSTIFY_LEFT, "Align Left"}
+@itemdef{wxID_JUSTIFY_RIGHT, "Align Right"}
+@itemdef{wxID_NEW, "&New"}
+@itemdef{wxID_NO, "&No"}
+@itemdef{wxID_OK, "&OK"}
+@itemdef{wxID_OPEN, "&Open"}
+@itemdef{wxID_PASTE, "&Paste"}
+@itemdef{wxID_PREFERENCES, "&Preferences"}
+@itemdef{wxID_PRINT, "&Print"}
+@itemdef{wxID_PREVIEW, "Print previe&w"}
+@itemdef{wxID_PROPERTIES, "&Properties"}
+@itemdef{wxID_EXIT, "&Quit"}
+@itemdef{wxID_REDO, "&Redo"}
+@itemdef{wxID_REFRESH, "Refresh"}
+@itemdef{wxID_REMOVE, "Remove"}
+@itemdef{wxID_REVERT_TO_SAVED, "Revert to Saved"}
+@itemdef{wxID_SAVE, "&Save"}
+@itemdef{wxID_SAVEAS, "Save &As..."}
+@itemdef{wxID_SELECTALL, "Select all"}
+@itemdef{wxID_STOP, "&Stop"}
+@itemdef{wxID_UNDELETE, "Undelete"}
+@itemdef{wxID_UNDERLINE, "&Underline"}
+@itemdef{wxID_UNDO, "&Undo"}
+@itemdef{wxID_UNINDENT, "&Unindent"}
+@itemdef{wxID_YES, "&Yes"}
+@itemdef{wxID_ZOOM_100, "&Actual Size"}
+@itemdef{wxID_ZOOM_FIT, "Zoom to &Fit"}
+@itemdef{wxID_ZOOM_IN, "Zoom &In"}
+@itemdef{wxID_ZOOM_OUT, "Zoom &Out"}
+@endDefList
- Note that some of the IDs listed above have also a stock accelerator
- and an help string associated.
+Note that some of the IDs listed above have also a stock accelerator
+and an help string associated.
*/
/**
- @page page_wxusedef wxUSE preprocessor symbols defined by wxWidgets
-
- This section documents the wxUSE preprocessor symbols used in the wxWidgets
- source, grouped by category (and sorted by alphabetical order inside each
- category). These symbols are always defined and whether the given feature is
- active or not depends on their value: if defined as @c 1, feature is active,
- otherwise it is disabled. Because of this these symbols should be always tested
- using @if_ and not @ifdef_.
-
- @li @ref page_wxusedef_multi
- @li @ref page_wxusedef_unix
- @li @ref page_wxusedef_x11
- @li @ref page_wxusedef_gtk
- @li @ref page_wxusedef_mac
- @li @ref page_wxusedef_motif
- @li @ref page_wxusedef_cocoa
- @li @ref page_wxusedef_os2
- @li @ref page_wxusedef_msw
- @li @ref page_wxusedef_univ
-
-
- <hr>
-
-
-
- @section page_wxusedef_multi Generic wxUSE preprocessor symbols
-
- @beginDefList
- @itemdef{wxUSE_ABOUTDLG, Use wxAboutDialogInfo class.}
- @itemdef{wxUSE_ACCEL, Use wxAcceleratorTable/Entry classes and support for them in wxMenu, wxMenuBar.}
- @itemdef{wxUSE_AFM_FOR_POSTSCRIPT, In wxPostScriptDC class use AFM (adobe font metrics) file for character widths.}
- @itemdef{wxUSE_ANIMATIONCTRL, Use wxAnimationCtrl class.}
- @itemdef{wxUSE_APPLE_IEEE, IEEE Extended to/from double routines; see src/common/extended.c file.}
- @itemdef{wxUSE_ARCHIVE_STREAMS, Enable streams for archive formats.}
- @itemdef{wxUSE_AUI, Use AUI (dockable windows) library.}
- @itemdef{wxUSE_BASE64, Enables Base64 support.}
- @itemdef{wxUSE_BITMAPCOMBOBOX, Use wxBitmapComboBox class.}
- @itemdef{wxUSE_BMPBUTTON, Use wxBitmapButton class.}
- @itemdef{wxUSE_BUSYINFO, Use wxBusyInfo class.}
- @itemdef{wxUSE_BUTTON, Use wxButton class.}
- @itemdef{wxUSE_CALENDARCTRL, Use wxCalendarCtrl class.}
- @itemdef{wxUSE_CARET, Use wxCaret class.}
- @itemdef{wxUSE_CHECKBOX, Use wxCheckBox class.}
- @itemdef{wxUSE_CHECKLISTBOX, Use wxCheckListBox class.}
- @itemdef{wxUSE_CHOICE, Use wxChoice class.}
- @itemdef{wxUSE_CHOICEBOOK, Use wxChoicebook class.}
- @itemdef{wxUSE_CHOICEDLG, Use wxSingleChoiceDialog, or wxMultiChoiceDialog classes.}
- @itemdef{wxUSE_CLIPBOARD, Use wxClipboard class.}
- @itemdef{wxUSE_CMDLINE_PARSER, Use wxCmdLineParser class.}
- @itemdef{wxUSE_COLLPANE, Use wxCollapsiblePane class.}
- @itemdef{wxUSE_COLOURDLG, Use wxColourDialog class.}
- @itemdef{wxUSE_COLOURPICKERCTRL, Use wxColourPickerCtrl class.}
- @itemdef{wxUSE_COMBOBOX, Use wxComboBox class.}
- @itemdef{wxUSE_COMBOCTRL, Use wxComboCtrl class.}
- @itemdef{wxUSE_CONFIG, Use wxConfig and related classes.}
- @itemdef{wxUSE_CONFIG_NATIVE, When enabled use native OS configuration instead of the wxFileConfig class.}
- @itemdef{wxUSE_CONSOLE_EVENTLOOP, Enable event loop in console programs.}
- @itemdef{wxUSE_CONSTRAINTS, Use wxLayoutConstraints}
- @itemdef{wxUSE_CONTROLS, If set to $0$, no classes deriving from wxControl can be used.}
- @itemdef{wxUSE_DATAOBJ, Use wxDataObject and related classes.}
- @itemdef{wxUSE_DATAVIEWCTRL, Use wxDataViewCtrl class.}
- @itemdef{wxUSE_DATEPICKCTRL, Use wxDatePickerCtrl class.}
- @itemdef{wxUSE_DATETIME, Use wxDateTime and related classes.}
- @itemdef{wxUSE_DBGHELP, Use wxDbgHelpDLL class.}
- @itemdef{wxUSE_DEBUG_CONTEXT, Use wxDebugContext class.}
- @itemdef{wxUSE_DEBUG_NEW_ALWAYS, See @ref overview_debugging}
- @itemdef{wxUSE_DEBUGREPORT, Use wxDebugReport class.}
- @itemdef{wxUSE_DIALUP_MANAGER, Use wxDialUpManager and related classes.}
- @itemdef{wxUSE_DIRDLG, Use wxDirDialog class.}
- @itemdef{wxUSE_DIRPICKERCTRL, Use wxDirPickerCtrl class.}
- @itemdef{wxUSE_DISPLAY, Use wxDisplay and related classes.}
- @itemdef{wxUSE_DOC_VIEW_ARCHITECTURE, Use wxDocument and related classes.}
- @itemdef{wxUSE_DRAG_AND_DROP, Use Drag and drop classes.}
- @itemdef{wxUSE_DRAGIMAGE, Use wxDragImage class.}
- @itemdef{wxUSE_DYNAMIC_LOADER, Use wxPluginManager and related classes. Requires wxDynamicLibrary}
- @itemdef{wxUSE_DYNLIB_CLASS, Use wxDynamicLibrary}
- @itemdef{wxUSE_EDITABLELISTBOX, Use wxEditableListBox class.}
- @itemdef{wxUSE_EXCEPTIONS, Use exception handling.}
- @itemdef{wxUSE_EXPAT, enable XML support using expat parser.}
- @itemdef{wxUSE_EXTENDED_RTTI, Use extended RTTI, see also Runtime class information (RTTI)}
- @itemdef{wxUSE_FFILE, Use wxFFile class.}
- @itemdef{wxUSE_FILE, Use wxFile class.}
- @itemdef{wxUSE_FILECONFIG, Use wxFileConfig class.}
- @itemdef{wxUSE_FILECTRL, Use wxFileCtrl class.}
- @itemdef{wxUSE_FILEDLG, Use wxFileDialog class.}
- @itemdef{wxUSE_FILEPICKERCTRL, Use wxFilePickerCtrl class.}
- @itemdef{wxUSE_FILESYSTEM, Use wxFileSystem and related classes.}
- @itemdef{wxUSE_FINDREPLDLG, Use wxFindReplaceDialog class.}
- @itemdef{wxUSE_FONTDLG, Use wxFontDialog class.}
- @itemdef{wxUSE_FONTENUM, Use wxFontEnumerator class.}
- @itemdef{wxUSE_FONTMAP, Use wxFontMapper class.}
- @itemdef{wxUSE_FONTPICKERCTRL, Use wxFontPickerCtrl class.}
- @itemdef{wxUSE_FS_ARCHIVE, Use virtual archive filesystems like wxArchiveFSHandler in wxFileSystem class.}
- @itemdef{wxUSE_FS_INET, Use virtual HTTP/FTP filesystems like wxInternetFSHandler in wxFileSystem class.}
- @itemdef{wxUSE_FS_ZIP, Please use wxUSE_FS_ARCHIVE instead.}
- @itemdef{wxUSE_FSVOLUME, Use wxFSVolume class.}
- @itemdef{wxUSE_GAUGE, Use wxGauge class.}
- @itemdef{wxUSE_GENERIC_DRAGIMAGE, Used in wxDragImage sample.}
- @itemdef{wxUSE_GENERIC_DRAWELLIPSE, See comment in wx/dc.h file.}
- @itemdef{wxUSE_GEOMETRY, Use common geometry classes}
- @itemdef{wxUSE_GIF, Use GIF wxImageHandler}
- @itemdef{wxUSE_GLCANVAS, Enables OpenGL support.}
- @itemdef{wxUSE_GLOBAL_MEMORY_OPERATORS, Override global operators @c new and @c delete to use wxWidgets memory leak detection}
- @itemdef{wxUSE_GRAPHICS_CONTEXT, Use wxGraphicsContext and related classes.}
- @itemdef{wxUSE_GRID, Use wxGrid and related classes.}
- @itemdef{wxUSE_GUI, Use the GUI classes; if set to $0$ only non-GUI classes are available.}
- @itemdef{wxUSE_HELP, Use wxHelpController and related classes.}
- @itemdef{wxUSE_HTML, Use wxHtmlWindow and related classes.}
- @itemdef{wxUSE_HYPERLINKCTRL, Use wxHyperlinkCtrl}
- @itemdef{wxUSE_ICO_CUR, Support Windows ICO and CUR formats.}
- @itemdef{wxUSE_IFF, Enables the wxImage handler for Amiga IFF images.}
- @itemdef{wxUSE_IMAGE, Use wxImage and related classes.}
- @itemdef{wxUSE_IMAGLIST, Use wxImageList class.}
- @itemdef{wxUSE_INTL, Use wxLocale and related classes.}
- @itemdef{wxUSE_IOSTREAMH, Use header "iostream.h" instead of "iostream".}
- @itemdef{wxUSE_IPC, Use interprocess communication classes.}
- @itemdef{wxUSE_IPV6, Use experimental wxIPV6address and related classes.}
- @itemdef{wxUSE_JOYSTICK, Use wxJoystick class.}
- @itemdef{wxUSE_LIBJPEG, Enables JPEG format support (requires libjpeg).}
- @itemdef{wxUSE_LIBPNG, Enables PNG format support (requires libpng). Also requires wxUSE_ZLIB.}
- @itemdef{wxUSE_LIBTIFF, Enables TIFF format support (requires libtiff).}
- @itemdef{wxUSE_LISTBOOK, Use wxListbook class.}
- @itemdef{wxUSE_LISTBOX, Use wxListBox class.}
- @itemdef{wxUSE_LISTCTRL, Use wxListCtrl class.}
- @itemdef{wxUSE_LOG, Use wxLog and related classes.}
- @itemdef{wxUSE_LOG_DEBUG, Enabled when wxLog used with __WXDEBUG__ defined.}
- @itemdef{wxUSE_LOG_DIALOG, Use wxLogDialog class.}
- @itemdef{wxUSE_LOGGUI, Use wxLogGui class.}
- @itemdef{wxUSE_LOGWINDOW, Use wxLogFrame class.}
- @itemdef{wxUSE_LONGLONG, Use wxLongLong class.}
- @itemdef{wxUSE_LONGLONG_NATIVE, Use native <tt>long long</tt> type in wxLongLong implementation.}
- @itemdef{wxUSE_LONGLONG_WX, Use generic wxLongLong implementation.}
- @itemdef{wxUSE_MDI, Use wxMDIParentFrame, and wxMDIChildFrame}
- @itemdef{wxUSE_MDI_ARCHITECTURE, Use MDI-based document-view classes.}
- @itemdef{wxUSE_MEDIACTRL, Use wxMediaCtrl.}
- @itemdef{wxUSE_MEMORY_TRACING, Use wxWidgets memory leak detection, not recommended if using another memory debugging tool.}
- @itemdef{wxUSE_MENUS, Use wxMenu and related classes.}
- @itemdef{wxUSE_METAFILE, Use wxMetaFile and related classes.}
- @itemdef{wxUSE_MIMETYPE, Use wxFileType class.}
- @itemdef{wxUSE_MINIFRAME, Use wxMiniFrame class.}
- @itemdef{wxUSE_MOUSEWHEEL, Support mouse wheel events.}
- @itemdef{wxUSE_MSGDLG, Use wxMessageDialog class and wxMessageBox function.}
- @itemdef{wxUSE_NATIVE_STATUSBAR, Use native wxStatusBar class.}
- @itemdef{wxUSE_NOTEBOOK, Use wxNotebook and related classes.}
- @itemdef{wxUSE_NUMBERDLG, Use wxNumberEntryDialog class.}
- @itemdef{wxUSE_ODCOMBOBOX, Use wxOwnerDrawnComboBox class.}
- @itemdef{wxUSE_ON_FATAL_EXCEPTION, Catch signals in wxApp::OnFatalException method.}
- @itemdef{wxUSE_OPENGL, Please use wxUSE_GLCANVAS to test for enabled OpenGL support instead.}
- @itemdef{wxUSE_OWNER_DRAWN, Use interface for owner-drawn GUI elements.}
- @itemdef{wxUSE_PALETTE, Use wxPalette and related classes.}
- @itemdef{wxUSE_PCX, Enables wxImage PCX handler.}
- @itemdef{wxUSE_PNM, Enables wxImage PNM handler.}
- @itemdef{wxUSE_POPUPWIN, Use wxPopupWindow class.}
- @itemdef{wxUSE_POSTSCRIPT, Use wxPostScriptPrinter class.}
- @itemdef{wxUSE_PRINTF_POS_PARAMS, Use wxVsnprintf which supports positional parameters.}
- @itemdef{wxUSE_PRINTING_ARCHITECTURE, Enable printer classes.}
- @itemdef{wxUSE_PROGRESSDLG, Enables progress dialog classes.}
- @itemdef{wxUSE_PROTOCOL, Use wxProtocol and derived classes.}
- @itemdef{wxUSE_PROTOCOL_FILE, Use wxFileProto class. (requires wxProtocol)}
- @itemdef{wxUSE_PROTOCOL_FTP, Use wxFTP class. (requires wxProtocol)}
- @itemdef{wxUSE_PROTOCOL_HTTP, Use wxHTTP class. (requireswxProtocol)}
- @itemdef{wxUSE_RADIOBOX, Use wxRadioBox class.}
- @itemdef{wxUSE_RADIOBTN, Use wxRadioButton class.}
- @itemdef{wxUSE_REGEX, Use wxRegEx class.}
- @itemdef{wxUSE_RICHTEXT, Use wxRichTextCtrl class.}
- @itemdef{wxUSE_RICHTEXT_XML_HANDLER, See src/xrc/xh_richtext.cpp file.}
- @itemdef{wxUSE_SASH, Use wxSashWindow class.}
- @itemdef{wxUSE_SCROLLBAR, Use wxScrollBar class.}
- @itemdef{wxUSE_SEARCHCTRL, Use wxSearchCtrl class.}
- @itemdef{wxUSE_SELECT_DISPATCHER, Use wxSelectDispatcher class.}
- @itemdef{wxUSE_SLIDER, Use wxSlider class.}
- @itemdef{wxUSE_SNGLINST_CHECKER, Use wxSingleInstanceChecker class.}
- @itemdef{wxUSE_SOCKETS, Enables Network address classes.}
- @itemdef{wxUSE_SOUND, Use wxSound class.}
- @itemdef{wxUSE_SPINBTN, Use wxSpinButton class.}
- @itemdef{wxUSE_SPINCTRL, Use wxSpinCtrl class.}
- @itemdef{wxUSE_SPLASH, Use wxSplashScreen class.}
- @itemdef{wxUSE_SPLINES, Provide methods for spline drawing in wxDC.}
- @itemdef{wxUSE_SPLITTER, Use wxSplitterWindow class.}
- @itemdef{wxUSE_STACKWALKER, Enables wxStackWalker and related classes.}
- @itemdef{wxUSE_STARTUP_TIPS, Use startup tips, wxTipProvider class.}
- @itemdef{wxUSE_STATBMP, Use wxStaticBitmap class.}
- @itemdef{wxUSE_STATBOX, Use wxStaticBox class.}
- @itemdef{wxUSE_STATLINE, Use wxStaticLine class.}
- @itemdef{wxUSE_STATTEXT, Use wxStaticText class.}
- @itemdef{wxUSE_STATUSBAR, Use wxStatusBar class.}
- @itemdef{wxUSE_STC, Use wxStyledTextCtrl.}
- @itemdef{wxUSE_STD_IOSTREAM, Use standard C++ stream classes.}
- @itemdef{wxUSE_STD_STRING, Use standard C++ string classes.}
- @itemdef{wxUSE_STDPATHS, Use wxStandardPaths class.}
- @itemdef{wxUSE_STL, Use Standard Template Library for the container classes and wxString implementation.}
- @itemdef{wxUSE_STOPWATCH, Use wxStopWatch class.}
- @itemdef{wxUSE_STREAMS, Enable stream classes.}
- @itemdef{wxUSE_SVG, Use wxSVGFileDC class.}
- @itemdef{wxUSE_SYSTEM_OPTIONS, Use wxSystemOptions class.}
- @itemdef{wxUSE_TAB_DIALOG, Use the obsolete wxTabControl class.}
- @itemdef{wxUSE_TARSTREAM, Enable Tar files support.}
- @itemdef{wxUSE_TASKBARICON, Use wxTaskBarIcon class.}
- @itemdef{wxUSE_TEXTBUFFER, Use wxTextBuffer class.}
- @itemdef{wxUSE_TEXTCTRL, Use wxTextCtrl class.}
- @itemdef{wxUSE_TEXTDLG, Use wxTextEntryDialog class.}
- @itemdef{wxUSE_TEXTFILE, Use wxTextFile class.}
- @itemdef{wxUSE_TGA, Enable wxImage TGA handler.}
- @itemdef{wxUSE_THREADS, Use wxThread and related classes.}
- @itemdef{wxUSE_TIMER, Use wxTimer class.}
- @itemdef{wxUSE_TIPWINDOW, Use wxTipWindow class.}
- @itemdef{wxUSE_TOGGLEBTN, Use wxToggleButton class.}
- @itemdef{wxUSE_TOOLBAR, Use wxToolBar class.}
- @itemdef{wxUSE_TOOLBAR_NATIVE, Use native wxToolBar class.}
- @itemdef{wxUSE_TOOLBOOK, Use wxToolbook class.}
- @itemdef{wxUSE_TOOLTIPS, Use wxToolTip class.}
- @itemdef{wxUSE_TREEBOOK, Use wxTreebook class.}
- @itemdef{wxUSE_TREECTRL, Use wxTreeCtrl class.}
- @itemdef{wxUSE_TTM_WINDOWFROMPOINT, Obsolete, do not use.}
- @itemdef{wxUSE_UNICODE, Compiled with Unicode support.}
- @itemdef{wxUSE_UNICODE_UTF8, Compiled with UTF8 support.}
- @itemdef{wxUSE_UNICODE_WCHAR, Compiled with Unicode support and using wchar_t type.}
- @itemdef{wxUSE_URL, Use wxURL class.}
- @itemdef{wxUSE_URL_NATIVE, Use native support for some operations with wxURL.}
- @itemdef{wxUSE_UTF8_LOCALE_ONLY, Build wxWidgets to support running only under UTF-8 (and C) locale. This eliminates the code necessary for conversions from the other locales and reduces the library size; useful for embedded systems.}
- @itemdef{wxUSE_VALIDATORS, Use wxValidator class.}
- @itemdef{wxUSE_VARIANT, Use wxVariant class.}
- @itemdef{wxUSE_WIZARDDLG, Use wxWizard class.}
- @itemdef{wxUSE_WXHTML_HELP, Use wxHtmlHelpController and related classes.}
- @itemdef{wxUSE_XML, Use XML parsing classes.}
- @itemdef{wxUSE_XPM, Enable XPM reader for wxImage and wxBitmap classes.}
- @itemdef{wxUSE_XRC, Use XRC XML-based resource system.}
- @itemdef{wxUSE_ZIPSTREAM, Enable streams for Zip files.}
- @itemdef{wxUSE_ZLIB, Use wxZlibInput and wxZlibOutputStream classes, required by wxUSE_LIBPNG.}
- @endDefList
-
-
- @section page_wxusedef_unix wxUSE preprocessor symbols used only under Unix platforms
-
- @beginDefList
- @itemdef{wxUSE_EPOLL_DISPATCHER, Use wxEpollDispatcher class. See also wxUSE_SELECT_DISPATCHER.}
- @itemdef{wxUSE_GSTREAMER, Use GStreamer library in wxMediaCtrl.}
- @itemdef{wxUSE_LIBMSPACK, Use libmspack library.}
- @itemdef{wxUSE_LIBSDL, Use SDL for wxSound implementation.}
- @itemdef{wxUSE_PLUGINS, See also wxUSE_LIBSDL.}
- @itemdef{wxUSE_UNIX, Enabled on Unix Platform.}
- @endDefList
-
-
- @section page_wxusedef_x11 wxUSE preprocessor symbols used only in wxX11 Platform
-
- @beginDefList
- @itemdef{wxUSE_NANOX, Use NanoX.}
- @itemdef{wxUSE_UNIV_TEXTCTRL, Use wxUniv's implementation of wxTextCtrl class.}
- @endDefList
-
-
- @section page_wxusedef_gtk wxUSE preprocessor symbols used only in wxGTK port
-
- @beginDefList
- @itemdef{wxUSE_DETECT_SM, Use code to detect X11 session manager.}
- @itemdef{wxUSE_GTKPRINT, Use GTK+ printing support.}
- @itemdef{wxUSE_LIBGNOMEPRINT, Use GNOME printing support.}
- @itemdef{wxUSE_LIBGNOMEVFS, Use GNOME VFS support. Currently has no effect. }
- @itemdef{wxUSE_LIBHILDON, Use Hildon framework for Nokia 770. Currently has no effect. }
- @endDefList
-
-
- @section page_wxusedef_mac wxUSE preprocessor symbols used only in wxMac port
-
- @beginDefList
- @itemdef{wxUSE_MAC_CRITICAL_REGION_MUTEX, See src/mac/carbon/thread.cpp file.}
- @itemdef{wxUSE_MAC_PTHREADS_MUTEX, See src/mac/carbon/thread.cpp file.}
- @itemdef{wxUSE_MAC_SEMAPHORE_MUTEX, See src/mac/carbon/thread.cpp file.}
- @itemdef{wxUSE_WEBKIT, Use wxWebKitCtrl class.}
- @endDefList
-
-
- @section page_wxusedef_motif wxUSE preprocessor symbols used only in wxMotif port
-
- @beginDefList
- @itemdef{wxUSE_GADGETS, Use xmCascadeButtonGadgetClass, xmLabelGadgetClass, xmPushButtonGadgetClass and xmToggleButtonGadgetClass classes.}
- @itemdef{wxUSE_INVISIBLE_RESIZE, See src/motif/dialog.cpp file.}
- @endDefList
-
-
- @section page_wxusedef_cocoa wxUSE preprocessor symbols used only in Cocoa port
-
- @beginDefList
- @itemdef{wxUSE_OBJC_UNIQUIFYING, Enable Objective-C class name uniquifying.}
- @endDefList
-
-
- @section page_wxusedef_os2 wxUSE preprocessor symbols used only in OS2 port
-
- @beginDefList
- @itemdef{wxUSE_CONSOLEDEBUG, See src/os2/app.cpp file.}
- @itemdef{wxUSE_DDE, See src/os2/mimetype.cpp file.}
- @itemdef{wxUSE_IMAGE_LOADING_IN_MSW, See src/os2/clipbrd.cpp file.}
- @itemdef{wxUSE_IMAGE_LOADING_IN_OS2, See src/os2/gdiimage.cpp file.}
- @itemdef{wxUSE_NET_API, Use NetBios32GetInfo API call.}
- @itemdef{wxUSE_RESOURCE_LOADING_IN_OS2, See src/os2/gdiimage.cpp file.}
- @endDefList
-
-
- @section page_wxusedef_msw wxUSE preprocessor symbols used only in wxMSW port
-
- @beginDefList
- @itemdef{wxUSE_ACCESSIBILITY, Enable accessibility support}
- @itemdef{wxUSE_ACTIVEX, Use wxActiveXContainer and related classes.}
- @itemdef{wxUSE_COMBOCTRL_POPUP_ANIMATION, See wx/msw/combo.h file.}
- @itemdef{wxUSE_COMCTL32_SAFELY, See src/msw/treectrl.cpp file.}
- @itemdef{wxUSE_COMMON_DIALOGS, Enable use of windows common dialogs from header commdlg.h; example PRINTDLG.}
- @itemdef{wxUSE_CRASHREPORT, Use wxCrashReport class.}
- @itemdef{wxUSE_DATEPICKCTRL_GENERIC, Use generic wxDatePickerCtrl implementation in addition to the native one.}
- @itemdef{wxUSE_DC_CACHEING, cache temporary wxDC objects.}
- @itemdef{wxUSE_DIRECTDRAW, Enable use of the system include file ddraw.h.}
- @itemdef{wxUSE_DDE_FOR_IPC, See wx/ipc.h file.}
- @itemdef{wxUSE_ENH_METAFILE, Use wxEnhMetaFile.}
- @itemdef{wxUSE_HOTKEY, Use wxWindow::RegisterHotKey() and wxWindow::UnregisterHotKey}
- @itemdef{wxUSE_INKEDIT, Use InkEdit library. Related to Tablet PCs.}
- @itemdef{wxUSE_MS_HTML_HELP, Use wxCHMHelpController class.}
- @itemdef{wxUSE_NO_MANIFEST, Use to prevent the auto generation, under MSVC, of manifest file needed by windows XP and above.}
- @itemdef{wxUSE_NORLANDER_HEADERS, Using headers whose author is Anders Norlander.}
- @itemdef{wxUSE_OLE, Enables OLE helper routines.}
- @itemdef{wxUSE_OLE_AUTOMATION, Enable OLE automation utilities.}
- @itemdef{wxUSE_OLE_CLIPBOARD, Use OLE clipboard.}
- @itemdef{wxUSE_PENWINDOWS, See src/msw/penwin.cpp file.}
- @itemdef{wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW, Use PS printing in wxMSW.}
- @itemdef{wxUSE_PS_PRINTING, See src/msw/dcprint.cpp file.}
- @itemdef{wxUSE_REGKEY, Use wxRegKey class.}
- @itemdef{wxUSE_RICHEDIT, Enable use of riched32.dll in wxTextCtrl}
- @itemdef{wxUSE_RICHEDIT2, Enable use of riched20.dll in wxTextCtrl}
- @itemdef{wxUSE_VC_CRTDBG, See wx/msw/msvcrt.h file.}
- @itemdef{wxUSE_UNICODE_MSLU, Use MSLU for Unicode support under Windows 9x systems.}
- @itemdef{wxUSE_UXTHEME, Enable support for XP themes.}
- @itemdef{wxUSE_WIN_METAFILES_ALWAYS, Use wxMetaFile even when wxUSE_ENH_METAFILE=$1$.}
- @itemdef{wxUSE_WXDIB, Use wxDIB class.}
- @itemdef{wxUSE_XPM_IN_MSW, See also wxUSE_XPM}
- @endDefList
-
-
- @section page_wxusedef_univ wxUSE preprocessor symbols used only in wxUniversal
-
- @beginDefList
- @itemdef{wxUSE_ALL_THEMES, Use all themes in wxUniversal; See wx/univ/theme.h file.}
- @itemdef{wxUSE_THEME_GTK, Use GTK+ 1-like theme in wxUniversal}
- @itemdef{wxUSE_THEME_METAL, Use GTK+ 2-like theme in wxUniversal}
- @itemdef{wxUSE_THEME_MONO, Use simple monochrome theme in wxUniversal}
- @itemdef{wxUSE_THEME_WIN32, Use Win32-like theme in wxUniversal}
- @endDefList
+@page page_wxusedef wxUSE preprocessor symbols defined by wxWidgets
+
+This section documents the wxUSE preprocessor symbols used in the wxWidgets
+source, grouped by category (and sorted by alphabetical order inside each
+category). These symbols are always defined and whether the given feature is
+active or not depends on their value: if defined as @c 1, feature is active,
+otherwise it is disabled. Because of this these symbols should be always tested
+using @if_ and not @ifdef_.
+
+@li @ref page_wxusedef_multi
+@li @ref page_wxusedef_unix
+@li @ref page_wxusedef_x11
+@li @ref page_wxusedef_gtk
+@li @ref page_wxusedef_mac
+@li @ref page_wxusedef_motif
+@li @ref page_wxusedef_cocoa
+@li @ref page_wxusedef_os2
+@li @ref page_wxusedef_msw
+@li @ref page_wxusedef_univ
+
+
+<hr>
+
+
+
+@section page_wxusedef_multi Generic wxUSE preprocessor symbols
+
+@beginDefList
+@itemdef{wxUSE_ABOUTDLG, Use wxAboutDialogInfo class.}
+@itemdef{wxUSE_ACCEL, Use wxAcceleratorTable/Entry classes and support for them in wxMenu, wxMenuBar.}
+@itemdef{wxUSE_AFM_FOR_POSTSCRIPT, In wxPostScriptDC class use AFM (adobe font metrics) file for character widths.}
+@itemdef{wxUSE_ANIMATIONCTRL, Use wxAnimationCtrl class.}
+@itemdef{wxUSE_APPLE_IEEE, IEEE Extended to/from double routines; see src/common/extended.c file.}
+@itemdef{wxUSE_ARCHIVE_STREAMS, Enable streams for archive formats.}
+@itemdef{wxUSE_AUI, Use AUI (dockable windows) library.}
+@itemdef{wxUSE_BASE64, Enables Base64 support.}
+@itemdef{wxUSE_BITMAPCOMBOBOX, Use wxBitmapComboBox class.}
+@itemdef{wxUSE_BMPBUTTON, Use wxBitmapButton class.}
+@itemdef{wxUSE_BUSYINFO, Use wxBusyInfo class.}
+@itemdef{wxUSE_BUTTON, Use wxButton class.}
+@itemdef{wxUSE_CALENDARCTRL, Use wxCalendarCtrl class.}
+@itemdef{wxUSE_CARET, Use wxCaret class.}
+@itemdef{wxUSE_CHECKBOX, Use wxCheckBox class.}
+@itemdef{wxUSE_CHECKLISTBOX, Use wxCheckListBox class.}
+@itemdef{wxUSE_CHOICE, Use wxChoice class.}
+@itemdef{wxUSE_CHOICEBOOK, Use wxChoicebook class.}
+@itemdef{wxUSE_CHOICEDLG, Use wxSingleChoiceDialog, or wxMultiChoiceDialog classes.}
+@itemdef{wxUSE_CLIPBOARD, Use wxClipboard class.}
+@itemdef{wxUSE_CMDLINE_PARSER, Use wxCmdLineParser class.}
+@itemdef{wxUSE_COLLPANE, Use wxCollapsiblePane class.}
+@itemdef{wxUSE_COLOURDLG, Use wxColourDialog class.}
+@itemdef{wxUSE_COLOURPICKERCTRL, Use wxColourPickerCtrl class.}
+@itemdef{wxUSE_COMBOBOX, Use wxComboBox class.}
+@itemdef{wxUSE_COMBOCTRL, Use wxComboCtrl class.}
+@itemdef{wxUSE_CONFIG, Use wxConfig and related classes.}
+@itemdef{wxUSE_CONFIG_NATIVE, When enabled use native OS configuration instead of the wxFileConfig class.}
+@itemdef{wxUSE_CONSOLE_EVENTLOOP, Enable event loop in console programs.}
+@itemdef{wxUSE_CONSTRAINTS, Use wxLayoutConstraints}
+@itemdef{wxUSE_CONTROLS, If set to $0$, no classes deriving from wxControl can be used.}
+@itemdef{wxUSE_DATAOBJ, Use wxDataObject and related classes.}
+@itemdef{wxUSE_DATAVIEWCTRL, Use wxDataViewCtrl class.}
+@itemdef{wxUSE_DATEPICKCTRL, Use wxDatePickerCtrl class.}
+@itemdef{wxUSE_DATETIME, Use wxDateTime and related classes.}
+@itemdef{wxUSE_DBGHELP, Use wxDbgHelpDLL class.}
+@itemdef{wxUSE_DEBUG_CONTEXT, Use wxDebugContext class.}
+@itemdef{wxUSE_DEBUG_NEW_ALWAYS, See @ref overview_debugging}
+@itemdef{wxUSE_DEBUGREPORT, Use wxDebugReport class.}
+@itemdef{wxUSE_DIALUP_MANAGER, Use wxDialUpManager and related classes.}
+@itemdef{wxUSE_DIRDLG, Use wxDirDialog class.}
+@itemdef{wxUSE_DIRPICKERCTRL, Use wxDirPickerCtrl class.}
+@itemdef{wxUSE_DISPLAY, Use wxDisplay and related classes.}
+@itemdef{wxUSE_DOC_VIEW_ARCHITECTURE, Use wxDocument and related classes.}
+@itemdef{wxUSE_DRAG_AND_DROP, Use Drag and drop classes.}
+@itemdef{wxUSE_DRAGIMAGE, Use wxDragImage class.}
+@itemdef{wxUSE_DYNAMIC_LOADER, Use wxPluginManager and related classes. Requires wxDynamicLibrary}
+@itemdef{wxUSE_DYNLIB_CLASS, Use wxDynamicLibrary}
+@itemdef{wxUSE_EDITABLELISTBOX, Use wxEditableListBox class.}
+@itemdef{wxUSE_EXCEPTIONS, Use exception handling.}
+@itemdef{wxUSE_EXPAT, enable XML support using expat parser.}
+@itemdef{wxUSE_EXTENDED_RTTI, Use extended RTTI, see also Runtime class information (RTTI)}
+@itemdef{wxUSE_FFILE, Use wxFFile class.}
+@itemdef{wxUSE_FILE, Use wxFile class.}
+@itemdef{wxUSE_FILECONFIG, Use wxFileConfig class.}
+@itemdef{wxUSE_FILECTRL, Use wxFileCtrl class.}
+@itemdef{wxUSE_FILEDLG, Use wxFileDialog class.}
+@itemdef{wxUSE_FILEPICKERCTRL, Use wxFilePickerCtrl class.}
+@itemdef{wxUSE_FILESYSTEM, Use wxFileSystem and related classes.}
+@itemdef{wxUSE_FINDREPLDLG, Use wxFindReplaceDialog class.}
+@itemdef{wxUSE_FONTDLG, Use wxFontDialog class.}
+@itemdef{wxUSE_FONTENUM, Use wxFontEnumerator class.}
+@itemdef{wxUSE_FONTMAP, Use wxFontMapper class.}
+@itemdef{wxUSE_FONTPICKERCTRL, Use wxFontPickerCtrl class.}
+@itemdef{wxUSE_FS_ARCHIVE, Use virtual archive filesystems like wxArchiveFSHandler in wxFileSystem class.}
+@itemdef{wxUSE_FS_INET, Use virtual HTTP/FTP filesystems like wxInternetFSHandler in wxFileSystem class.}
+@itemdef{wxUSE_FS_ZIP, Please use wxUSE_FS_ARCHIVE instead.}
+@itemdef{wxUSE_FSVOLUME, Use wxFSVolume class.}
+@itemdef{wxUSE_GAUGE, Use wxGauge class.}
+@itemdef{wxUSE_GENERIC_DRAGIMAGE, Used in wxDragImage sample.}
+@itemdef{wxUSE_GENERIC_DRAWELLIPSE, See comment in wx/dc.h file.}
+@itemdef{wxUSE_GEOMETRY, Use common geometry classes}
+@itemdef{wxUSE_GIF, Use GIF wxImageHandler}
+@itemdef{wxUSE_GLCANVAS, Enables OpenGL support.}
+@itemdef{wxUSE_GLOBAL_MEMORY_OPERATORS, Override global operators @c new and @c delete to use wxWidgets memory leak detection}
+@itemdef{wxUSE_GRAPHICS_CONTEXT, Use wxGraphicsContext and related classes.}
+@itemdef{wxUSE_GRID, Use wxGrid and related classes.}
+@itemdef{wxUSE_GUI, Use the GUI classes; if set to $0$ only non-GUI classes are available.}
+@itemdef{wxUSE_HELP, Use wxHelpController and related classes.}
+@itemdef{wxUSE_HTML, Use wxHtmlWindow and related classes.}
+@itemdef{wxUSE_HYPERLINKCTRL, Use wxHyperlinkCtrl}
+@itemdef{wxUSE_ICO_CUR, Support Windows ICO and CUR formats.}
+@itemdef{wxUSE_IFF, Enables the wxImage handler for Amiga IFF images.}
+@itemdef{wxUSE_IMAGE, Use wxImage and related classes.}
+@itemdef{wxUSE_IMAGLIST, Use wxImageList class.}
+@itemdef{wxUSE_INTL, Use wxLocale and related classes.}
+@itemdef{wxUSE_IOSTREAMH, Use header "iostream.h" instead of "iostream".}
+@itemdef{wxUSE_IPC, Use interprocess communication classes.}
+@itemdef{wxUSE_IPV6, Use experimental wxIPV6address and related classes.}
+@itemdef{wxUSE_JOYSTICK, Use wxJoystick class.}
+@itemdef{wxUSE_LIBJPEG, Enables JPEG format support (requires libjpeg).}
+@itemdef{wxUSE_LIBPNG, Enables PNG format support (requires libpng). Also requires wxUSE_ZLIB.}
+@itemdef{wxUSE_LIBTIFF, Enables TIFF format support (requires libtiff).}
+@itemdef{wxUSE_LISTBOOK, Use wxListbook class.}
+@itemdef{wxUSE_LISTBOX, Use wxListBox class.}
+@itemdef{wxUSE_LISTCTRL, Use wxListCtrl class.}
+@itemdef{wxUSE_LOG, Use wxLog and related classes.}
+@itemdef{wxUSE_LOG_DEBUG, Enabled when wxLog used with __WXDEBUG__ defined.}
+@itemdef{wxUSE_LOG_DIALOG, Use wxLogDialog class.}
+@itemdef{wxUSE_LOGGUI, Use wxLogGui class.}
+@itemdef{wxUSE_LOGWINDOW, Use wxLogFrame class.}
+@itemdef{wxUSE_LONGLONG, Use wxLongLong class.}
+@itemdef{wxUSE_LONGLONG_NATIVE, Use native <tt>long long</tt> type in wxLongLong implementation.}
+@itemdef{wxUSE_LONGLONG_WX, Use generic wxLongLong implementation.}
+@itemdef{wxUSE_MDI, Use wxMDIParentFrame, and wxMDIChildFrame}
+@itemdef{wxUSE_MDI_ARCHITECTURE, Use MDI-based document-view classes.}
+@itemdef{wxUSE_MEDIACTRL, Use wxMediaCtrl.}
+@itemdef{wxUSE_MEMORY_TRACING, Use wxWidgets memory leak detection, not recommended if using another memory debugging tool.}
+@itemdef{wxUSE_MENUS, Use wxMenu and related classes.}
+@itemdef{wxUSE_METAFILE, Use wxMetaFile and related classes.}
+@itemdef{wxUSE_MIMETYPE, Use wxFileType class.}
+@itemdef{wxUSE_MINIFRAME, Use wxMiniFrame class.}
+@itemdef{wxUSE_MOUSEWHEEL, Support mouse wheel events.}
+@itemdef{wxUSE_MSGDLG, Use wxMessageDialog class and wxMessageBox function.}
+@itemdef{wxUSE_NATIVE_STATUSBAR, Use native wxStatusBar class.}
+@itemdef{wxUSE_NOTEBOOK, Use wxNotebook and related classes.}
+@itemdef{wxUSE_NUMBERDLG, Use wxNumberEntryDialog class.}
+@itemdef{wxUSE_ODCOMBOBOX, Use wxOwnerDrawnComboBox class.}
+@itemdef{wxUSE_ON_FATAL_EXCEPTION, Catch signals in wxApp::OnFatalException method.}
+@itemdef{wxUSE_OPENGL, Please use wxUSE_GLCANVAS to test for enabled OpenGL support instead.}
+@itemdef{wxUSE_OWNER_DRAWN, Use interface for owner-drawn GUI elements.}
+@itemdef{wxUSE_PALETTE, Use wxPalette and related classes.}
+@itemdef{wxUSE_PCX, Enables wxImage PCX handler.}
+@itemdef{wxUSE_PNM, Enables wxImage PNM handler.}
+@itemdef{wxUSE_POPUPWIN, Use wxPopupWindow class.}
+@itemdef{wxUSE_POSTSCRIPT, Use wxPostScriptPrinter class.}
+@itemdef{wxUSE_PRINTF_POS_PARAMS, Use wxVsnprintf which supports positional parameters.}
+@itemdef{wxUSE_PRINTING_ARCHITECTURE, Enable printer classes.}
+@itemdef{wxUSE_PROGRESSDLG, Enables progress dialog classes.}
+@itemdef{wxUSE_PROTOCOL, Use wxProtocol and derived classes.}
+@itemdef{wxUSE_PROTOCOL_FILE, Use wxFileProto class. (requires wxProtocol)}
+@itemdef{wxUSE_PROTOCOL_FTP, Use wxFTP class. (requires wxProtocol)}
+@itemdef{wxUSE_PROTOCOL_HTTP, Use wxHTTP class. (requireswxProtocol)}
+@itemdef{wxUSE_RADIOBOX, Use wxRadioBox class.}
+@itemdef{wxUSE_RADIOBTN, Use wxRadioButton class.}
+@itemdef{wxUSE_REGEX, Use wxRegEx class.}
+@itemdef{wxUSE_RICHTEXT, Use wxRichTextCtrl class.}
+@itemdef{wxUSE_RICHTEXT_XML_HANDLER, See src/xrc/xh_richtext.cpp file.}
+@itemdef{wxUSE_SASH, Use wxSashWindow class.}
+@itemdef{wxUSE_SCROLLBAR, Use wxScrollBar class.}
+@itemdef{wxUSE_SEARCHCTRL, Use wxSearchCtrl class.}
+@itemdef{wxUSE_SELECT_DISPATCHER, Use wxSelectDispatcher class.}
+@itemdef{wxUSE_SLIDER, Use wxSlider class.}
+@itemdef{wxUSE_SNGLINST_CHECKER, Use wxSingleInstanceChecker class.}
+@itemdef{wxUSE_SOCKETS, Enables Network address classes.}
+@itemdef{wxUSE_SOUND, Use wxSound class.}
+@itemdef{wxUSE_SPINBTN, Use wxSpinButton class.}
+@itemdef{wxUSE_SPINCTRL, Use wxSpinCtrl class.}
+@itemdef{wxUSE_SPLASH, Use wxSplashScreen class.}
+@itemdef{wxUSE_SPLINES, Provide methods for spline drawing in wxDC.}
+@itemdef{wxUSE_SPLITTER, Use wxSplitterWindow class.}
+@itemdef{wxUSE_STACKWALKER, Enables wxStackWalker and related classes.}
+@itemdef{wxUSE_STARTUP_TIPS, Use startup tips, wxTipProvider class.}
+@itemdef{wxUSE_STATBMP, Use wxStaticBitmap class.}
+@itemdef{wxUSE_STATBOX, Use wxStaticBox class.}
+@itemdef{wxUSE_STATLINE, Use wxStaticLine class.}
+@itemdef{wxUSE_STATTEXT, Use wxStaticText class.}
+@itemdef{wxUSE_STATUSBAR, Use wxStatusBar class.}
+@itemdef{wxUSE_STC, Use wxStyledTextCtrl.}
+@itemdef{wxUSE_STD_IOSTREAM, Use standard C++ stream classes.}
+@itemdef{wxUSE_STD_STRING, Use standard C++ string classes.}
+@itemdef{wxUSE_STDPATHS, Use wxStandardPaths class.}
+@itemdef{wxUSE_STL, Use Standard Template Library for the container classes and wxString implementation.}
+@itemdef{wxUSE_STOPWATCH, Use wxStopWatch class.}
+@itemdef{wxUSE_STREAMS, Enable stream classes.}
+@itemdef{wxUSE_SVG, Use wxSVGFileDC class.}
+@itemdef{wxUSE_SYSTEM_OPTIONS, Use wxSystemOptions class.}
+@itemdef{wxUSE_TAB_DIALOG, Use the obsolete wxTabControl class.}
+@itemdef{wxUSE_TARSTREAM, Enable Tar files support.}
+@itemdef{wxUSE_TASKBARICON, Use wxTaskBarIcon class.}
+@itemdef{wxUSE_TEXTBUFFER, Use wxTextBuffer class.}
+@itemdef{wxUSE_TEXTCTRL, Use wxTextCtrl class.}
+@itemdef{wxUSE_TEXTDLG, Use wxTextEntryDialog class.}
+@itemdef{wxUSE_TEXTFILE, Use wxTextFile class.}
+@itemdef{wxUSE_TGA, Enable wxImage TGA handler.}
+@itemdef{wxUSE_THREADS, Use wxThread and related classes.}
+@itemdef{wxUSE_TIMER, Use wxTimer class.}
+@itemdef{wxUSE_TIPWINDOW, Use wxTipWindow class.}
+@itemdef{wxUSE_TOGGLEBTN, Use wxToggleButton class.}
+@itemdef{wxUSE_TOOLBAR, Use wxToolBar class.}
+@itemdef{wxUSE_TOOLBAR_NATIVE, Use native wxToolBar class.}
+@itemdef{wxUSE_TOOLBOOK, Use wxToolbook class.}
+@itemdef{wxUSE_TOOLTIPS, Use wxToolTip class.}
+@itemdef{wxUSE_TREEBOOK, Use wxTreebook class.}
+@itemdef{wxUSE_TREECTRL, Use wxTreeCtrl class.}
+@itemdef{wxUSE_TTM_WINDOWFROMPOINT, Obsolete, do not use.}
+@itemdef{wxUSE_UNICODE, Compiled with Unicode support.}
+@itemdef{wxUSE_UNICODE_UTF8, Compiled with UTF8 support.}
+@itemdef{wxUSE_UNICODE_WCHAR, Compiled with Unicode support and using wchar_t type.}
+@itemdef{wxUSE_URL, Use wxURL class.}
+@itemdef{wxUSE_URL_NATIVE, Use native support for some operations with wxURL.}
+@itemdef{wxUSE_UTF8_LOCALE_ONLY, Build wxWidgets to support running only under UTF-8 (and C) locale. This eliminates the code necessary for conversions from the other locales and reduces the library size; useful for embedded systems.}
+@itemdef{wxUSE_VALIDATORS, Use wxValidator class.}
+@itemdef{wxUSE_VARIANT, Use wxVariant class.}
+@itemdef{wxUSE_WIZARDDLG, Use wxWizard class.}
+@itemdef{wxUSE_WXHTML_HELP, Use wxHtmlHelpController and related classes.}
+@itemdef{wxUSE_XML, Use XML parsing classes.}
+@itemdef{wxUSE_XPM, Enable XPM reader for wxImage and wxBitmap classes.}
+@itemdef{wxUSE_XRC, Use XRC XML-based resource system.}
+@itemdef{wxUSE_ZIPSTREAM, Enable streams for Zip files.}
+@itemdef{wxUSE_ZLIB, Use wxZlibInput and wxZlibOutputStream classes, required by wxUSE_LIBPNG.}
+@endDefList
+
+
+@section page_wxusedef_unix wxUSE preprocessor symbols used only under Unix platforms
+
+@beginDefList
+@itemdef{wxUSE_EPOLL_DISPATCHER, Use wxEpollDispatcher class. See also wxUSE_SELECT_DISPATCHER.}
+@itemdef{wxUSE_GSTREAMER, Use GStreamer library in wxMediaCtrl.}
+@itemdef{wxUSE_LIBMSPACK, Use libmspack library.}
+@itemdef{wxUSE_LIBSDL, Use SDL for wxSound implementation.}
+@itemdef{wxUSE_PLUGINS, See also wxUSE_LIBSDL.}
+@itemdef{wxUSE_UNIX, Enabled on Unix Platform.}
+@endDefList
+
+
+@section page_wxusedef_x11 wxUSE preprocessor symbols used only in wxX11 Platform
+
+@beginDefList
+@itemdef{wxUSE_NANOX, Use NanoX.}
+@itemdef{wxUSE_UNIV_TEXTCTRL, Use wxUniv's implementation of wxTextCtrl class.}
+@endDefList
+
+
+@section page_wxusedef_gtk wxUSE preprocessor symbols used only in wxGTK port
+
+@beginDefList
+@itemdef{wxUSE_DETECT_SM, Use code to detect X11 session manager.}
+@itemdef{wxUSE_GTKPRINT, Use GTK+ printing support.}
+@itemdef{wxUSE_LIBGNOMEPRINT, Use GNOME printing support.}
+@itemdef{wxUSE_LIBGNOMEVFS, Use GNOME VFS support. Currently has no effect. }
+@itemdef{wxUSE_LIBHILDON, Use Hildon framework for Nokia 770. Currently has no effect. }
+@endDefList
+
+
+@section page_wxusedef_mac wxUSE preprocessor symbols used only in wxMac port
+
+@beginDefList
+@itemdef{wxUSE_MAC_CRITICAL_REGION_MUTEX, See src/mac/carbon/thread.cpp file.}
+@itemdef{wxUSE_MAC_PTHREADS_MUTEX, See src/mac/carbon/thread.cpp file.}
+@itemdef{wxUSE_MAC_SEMAPHORE_MUTEX, See src/mac/carbon/thread.cpp file.}
+@itemdef{wxUSE_WEBKIT, Use wxWebKitCtrl class.}
+@endDefList
+
+
+@section page_wxusedef_motif wxUSE preprocessor symbols used only in wxMotif port
+
+@beginDefList
+@itemdef{wxUSE_GADGETS, Use xmCascadeButtonGadgetClass, xmLabelGadgetClass, xmPushButtonGadgetClass and xmToggleButtonGadgetClass classes.}
+@itemdef{wxUSE_INVISIBLE_RESIZE, See src/motif/dialog.cpp file.}
+@endDefList
+
+
+@section page_wxusedef_cocoa wxUSE preprocessor symbols used only in Cocoa port
+
+@beginDefList
+@itemdef{wxUSE_OBJC_UNIQUIFYING, Enable Objective-C class name uniquifying.}
+@endDefList
+
+
+@section page_wxusedef_os2 wxUSE preprocessor symbols used only in OS2 port
+
+@beginDefList
+@itemdef{wxUSE_CONSOLEDEBUG, See src/os2/app.cpp file.}
+@itemdef{wxUSE_DDE, See src/os2/mimetype.cpp file.}
+@itemdef{wxUSE_IMAGE_LOADING_IN_MSW, See src/os2/clipbrd.cpp file.}
+@itemdef{wxUSE_IMAGE_LOADING_IN_OS2, See src/os2/gdiimage.cpp file.}
+@itemdef{wxUSE_NET_API, Use NetBios32GetInfo API call.}
+@itemdef{wxUSE_RESOURCE_LOADING_IN_OS2, See src/os2/gdiimage.cpp file.}
+@endDefList
+
+
+@section page_wxusedef_msw wxUSE preprocessor symbols used only in wxMSW port
+
+@beginDefList
+@itemdef{wxUSE_ACCESSIBILITY, Enable accessibility support}
+@itemdef{wxUSE_ACTIVEX, Use wxActiveXContainer and related classes.}
+@itemdef{wxUSE_COMBOCTRL_POPUP_ANIMATION, See wx/msw/combo.h file.}
+@itemdef{wxUSE_COMCTL32_SAFELY, See src/msw/treectrl.cpp file.}
+@itemdef{wxUSE_COMMON_DIALOGS, Enable use of windows common dialogs from header commdlg.h; example PRINTDLG.}
+@itemdef{wxUSE_CRASHREPORT, Use wxCrashReport class.}
+@itemdef{wxUSE_DATEPICKCTRL_GENERIC, Use generic wxDatePickerCtrl implementation in addition to the native one.}
+@itemdef{wxUSE_DC_CACHEING, cache temporary wxDC objects.}
+@itemdef{wxUSE_DIRECTDRAW, Enable use of the system include file ddraw.h.}
+@itemdef{wxUSE_DDE_FOR_IPC, See wx/ipc.h file.}
+@itemdef{wxUSE_ENH_METAFILE, Use wxEnhMetaFile.}
+@itemdef{wxUSE_HOTKEY, Use wxWindow::RegisterHotKey() and wxWindow::UnregisterHotKey}
+@itemdef{wxUSE_INKEDIT, Use InkEdit library. Related to Tablet PCs.}
+@itemdef{wxUSE_MS_HTML_HELP, Use wxCHMHelpController class.}
+@itemdef{wxUSE_NO_MANIFEST, Use to prevent the auto generation, under MSVC, of manifest file needed by windows XP and above.}
+@itemdef{wxUSE_NORLANDER_HEADERS, Using headers whose author is Anders Norlander.}
+@itemdef{wxUSE_OLE, Enables OLE helper routines.}
+@itemdef{wxUSE_OLE_AUTOMATION, Enable OLE automation utilities.}
+@itemdef{wxUSE_OLE_CLIPBOARD, Use OLE clipboard.}
+@itemdef{wxUSE_PENWINDOWS, See src/msw/penwin.cpp file.}
+@itemdef{wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW, Use PS printing in wxMSW.}
+@itemdef{wxUSE_PS_PRINTING, See src/msw/dcprint.cpp file.}
+@itemdef{wxUSE_REGKEY, Use wxRegKey class.}
+@itemdef{wxUSE_RICHEDIT, Enable use of riched32.dll in wxTextCtrl}
+@itemdef{wxUSE_RICHEDIT2, Enable use of riched20.dll in wxTextCtrl}
+@itemdef{wxUSE_VC_CRTDBG, See wx/msw/msvcrt.h file.}
+@itemdef{wxUSE_UNICODE_MSLU, Use MSLU for Unicode support under Windows 9x systems.}
+@itemdef{wxUSE_UXTHEME, Enable support for XP themes.}
+@itemdef{wxUSE_WIN_METAFILES_ALWAYS, Use wxMetaFile even when wxUSE_ENH_METAFILE=$1$.}
+@itemdef{wxUSE_WXDIB, Use wxDIB class.}
+@itemdef{wxUSE_XPM_IN_MSW, See also wxUSE_XPM}
+@endDefList
+
+
+@section page_wxusedef_univ wxUSE preprocessor symbols used only in wxUniversal
+
+@beginDefList
+@itemdef{wxUSE_ALL_THEMES, Use all themes in wxUniversal; See wx/univ/theme.h file.}
+@itemdef{wxUSE_THEME_GTK, Use GTK+ 1-like theme in wxUniversal}
+@itemdef{wxUSE_THEME_METAL, Use GTK+ 2-like theme in wxUniversal}
+@itemdef{wxUSE_THEME_MONO, Use simple monochrome theme in wxUniversal}
+@itemdef{wxUSE_THEME_WIN32, Use Win32-like theme in wxUniversal}
+@endDefList
*/
\ No newline at end of file
/**
- @page page_constants Constants
+@page page_constants Constants
- This chapter describes the constants defined by wxWidgets.
+This chapter describes the constants defined by wxWidgets.
- @li @subpage page_keycodes
- @li @subpage page_keymodifiers
- @li @subpage page_languagecodes
- @li @subpage page_stdevtid
- @li @subpage page_stockitems
- @li @subpage page_cppconst
- @li @subpage page_wxusedef
+@li @subpage page_keycodes
+@li @subpage page_keymodifiers
+@li @subpage page_languagecodes
+@li @subpage page_stdevtid
+@li @subpage page_stockitems
+@li @subpage page_cppconst
+@li @subpage page_wxusedef
*/
/**
- @page page_copyright Copyright notice
+@page page_copyright Copyright notice
- <center>
- Copyright (c) 1992-2008 Julian Smart, Robert Roebling, Vadim Zeitlin and other
- members of the wxWidgets team
+<center>
+Copyright (c) 1992-2008 Julian Smart, Robert Roebling, Vadim Zeitlin and other
+members of the wxWidgets team
- Portions (c) 1996 Artificial Intelligence Applications Institute
- </center>
+Portions (c) 1996 Artificial Intelligence Applications Institute
+</center>
- Please also see the wxWindows license files (preamble.txt, lgpl.txt, gpl.txt,
- licence.txt, licendoc.txt) for conditions of software and documentation use.
- Note that we use the old name wxWindows in the license, pending
- recognition of the new name by OSI.
+Please also see the wxWindows license files (preamble.txt, lgpl.txt, gpl.txt,
+licence.txt, licendoc.txt) for conditions of software and documentation use.
+Note that we use the old name wxWindows in the license, pending
+recognition of the new name by OSI.
- @li @subpage page_copyright_wxlicense
- @li @subpage page_copyright_gnulicense
+@li @subpage page_copyright_wxlicense
+@li @subpage page_copyright_gnulicense
*/
/**
- @page page_copyright_wxlicense wxWindows Library License, Version 3.1
+@page page_copyright_wxlicense wxWindows Library License, Version 3.1
- <!--
+<!--
- NB: this is exact copy of docs/licence.txt file. DO NOT modify this
- section, it MUST be identical to docs/licence.txt!
+NB: this is exact copy of docs/licence.txt file. DO NOT modify this
+ section, it MUST be identical to docs/licence.txt!
- -->
+-->
- Copyright (c) 1998-2008 Julian Smart, Robert Roebling et al
+Copyright (c) 1998-2008 Julian Smart, Robert Roebling et al
- Everyone is permitted to copy and distribute verbatim copies
- of this licence document, but changing it is not allowed.
+Everyone is permitted to copy and distribute verbatim copies
+of this licence document, but changing it is not allowed.
- <center>
- WXWINDOWS LIBRARY LICENCE
+<center>
+WXWINDOWS LIBRARY LICENCE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- </center>
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+</center>
- This library is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public Licence as published by
- the Free Software Foundation; either version 2 of the Licence, or (at
- your option) any later version.
+This library is free software; you can redistribute it and/or modify it
+under the terms of the GNU Library General Public Licence as published by
+the Free Software Foundation; either version 2 of the Licence, or (at
+your option) any later version.
- This library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
- General Public Licence for more details.
+This library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
+General Public Licence for more details.
- You should have received a copy of the GNU Library General Public Licence
- along with this software, usually in a file named COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- Boston, MA 02111-1307 USA.
+You should have received a copy of the GNU Library General Public Licence
+along with this software, usually in a file named COPYING.LIB. If not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA 02111-1307 USA.
- EXCEPTION NOTICE
+EXCEPTION NOTICE
- 1. As a special exception, the copyright holders of this library give
- permission for additional uses of the text contained in this release of
- the library as licenced under the wxWindows Library Licence, applying
- either version 3.1 of the Licence, or (at your option) any later version of
- the Licence as published by the copyright holders of version 3.1 of the
- Licence document.
+1. As a special exception, the copyright holders of this library give
+permission for additional uses of the text contained in this release of
+the library as licenced under the wxWindows Library Licence, applying
+either version 3.1 of the Licence, or (at your option) any later version of
+the Licence as published by the copyright holders of version 3.1 of the
+Licence document.
- 2. The exception is that you may use, copy, link, modify and distribute
- under your own terms, binary object code versions of works based
- on the Library.
+2. The exception is that you may use, copy, link, modify and distribute
+under your own terms, binary object code versions of works based
+on the Library.
- 3. If you copy code from files distributed under the terms of the GNU
- General Public Licence or the GNU Library General Public Licence into a
- copy of this library, as this licence permits, the exception does not
- apply to the code that you add in this way. To avoid misleading anyone as
- to the status of such modified files, you must delete this exception
- notice from such code and/or adjust the licensing conditions notice
- accordingly.
+3. If you copy code from files distributed under the terms of the GNU
+General Public Licence or the GNU Library General Public Licence into a
+copy of this library, as this licence permits, the exception does not
+apply to the code that you add in this way. To avoid misleading anyone as
+to the status of such modified files, you must delete this exception
+notice from such code and/or adjust the licensing conditions notice
+accordingly.
- 4. If you write modifications of your own for this library, it is your
- choice whether to permit this exception to apply to your modifications.
- If you do not wish that, you must delete the exception notice from such
- code and/or adjust the licensing conditions notice accordingly.
+4. If you write modifications of your own for this library, it is your
+choice whether to permit this exception to apply to your modifications.
+If you do not wish that, you must delete the exception notice from such
+code and/or adjust the licensing conditions notice accordingly.
*/
/**
- @page page_copyright_gnulicense GNU Library General Public License, Version 2
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- [This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
- @section page_copyright_gnulicense_preamble Preamble
-
- The licenses for most software are designed to take away your
- freedom to share and change it. By contrast, the GNU General Public
- Licenses are intended to guarantee your freedom to share and change
- free software -- to make sure the software is free for all its users.
-
- This license, the Library General Public License, applies to some
- specially designated Free Software Foundation software, and to any
- other libraries whose authors decide to use it. You can use it for
- your libraries, too.
-
- When we speak of free software, we are referring to freedom, not
- price. Our General Public Licenses are designed to make sure that you
- have the freedom to distribute copies of free software (and charge for
- this service if you wish), that you receive source code or can get it
- if you want it, that you can change the software or use pieces of it
- in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
- anyone to deny you these rights or to ask you to surrender the rights.
- These restrictions translate to certain responsibilities for you if
- you distribute copies of the library, or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
- or for a fee, you must give the recipients all the rights that we gave
- you. You must make sure that they, too, receive or can get the source
- code. If you link a program with the library, you must provide
- complete object files to the recipients so that they can relink them
- with the library, after making changes to the library and recompiling
- it. And you must show them these terms so they know their rights.
-
- Our method of protecting your rights has two steps: (1) copyright
- the library, and (2) offer you this license which gives you legal
- permission to copy, distribute and/or modify the library.
-
- Also, for each distributor's protection, we want to make certain
- that everyone understands that there is no warranty for this free
- library. If the library is modified by someone else and passed on, we
- want its recipients to know that what they have is not the original
- version, so that any problems introduced by others will not reflect on
- the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
- patents. We wish to avoid the danger that companies distributing free
- software will individually obtain patent licenses, thus in effect
- transforming the program into proprietary software. To prevent this,
- we have made it clear that any patent must be licensed for everyone's
- free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
- GNU General Public License, which was designed for utility programs. This
- license, the GNU Library General Public License, applies to certain
- designated libraries. This license is quite different from the ordinary
- one; be sure to read it in full, and don't assume that anything in it is
- the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
- they blur the distinction we usually make between modifying or adding to a
- program and simply using it. Linking a program with a library, without
- changing the library, is in some sense simply using the library, and is
- analogous to running a utility program or application program. However, in
- a textual and legal sense, the linked executable is a combined work, a
- derivative of the original library, and the ordinary General Public License
- treats it as such.
-
- Because of this blurred distinction, using the ordinary General
- Public License for libraries did not effectively promote software
- sharing, because most developers did not use the libraries. We
- concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
- users of those programs of all benefit from the free status of the
- libraries themselves. This Library General Public License is intended to
- permit developers of non-free programs to use free libraries, while
- preserving your freedom as a user of such programs to change the free
- libraries that are incorporated in them. (We have not seen how to achieve
- this as regards changes in header files, but we have achieved it as regards
- changes in the actual functions of the Library.) The hope is that this
- will lead to faster development of free libraries.
-
- The precise terms and conditions for copying, distribution and
- modification follow. Pay close attention to the difference between a
- "work based on the library" and a "work that uses the library". The
- former contains code derived from the library, while the latter only
- works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
- General Public License rather than by this special one.
-
- <center>
- GNU LIBRARY GENERAL PUBLIC LICENSE
-
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- </center>
-
- 0. This License Agreement applies to any software library which
- contains a notice placed by the copyright holder or other authorized
- party saying it may be distributed under the terms of this Library
- General Public License (also called "this License"). Each licensee is
- addressed as "you".
-
- A "library" means a collection of software functions and/or data
- prepared so as to be conveniently linked with application programs
- (which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
- which has been distributed under these terms. A "work based on the
- Library" means either the Library or any derivative work under
- copyright law: that is to say, a work containing the Library or a
- portion of it, either verbatim or with modifications and/or translated
- straightforwardly into another language. (Hereinafter, translation is
- included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
- making modifications to it. For a library, complete source code means
- all the source code for all modules it contains, plus any associated
- interface definition files, plus the scripts used to control compilation
- and installation of the library.
-
- Activities other than copying, distribution and modification are not
- covered by this License; they are outside its scope. The act of
- running a program using the Library is not restricted, and output from
- such a program is covered only if its contents constitute a work based
- on the Library (independent of the use of the Library in a tool for
- writing it). Whether that is true depends on what the Library does
- and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
- complete source code as you receive it, in any medium, provided that
- you conspicuously and appropriately publish on each copy an
- appropriate copyright notice and disclaimer of warranty; keep intact
- all the notices that refer to this License and to the absence of any
- warranty; and distribute a copy of this License along with the
- Library.
-
- You may charge a fee for the physical act of transferring a copy,
- and you may at your option offer warranty protection in exchange for a
- fee.
-
- 2. You may modify your copy or copies of the Library or any portion
- of it, thus forming a work based on the Library, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the Library,
- and can be reasonably considered independent and separate works in
- themselves, then this License, and its terms, do not apply to those
- sections when you distribute them as separate works. But when you
- distribute the same sections as part of a whole which is a work based
- on the Library, the distribution of the whole must be on the terms of
- this License, whose permissions for other licensees extend to the
- entire whole, and thus to each and every part regardless of who wrote
- it.
-
- Thus, it is not the intent of this section to claim rights or contest
- your rights to work written entirely by you; rather, the intent is to
- exercise the right to control the distribution of derivative or
- collective works based on the Library.
-
- In addition, mere aggregation of another work not based on the Library
- with the Library (or with a work based on the Library) on a volume of
- a storage or distribution medium does not bring the other work under
- the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
- License instead of this License to a given copy of the Library. To do
- this, you must alter all the notices that refer to this License, so
- that they refer to the ordinary GNU General Public License, version 2,
- instead of to this License. (If a newer version than version 2 of the
- ordinary GNU General Public License has appeared, then you can specify
- that version instead if you wish.) Do not make any other change in
- these notices.
-
- Once this change is made in a given copy, it is irreversible for
- that copy, so the ordinary GNU General Public License applies to all
- subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
- the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
- derivative of it, under Section 2) in object code or executable form
- under the terms of Sections 1 and 2 above provided that you accompany
- it with the complete corresponding machine-readable source code, which
- must be distributed under the terms of Sections 1 and 2 above on a
- medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
- from a designated place, then offering equivalent access to copy the
- source code from the same place satisfies the requirement to
- distribute the source code, even though third parties are not
- compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
- Library, but is designed to work with the Library by being compiled or
- linked with it, is called a "work that uses the Library". Such a
- work, in isolation, is not a derivative work of the Library, and
- therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
- creates an executable that is a derivative of the Library (because it
- contains portions of the Library), rather than a "work that uses the
- library". The executable is therefore covered by this License.
- Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
- that is part of the Library, the object code for the work may be a
- derivative work of the Library even though the source code is not.
- Whether this is true is especially significant if the work can be
- linked without the Library, or if the work is itself a library. The
- threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
- structure layouts and accessors, and small macros and small inline
- functions (ten lines or less in length), then the use of the object
- file is unrestricted, regardless of whether it is legally a derivative
- work. (Executables containing this object code plus portions of the
- Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
- distribute the object code for the work under the terms of Section 6.
- Any executables containing that work also fall under Section 6,
- whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also compile or
- link a "work that uses the Library" with the Library to produce a
- work containing portions of the Library, and distribute that work
- under terms of your choice, provided that the terms permit
- modification of the work for the customer's own use and reverse
- engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
- Library is used in it and that the Library and its use are covered by
- this License. You must supply a copy of this License. If the work
- during execution displays copyright notices, you must include the
- copyright notice for the Library among them, as well as a reference
- directing the user to the copy of this License. Also, you must do one
- of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- c) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- d) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
- Library" must include any data and utility programs needed for
- reproducing the executable from it. However, as a special exception,
- the source code distributed need not include anything that is normally
- distributed (in either source or binary form) with the major
- components (compiler, kernel, and so on) of the operating system on
- which the executable runs, unless that component itself accompanies
- the executable.
-
- It may happen that this requirement contradicts the license
- restrictions of other proprietary libraries that do not normally
- accompany the operating system. Such a contradiction means you cannot
- use both them and the Library together in an executable that you
- distribute.
-
- 7. You may place library facilities that are a work based on the
- Library side-by-side in a single library together with other library
- facilities not covered by this License, and distribute such a combined
- library, provided that the separate distribution of the work based on
- the Library and of the other library facilities is otherwise
- permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
- the Library except as expressly provided under this License. Any
- attempt otherwise to copy, modify, sublicense, link with, or
- distribute the Library is void, and will automatically terminate your
- rights under this License. However, parties who have received copies,
- or rights, from you under this License will not have their licenses
- terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to modify or
- distribute the Library or its derivative works. These actions are
- prohibited by law if you do not accept this License. Therefore, by
- modifying or distributing the Library (or any work based on the
- Library), you indicate your acceptance of this License to do so, and
- all its terms and conditions for copying, distributing or modifying
- the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
- Library), the recipient automatically receives a license from the
- original licensor to copy, distribute, link with or modify the Library
- subject to these terms and conditions. You may not impose any further
- restrictions on the recipients' exercise of the rights granted herein.
- You are not responsible for enforcing compliance by third parties to
- this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent issues),
- conditions are imposed on you (whether by court order, agreement or
- otherwise) that contradict the conditions of this License, they do not
- excuse you from the conditions of this License. If you cannot
- distribute so as to satisfy simultaneously your obligations under this
- License and any other pertinent obligations, then as a consequence you
- may not distribute the Library at all. For example, if a patent
- license would not permit royalty-free redistribution of the Library by
- all those who receive copies directly or indirectly through you, then
- the only way you could satisfy both it and this License would be to
- refrain entirely from distribution of the Library.
-
- If any portion of this section is held invalid or unenforceable under any
- particular circumstance, the balance of the section is intended to apply,
- and the section as a whole is intended to apply in other circumstances.
-
- It is not the purpose of this section to induce you to infringe any
- patents or other property right claims or to contest validity of any
- such claims; this section has the sole purpose of protecting the
- integrity of the free software distribution system which is
- implemented by public license practices. Many people have made
- generous contributions to the wide range of software distributed
- through that system in reliance on consistent application of that
- system; it is up to the author/donor to decide if he or she is willing
- to distribute software through any other system and a licensee cannot
- impose that choice.
-
- This section is intended to make thoroughly clear what is believed to
- be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
- certain countries either by patents or by copyrighted interfaces, the
- original copyright holder who places the Library under this License may add
- an explicit geographical distribution limitation excluding those countries,
- so that distribution is permitted only in or among countries not thus
- excluded. In such case, this License incorporates the limitation as if
- written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
- versions of the Library General Public License from time to time.
- Such new versions will be similar in spirit to the present version,
- but may differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the Library
- specifies a version number of this License which applies to it and
- "any later version", you have the option of following the terms and
- conditions either of that version or of any later version published by
- the Free Software Foundation. If the Library does not specify a
- license version number, you may choose any version ever published by
- the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
- programs whose distribution conditions are incompatible with these,
- write to the author to ask for permission. For software which is
- copyrighted by the Free Software Foundation, write to the Free
- Software Foundation; we sometimes make exceptions for this. Our
- decision will be guided by the two goals of preserving the free status
- of all derivatives of our free software and of promoting the sharing
- and reuse of software generally.
-
- <center>
- NO WARRANTY
- </center>
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
- EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
- OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
- KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
- LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
- THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
- AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
- FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
- CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
- LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
- RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
- FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
- SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGES.
-
-
- <center>
- END OF TERMS AND CONDITIONS
- </center>
-
- @section page_copyright_gnulicense_appendix Appendix: How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
- possible use to the public, we recommend making it free software that
- everyone can redistribute and change. You can do so by permitting
- redistribution under these terms (or, alternatively, under the terms of the
- ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
- safest to attach them to the start of each source file to most effectively
- convey the exclusion of warranty; and each file should have at least the
- "copyright" line and a pointer to where the full notice is found.
-
- @verbatim
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free
- Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- @endverbatim
-
-
- Also add information on how to contact you by electronic and paper mail.
-
- You should also get your employer (if you work as a programmer) or your
- school, if any, to sign a "copyright disclaimer" for the library, if
- necessary. Here is a sample; alter the names:
-
- @verbatim
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
- @endverbatim
-
-
- That's all there is to it!
+@page page_copyright_gnulicense GNU Library General Public License, Version 2
+
+Copyright (C) 1991 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+@section page_copyright_gnulicense_preamble Preamble
+
+The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software -- to make sure the software is free for all its users.
+
+This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+<center>
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+</center>
+
+0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices
+stating that you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no
+charge to all third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses
+the facility, other than as an argument passed when the facility
+is invoked, then you must make a good faith effort to ensure that,
+in the event an application does not supply such function or
+table, the facility still operates, and performs whatever part of
+its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has
+a purpose that is entirely well-defined independent of the
+application. Therefore, Subsection 2d requires that any
+application-supplied function or table used by this function must
+be optional: if the application does not supply it, the square
+root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+a) Accompany the work with the complete corresponding
+machine-readable source code for the Library including whatever
+changes were used in the work (which must be distributed under
+Sections 1 and 2 above); and, if the work is an executable linked
+with the Library, with the complete machine-readable "work that
+uses the Library", as object code and/or source code, so that the
+user can modify the Library and then relink to produce a modified
+executable containing the modified Library. (It is understood
+that the user who changes the contents of definitions files in the
+Library will not necessarily be able to recompile the application
+to use the modified definitions.)
+
+b) Accompany the work with a written offer, valid for at
+least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more
+than the cost of performing this distribution.
+
+c) If distribution of the work is made by offering access to copy
+from a designated place, offer equivalent access to copy the above
+specified materials from the same place.
+
+d) Verify that the user has already received a copy of these
+materials or that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+a) Accompany the combined library with a copy of the same work
+based on the Library, uncombined with any other library
+facilities. This must be distributed under the terms of the
+Sections above.
+
+b) Give prominent notice with the combined library of the fact
+that part of it is a work based on the Library, and explaining
+where to find the accompanying uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+<center>
+NO WARRANTY
+</center>
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+
+<center>
+END OF TERMS AND CONDITIONS
+</center>
+
+@section page_copyright_gnulicense_appendix Appendix: How to Apply These Terms to Your New Libraries
+
+If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+@verbatim
+<one line to give the library's name and a brief idea of what it does.>
+Copyright (C) <year> <name of author>
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with this library; if not, write to the Free
+Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+@endverbatim
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+@verbatim
+Yoyodyne, Inc., hereby disclaims all copyright interest in the
+library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+<signature of Ty Coon>, 1 April 1990
+Ty Coon, President of Vice
+@endverbatim
+
+
+That's all there is to it!
+
*/
/**
- @page page_multiplatform Multi-platform development with wxWidgets
+@page page_multiplatform Multi-platform development with wxWidgets
- This chapter describes the practical details of using wxWidgets. Please
- see the file install.txt for up-to-date installation instructions, and
- changes.txt for differences between versions.
+This chapter describes the practical details of using wxWidgets. Please
+see the file install.txt for up-to-date installation instructions, and
+changes.txt for differences between versions.
- @li @ref page_multiplatform_includefiles
- @li @ref page_multiplatform_libraries
- @li @ref page_multiplatform_configuration
- @li @ref page_multiplatform_makefiles
- @li @ref page_multiplatform_windowsfiles
- @li @ref page_multiplatform_allocatingobjects
- @li @ref page_multiplatform_architecturedependency
- @li @ref page_multiplatform_conditionalcompilation
- @li @ref page_multiplatform_cpp
- @li @ref page_multiplatform_filehandling
+@li @ref page_multiplatform_includefiles
+@li @ref page_multiplatform_libraries
+@li @ref page_multiplatform_configuration
+@li @ref page_multiplatform_makefiles
+@li @ref page_multiplatform_windowsfiles
+@li @ref page_multiplatform_allocatingobjects
+@li @ref page_multiplatform_architecturedependency
+@li @ref page_multiplatform_conditionalcompilation
+@li @ref page_multiplatform_cpp
+@li @ref page_multiplatform_filehandling
- <hr>
+<hr>
- @section page_multiplatform_includefiles Include files
+@section page_multiplatform_includefiles Include files
- The main include file is @c "wx/wx.h"; this includes the most commonly
- used modules of wxWidgets.
+The main include file is @c "wx/wx.h"; this includes the most commonly
+used modules of wxWidgets.
- To save on compilation time, include only those header files relevant to the
- source file. If you are using precompiled headers, you should include
- the following section before any other includes:
+To save on compilation time, include only those header files relevant to the
+source file. If you are using precompiled headers, you should include
+the following section before any other includes:
- @verbatim
- // For compilers that support precompilation, includes "wx.h".
- #include <wx/wxprec.h>
+@verbatim
+// For compilers that support precompilation, includes "wx.h".
+#include <wx/wxprec.h>
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
- #ifndef WX_PRECOMP
- // Include your minimal set of headers here, or wx.h
- #include <wx/wx.h>
- #endif
+#ifndef WX_PRECOMP
+// Include your minimal set of headers here, or wx.h
+#include <wx/wx.h>
+#endif
- ... now your other include files ...
- @endverbatim
+... now your other include files ...
+@endverbatim
- The file @c "wx/wxprec.h" includes @c "wx/wx.h". Although this incantation
- may seem quirky, it is in fact the end result of a lot of experimentation,
- and several Windows compilers to use precompilation which is largely automatic for
- compilers with necessary support. Currently it is used for Visual C++ (including
- embedded Visual C++), Borland C++, Open Watcom C++, Digital Mars C++
- and newer versions of GCC.
- Some compilers might need extra work from the application developer to set the
- build environment up as necessary for the support.
+The file @c "wx/wxprec.h" includes @c "wx/wx.h". Although this incantation
+may seem quirky, it is in fact the end result of a lot of experimentation,
+and several Windows compilers to use precompilation which is largely automatic for
+compilers with necessary support. Currently it is used for Visual C++ (including
+embedded Visual C++), Borland C++, Open Watcom C++, Digital Mars C++
+and newer versions of GCC.
+Some compilers might need extra work from the application developer to set the
+build environment up as necessary for the support.
- @section page_multiplatform_libraries Libraries
+@section page_multiplatform_libraries Libraries
- Most ports of wxWidgets can create either a static library or a shared
- library. wxWidgets can also be built in multilib and monolithic variants.
- See the @ref page_libs for more information on these.
+Most ports of wxWidgets can create either a static library or a shared
+library. wxWidgets can also be built in multilib and monolithic variants.
+See the @ref page_libs for more information on these.
- @section page_multiplatform_configuration Configuration
+@section page_multiplatform_configuration Configuration
- When using project files and makefiles directly to build wxWidgets,
- options are configurable in the file
- @c "wx/XXX/setup.h" where XXX is the required platform (such as msw, motif, gtk, mac). Some
- settings are a matter of taste, some help with platform-specific problems, and
- others can be set to minimize the size of the library. Please see the setup.h file
- and @c install.txt files for details on configuration.
+When using project files and makefiles directly to build wxWidgets,
+options are configurable in the file
+@c "wx/XXX/setup.h" where XXX is the required platform (such as msw, motif, gtk, mac). Some
+settings are a matter of taste, some help with platform-specific problems, and
+others can be set to minimize the size of the library. Please see the setup.h file
+and @c install.txt files for details on configuration.
- When using the 'configure' script to configure wxWidgets (on Unix and other platforms where
- configure is available), the corresponding setup.h files are generated automatically
- along with suitable makefiles. When using the RPM packages
- for installing wxWidgets on Linux, a correct setup.h is shipped in the package and
- this must not be changed.
+When using the 'configure' script to configure wxWidgets (on Unix and other platforms where
+configure is available), the corresponding setup.h files are generated automatically
+along with suitable makefiles. When using the RPM packages
+for installing wxWidgets on Linux, a correct setup.h is shipped in the package and
+this must not be changed.
- @section page_multiplatform_makefiles Makefiles
+@section page_multiplatform_makefiles Makefiles
- On Microsoft Windows, wxWidgets has a different set of makefiles for each
- compiler, because each compiler's 'make' tool is slightly different.
- Popular Windows compilers that we cater for, and the corresponding makefile
- extensions, include: Microsoft Visual C++ (.vc), Borland C++ (.bcc),
- OpenWatcom C++ (.wat) and MinGW/Cygwin (.gcc). Makefiles are provided
- for the wxWidgets library itself, samples, demos, and utilities.
+On Microsoft Windows, wxWidgets has a different set of makefiles for each
+compiler, because each compiler's 'make' tool is slightly different.
+Popular Windows compilers that we cater for, and the corresponding makefile
+extensions, include: Microsoft Visual C++ (.vc), Borland C++ (.bcc),
+OpenWatcom C++ (.wat) and MinGW/Cygwin (.gcc). Makefiles are provided
+for the wxWidgets library itself, samples, demos, and utilities.
- On Linux, Mac and OS/2, you use the 'configure' command to
- generate the necessary makefiles. You should also use this method when
- building with MinGW/Cygwin on Windows.
+On Linux, Mac and OS/2, you use the 'configure' command to
+generate the necessary makefiles. You should also use this method when
+building with MinGW/Cygwin on Windows.
- We also provide project files for some compilers, such as
- Microsoft VC++. However, we recommend using makefiles
- to build the wxWidgets library itself, because makefiles
- can be more powerful and less manual intervention is required.
+We also provide project files for some compilers, such as
+Microsoft VC++. However, we recommend using makefiles
+to build the wxWidgets library itself, because makefiles
+can be more powerful and less manual intervention is required.
- On Windows using a compiler other than MinGW/Cygwin, you would
- build the wxWidgets library from the build/msw directory
- which contains the relevant makefiles.
+On Windows using a compiler other than MinGW/Cygwin, you would
+build the wxWidgets library from the build/msw directory
+which contains the relevant makefiles.
- On Windows using MinGW/Cygwin, and on Unix, MacOS X and OS/2, you invoke
- 'configure' (found in the top-level of the wxWidgets source hierarchy),
- from within a suitable empty directory for containing makefiles, object files and
- libraries.
+On Windows using MinGW/Cygwin, and on Unix, MacOS X and OS/2, you invoke
+'configure' (found in the top-level of the wxWidgets source hierarchy),
+from within a suitable empty directory for containing makefiles, object files and
+libraries.
- For details on using makefiles, configure, and project files,
- please see docs/xxx/install.txt in your distribution, where
- xxx is the platform of interest, such as msw, gtk, x11, mac.
+For details on using makefiles, configure, and project files,
+please see docs/xxx/install.txt in your distribution, where
+xxx is the platform of interest, such as msw, gtk, x11, mac.
- @section page_multiplatform_windowsfiles Windows-specific files
+@section page_multiplatform_windowsfiles Windows-specific files
- wxWidgets application compilation under MS Windows requires at least one
- extra file: a resource file.
+wxWidgets application compilation under MS Windows requires at least one
+extra file: a resource file.
- @subsection page_multiplatform_windowsfiles_resources Resource file
+@subsection page_multiplatform_windowsfiles_resources Resource file
- The least that must be defined in the Windows resource file (extension RC)
- is the following statement:
+The least that must be defined in the Windows resource file (extension RC)
+is the following statement:
- @verbatim
- #include "wx/msw/wx.rc"
- @endverbatim
+@verbatim
+#include "wx/msw/wx.rc"
+@endverbatim
- which includes essential internal wxWidgets definitions. The resource script
- may also contain references to icons, cursors, etc., for example:
+which includes essential internal wxWidgets definitions. The resource script
+may also contain references to icons, cursors, etc., for example:
- @verbatim
- wxicon icon wx.ico
- @endverbatim
+@verbatim
+wxicon icon wx.ico
+@endverbatim
- The icon can then be referenced by name when creating a frame icon. See
- the MS Windows SDK documentation.
+The icon can then be referenced by name when creating a frame icon. See
+the MS Windows SDK documentation.
- @note include wx.rc @e after any ICON statements
- so programs that search your executable for icons (such
- as the Program Manager) find your application icon first.
+@note include wx.rc @e after any ICON statements
+ so programs that search your executable for icons (such
+ as the Program Manager) find your application icon first.
- @section page_multiplatform_allocatingobjects Allocating and deleting wxWidgets objects
+@section page_multiplatform_allocatingobjects Allocating and deleting wxWidgets objects
- In general, classes derived from wxWindow must dynamically allocated
- with @e new and deleted with @e delete. If you delete a window,
- all of its children and descendants will be automatically deleted,
- so you don't need to delete these descendants explicitly.
+In general, classes derived from wxWindow must dynamically allocated
+with @e new and deleted with @e delete. If you delete a window,
+all of its children and descendants will be automatically deleted,
+so you don't need to delete these descendants explicitly.
- When deleting a frame or dialog, use @b Destroy rather than @b delete so
- that the wxWidgets delayed deletion can take effect. This waits until idle time
- (when all messages have been processed) to actually delete the window, to avoid
- problems associated with the GUI sending events to deleted windows.
+When deleting a frame or dialog, use @b Destroy rather than @b delete so
+that the wxWidgets delayed deletion can take effect. This waits until idle time
+(when all messages have been processed) to actually delete the window, to avoid
+problems associated with the GUI sending events to deleted windows.
- Don't create a window on the stack, because this will interfere
- with delayed deletion.
+Don't create a window on the stack, because this will interfere
+with delayed deletion.
- If you decide to allocate a C++ array of objects (such as wxBitmap) that may
- be cleaned up by wxWidgets, make sure you delete the array explicitly
- before wxWidgets has a chance to do so on exit, since calling @e delete on
- array members will cause memory problems.
+If you decide to allocate a C++ array of objects (such as wxBitmap) that may
+be cleaned up by wxWidgets, make sure you delete the array explicitly
+before wxWidgets has a chance to do so on exit, since calling @e delete on
+array members will cause memory problems.
- wxColour can be created statically: it is not automatically cleaned
- up and is unlikely to be shared between other objects; it is lightweight
- enough for copies to be made.
+wxColour can be created statically: it is not automatically cleaned
+up and is unlikely to be shared between other objects; it is lightweight
+enough for copies to be made.
- Beware of deleting objects such as a wxPen or wxBitmap if they are still in use.
- Windows is particularly sensitive to this: so make sure you
- make calls like wxDC::SetPen(wxNullPen) or wxDC::SelectObject(wxNullBitmap) before deleting
- a drawing object that may be in use. Code that doesn't do this will probably work
- fine on some platforms, and then fail under Windows.
+Beware of deleting objects such as a wxPen or wxBitmap if they are still in use.
+Windows is particularly sensitive to this: so make sure you
+make calls like wxDC::SetPen(wxNullPen) or wxDC::SelectObject(wxNullBitmap) before deleting
+a drawing object that may be in use. Code that doesn't do this will probably work
+fine on some platforms, and then fail under Windows.
- @section page_multiplatform_architecturedependency Architecture dependency
+@section page_multiplatform_architecturedependency Architecture dependency
- A problem which sometimes arises from writing multi-platform programs is that
- the basic C types are not defined the same on all platforms. This holds true
- for both the length in bits of the standard types (such as int and long) as
- well as their byte order, which might be little endian (typically
- on Intel computers) or big endian (typically on some Unix workstations). wxWidgets
- defines types and macros that make it easy to write architecture independent
- code. The types are:
+A problem which sometimes arises from writing multi-platform programs is that
+the basic C types are not defined the same on all platforms. This holds true
+for both the length in bits of the standard types (such as int and long) as
+well as their byte order, which might be little endian (typically
+on Intel computers) or big endian (typically on some Unix workstations). wxWidgets
+defines types and macros that make it easy to write architecture independent
+code. The types are:
- wxInt32, wxInt16, wxInt8, wxUint32, wxUint16 = wxWord, wxUint8 = wxByte
+wxInt32, wxInt16, wxInt8, wxUint32, wxUint16 = wxWord, wxUint8 = wxByte
- where wxInt32 stands for a 32-bit signed integer type etc. You can also check
- which architecture the program is compiled on using the wxBYTE_ORDER define
- which is either wxBIG_ENDIAN or wxLITTLE_ENDIAN (in the future maybe wxPDP_ENDIAN
- as well).
+where wxInt32 stands for a 32-bit signed integer type etc. You can also check
+which architecture the program is compiled on using the wxBYTE_ORDER define
+which is either wxBIG_ENDIAN or wxLITTLE_ENDIAN (in the future maybe wxPDP_ENDIAN
+as well).
- The macros handling bit-swapping with respect to the applications endianness
- are described in the @ref page_macro_cat_byteorder section.
+The macros handling bit-swapping with respect to the applications endianness
+are described in the @ref page_macro_cat_byteorder section.
- @section page_multiplatform_conditionalcompilation Conditional compilation
+@section page_multiplatform_conditionalcompilation Conditional compilation
- One of the purposes of wxWidgets is to reduce the need for conditional
- compilation in source code, which can be messy and confusing to follow.
- However, sometimes it is necessary to incorporate platform-specific
- features (such as metafile use under MS Windows). The @ref page_wxusedef
- symbols listed in the file @c setup.h may be used for this purpose,
- along with any user-supplied ones.
+One of the purposes of wxWidgets is to reduce the need for conditional
+compilation in source code, which can be messy and confusing to follow.
+However, sometimes it is necessary to incorporate platform-specific
+features (such as metafile use under MS Windows). The @ref page_wxusedef
+symbols listed in the file @c setup.h may be used for this purpose,
+along with any user-supplied ones.
- @section page_multiplatform_cpp C++ issues
+@section page_multiplatform_cpp C++ issues
- The following documents some miscellaneous C++ issues.
+The following documents some miscellaneous C++ issues.
- @subsection page_multiplatform_cpp_templates Templates
+@subsection page_multiplatform_cpp_templates Templates
- wxWidgets does not use templates (except for some advanced features that
- are switched off by default) since it is a notoriously unportable feature.
+wxWidgets does not use templates (except for some advanced features that
+are switched off by default) since it is a notoriously unportable feature.
- @subsection page_multiplatform_cpp_rtti RTTI
+@subsection page_multiplatform_cpp_rtti RTTI
- wxWidgets does not use C++ run-time type information since wxWidgets provides
- its own run-time type information system, implemented using macros.
+wxWidgets does not use C++ run-time type information since wxWidgets provides
+its own run-time type information system, implemented using macros.
- @subsection page_multiplatform_cpp_null Type of NULL
+@subsection page_multiplatform_cpp_null Type of NULL
- Some compilers (e.g. the native IRIX cc) define NULL to be 0L so that
- no conversion to pointers is allowed. Because of that, all these
- occurrences of NULL in the GTK+ port use an explicit conversion such
- as
+Some compilers (e.g. the native IRIX cc) define NULL to be 0L so that
+no conversion to pointers is allowed. Because of that, all these
+occurrences of NULL in the GTK+ port use an explicit conversion such
+as
- @code
- wxWindow *my_window = (wxWindow*) NULL;
- @endcode
+@code
+wxWindow *my_window = (wxWindow*) NULL;
+@endcode
- It is recommended to adhere to this in all code using wxWidgets as
- this make the code (a bit) more portable.
+It is recommended to adhere to this in all code using wxWidgets as
+this make the code (a bit) more portable.
- @subsection page_multiplatform_cpp_precompiledheaders Precompiled headers
+@subsection page_multiplatform_cpp_precompiledheaders Precompiled headers
- Some compilers, such as Borland C++ and Microsoft C++, support
- precompiled headers. This can save a great deal of compiling time. The
- recommended approach is to precompile @c "wx.h", using this
- precompiled header for compiling both wxWidgets itself and any
- wxWidgets applications. For Windows compilers, two dummy source files
- are provided (one for normal applications and one for creating DLLs)
- to allow initial creation of the precompiled header.
+Some compilers, such as Borland C++ and Microsoft C++, support
+precompiled headers. This can save a great deal of compiling time. The
+recommended approach is to precompile @c "wx.h", using this
+precompiled header for compiling both wxWidgets itself and any
+wxWidgets applications. For Windows compilers, two dummy source files
+are provided (one for normal applications and one for creating DLLs)
+to allow initial creation of the precompiled header.
- However, there are several downsides to using precompiled headers. One
- is that to take advantage of the facility, you often need to include
- more header files than would normally be the case. This means that
- changing a header file will cause more recompilations (in the case of
- wxWidgets, everything needs to be recompiled since everything includes @c "wx.h" !)
+However, there are several downsides to using precompiled headers. One
+is that to take advantage of the facility, you often need to include
+more header files than would normally be the case. This means that
+changing a header file will cause more recompilations (in the case of
+wxWidgets, everything needs to be recompiled since everything includes @c "wx.h" !)
- A related problem is that for compilers that don't have precompiled
- headers, including a lot of header files slows down compilation
- considerably. For this reason, you will find (in the common
- X and Windows parts of the library) conditional
- compilation that under Unix, includes a minimal set of headers;
- and when using Visual C++, includes @c wx.h. This should help provide
- the optimal compilation for each compiler, although it is
- biased towards the precompiled headers facility available
- in Microsoft C++.
+A related problem is that for compilers that don't have precompiled
+headers, including a lot of header files slows down compilation
+considerably. For this reason, you will find (in the common
+X and Windows parts of the library) conditional
+compilation that under Unix, includes a minimal set of headers;
+and when using Visual C++, includes @c wx.h. This should help provide
+the optimal compilation for each compiler, although it is
+biased towards the precompiled headers facility available
+in Microsoft C++.
- @section page_multiplatform_filehandling File handling
+@section page_multiplatform_filehandling File handling
- When building an application which may be used under different
- environments, one difficulty is coping with documents which may be
- moved to different directories on other machines. Saving a file which
- has pointers to full pathnames is going to be inherently unportable.
+When building an application which may be used under different
+environments, one difficulty is coping with documents which may be
+moved to different directories on other machines. Saving a file which
+has pointers to full pathnames is going to be inherently unportable.
- One approach is to store filenames on their own, with no directory
- information. The application then searches into a list of standard
- paths (platform-specific) through the use of wxStandardPaths.
+One approach is to store filenames on their own, with no directory
+information. The application then searches into a list of standard
+paths (platform-specific) through the use of wxStandardPaths.
- Eventually you may want to use also the wxPathList class.
+Eventually you may want to use also the wxPathList class.
- Nowadays the limitations of DOS 8+3 filenames doesn't apply anymore.
- Most modern operating systems allow at least 255 characters in the filename;
- the exact maximum length, as well as the characters allowed in the filenames,
- are OS-specific so you should try to avoid extremely long (> 255 chars) filenames
- and/or filenames with non-ANSI characters.
+Nowadays the limitations of DOS 8+3 filenames doesn't apply anymore.
+Most modern operating systems allow at least 255 characters in the filename;
+the exact maximum length, as well as the characters allowed in the filenames,
+are OS-specific so you should try to avoid extremely long (> 255 chars) filenames
+and/or filenames with non-ANSI characters.
- Another thing you need to keep in mind is that all Windows operating systems
- are case-insensitive, while Unix operating systems (Linux, Mac, etc) are
- case-sensitive.
+Another thing you need to keep in mind is that all Windows operating systems
+are case-insensitive, while Unix operating systems (Linux, Mac, etc) are
+case-sensitive.
- Also, for text files, different OSes use different End Of Lines (EOL).
- Windows uses CR+LF convention, Linux uses LF only, Mac CR only.
+Also, for text files, different OSes use different End Of Lines (EOL).
+Windows uses CR+LF convention, Linux uses LF only, Mac CR only.
- The wxTextFile, wxTextInputStream, wxTextOutputStream classes help to abstract
- from these differences.
- Of course, there are also 3rd party utilities such as @c dos2unix and @c unix2dos
- which do the EOL conversions.
+The wxTextFile, wxTextInputStream, wxTextOutputStream classes help to abstract
+from these differences.
+Of course, there are also 3rd party utilities such as @c dos2unix and @c unix2dos
+which do the EOL conversions.
- See also the @ref page_func_cat_file section of the reference
- manual for the description of miscellaneous file handling functions.
+See also the @ref page_func_cat_file section of the reference
+manual for the description of miscellaneous file handling functions.
*/
/**
- @page page_introduction Introduction
-
- @li @ref page_introduction_whatis
- @li @ref page_introduction_why
- @li @ref page_introduction_requirements
- @li @ref page_introduction_where
- @li @ref page_introduction_acknowledgements
-
-
- <hr>
-
-
- @section page_introduction_whatis What is wxWidgets?
-
- wxWidgets is a C++ framework providing GUI (Graphical User
- Interface) and other facilities on more than one platform. Version 2 and higher
- currently support all desktop versions of MS Windows, Unix with GTK+ 1.x or 2.x,
- Unix with Motif, Unix with just X11, Unix with DirectFB, Mac OS X, OS/2.
-
- wxWidgets was originally developed at the Artificial Intelligence
- Applications Institute, University of Edinburgh, for internal use,
- and was first made publicly available in 1992.
- Version 2 is a vastly improved version written and maintained by
- Julian Smart, Robert Roebling, Vadim Zeitlin, Vaclav Slavik and many others.
-
- This manual contains a class reference and topic overviews.
- For a selection of wxWidgets tutorials, please see the documentation page
- on the wxWidgets web site: http://www.wxwidgets.org.
-
- Please note that in the following, ``MS Windows" often refers to all
- platforms related to Microsoft Windows, including 32-bit and 64-bit
- variants, unless otherwise stated. All trademarks are acknowledged.
-
-
-
- @section page_introduction_why Why another cross-platform development tool?
-
- wxWidgets was developed to provide a cheap and flexible way to maximize
- investment in GUI application development. While a number of commercial
- class libraries already existed for cross-platform development,
- none met all of the following criteria:
-
- @li low price;
- @li source availability;
- @li simplicity of programming;
- @li support for a wide range of compilers.
-
- Since wxWidgets was started, several other free or almost-free
- GUI frameworks have emerged. However, none has the range of
- features, flexibility, documentation and the well-established
- development team that wxWidgets has.
-
- As open source software, wxWidgets has benefited from comments,
- ideas, bug fixes, enhancements and the sheer enthusiasm of
- users. This gives wxWidgets a certain advantage over its
- commercial competitors (and over free libraries without an
- independent development team), plus a robustness against the
- transience of one individual or company. This openness and
- availability of source code is especially important when the
- future of thousands of lines of application code may depend upon
- the longevity of the underlying class library.
+@page page_introduction Introduction
+
+@li @ref page_introduction_whatis
+@li @ref page_introduction_why
+@li @ref page_introduction_requirements
+@li @ref page_introduction_where
+@li @ref page_introduction_acknowledgements
+
+
+<hr>
+
+
+@section page_introduction_whatis What is wxWidgets?
+
+wxWidgets is a C++ framework providing GUI (Graphical User
+Interface) and other facilities on more than one platform. Version 2 and higher
+currently support all desktop versions of MS Windows, Unix with GTK+ 1.x or 2.x,
+Unix with Motif, Unix with just X11, Unix with DirectFB, Mac OS X, OS/2.
+
+wxWidgets was originally developed at the Artificial Intelligence
+Applications Institute, University of Edinburgh, for internal use,
+and was first made publicly available in 1992.
+Version 2 is a vastly improved version written and maintained by
+Julian Smart, Robert Roebling, Vadim Zeitlin, Vaclav Slavik and many others.
+
+This manual contains a class reference and topic overviews.
+For a selection of wxWidgets tutorials, please see the documentation page
+on the wxWidgets web site: http://www.wxwidgets.org.
+
+Please note that in the following, ``MS Windows" often refers to all
+platforms related to Microsoft Windows, including 32-bit and 64-bit
+variants, unless otherwise stated. All trademarks are acknowledged.
+
+
+
+@section page_introduction_why Why another cross-platform development tool?
+
+wxWidgets was developed to provide a cheap and flexible way to maximize
+investment in GUI application development. While a number of commercial
+class libraries already existed for cross-platform development,
+none met all of the following criteria:
+
+@li low price;
+@li source availability;
+@li simplicity of programming;
+@li support for a wide range of compilers.
+
+Since wxWidgets was started, several other free or almost-free
+GUI frameworks have emerged. However, none has the range of
+features, flexibility, documentation and the well-established
+development team that wxWidgets has.
+
+As open source software, wxWidgets has benefited from comments,
+ideas, bug fixes, enhancements and the sheer enthusiasm of
+users. This gives wxWidgets a certain advantage over its
+commercial competitors (and over free libraries without an
+independent development team), plus a robustness against the
+transience of one individual or company. This openness and
+availability of source code is especially important when the
+future of thousands of lines of application code may depend upon
+the longevity of the underlying class library.
- Version 2 goes much further than previous versions in terms of
- generality and features, allowing applications to be produced
- that are often indistinguishable from those produced using
- single-platform toolkits such as Motif, GTK+ and MFC.
+Version 2 goes much further than previous versions in terms of
+generality and features, allowing applications to be produced
+that are often indistinguishable from those produced using
+single-platform toolkits such as Motif, GTK+ and MFC.
- The importance of using a platform-independent class library
- cannot be overstated, since GUI application development is very
- time-consuming, and sustained popularity of particular GUIs
- cannot be guaranteed. Code can very quickly become obsolete if
- it addresses the wrong platform or audience. wxWidgets helps to
- insulate the programmer from these winds of change. Although
- wxWidgets may not be suitable for every application (such as an
- OLE-intensive program), it provides access to most of the
- functionality a GUI program normally requires, plus many extras
- such as network programming, PostScript output, and HTML
- rendering; and it can of course be extended as needs dictate.
- As a bonus, it provides a far cleaner and easier programming
- interface than the native APIs. Programmers may find it
- worthwhile to use wxWidgets even if they are developing on only
- one platform.
-
- It is impossible to sum up the functionality of wxWidgets in a few paragraphs, but
- here are some of the benefits:
-
- @li Low cost (free, in fact!)
- @li You get the source.
- @li Available on a variety of popular platforms.
- @li Works with almost all popular C++ compilers and Python.
- @li Over 70 example programs.
- @li Over 1000 pages of printable and on-line documentation.
- @li Simple-to-use, object-oriented API.
- @li Flexible event system.
- @li Graphics calls include lines, rounded rectangles, splines, polylines, etc.
- @li Constraint-based and sizer-based layouts.
- @li Print/preview and document/view architectures.
- @li Toolbar, notebook, tree control, advanced list control classes.
- @li PostScript generation under Unix, normal MS Windows printing on the PC.
- @li MDI (Multiple Document Interface) support.
- @li Can be used to create DLLs under Windows, dynamic libraries on Unix.
- @li Common dialogs for file browsing, printing, colour selection, etc.
- @li Under MS Windows, support for creating metafiles and copying them to the clipboard.
- @li An API for invoking help from applications.
- @li Ready-to-use HTML window (supporting a subset of HTML).
- @li Network support via a family of socket and protocol classes.
- @li Support for platform independent image processing.
- @li Built-in support for many file formats (BMP, PNG, JPEG, GIF, XPM, PNM, PCX).
- @li Includes Tex2RTF, to allow you to produce your own documentation
- in Windows Help, HTML and Word RTF formats.
-
-
-
- @section page_introduction_requirements wxWidgets requirements
-
- To make use of wxWidgets, you currently need one of the following setups.
-
- (a) MS-Windows:
-
- @li A 32-bit or 64-bit PC running MS Windows.
- @li A Windows compiler: MS Visual C++ (embedded Visual C++ for wxWinCE
- port), Borland C++, Watcom C++, Cygwin, MinGW, Metrowerks CodeWarrior,
- Digital Mars C++. See @c install.txt for details about compiler
- version supported.
-
- (b) Unix:
-
- @li Almost any C++ compiler, including GNU C++ and many Unix vendors
- compilers such as Sun CC, HP-UX aCC or SGI mipsPro.
- @li Almost any Unix workstation, and one of: GTK+ 2.4 or higher (GTK+ 1.2.10
- may still be supported but wxGTK1 port is not maintained any longer and lacks
- many features of wxGTK2), Motif 1.2 or higher or Lesstif. If using the wxX11
- port, no such widget set is required.
-
- (c) Mac OS/Mac OS X:
-
- @li A PowerPC or Intel Mac running Mac OS X 10.3 or higher
- @li The Apple Developer Tools (eg. GNU C++) or MetroWerks CodeWarrior (not
- actively supported)
-
- Under all platforms it's recommended to have large amounts of free hard disk
- space. The exact amount needed depends on the port, compiler and build
- configurations but to give an example, a debug build of the library may take up
- to 500MB.
-
-
-
- @section page_introduction_where Availability and location of wxWidgets
-
- wxWidgets is available by anonymous FTP and World Wide Web
- from ftp://biolpc22.york.ac.uk/pub and/or http://www.wxwidgets.org.
-
- You can also buy a CD-ROM using the form on the Web site.
-
-
-
- @section page_introduction_acknowledgements Acknowledgements
-
- The following is the list of the core, active developers of wxWidgets which keep
- it running and have provided an invaluable, extensive and high-quality amount of
- changes over the many of years of wxWidgets' life:
-
- @li Julian Smart
- @li Vadim Zeitlin
- @li Robert Roebling
- @li Robin Dunn
- @li Stefan Csomor
- @li Vaclav Slavik
- @li Paul Cornett
- @li Wlodzimierz `ABX' Skiba
- @li Chris Elliott
- @li David Elliott
- @li Kevin Hock
- @li Stefan Neis
- @li Michael Wetherell
-
- We would particularly like to thank the following peoples for their contributions
- to wxWidgets, and the many others who have been involved in the project over the years.
- Apologies for any unintentional omissions from this alphabetic list:
-
- Yiorgos Adamopoulos, Jamshid Afshar, Alejandro Aguilar-Sierra, AIAI,
- Patrick Albert, Karsten Ballueder, Mattia Barbon, Michael Bedward,
- Kai Bendorf, Yura Bidus, Keith Gary Boyce, Chris Breeze, Pete Britton,
- Ian Brown, C. Buckley, Marco Cavallini, Dmitri Chubraev, Robin Corbet, Cecil Coupe,
- Andrew Davison, Gilles Depeyrot, Neil Dudman, Hermann Dunkel, Jos van Eijndhoven,
- Tom Felici, Thomas Fettig, Matthew Flatt, Pasquale Foggia, Josep Fortiana, Todd Fries,
- Dominic Gallagher, Guillermo Rodriguez Garcia, Wolfram Gloger, Norbert Grotz,
- Stefan Gunter, Bill Hale, Patrick Halke, Stefan Hammes, Guillaume Helle,
- Harco de Hilster, Cord Hockemeyer, Markus Holzem, Olaf Klein, Leif Jensen,
- Bart Jourquin, Guilhem Lavaux, Ron Lee, Jan Lessner, Nicholas Liebmann,
- Torsten Liermann, Per Lindqvist, Francesco Montorsi, Thomas Runge, Tatu Männistö,
- Scott Maxwell, Thomas Myers, Oliver Niedung, Ryan Norton, Hernan Otero,
- Ian Perrigo, Timothy Peters, Giordano Pezzoli, Harri Pasanen, Thomaso Paoletti,
- Garrett Potts, Marcel Rasche, Dino Scaringella, Jobst Schmalenbach, Arthur Seaton,
- Paul Shirley, Stein Somers, Petr Smilauer, Neil Smith, Kari Systä, George Tasker,
- Arthur Tetzlaff-Deas, Jonathan Tonberg, Jyrki Tuomi, Janos Vegh, Andrea Venturoli,
- David Webster, Otto Wyss, Xiaokun Zhu, Edward Zimmermann.
-
- Many thanks also to AIAI for being willing to release the original version of
- wxWidgets into the public domain, and to our patient partners.
-
- `Graphplace', the basis for the wxGraphLayout library, is copyright Dr. Jos
- T.J. van Eijndhoven of Eindhoven University of Technology. The code has
- been used in wxGraphLayout (not in wxWidgets anymore) with his permission.
-
- We also acknowledge the author of XFIG, the excellent Unix drawing tool,
- from the source of which we have borrowed some spline drawing code.
- His copyright is included below.
-
- <em>
- XFig2.1 is copyright (c) 1985 by Supoj Sutanthavibul. Permission to
- use, copy, modify, distribute, and sell this software and its
- documentation for any purpose is hereby granted without fee, provided
- that the above copyright notice appear in all copies and that both that
- copyright notice and this permission notice appear in supporting
- documentation, and that the name of M.I.T. not be used in advertising or
- publicity pertaining to distribution of the software without specific,
- written prior permission. M.I.T. makes no representations about the
- suitability of this software for any purpose. It is provided ``as is''
- without express or implied warranty.
- </em>
+The importance of using a platform-independent class library
+cannot be overstated, since GUI application development is very
+time-consuming, and sustained popularity of particular GUIs
+cannot be guaranteed. Code can very quickly become obsolete if
+it addresses the wrong platform or audience. wxWidgets helps to
+insulate the programmer from these winds of change. Although
+wxWidgets may not be suitable for every application (such as an
+OLE-intensive program), it provides access to most of the
+functionality a GUI program normally requires, plus many extras
+such as network programming, PostScript output, and HTML
+rendering; and it can of course be extended as needs dictate.
+As a bonus, it provides a far cleaner and easier programming
+interface than the native APIs. Programmers may find it
+worthwhile to use wxWidgets even if they are developing on only
+one platform.
+
+It is impossible to sum up the functionality of wxWidgets in a few paragraphs, but
+here are some of the benefits:
+
+@li Low cost (free, in fact!)
+@li You get the source.
+@li Available on a variety of popular platforms.
+@li Works with almost all popular C++ compilers and Python.
+@li Over 70 example programs.
+@li Over 1000 pages of printable and on-line documentation.
+@li Simple-to-use, object-oriented API.
+@li Flexible event system.
+@li Graphics calls include lines, rounded rectangles, splines, polylines, etc.
+@li Constraint-based and sizer-based layouts.
+@li Print/preview and document/view architectures.
+@li Toolbar, notebook, tree control, advanced list control classes.
+@li PostScript generation under Unix, normal MS Windows printing on the PC.
+@li MDI (Multiple Document Interface) support.
+@li Can be used to create DLLs under Windows, dynamic libraries on Unix.
+@li Common dialogs for file browsing, printing, colour selection, etc.
+@li Under MS Windows, support for creating metafiles and copying them to the clipboard.
+@li An API for invoking help from applications.
+@li Ready-to-use HTML window (supporting a subset of HTML).
+@li Network support via a family of socket and protocol classes.
+@li Support for platform independent image processing.
+@li Built-in support for many file formats (BMP, PNG, JPEG, GIF, XPM, PNM, PCX).
+@li Includes Tex2RTF, to allow you to produce your own documentation
+ in Windows Help, HTML and Word RTF formats.
+
+
+
+@section page_introduction_requirements wxWidgets requirements
+
+To make use of wxWidgets, you currently need one of the following setups.
+
+(a) MS-Windows:
+
+@li A 32-bit or 64-bit PC running MS Windows.
+@li A Windows compiler: MS Visual C++ (embedded Visual C++ for wxWinCE
+ port), Borland C++, Watcom C++, Cygwin, MinGW, Metrowerks CodeWarrior,
+ Digital Mars C++. See @c install.txt for details about compiler
+ version supported.
+
+(b) Unix:
+
+@li Almost any C++ compiler, including GNU C++ and many Unix vendors
+ compilers such as Sun CC, HP-UX aCC or SGI mipsPro.
+@li Almost any Unix workstation, and one of: GTK+ 2.4 or higher (GTK+ 1.2.10
+ may still be supported but wxGTK1 port is not maintained any longer and lacks
+ many features of wxGTK2), Motif 1.2 or higher or Lesstif. If using the wxX11
+ port, no such widget set is required.
+
+(c) Mac OS/Mac OS X:
+
+@li A PowerPC or Intel Mac running Mac OS X 10.3 or higher
+@li The Apple Developer Tools (eg. GNU C++) or MetroWerks CodeWarrior (not
+ actively supported)
+
+Under all platforms it's recommended to have large amounts of free hard disk
+space. The exact amount needed depends on the port, compiler and build
+configurations but to give an example, a debug build of the library may take up
+to 500MB.
+
+
+
+@section page_introduction_where Availability and location of wxWidgets
+
+wxWidgets is available by anonymous FTP and World Wide Web
+from ftp://biolpc22.york.ac.uk/pub and/or http://www.wxwidgets.org.
+
+You can also buy a CD-ROM using the form on the Web site.
+
+
+
+@section page_introduction_acknowledgements Acknowledgements
+
+The following is the list of the core, active developers of wxWidgets which keep
+it running and have provided an invaluable, extensive and high-quality amount of
+changes over the many of years of wxWidgets' life:
+
+@li Julian Smart
+@li Vadim Zeitlin
+@li Robert Roebling
+@li Robin Dunn
+@li Stefan Csomor
+@li Vaclav Slavik
+@li Paul Cornett
+@li Wlodzimierz `ABX' Skiba
+@li Chris Elliott
+@li David Elliott
+@li Kevin Hock
+@li Stefan Neis
+@li Michael Wetherell
+
+We would particularly like to thank the following peoples for their contributions
+to wxWidgets, and the many others who have been involved in the project over the years.
+Apologies for any unintentional omissions from this alphabetic list:
+
+Yiorgos Adamopoulos, Jamshid Afshar, Alejandro Aguilar-Sierra, AIAI,
+Patrick Albert, Karsten Ballueder, Mattia Barbon, Michael Bedward,
+Kai Bendorf, Yura Bidus, Keith Gary Boyce, Chris Breeze, Pete Britton,
+Ian Brown, C. Buckley, Marco Cavallini, Dmitri Chubraev, Robin Corbet, Cecil Coupe,
+Andrew Davison, Gilles Depeyrot, Neil Dudman, Hermann Dunkel, Jos van Eijndhoven,
+Tom Felici, Thomas Fettig, Matthew Flatt, Pasquale Foggia, Josep Fortiana, Todd Fries,
+Dominic Gallagher, Guillermo Rodriguez Garcia, Wolfram Gloger, Norbert Grotz,
+Stefan Gunter, Bill Hale, Patrick Halke, Stefan Hammes, Guillaume Helle,
+Harco de Hilster, Cord Hockemeyer, Markus Holzem, Olaf Klein, Leif Jensen,
+Bart Jourquin, Guilhem Lavaux, Ron Lee, Jan Lessner, Nicholas Liebmann,
+Torsten Liermann, Per Lindqvist, Francesco Montorsi, Thomas Runge, Tatu Männistö,
+Scott Maxwell, Thomas Myers, Oliver Niedung, Ryan Norton, Hernan Otero,
+Ian Perrigo, Timothy Peters, Giordano Pezzoli, Harri Pasanen, Thomaso Paoletti,
+Garrett Potts, Marcel Rasche, Dino Scaringella, Jobst Schmalenbach, Arthur Seaton,
+Paul Shirley, Stein Somers, Petr Smilauer, Neil Smith, Kari Systä, George Tasker,
+Arthur Tetzlaff-Deas, Jonathan Tonberg, Jyrki Tuomi, Janos Vegh, Andrea Venturoli,
+David Webster, Otto Wyss, Xiaokun Zhu, Edward Zimmermann.
+
+Many thanks also to AIAI for being willing to release the original version of
+wxWidgets into the public domain, and to our patient partners.
+
+`Graphplace', the basis for the wxGraphLayout library, is copyright Dr. Jos
+T.J. van Eijndhoven of Eindhoven University of Technology. The code has
+been used in wxGraphLayout (not in wxWidgets anymore) with his permission.
+
+We also acknowledge the author of XFIG, the excellent Unix drawing tool,
+from the source of which we have borrowed some spline drawing code.
+His copyright is included below.
+
+<em>
+XFig2.1 is copyright (c) 1985 by Supoj Sutanthavibul. Permission to
+use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of M.I.T. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. M.I.T. makes no representations about the
+suitability of this software for any purpose. It is provided ``as is''
+without express or implied warranty.
+</em>
*/
/**
- @mainpage wxWidgets 2.9.0: A portable C++ GUI toolkit
- @author Julian Smart, Robert Roebling, Vadim Zeitlin, Robin Dunn, et al
- @date February, 2008
+@mainpage wxWidgets 2.9.0: A portable C++ GUI toolkit
+@author Julian Smart, Robert Roebling, Vadim Zeitlin, Robin Dunn, et al
+@date February, 2008
- @image html main_wxlogo.png
+@image html main_wxlogo.png
- @section manual_contents Contents
- @li @subpage page_copyright
- @li @subpage page_introduction
- @li @subpage page_multiplatform
- @li @subpage page_utils
- @li @subpage page_samples
- @li @subpage page_strategies
- @li @subpage page_libs
- @li @subpage page_constants
- @li @subpage page_class_cat
- @li @subpage page_func_cat
- @li @subpage page_macro_cat
- @li @subpage page_topics
- @li @subpage page_port
+@section manual_contents Contents
+@li @subpage page_copyright
+@li @subpage page_introduction
+@li @subpage page_multiplatform
+@li @subpage page_utils
+@li @subpage page_samples
+@li @subpage page_strategies
+@li @subpage page_libs
+@li @subpage page_constants
+@li @subpage page_class_cat
+@li @subpage page_func_cat
+@li @subpage page_macro_cat
+@li @subpage page_topics
+@li @subpage page_port
*/
/**
- @page page_port Platform details
+@page page_port Platform details
- wxWidgets defines a common API across platforms, but uses the native graphical
- user interface (GUI) on each platform, so your program will take on the native
- look and feel that users are familiar with. Unfortunately native toolkits and
- hardware do not always support the functionality that the wxWidgets API
- requires. This chapter collects notes about differences among supported platforms
- and ports.
+wxWidgets defines a common API across platforms, but uses the native graphical
+user interface (GUI) on each platform, so your program will take on the native
+look and feel that users are familiar with. Unfortunately native toolkits and
+hardware do not always support the functionality that the wxWidgets API
+requires. This chapter collects notes about differences among supported platforms
+and ports.
- @li @ref page_port_wxgtk
- @li @ref page_port_wxmac
- @li @ref page_port_wxos2
- @li @ref page_port_wxmgl
- @li @ref page_port_wxx11
- @li @ref page_port_wxmsw
- @li @ref page_port_nativedocs
+@li @ref page_port_wxgtk
+@li @ref page_port_wxmac
+@li @ref page_port_wxos2
+@li @ref page_port_wxmgl
+@li @ref page_port_wxx11
+@li @ref page_port_wxmsw
+@li @ref page_port_nativedocs
- <hr>
+<hr>
- @section page_port_wxgtk wxGTK
+@section page_port_wxgtk wxGTK
- @htmlonly
- <img src="gtk_logo.png" alt="GTK logo" title="GTK logo" class="logo">
- @endhtmlonly
+@htmlonly
+<img src="gtk_logo.png" alt="GTK logo" title="GTK logo" class="logo">
+@endhtmlonly
- wxGTK is a port of wxWidgets using the GTK+ library.
- It makes use of GTK+'s native widgets wherever possible and uses
- wxWidgets' generic controls when needed. GTK+ itself has been
- ported to a number of systems, but so far only the original X11
- version is supported. Support for other GTK+ backends is planned,
- such as the new DirectFB backend.
+wxGTK is a port of wxWidgets using the GTK+ library.
+It makes use of GTK+'s native widgets wherever possible and uses
+wxWidgets' generic controls when needed. GTK+ itself has been
+ported to a number of systems, but so far only the original X11
+version is supported. Support for other GTK+ backends is planned,
+such as the new DirectFB backend.
- All work is being done on GTK+ version 2.0 and above. Support for
- GTK+ 1.2 will be deprecated in a later release.
+All work is being done on GTK+ version 2.0 and above. Support for
+GTK+ 1.2 will be deprecated in a later release.
- You will need GTK+ 2.0 or higher which is available from:
+You will need GTK+ 2.0 or higher which is available from:
- http://www.gtk.org
+http://www.gtk.org
- The newer version of GTK+ you use, the more native widgets and
- features will be utilized. We have gone to a great extent to
- allow compiling wxWidgets applications with a latest version of
- GTK+, with the resulting binary working on systems even with a
- much lower version of GTK+. You will have to ensure that the
- application is launched with lazy symbol binding for that.
+The newer version of GTK+ you use, the more native widgets and
+features will be utilized. We have gone to a great extent to
+allow compiling wxWidgets applications with a latest version of
+GTK+, with the resulting binary working on systems even with a
+much lower version of GTK+. You will have to ensure that the
+application is launched with lazy symbol binding for that.
- In order to configure wxWidgets to compile wxGTK you will
- need use the @c --with-gtk argument to the @c configure script.
- This is the default for many systems.
+In order to configure wxWidgets to compile wxGTK you will
+need use the @c --with-gtk argument to the @c configure script.
+This is the default for many systems.
- GTK+ 1.2 can still be used, albeit discouraged. For that you can
- pass @c --with-gtk=1 to the @c configure script.
+GTK+ 1.2 can still be used, albeit discouraged. For that you can
+pass @c --with-gtk=1 to the @c configure script.
- For further information, please see the files in docs/gtk
- in the distribution.
+For further information, please see the files in docs/gtk
+in the distribution.
- @section page_port_wxmac wxMac
+@section page_port_wxmac wxMac
- @htmlonly
- <img src="osxleopard_logo.png" alt="Mac OS X (Leopard) logo"
- title="Mac OS X (Leopard) logo" class="logo">
- @endhtmlonly
+@htmlonly
+<img src="osxleopard_logo.png" alt="Mac OS X (Leopard) logo"
+ title="Mac OS X (Leopard) logo" class="logo">
+@endhtmlonly
- wxMac is a port of wxWidgets for the Macintosh OS platform.
- Currently MacOS 8.6 or higher, MacOS 9.0 or higher and
- MacOS X 10.0 or higher are supported, although most development
- effort goes into MacOS X support. wxMac can be compiled both
- using Apple's developer tools and MetroWerks CodeWarrior in
- different versions. Support for MacOS 8.X and MacOS 9.X is
- only available through CodeWarrior. wxMac uses the Carbon
- API (and optionally the Classic API under MacOS 8.X). You
- will need wxWidgets version 2.3.3 or higher for a stable
- version of wxMac.
+wxMac is a port of wxWidgets for the Macintosh OS platform.
+Currently MacOS 8.6 or higher, MacOS 9.0 or higher and
+MacOS X 10.0 or higher are supported, although most development
+effort goes into MacOS X support. wxMac can be compiled both
+using Apple's developer tools and MetroWerks CodeWarrior in
+different versions. Support for MacOS 8.X and MacOS 9.X is
+only available through CodeWarrior. wxMac uses the Carbon
+API (and optionally the Classic API under MacOS 8.X). You
+will need wxWidgets version 2.3.3 or higher for a stable
+version of wxMac.
- For further information, please see the files in docs/mac
- in the distribution.
+For further information, please see the files in docs/mac
+in the distribution.
- @section page_port_wxmgl wxMGL
+@section page_port_wxmgl wxMGL
- wxMGL is a port of wxWidgets using the MGL library available
- from SciTech as the underlying graphics backend. wxMGL draws
- its widgets using the wxUniversal widget set which is now
- part of wxWidgets. MGL itself runs on a variety of platforms
- including DOS, Linux hardware (similar to the Linux framebuffer)
- and various graphics systems such as Win32, X11 and OS/2.
- Note that currently MGL for Linux runs only on x86-based systems.
+wxMGL is a port of wxWidgets using the MGL library available
+from SciTech as the underlying graphics backend. wxMGL draws
+its widgets using the wxUniversal widget set which is now
+part of wxWidgets. MGL itself runs on a variety of platforms
+including DOS, Linux hardware (similar to the Linux framebuffer)
+and various graphics systems such as Win32, X11 and OS/2.
+Note that currently MGL for Linux runs only on x86-based systems.
- You will need wxWidgets 2.3.3 or higher and MGL 5.0 or higher.
- The latter is available from
+You will need wxWidgets 2.3.3 or higher and MGL 5.0 or higher.
+The latter is available from
- http://www.scitechsoft.com/products/product_download.html
+http://www.scitechsoft.com/products/product_download.html
- In order to configure wxWidgets to compile wxMGL you will
- need to type:
+In order to configure wxWidgets to compile wxMGL you will
+need to type:
- @verbatim configure --with-mgl --with-universal @endverbatim
+@verbatim configure --with-mgl --with-universal @endverbatim
- Under DOS, wxMGL uses a dmake based make system.
+Under DOS, wxMGL uses a dmake based make system.
- For further information, please see the files in docs/mgl
- in the distribution.
+For further information, please see the files in docs/mgl
+in the distribution.
- @section page_port_wxos2 wxOS2
+@section page_port_wxos2 wxOS2
- wxOS2 is a port of wxWidgets for the IBM OS/2 Warp3 and Warp4 platforms.
- This port is currently under construction and in beta phase.
+wxOS2 is a port of wxWidgets for the IBM OS/2 Warp3 and Warp4 platforms.
+This port is currently under construction and in beta phase.
- For more info about OS2 see:
+For more info about OS2 see:
- @section page_port_wxx11 wxX11
+@section page_port_wxx11 wxX11
- @htmlonly
- <img src="x11_logo.png" alt="X.org logo" title="X.org logo" class="logo">
- @endhtmlonly
+@htmlonly
+<img src="x11_logo.png" alt="X.org logo" title="X.org logo" class="logo">
+@endhtmlonly
- wxX11 is a port of wxWidgets using X11 (The X Window System)
- as the underlying graphics backend. wxX11 draws its widgets
- using the wxUniversal widget set which is now part of wxWidgets.
- wxX11 is well-suited for a number of special applications such
- as those running on systems with few resources (PDAs) or for
- applications which need to use a special themed look. You will need
- wxWidgets 2.3.2 or higher.
+wxX11 is a port of wxWidgets using X11 (The X Window System)
+as the underlying graphics backend. wxX11 draws its widgets
+using the wxUniversal widget set which is now part of wxWidgets.
+wxX11 is well-suited for a number of special applications such
+as those running on systems with few resources (PDAs) or for
+applications which need to use a special themed look. You will need
+wxWidgets 2.3.2 or higher.
- In order to configure wxWidgets to compile wxX11 you will
- need to type:
+In order to configure wxWidgets to compile wxX11 you will
+need to type:
- @verbatim configure --with-x11 --with-universal @endverbatim
+@verbatim configure --with-x11 --with-universal @endverbatim
- For further information, please see the files in docs/x11
- in the distribution. There is also a page on the use of
- wxWidgets for embedded applications on the wxWidgets web site.
+For further information, please see the files in docs/x11
+in the distribution. There is also a page on the use of
+wxWidgets for embedded applications on the wxWidgets web site.
- @section page_port_wxmsw wxMSW
+@section page_port_wxmsw wxMSW
- @htmlonly
- <img src="win_logo.png" alt="Windows logo" title="Windows logo" class="logo">
- @endhtmlonly
+@htmlonly
+<img src="win_logo.png" alt="Windows logo" title="Windows logo" class="logo">
+@endhtmlonly
- wxMSW is a port of wxWidgets for the Windows platforms
- including Windows 95, 98, ME, 2000, NT, XP in ANSI and
- Unicode mode (for Windows 95 through the MSLU extension
- library). wxMSW ensures native look and feel for XP
- as well when using wxWidgets version 2.3.3 or higher.
- wxMSW can be compile with a great variety of compilers
- including MS VC++, Borland 5.5, MinGW32, Cygwin and
- Watcom as well as cross-compilation with a Linux hosted
- MinGW32 tool chain.
+wxMSW is a port of wxWidgets for the Windows platforms
+including Windows 95, 98, ME, 2000, NT, XP in ANSI and
+Unicode mode (for Windows 95 through the MSLU extension
+library). wxMSW ensures native look and feel for XP
+as well when using wxWidgets version 2.3.3 or higher.
+wxMSW can be compile with a great variety of compilers
+including MS VC++, Borland 5.5, MinGW32, Cygwin and
+Watcom as well as cross-compilation with a Linux hosted
+MinGW32 tool chain.
- For further information, please see the files in docs/msw
- in the distribution.
+For further information, please see the files in docs/msw
+in the distribution.
- @subsection page_port_wxmsw_themedborders Themed borders on Windows
+@subsection page_port_wxmsw_themedborders Themed borders on Windows
- Starting with wxWidgets 2.8.5, you can specify the wxBORDER_THEME style to have wxWidgets
- use a themed border. Using the default XP theme, this is a thin 1-pixel blue border,
- with an extra 1-pixel border in the window client background colour (usually white) to
- separate the client area's scrollbars from the border.
+Starting with wxWidgets 2.8.5, you can specify the wxBORDER_THEME style to have wxWidgets
+use a themed border. Using the default XP theme, this is a thin 1-pixel blue border,
+with an extra 1-pixel border in the window client background colour (usually white) to
+separate the client area's scrollbars from the border.
- If you don't specify a border style for a wxTextCtrl in rich edit mode, wxWidgets now gives
- the control themed borders automatically, where previously they would take the Windows 95-style
- sunken border. Other native controls such as wxTextCtrl in non-rich edit mode, and wxComboBox,
- already paint themed borders where appropriate. To use themed borders on other windows, such
- as wxPanel, pass the wxBORDER_THEME style, or (apart from wxPanel) pass no border style.
+If you don't specify a border style for a wxTextCtrl in rich edit mode, wxWidgets now gives
+the control themed borders automatically, where previously they would take the Windows 95-style
+sunken border. Other native controls such as wxTextCtrl in non-rich edit mode, and wxComboBox,
+already paint themed borders where appropriate. To use themed borders on other windows, such
+as wxPanel, pass the wxBORDER_THEME style, or (apart from wxPanel) pass no border style.
- In general, specifying wxBORDER_THEME will cause a border of some kind to be used, chosen by the platform
- and control class. To leave the border decision entirely to wxWidgets, pass wxBORDER_DEFAULT.
- This is not to be confused with specifying wxBORDER_NONE, which says that there should
- definitely be @e no border.
+In general, specifying wxBORDER_THEME will cause a border of some kind to be used, chosen by the platform
+and control class. To leave the border decision entirely to wxWidgets, pass wxBORDER_DEFAULT.
+This is not to be confused with specifying wxBORDER_NONE, which says that there should
+definitely be @e no border.
- @subsubsection page_port_wxmsw_themedborders_details More detail on border implementation
+@subsubsection page_port_wxmsw_themedborders_details More detail on border implementation
- The way that wxMSW decides whether to apply a themed border is as follows.
- The theming code calls wxWindow::GetBorder() to obtain a border. If no border style has been
- passed to the window constructor, GetBorder() calls GetDefaultBorder() for this window.
- If wxBORDER_THEME was passed to the window constructor, GetBorder() calls GetDefaultBorderForControl().
+The way that wxMSW decides whether to apply a themed border is as follows.
+The theming code calls wxWindow::GetBorder() to obtain a border. If no border style has been
+passed to the window constructor, GetBorder() calls GetDefaultBorder() for this window.
+If wxBORDER_THEME was passed to the window constructor, GetBorder() calls GetDefaultBorderForControl().
- The implementation of wxWindow::GetDefaultBorder() on wxMSW calls wxWindow::CanApplyThemeBorder()
- which is a virtual function that tells wxWidgets whether a control can have a theme
- applied explicitly (some native controls already paint a theme in which case we should not
- apply it ourselves). Note that wxPanel is an exception to this rule because in many cases
- we wish to create a window with no border (for example, notebook pages). So wxPanel
- overrides GetDefaultBorder() in order to call the generic wxWindowBase::GetDefaultBorder(),
- returning wxBORDER_NONE.
+The implementation of wxWindow::GetDefaultBorder() on wxMSW calls wxWindow::CanApplyThemeBorder()
+which is a virtual function that tells wxWidgets whether a control can have a theme
+applied explicitly (some native controls already paint a theme in which case we should not
+apply it ourselves). Note that wxPanel is an exception to this rule because in many cases
+we wish to create a window with no border (for example, notebook pages). So wxPanel
+overrides GetDefaultBorder() in order to call the generic wxWindowBase::GetDefaultBorder(),
+returning wxBORDER_NONE.
- @subsection page_port_wxmsw_wince wxWinCE
+@subsection page_port_wxmsw_wince wxWinCE
- wxWinCE is the name given to wxMSW when compiled on Windows CE devices;
- most of wxMSW is common to Win32 and Windows CE but there are
- some simplifications, enhancements, and differences in
- behaviour.
+wxWinCE is the name given to wxMSW when compiled on Windows CE devices;
+most of wxMSW is common to Win32 and Windows CE but there are
+some simplifications, enhancements, and differences in
+behaviour.
- For building instructions, see docs/msw/wince in the
- distribution, also the section about Visual Studio 2005 project
- files below. The rest of this section documents issues you
- need to be aware of when programming for Windows CE devices.
+For building instructions, see docs/msw/wince in the
+distribution, also the section about Visual Studio 2005 project
+files below. The rest of this section documents issues you
+need to be aware of when programming for Windows CE devices.
- @subsubsection page_port_wxmsw_wince_ General issues for wxWinCE programming
+@subsubsection page_port_wxmsw_wince_ General issues for wxWinCE programming
- Mobile applications generally have fewer features and
- simpler user interfaces. Simply omit whole sizers, static
- lines and controls in your dialogs, and use comboboxes instead
- of listboxes where appropriate. You also need to reduce
- the amount of spacing used by sizers, for which you can
- use a macro such as this:
+Mobile applications generally have fewer features and
+simpler user interfaces. Simply omit whole sizers, static
+lines and controls in your dialogs, and use comboboxes instead
+of listboxes where appropriate. You also need to reduce
+the amount of spacing used by sizers, for which you can
+use a macro such as this:
- @verbatim
- #if defined(__WXWINCE__)
- #define wxLARGESMALL(large,small) small
- #else
- #define wxLARGESMALL(large,small) large
- #endif
+@verbatim
+#if defined(__WXWINCE__)
+ #define wxLARGESMALL(large,small) small
+#else
+ #define wxLARGESMALL(large,small) large
+#endif
- // Usage
- topsizer->Add( CreateTextSizer( message ), 0, wxALL, wxLARGESMALL(10,0) );
- @endverbatim
+// Usage
+topsizer->Add( CreateTextSizer( message ), 0, wxALL, wxLARGESMALL(10,0) );
+@endverbatim
- There is only ever one instance of a Windows CE application running,
- and wxWidgets will take care of showing the current instance and
- shutting down the second instance if necessary.
+There is only ever one instance of a Windows CE application running,
+and wxWidgets will take care of showing the current instance and
+shutting down the second instance if necessary.
- You can test the return value of wxSystemSettings::GetScreenType()
- for a qualitative assessment of what kind of display is available,
- or use wxGetDisplaySize() if you need more information.
+You can test the return value of wxSystemSettings::GetScreenType()
+for a qualitative assessment of what kind of display is available,
+or use wxGetDisplaySize() if you need more information.
- You can also use wxGetOsVersion to test for a version of Windows CE at
- run-time (see the next section). However, because different builds
- are currently required to target different kinds of device, these
- values are hard-wired according to the build, and you cannot
- dynamically adapt the same executable for different major Windows CE
- platforms. This would require a different approach to the way
- wxWidgets adapts its behaviour (such as for menubars) to suit the
- style of device.
-
- See the "Life!" example (demos/life) for an example of
- an application that has been tailored for PocketPC and Smartphone use.
-
- @note don't forget to have this line in your .rc file, as for
- desktop Windows applications:
-
- @verbatim #include "wx/msw/wx.rc" @endverbatim
-
- @subsubsection page_port_wxmsw_wince_sdk Testing for WinCE SDKs
-
- Use these preprocessor symbols to test for the different types of device or SDK:
-
- @li @b __SMARTPHONE__ Generic mobile devices with phone buttons and a small display
- @li @b __PDA__ Generic mobile devices with no phone
- @li @b __HANDHELDPC__ Generic mobile device with a keyboard
- @li @b __WXWINCE__ Microsoft-powered Windows CE devices, whether PocketPC, Smartphone or Standard SDK
- @li @b WIN32_PLATFORM_WFSP Microsoft-powered smartphone
- @li @b __POCKETPC__ Microsoft-powered PocketPC devices with touch-screen
- @li @b __WINCE_STANDARDSDK__ Microsoft-powered Windows CE devices, for generic Windows CE applications
- @li @b __WINCE_NET__ Microsoft-powered Windows CE .NET devices (_WIN32_WCE is 400 or greater)
-
- wxGetOsVersion will return these values:
-
- @li @b wxWINDOWS_POCKETPC The application is running under PocketPC.
- @li @b wxWINDOWS_SMARTPHONE The application is running under Smartphone.
- @li @b wxWINDOWS_CE The application is running under Windows CE (built with the Standard SDK).
-
-
- @subsubsection page_port_wxmsw_wince_sizing Window sizing in wxWinCE
-
- Top level windows (dialogs, frames) are created always full-screen. Fit() of sizers will not rescale top
- level windows but instead will scale window content.
-
- If the screen orientation changes, the windows will automatically be resized
- so no further action needs to be taken (unless you want to change the layout
- according to the orientation, which you could detect in idle time, for example).
- When input panel (SIP) is shown, top level windows (frames and dialogs) resize
- accordingly (see wxTopLevelWindow::HandleSettingChange).
-
- @subsubsection page_port_wxmsw_wince_toplevel Closing top-level windows in wxWinCE
-
- You won't get a wxCloseEvent when the user clicks on the X in the titlebar
- on Smartphone and PocketPC; the window is simply hidden instead. However the system may send the
- event to force the application to close down.
-
- @subsubsection page_port_wxmsw_wince_hibernation Hibernation in wxWinCE
-
- Smartphone and PocketPC will send a wxEVT_HIBERNATE to the application object in low
- memory conditions. Your application should release memory and close dialogs,
- and wake up again when the next wxEVT_ACTIVATE or wxEVT_ACTIVATE_APP message is received.
- (wxEVT_ACTIVATE_APP is generated whenever a wxEVT_ACTIVATE event is received
- in Smartphone and PocketPC, since these platforms do not support WM_ACTIVATEAPP.)
-
- @subsubsection page_port_wxmsw_wince_hwbutt Hardware buttons in wxWinCE
-
- Special hardware buttons are sent to a window via the wxEVT_HOTKEY event
- under Smartphone and PocketPC. You should first register each required button with
- wxWindow::RegisterHotKey, and unregister the button when you're done with it. For example:
-
- @verbatim
- win->RegisterHotKey(0, wxMOD_WIN, WXK_SPECIAL1);
- win->UnregisterHotKey(0);
- @endverbatim
-
- You may have to register the buttons in a wxEVT_ACTIVATE event handler
- since other applications will grab the buttons.
-
- There is currently no method of finding out the names of the special
- buttons or how many there are.
+You can also use wxGetOsVersion to test for a version of Windows CE at
+run-time (see the next section). However, because different builds
+are currently required to target different kinds of device, these
+values are hard-wired according to the build, and you cannot
+dynamically adapt the same executable for different major Windows CE
+platforms. This would require a different approach to the way
+wxWidgets adapts its behaviour (such as for menubars) to suit the
+style of device.
+
+See the "Life!" example (demos/life) for an example of
+an application that has been tailored for PocketPC and Smartphone use.
+
+@note don't forget to have this line in your .rc file, as for
+ desktop Windows applications:
+
+@verbatim #include "wx/msw/wx.rc" @endverbatim
+
+@subsubsection page_port_wxmsw_wince_sdk Testing for WinCE SDKs
+
+Use these preprocessor symbols to test for the different types of device or SDK:
+
+@li @b __SMARTPHONE__ Generic mobile devices with phone buttons and a small display
+@li @b __PDA__ Generic mobile devices with no phone
+@li @b __HANDHELDPC__ Generic mobile device with a keyboard
+@li @b __WXWINCE__ Microsoft-powered Windows CE devices, whether PocketPC, Smartphone or Standard SDK
+@li @b WIN32_PLATFORM_WFSP Microsoft-powered smartphone
+@li @b __POCKETPC__ Microsoft-powered PocketPC devices with touch-screen
+@li @b __WINCE_STANDARDSDK__ Microsoft-powered Windows CE devices, for generic Windows CE applications
+@li @b __WINCE_NET__ Microsoft-powered Windows CE .NET devices (_WIN32_WCE is 400 or greater)
+
+wxGetOsVersion will return these values:
+
+@li @b wxWINDOWS_POCKETPC The application is running under PocketPC.
+@li @b wxWINDOWS_SMARTPHONE The application is running under Smartphone.
+@li @b wxWINDOWS_CE The application is running under Windows CE (built with the Standard SDK).
+
+
+@subsubsection page_port_wxmsw_wince_sizing Window sizing in wxWinCE
+
+Top level windows (dialogs, frames) are created always full-screen. Fit() of sizers will not rescale top
+level windows but instead will scale window content.
+
+If the screen orientation changes, the windows will automatically be resized
+so no further action needs to be taken (unless you want to change the layout
+according to the orientation, which you could detect in idle time, for example).
+When input panel (SIP) is shown, top level windows (frames and dialogs) resize
+accordingly (see wxTopLevelWindow::HandleSettingChange).
+
+@subsubsection page_port_wxmsw_wince_toplevel Closing top-level windows in wxWinCE
+
+You won't get a wxCloseEvent when the user clicks on the X in the titlebar
+on Smartphone and PocketPC; the window is simply hidden instead. However the system may send the
+event to force the application to close down.
+
+@subsubsection page_port_wxmsw_wince_hibernation Hibernation in wxWinCE
+
+Smartphone and PocketPC will send a wxEVT_HIBERNATE to the application object in low
+memory conditions. Your application should release memory and close dialogs,
+and wake up again when the next wxEVT_ACTIVATE or wxEVT_ACTIVATE_APP message is received.
+(wxEVT_ACTIVATE_APP is generated whenever a wxEVT_ACTIVATE event is received
+in Smartphone and PocketPC, since these platforms do not support WM_ACTIVATEAPP.)
+
+@subsubsection page_port_wxmsw_wince_hwbutt Hardware buttons in wxWinCE
+
+Special hardware buttons are sent to a window via the wxEVT_HOTKEY event
+under Smartphone and PocketPC. You should first register each required button with
+wxWindow::RegisterHotKey, and unregister the button when you're done with it. For example:
+
+@verbatim
+win->RegisterHotKey(0, wxMOD_WIN, WXK_SPECIAL1);
+win->UnregisterHotKey(0);
+@endverbatim
+
+You may have to register the buttons in a wxEVT_ACTIVATE event handler
+since other applications will grab the buttons.
+
+There is currently no method of finding out the names of the special
+buttons or how many there are.
- @subsubsection page_port_wxmsw_wince_dialogs Dialogs in wxWinCE
+@subsubsection page_port_wxmsw_wince_dialogs Dialogs in wxWinCE
- PocketPC dialogs have an OK button on the caption, and so you should generally
- not repeat an OK button on the dialog. You can add a Cancel button if necessary, but some dialogs
- simply don't offer you the choice (the guidelines recommend you offer an Undo facility
- to make up for it). When the user clicks on the OK button, your dialog will receive
- a wxID_OK event by default. If you wish to change this, call wxDialog::SetAffirmativeId
- with the required identifier to be used. Or, override wxDialog::DoOK (return @false to
- have wxWidgets simply call Close to dismiss the dialog).
+PocketPC dialogs have an OK button on the caption, and so you should generally
+not repeat an OK button on the dialog. You can add a Cancel button if necessary, but some dialogs
+simply don't offer you the choice (the guidelines recommend you offer an Undo facility
+to make up for it). When the user clicks on the OK button, your dialog will receive
+a wxID_OK event by default. If you wish to change this, call wxDialog::SetAffirmativeId
+with the required identifier to be used. Or, override wxDialog::DoOK (return @false to
+have wxWidgets simply call Close to dismiss the dialog).
- Smartphone dialogs do @e not have an OK button on the caption, and are closed
- using one of the two menu buttons. You need to assign these using wxTopLevelWindow::SetLeftMenu
- and wxTopLevelWindow::SetRightMenu, for example:
+Smartphone dialogs do @e not have an OK button on the caption, and are closed
+using one of the two menu buttons. You need to assign these using wxTopLevelWindow::SetLeftMenu
+and wxTopLevelWindow::SetRightMenu, for example:
- @verbatim
- #ifdef __SMARTPHONE__
- SetLeftMenu(wxID_OK);
- SetRightMenu(wxID_CANCEL, _("Cancel"));
- #elif defined(__POCKETPC__)
- // No OK/Cancel buttons on PocketPC, OK on caption will close
- #else
- topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxEXPAND | wxALL, 10 );
- #endif
- @endverbatim
+@verbatim
+#ifdef __SMARTPHONE__
+ SetLeftMenu(wxID_OK);
+ SetRightMenu(wxID_CANCEL, _("Cancel"));
+#elif defined(__POCKETPC__)
+ // No OK/Cancel buttons on PocketPC, OK on caption will close
+#else
+ topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxEXPAND | wxALL, 10 );
+#endif
+@endverbatim
- For implementing property sheets (flat tabs), use a wxNotebook with wxNB_FLAT|wxNB_BOTTOM
- and have the notebook left, top and right sides overlap the dialog by about 3 pixels
- to eliminate spurious borders. You can do this by using a negative spacing in your
- sizer Add() call. The cross-platform property sheet dialog wxPropertySheetDialog is
- provided, to show settings in the correct style on PocketPC and on other platforms.
+For implementing property sheets (flat tabs), use a wxNotebook with wxNB_FLAT|wxNB_BOTTOM
+and have the notebook left, top and right sides overlap the dialog by about 3 pixels
+to eliminate spurious borders. You can do this by using a negative spacing in your
+sizer Add() call. The cross-platform property sheet dialog wxPropertySheetDialog is
+provided, to show settings in the correct style on PocketPC and on other platforms.
- Notifications (bubble HTML text with optional buttons and links) will also be
- implemented in the future for PocketPC.
+Notifications (bubble HTML text with optional buttons and links) will also be
+implemented in the future for PocketPC.
- Modeless dialogs probably don't make sense for PocketPC and Smartphone, since
- frames and dialogs are normally full-screen, and a modeless dialog is normally
- intended to co-exist with the main application frame.
+Modeless dialogs probably don't make sense for PocketPC and Smartphone, since
+frames and dialogs are normally full-screen, and a modeless dialog is normally
+intended to co-exist with the main application frame.
- @subsubsection page_port_wxmsw_wince_ppc Menubars and toolbars in PocketPC
+@subsubsection page_port_wxmsw_wince_ppc Menubars and toolbars in PocketPC
- On PocketPC, a frame must always have a menubar, even if it's empty.
- An empty menubar/toolbar is automatically provided for dialogs, to hide
- any existing menubar for the duration of the dialog.
-
- Menubars and toolbars are implemented using a combined control,
- but you can use essentially the usual wxWidgets API; wxWidgets will combine the menubar
- and toolbar. However, there are some restrictions:
-
- @li You must create the frame's primary toolbar with wxFrame::CreateToolBar,
- because this uses the special wxToolMenuBar class (derived from wxToolBar)
- to implement the combined toolbar and menubar. Otherwise, you can create and manage toolbars
- using the wxToolBar class as usual, for example to implement an optional
- formatting toolbar above the menubar as Pocket Word does. But don't assign
- a wxToolBar to a frame using SetToolBar - you should always use CreateToolBar
- for the main frame toolbar.
- @li Deleting and adding tools to wxToolMenuBar after Realize is called is not supported.
- @li For speed, colours are not remapped to the system colours as they are
- in wxMSW. Provide the tool bitmaps either with the correct system button background,
- or with transparency (for example, using XPMs).
- @li Adding controls to wxToolMenuBar is not supported. However, wxToolBar supports
- controls.
-
- Unlike in all other ports, a wxDialog has a wxToolBar, automatically created
- for you. You may either leave it blank, or access it with wxDialog::GetToolBar
- and add buttons, then calling wxToolBar::Realize. You cannot set or recreate
- the toolbar.
-
- @subsubsection page_port_wxmsw_wince_smart Menubars and toolbars in Smartphone
-
- On Smartphone, there are only two menu buttons, so a menubar is simulated
- using a nested menu on the right menu button. Any toolbars are simply ignored on
- Smartphone.
-
- @subsubsection page_port_wxmsw_wince_closing Closing windows in wxWinCE
-
- The guidelines state that applications should not have a Quit menu item,
- since the user should not have to know whether an application is in memory
- or not. The close button on a window does not call the window's
- close handler; it simply hides the window. However, the guidelines say that
- the Ctrl+Q accelerator can be used to quit the application, so wxWidgets
- defines this accelerator by default and if your application handles
- wxID_EXIT, it will do the right thing.
-
- @subsubsection page_port_wxmsw_wince_ctx Context menus in wxWinCE
-
- To enable context menus in PocketPC, you currently need to call wxWindow::EnableContextMenu,
- a wxWinCE-only function. Otherwise the context menu event (wxContextMenuEvent) will
- never be sent. This API is subject to change.
-
- Context menus are not supported in Smartphone.
-
- @subsubsection page_port_wxmsw_wince_ctrl Control differences on wxWinCE
-
- These controls and styles are specific to wxWinCE:
-
- @li wxTextCtrl The wxTE_CAPITALIZE style causes a CAPEDIT control to
- be created, which capitalizes the first letter.
-
- These controls are missing from wxWinCE:
-
- @li MDI classes MDI is not supported under Windows CE.
- @li wxMiniFrame Not supported under Windows CE.
-
- Tooltips are not currently supported for controls, since on PocketPC controls with
- tooltips are distinct controls, and it will be hard to add dynamic
- tooltip support.
-
- Control borders on PocketPC and Smartphone should normally be specified with
- wxBORDER_SIMPLE instead of wxBORDER_SUNKEN. Controls will usually adapt
- appropriately by virtue of their GetDefaultBorder() function, but if you
- wish to specify a style explicitly you can use wxDEFAULT_CONTROL_BORDER
- which will give a simple border on PocketPC and Smartphone, and the sunken border on
- other platforms.
-
- @subsubsection page_port_wxmsw_wince_help Online help in wxWinCE
-
- You can use the help controller wxWinceHelpController which controls
- simple @c .htm files, usually installed in the Windows directory.
- See the Windows CE reference for how to format the HTML files.
-
- @subsubsection page_port_wxmsw_wince_install Installing your PocketPC and Smartphone applications
-
- To install your application, you need to build a CAB file using
- the parameters defined in a special .inf file. The CabWiz program
- in your SDK will compile the CAB file from the .inf file and
- files that it specifies.
-
- For delivery, you can simply ask the user to copy the CAB file to the
- device and execute the CAB file using File Explorer. Or, you can
- write a program for the desktop PC that will find the ActiveSync
- Application Manager and install the CAB file on the device,
- which is obviously much easier for the user.
-
- Here are some links that may help.
-
- @li A setup builder that takes CABs and builds a setup program is at
- http://www.eskimo.com/~scottlu/win/index.html.
- @li Sample installation files can be found in
- <tt>Windows CE Tools/wce420/POCKET PC 2003/Samples/Win32/AppInst</tt>.
- @li An installer generator using wxPython can be found at
- http://ppcquicksoft.iespana.es/ppcquicksoft/myinstall.html.
- @li Miscellaneous Windows CE resources can be found at
- http://www.orbworks.com/pcce/resources.html.
- @li Installer creation instructions with a setup.exe for installing to PPC can be found at
- http://www.pocketpcdn.com/articles/creatingsetup.html.
- @li Microsoft instructions are at
- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnce30/html/appinstall30.asp?frame=true
- @li Troubleshooting WinCE application installations:
- http://support.microsoft.com/default.aspx?scid=KB;en-us;q181007
-
- You may also check out <tt>demos/life/setup/wince</tt> which contains
- scripts to create a PocketPC installation for ARM-based
- devices. In particular, @c build.bat builds the distribution and
- copies it to a directory called @c Deliver.
-
- @subsubsection page_port_wxmsw_wince_filedlg wxFileDialog in PocketPC
-
- Allowing the user to access files on memory cards, or on arbitrary
- parts of the filesystem, is a pain; the standard file dialog only
- shows folders under My Documents or folders on memory cards
- (not the system or card root directory, for example). This is
- a known problem for PocketPC developers.
-
- If you need a file dialog that allows access to all folders,
- you can use wxGenericFileDialog instead. You will need to include
- @c wx/generic/filedlgg.h.
-
- @subsubsection page_port_wxmsw_wince_evc Embedded Visual C++ Issues
-
- <b>Run-time type information</b>
-
- If you wish to use runtime type information (RTTI) with eVC++ 4, you need to download
- an extra library, @c ccrtrtti.lib, and link with it. At the time of
- writing you can get it from here:
-
- @verbatim
- http://support.microsoft.com/kb/830482/en-us
- @endverbatim
-
- Otherwise you will get linker errors similar to this:
-
- @verbatim
- wxwince26d.lib(control.obj) : error LNK2001: unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)
- @endverbatim
-
- <b>Windows Mobile 5.0 emulator</b>
-
- Note that there is no separate emulator configuration for Windows Mobile 5.0: the
- emulator runs the ARM code directly.
-
- <b>Visual Studio 2005 project files</b>
-
- Unfortunately, Visual Studio 2005, required to build Windows Mobile 5.0 applications,
- doesn't do a perfect job of converting the project files from eVC++ format.
-
- When you have converted the wxWidgets workspace, edit the configuration properties
- for each configuration and in the Librarian, add a relative path ..\\..\\lib to
- each library path. For example:
- <tt>..\\$(PlatformName)\\$(ConfigurationName)\\wx_mono.lib</tt>.
-
- Then, for a sample you want to compile, edit the configuration properties
- and make sure
- <tt>..\\..\\lib\\$(PlatformName)\\$(ConfigurationName)</tt>
- is in the Linker/General/Additional Library Directories property.
- Also change the Linker/Input/Additional Dependencies property to something like
- <tt>coredll.lib wx_mono.lib wx_wxjpeg.lib wx_wxpng.lib wx_wxzlib.lib wx_wxexpat.lib
- commctrl.lib winsock.lib wininet.lib</tt>
- (since the library names in the wxWidgets workspace were changed by VS 2005).
-
- Alternately, you could could edit all the names to be identical to the original eVC++
- names, but this will probably be more fiddly.
-
- @subsubsection page_port_wxmsw_wince_issues Remaining issues
-
- These are some of the remaining problems to be sorted out, and features
- to be supported.
-
- @li <b>Windows Mobile 5 issues.</b> It is not possible to get the HMENU for
- the command bar on Mobile 5, so the menubar functions need to be rewritten
- to get the individual menus without use of a menubar handle. Also the
- new Mobile 5 convention of using only two menus (and no bitmap buttons) needs to be
- considered.
- @li <b>Sizer speed.</b> Particularly for dialogs containing notebooks,
- layout seems slow. Some analysis is required.
- @li <b>Notification boxes.</b> The balloon-like notification messages, and their
- icons, should be implemented. This will be quite straightforward.
- @li <b>SIP size.</b> We need to be able to get the area taken up by the SIP (input panel),
- and the remaining area, by calling SHSipInfo. We also may need to be able to show and hide
- the SIP programmatically, with SHSipPreference. See also the <em>Input Dialogs</em> topic in
- the <em>Programming Windows CE</em> guide for more on this, and how to have dialogs
- show the SIP automatically using the WC_SIPREF control.
- @li <b>wxStaticBitmap.</b> The About box in the "Life!" demo shows a bitmap that is
- the correct size on the emulator, but too small on a VGA Pocket Loox device.
- @li <b>wxStaticLine.</b> Lines don't show up, and the documentation suggests that
- missing styles are implemented with WM_PAINT.
- @li <b>HTML control.</b> PocketPC has its own HTML control which can be used for showing
- local pages or navigating the web. We should create a version of wxHtmlWindow that uses this
- control, or have a separately-named control (wxHtmlCtrl), with a syntax as close as possible
- to wxHtmlWindow.
- @li <b>Tooltip control.</b> PocketPC uses special TTBUTTON and TTSTATIC controls for adding
- tooltips, with the tooltip separated from the label with a double tilde. We need to support
- this using SetToolTip.(Unfortunately it does not seem possible to dynamically remove the tooltip,
- so an extra style may be required.)
- @li <b>Focus.</b> In the wxPropertySheetDialog demo on Smartphone, it's not possible to navigate
- between controls. The focus handling in wxWidgets needs investigation. See in particular
- src/common/containr.cpp, and note that the default OnActivate handler in src/msw/toplevel.cpp
- sets the focus to the first child of the dialog.
- @li <b>OK button.</b> We should allow the OK button on a dialog to be optional, perhaps
- by using wxCLOSE_BOX to indicate when the OK button should be displayed.
- @li <b>Dynamic adaptation.</b> We should probably be using run-time tests more
- than preprocessor tests, so that the same WinCE application can run on different
- versions of the operating system.
- @li <b>Modeless dialogs.</b> When a modeless dialog is hidden with the OK button, it doesn't restore the
- frame's menubar. See for example the find dialog in the dialogs sample. However, the menubar is restored
- if pressing Cancel (the window is closed). This reflects the fact that modeless dialogs are
- not very useful on Windows CE; however, we could perhaps destroy/restore a modeless dialog's menubar
- on deactivation and activation.
- @li <b>Home screen plugins.</b> Figure out how to make home screen plugins for use with wxWidgets
- applications (see http://www.codeproject.com/ce/CTodayWindow.asp for inspiration).
- Although we can't use wxWidgets to create the plugin (too large), we could perhaps write
- a generic plugin that takes registry information from a given application, with
- options to display information in a particular way using icons and text from
- a specified location.
- @li <b>Further abstraction.</b> We should be able to abstract away more of the differences
- between desktop and mobile applications, in particular for sizer layout.
- @li <b>Dialog captions.</b> The blue, bold captions on dialogs - with optional help button -
- should be catered for, either by hard-wiring the capability into all dialogs and panels,
- or by providing a standard component and sizer.
-
-
- @section page_port_nativedocs Documentation for the native toolkits
-
- It's sometimes useful to interface directly with the underlying toolkit
- used by wxWidgets to e.g. use toolkit-specific features.
- In such case (or when you want to e.g. write a port-specific patch) it can be
- necessary to use the underlying toolkit API directly:
-
- @li wxMSW port uses win32 API: see MSDN docs at http://msdn2.microsoft.com/en-us/library/ms649779.aspx
- @li wxGTK port uses GTK+: see GTK+ 2.x docs at http://developer.gnome.org/doc/API/2.0/gtk/index.html
+On PocketPC, a frame must always have a menubar, even if it's empty.
+An empty menubar/toolbar is automatically provided for dialogs, to hide
+any existing menubar for the duration of the dialog.
+
+Menubars and toolbars are implemented using a combined control,
+but you can use essentially the usual wxWidgets API; wxWidgets will combine the menubar
+and toolbar. However, there are some restrictions:
+
+@li You must create the frame's primary toolbar with wxFrame::CreateToolBar,
+because this uses the special wxToolMenuBar class (derived from wxToolBar)
+to implement the combined toolbar and menubar. Otherwise, you can create and manage toolbars
+using the wxToolBar class as usual, for example to implement an optional
+formatting toolbar above the menubar as Pocket Word does. But don't assign
+a wxToolBar to a frame using SetToolBar - you should always use CreateToolBar
+for the main frame toolbar.
+@li Deleting and adding tools to wxToolMenuBar after Realize is called is not supported.
+@li For speed, colours are not remapped to the system colours as they are
+in wxMSW. Provide the tool bitmaps either with the correct system button background,
+or with transparency (for example, using XPMs).
+@li Adding controls to wxToolMenuBar is not supported. However, wxToolBar supports
+controls.
+
+Unlike in all other ports, a wxDialog has a wxToolBar, automatically created
+for you. You may either leave it blank, or access it with wxDialog::GetToolBar
+and add buttons, then calling wxToolBar::Realize. You cannot set or recreate
+the toolbar.
+
+@subsubsection page_port_wxmsw_wince_smart Menubars and toolbars in Smartphone
+
+On Smartphone, there are only two menu buttons, so a menubar is simulated
+using a nested menu on the right menu button. Any toolbars are simply ignored on
+Smartphone.
+
+@subsubsection page_port_wxmsw_wince_closing Closing windows in wxWinCE
+
+The guidelines state that applications should not have a Quit menu item,
+since the user should not have to know whether an application is in memory
+or not. The close button on a window does not call the window's
+close handler; it simply hides the window. However, the guidelines say that
+the Ctrl+Q accelerator can be used to quit the application, so wxWidgets
+defines this accelerator by default and if your application handles
+wxID_EXIT, it will do the right thing.
+
+@subsubsection page_port_wxmsw_wince_ctx Context menus in wxWinCE
+
+To enable context menus in PocketPC, you currently need to call wxWindow::EnableContextMenu,
+a wxWinCE-only function. Otherwise the context menu event (wxContextMenuEvent) will
+never be sent. This API is subject to change.
+
+Context menus are not supported in Smartphone.
+
+@subsubsection page_port_wxmsw_wince_ctrl Control differences on wxWinCE
+
+These controls and styles are specific to wxWinCE:
+
+@li wxTextCtrl The wxTE_CAPITALIZE style causes a CAPEDIT control to
+be created, which capitalizes the first letter.
+
+These controls are missing from wxWinCE:
+
+@li MDI classes MDI is not supported under Windows CE.
+@li wxMiniFrame Not supported under Windows CE.
+
+Tooltips are not currently supported for controls, since on PocketPC controls with
+tooltips are distinct controls, and it will be hard to add dynamic
+tooltip support.
+
+Control borders on PocketPC and Smartphone should normally be specified with
+wxBORDER_SIMPLE instead of wxBORDER_SUNKEN. Controls will usually adapt
+appropriately by virtue of their GetDefaultBorder() function, but if you
+wish to specify a style explicitly you can use wxDEFAULT_CONTROL_BORDER
+which will give a simple border on PocketPC and Smartphone, and the sunken border on
+other platforms.
+
+@subsubsection page_port_wxmsw_wince_help Online help in wxWinCE
+
+You can use the help controller wxWinceHelpController which controls
+simple @c .htm files, usually installed in the Windows directory.
+See the Windows CE reference for how to format the HTML files.
+
+@subsubsection page_port_wxmsw_wince_install Installing your PocketPC and Smartphone applications
+
+To install your application, you need to build a CAB file using
+the parameters defined in a special .inf file. The CabWiz program
+in your SDK will compile the CAB file from the .inf file and
+files that it specifies.
+
+For delivery, you can simply ask the user to copy the CAB file to the
+device and execute the CAB file using File Explorer. Or, you can
+write a program for the desktop PC that will find the ActiveSync
+Application Manager and install the CAB file on the device,
+which is obviously much easier for the user.
+
+Here are some links that may help.
+
+@li A setup builder that takes CABs and builds a setup program is at
+ http://www.eskimo.com/~scottlu/win/index.html.
+@li Sample installation files can be found in
+ <tt>Windows CE Tools/wce420/POCKET PC 2003/Samples/Win32/AppInst</tt>.
+@li An installer generator using wxPython can be found at
+ http://ppcquicksoft.iespana.es/ppcquicksoft/myinstall.html.
+@li Miscellaneous Windows CE resources can be found at
+ http://www.orbworks.com/pcce/resources.html.
+@li Installer creation instructions with a setup.exe for installing to PPC can be found at
+ http://www.pocketpcdn.com/articles/creatingsetup.html.
+@li Microsoft instructions are at
+ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnce30/html/appinstall30.asp?frame=true
+@li Troubleshooting WinCE application installations:
+ http://support.microsoft.com/default.aspx?scid=KB;en-us;q181007
+
+You may also check out <tt>demos/life/setup/wince</tt> which contains
+scripts to create a PocketPC installation for ARM-based
+devices. In particular, @c build.bat builds the distribution and
+copies it to a directory called @c Deliver.
+
+@subsubsection page_port_wxmsw_wince_filedlg wxFileDialog in PocketPC
+
+Allowing the user to access files on memory cards, or on arbitrary
+parts of the filesystem, is a pain; the standard file dialog only
+shows folders under My Documents or folders on memory cards
+(not the system or card root directory, for example). This is
+a known problem for PocketPC developers.
+
+If you need a file dialog that allows access to all folders,
+you can use wxGenericFileDialog instead. You will need to include
+@c wx/generic/filedlgg.h.
+
+@subsubsection page_port_wxmsw_wince_evc Embedded Visual C++ Issues
+
+<b>Run-time type information</b>
+
+If you wish to use runtime type information (RTTI) with eVC++ 4, you need to download
+an extra library, @c ccrtrtti.lib, and link with it. At the time of
+writing you can get it from here:
+
+@verbatim
+http://support.microsoft.com/kb/830482/en-us
+@endverbatim
+
+Otherwise you will get linker errors similar to this:
+
+@verbatim
+wxwince26d.lib(control.obj) : error LNK2001: unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)
+@endverbatim
+
+<b>Windows Mobile 5.0 emulator</b>
+
+Note that there is no separate emulator configuration for Windows Mobile 5.0: the
+emulator runs the ARM code directly.
+
+<b>Visual Studio 2005 project files</b>
+
+Unfortunately, Visual Studio 2005, required to build Windows Mobile 5.0 applications,
+doesn't do a perfect job of converting the project files from eVC++ format.
+
+When you have converted the wxWidgets workspace, edit the configuration properties
+for each configuration and in the Librarian, add a relative path ..\\..\\lib to
+each library path. For example:
+<tt>..\\$(PlatformName)\\$(ConfigurationName)\\wx_mono.lib</tt>.
+
+Then, for a sample you want to compile, edit the configuration properties
+and make sure
+<tt>..\\..\\lib\\$(PlatformName)\\$(ConfigurationName)</tt>
+is in the Linker/General/Additional Library Directories property.
+Also change the Linker/Input/Additional Dependencies property to something like
+<tt>coredll.lib wx_mono.lib wx_wxjpeg.lib wx_wxpng.lib wx_wxzlib.lib wx_wxexpat.lib
+ commctrl.lib winsock.lib wininet.lib</tt>
+(since the library names in the wxWidgets workspace were changed by VS 2005).
+
+Alternately, you could could edit all the names to be identical to the original eVC++
+names, but this will probably be more fiddly.
+
+@subsubsection page_port_wxmsw_wince_issues Remaining issues
+
+These are some of the remaining problems to be sorted out, and features
+to be supported.
+
+@li <b>Windows Mobile 5 issues.</b> It is not possible to get the HMENU for
+the command bar on Mobile 5, so the menubar functions need to be rewritten
+to get the individual menus without use of a menubar handle. Also the
+new Mobile 5 convention of using only two menus (and no bitmap buttons) needs to be
+considered.
+@li <b>Sizer speed.</b> Particularly for dialogs containing notebooks,
+layout seems slow. Some analysis is required.
+@li <b>Notification boxes.</b> The balloon-like notification messages, and their
+icons, should be implemented. This will be quite straightforward.
+@li <b>SIP size.</b> We need to be able to get the area taken up by the SIP (input panel),
+and the remaining area, by calling SHSipInfo. We also may need to be able to show and hide
+the SIP programmatically, with SHSipPreference. See also the <em>Input Dialogs</em> topic in
+the <em>Programming Windows CE</em> guide for more on this, and how to have dialogs
+show the SIP automatically using the WC_SIPREF control.
+@li <b>wxStaticBitmap.</b> The About box in the "Life!" demo shows a bitmap that is
+the correct size on the emulator, but too small on a VGA Pocket Loox device.
+@li <b>wxStaticLine.</b> Lines don't show up, and the documentation suggests that
+missing styles are implemented with WM_PAINT.
+@li <b>HTML control.</b> PocketPC has its own HTML control which can be used for showing
+local pages or navigating the web. We should create a version of wxHtmlWindow that uses this
+control, or have a separately-named control (wxHtmlCtrl), with a syntax as close as possible
+to wxHtmlWindow.
+@li <b>Tooltip control.</b> PocketPC uses special TTBUTTON and TTSTATIC controls for adding
+tooltips, with the tooltip separated from the label with a double tilde. We need to support
+this using SetToolTip.(Unfortunately it does not seem possible to dynamically remove the tooltip,
+so an extra style may be required.)
+@li <b>Focus.</b> In the wxPropertySheetDialog demo on Smartphone, it's not possible to navigate
+between controls. The focus handling in wxWidgets needs investigation. See in particular
+src/common/containr.cpp, and note that the default OnActivate handler in src/msw/toplevel.cpp
+sets the focus to the first child of the dialog.
+@li <b>OK button.</b> We should allow the OK button on a dialog to be optional, perhaps
+by using wxCLOSE_BOX to indicate when the OK button should be displayed.
+@li <b>Dynamic adaptation.</b> We should probably be using run-time tests more
+than preprocessor tests, so that the same WinCE application can run on different
+versions of the operating system.
+@li <b>Modeless dialogs.</b> When a modeless dialog is hidden with the OK button, it doesn't restore the
+frame's menubar. See for example the find dialog in the dialogs sample. However, the menubar is restored
+if pressing Cancel (the window is closed). This reflects the fact that modeless dialogs are
+not very useful on Windows CE; however, we could perhaps destroy/restore a modeless dialog's menubar
+on deactivation and activation.
+@li <b>Home screen plugins.</b> Figure out how to make home screen plugins for use with wxWidgets
+applications (see http://www.codeproject.com/ce/CTodayWindow.asp for inspiration).
+Although we can't use wxWidgets to create the plugin (too large), we could perhaps write
+a generic plugin that takes registry information from a given application, with
+options to display information in a particular way using icons and text from
+a specified location.
+@li <b>Further abstraction.</b> We should be able to abstract away more of the differences
+between desktop and mobile applications, in particular for sizer layout.
+@li <b>Dialog captions.</b> The blue, bold captions on dialogs - with optional help button -
+should be catered for, either by hard-wiring the capability into all dialogs and panels,
+or by providing a standard component and sizer.
+
+
+@section page_port_nativedocs Documentation for the native toolkits
+
+It's sometimes useful to interface directly with the underlying toolkit
+used by wxWidgets to e.g. use toolkit-specific features.
+In such case (or when you want to e.g. write a port-specific patch) it can be
+necessary to use the underlying toolkit API directly:
+
+@li wxMSW port uses win32 API: see MSDN docs at http://msdn2.microsoft.com/en-us/library/ms649779.aspx
+@li wxGTK port uses GTK+: see GTK+ 2.x docs at http://developer.gnome.org/doc/API/2.0/gtk/index.html
*/
/**
- @page page_strategies Programming strategies
+@page page_strategies Programming strategies
- This chapter is intended to list strategies that may be useful when
- writing and debugging wxWidgets programs. If you have any good tips,
- please submit them for inclusion here.
+This chapter is intended to list strategies that may be useful when
+writing and debugging wxWidgets programs. If you have any good tips,
+please submit them for inclusion here.
- @li @ref page_strategies_reducingerr
- @li @ref page_strategies_portability
- @li @ref page_strategies_debug
+@li @ref page_strategies_reducingerr
+@li @ref page_strategies_portability
+@li @ref page_strategies_debug
- <hr>
+<hr>
- @section page_strategies_reducingerr Strategies for reducing programming errors
+@section page_strategies_reducingerr Strategies for reducing programming errors
- @subsection page_strategies_reducingerr_useassert Use ASSERT
+@subsection page_strategies_reducingerr_useassert Use ASSERT
- 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.
+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 wxASSERT for more info.
+See wxASSERT for more info.
- @subsection page_strategies_reducingerr_usewxstring Use wxString in preference to character arrays
+@subsection page_strategies_reducingerr_usewxstring Use wxString in preference to character arrays
- Using wxString can be much safer and more convenient than using wxChar *.
+Using 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 @c strcmp.
- wxString won't add a significant overhead to your program; the overhead is compensated
- for by easier manipulation (which means less code).
+You can reduce the possibility of memory leaks substantially, and it is much more
+convenient to use the overloaded operators than functions such as @c 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.
+The same goes for other data types: use classes wherever possible.
- @section page_strategies_portability Strategies for portability
+@section page_strategies_portability Strategies for portability
- @subsection page_strategies_portability_usesizers Use sizers
+@subsection page_strategies_portability_usesizers Use sizers
- Don't use absolute panel item positioning if you can avoid it. Different GUIs have
- very differently sized panel items. Consider using the @ref overview_sizer instead.
+Don't use absolute panel item positioning if you can avoid it. Different GUIs have
+very differently sized panel items. Consider using the @ref overview_sizer instead.
- @subsection page_strategies_portability_useresources Use wxWidgets resource files
+@subsection page_strategies_portability_useresources Use wxWidgets resource files
- Use .xrc (wxWidgets resource files) where possible, because they can be easily changed
- independently of source code. See the @ref overview_xrc for more info.
+Use .xrc (wxWidgets resource files) where possible, because they can be easily changed
+independently of source code. See the @ref overview_xrc for more info.
- @section page_strategies_debug Strategies for debugging
+@section page_strategies_debug Strategies for debugging
- @subsection page_strategies_debug_positivethinking Positive thinking
+@subsection page_strategies_debug_positivethinking Positive thinking
- It is common to blow up the problem in one's imagination, so that it seems to threaten
- weeks, months or even years of work. The problem you face may seem insurmountable:
- but almost never is. Once you have been programming for some time, you will be able
- to remember similar incidents that threw you into the depths of despair. But
- remember, you always solved the problem, somehow!
+It is common to blow up the problem in one's imagination, so that it seems to threaten
+weeks, months or even years of work. The problem you face may seem insurmountable:
+but almost never is. Once you have been programming for some time, you will be able
+to remember similar incidents that threw you into the depths of despair. But
+remember, you always solved the problem, somehow!
- Perseverance is often the key, even though a seemingly trivial problem
- can take an apparently inordinate amount of time to solve. In the end,
- you will probably wonder why you worried so much. That's not to say it
- isn't painful at the time. Try not to worry -- there are many more important
- things in life.
+Perseverance is often the key, even though a seemingly trivial problem
+can take an apparently inordinate amount of time to solve. In the end,
+you will probably wonder why you worried so much. That's not to say it
+isn't painful at the time. Try not to worry -- there are many more important
+things in life.
- @subsection page_strategies_debug_simplifyproblem Simplify the problem
+@subsection page_strategies_debug_simplifyproblem Simplify the problem
- Reduce the code exhibiting the problem to the smallest program possible
- that exhibits the problem. If it is not possible to reduce a large and
- complex program to a very small program, then try to ensure your code
- doesn't hide the problem (you may have attempted to minimize the problem
- in some way: but now you want to expose it).
+Reduce the code exhibiting the problem to the smallest program possible
+that exhibits the problem. If it is not possible to reduce a large and
+complex program to a very small program, then try to ensure your code
+doesn't hide the problem (you may have attempted to minimize the problem
+in some way: but now you want to expose it).
- With luck, you can add a small amount of code that causes the program
- to go from functioning to non-functioning state. This should give a clue
- to the problem. In some cases though, such as memory leaks or wrong
- deallocation, this can still give totally spurious results!
+With luck, you can add a small amount of code that causes the program
+to go from functioning to non-functioning state. This should give a clue
+to the problem. In some cases though, such as memory leaks or wrong
+deallocation, this can still give totally spurious results!
- @subsection page_strategies_debug_usedebugger Use a debugger
+@subsection page_strategies_debug_usedebugger Use a debugger
- This sounds like facetious advice, but it is surprising how often people
- don't use a debugger. Often it is an overhead to install or learn how to
- use a debugger, but it really is essential for anything but the most
- trivial programs.
+This sounds like facetious advice, but it is surprising how often people
+don't use a debugger. Often it is an overhead to install or learn how to
+use a debugger, but it really is essential for anything but the most
+trivial programs.
- @subsection page_strategies_debug_uselogging Use logging functions
+@subsection page_strategies_debug_uselogging Use logging functions
- There is a variety of logging functions that you can use in your program:
- see @ref page_func_cat_log.
+There is a variety of logging functions that you can use in your program:
+see @ref page_func_cat_log.
- Using tracing statements may be more convenient than using the debugger
- in some circumstances (such as when your debugger doesn't support a lot
- of debugging code, or you wish to print a bunch of variables).
+Using tracing statements may be more convenient than using the debugger
+in some circumstances (such as when your debugger doesn't support a lot
+of debugging code, or you wish to print a bunch of variables).
- @subsection page_strategies_debug_usedebuggingfacilities Use the wxWidgets debugging facilities
+@subsection page_strategies_debug_usedebuggingfacilities Use the wxWidgets debugging facilities
- You can use 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
- specific information about the problem will be logged.
+You can use 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
+specific information about the problem will be logged.
- You should also use @ref page_macro_cat_debugging as part of a `defensive programming' strategy,
- scattering wxASSERTs liberally to test for problems in your code as early as possible.
- Forward thinking will save a surprising amount of time in the long run.
+You should also use @ref page_macro_cat_debugging as part of a `defensive programming' strategy,
+scattering wxASSERTs liberally to test for problems in your code as early as possible.
+Forward thinking will save a surprising amount of time in the long run.
- See the @ref overview_debugging for further information.
+See the @ref overview_debugging for further information.
*/
/**
- @page overview_datetime Date and Time
+@page overview_datetime Date and Time
- Classes: wxDateTime, wxDateSpan, wxTimeSpan, wxCalendarCtrl
+Classes: wxDateTime, wxDateSpan, wxTimeSpan, wxCalendarCtrl
- @li @ref overview_datetime_introduction
- @li @ref overview_datetime_classes
- @li @ref overview_datetime_characteristics
- @li @ref overview_datetime_timespandiff
- @li @ref overview_datetime_arithmetics
- @li @ref overview_datetime_timezones
- @li @ref overview_datetime_dst
- @li @ref overview_datetime_holidays
- @li @ref overview_datetime_compat
+@li @ref overview_datetime_introduction
+@li @ref overview_datetime_classes
+@li @ref overview_datetime_characteristics
+@li @ref overview_datetime_timespandiff
+@li @ref overview_datetime_arithmetics
+@li @ref overview_datetime_timezones
+@li @ref overview_datetime_dst
+@li @ref overview_datetime_holidays
+@li @ref overview_datetime_compat
- <hr>
+<hr>
- @section overview_datetime_introduction Introduction
+@section overview_datetime_introduction Introduction
- wxWidgets provides a set of powerful classes to work with dates and times. Some
- of the supported features of wxDateTime class are:
+wxWidgets provides a set of powerful classes to work with dates and times. Some
+of the supported features of wxDateTime class are:
- @li Wide range: the range of supported dates goes from about 4714 B.C. to
- some 480 million years in the future.
+@li Wide range: the range of supported dates goes from about 4714 B.C. to
+ some 480 million years in the future.
- @li Precision: not using floating point calculations anywhere ensures that
- the date calculations don't suffer from rounding errors.
+@li Precision: not using floating point calculations anywhere ensures that
+ the date calculations don't suffer from rounding errors.
- @li Many features: not only all usual calculations with dates are supported,
- but also more exotic week and year day calculations, work day testing, standard
- astronomical functions, conversion to and from strings in either strict or free
+@li Many features: not only all usual calculations with dates are supported,
+ but also more exotic week and year day calculations, work day testing, standard
+ astronomical functions, conversion to and from strings in either strict or free
format.
- @li Efficiency: objects of wxDateTime are small (8 bytes) and working with
- them is fast
+@li Efficiency: objects of wxDateTime are small (8 bytes) and working with
+ them is fast
- @section overview_datetime_classes All date/time classes at a glance
+@section overview_datetime_classes All date/time classes at a glance
- There are 3 main classes declared in @c wx/datetime.h: except wxDateTime itself
- which represents an absolute moment in time, there are also two classes -
- wxTimeSpan and wxDateSpan - which represent the intervals of time.
+There are 3 main classes declared in @c wx/datetime.h: except wxDateTime itself
+which represents an absolute moment in time, there are also two classes -
+wxTimeSpan and wxDateSpan - which represent the intervals of time.
- There are also helper classes which are used together with wxDateTime:
- wxDateTimeHolidayAuthority which is used to determine whether a given date
- is a holiday or not and wxDateTimeWorkDays which is a derivation of this
- class for which (only) Saturdays and Sundays are the holidays. See more about
- these classes in the discussion of the holidays (see @ref overview_datetime_holidays).
+There are also helper classes which are used together with wxDateTime:
+wxDateTimeHolidayAuthority which is used to determine whether a given date
+is a holiday or not and wxDateTimeWorkDays which is a derivation of this
+class for which (only) Saturdays and Sundays are the holidays. See more about
+these classes in the discussion of the holidays (see @ref overview_datetime_holidays).
- Finally, in other parts of this manual you may find mentions of wxDate and
- wxTime classes. @ref overview_datetime_compat are obsolete and
- superseded by wxDateTime.
+Finally, in other parts of this manual you may find mentions of wxDate and
+wxTime classes. @ref overview_datetime_compat are obsolete and
+superseded by wxDateTime.
- @section overview_datetime_characteristics wxDateTime characteristics
+@section overview_datetime_characteristics wxDateTime characteristics
- wxDateTime stores the time as a signed number of
- milliseconds since the Epoch which is fixed, by convention, to Jan 1, 1970 -
- however this is not visible to the class users (in particular, dates prior to
- the Epoch are handled just as well (or as bad) as the dates after it). But it
- does mean that the best resolution which can be achieved with this class is 1
- millisecond.
+wxDateTime stores the time as a signed number of
+milliseconds since the Epoch which is fixed, by convention, to Jan 1, 1970 -
+however this is not visible to the class users (in particular, dates prior to
+the Epoch are handled just as well (or as bad) as the dates after it). But it
+does mean that the best resolution which can be achieved with this class is 1
+millisecond.
- The size of wxDateTime object is 8 bytes because it is represented as a 64 bit
- integer. The resulting range of supported dates is thus approximatively 580
- million years, but due to the current limitations in the Gregorian calendar
- support, only dates from Nov 24, 4714BC are supported (this is subject to
- change if there is sufficient interest in doing it).
+The size of wxDateTime object is 8 bytes because it is represented as a 64 bit
+integer. The resulting range of supported dates is thus approximatively 580
+million years, but due to the current limitations in the Gregorian calendar
+support, only dates from Nov 24, 4714BC are supported (this is subject to
+change if there is sufficient interest in doing it).
- Finally, the internal representation is time zone independent (always in GMT)
- and the time zones only come into play when a date is broken into
- year/month/day components. See more about timezones below
- (see @ref overview_datetime_timezones).
+Finally, the internal representation is time zone independent (always in GMT)
+and the time zones only come into play when a date is broken into
+year/month/day components. See more about timezones below
+(see @ref overview_datetime_timezones).
- Currently, the only supported calendar is Gregorian one (which is used even
- for the dates prior to the historic introduction of this calendar which was
- first done on Oct 15, 1582 but is, generally speaking, country, and even
- region, dependent). Future versions will probably have Julian calendar support
- as well and support for other calendars (Maya, Hebrew, Chinese...) is not
- ruled out.
+Currently, the only supported calendar is Gregorian one (which is used even
+for the dates prior to the historic introduction of this calendar which was
+first done on Oct 15, 1582 but is, generally speaking, country, and even
+region, dependent). Future versions will probably have Julian calendar support
+as well and support for other calendars (Maya, Hebrew, Chinese...) is not
+ruled out.
- @section overview_datetime_timespandiff Difference between wxDateSpan and wxTimeSpan
+@section overview_datetime_timespandiff Difference between wxDateSpan and wxTimeSpan
- While there is only one logical way to represent an absolute moment in the
- time (and hence only one wxDateTime class), there are at least two methods to
- describe a time interval.
+While there is only one logical way to represent an absolute moment in the
+time (and hence only one wxDateTime class), there are at least two methods to
+describe a time interval.
- First, there is the direct and self-explaining way implemented by
- wxTimeSpan: it is just a difference in milliseconds
- between two moments in time. Adding or subtracting such an interval to
- wxDateTime is always well-defined and is a fast operation.
+First, there is the direct and self-explaining way implemented by
+wxTimeSpan: it is just a difference in milliseconds
+between two moments in time. Adding or subtracting such an interval to
+wxDateTime is always well-defined and is a fast operation.
- But in the daily life other, calendar-dependent time interval specifications are
- used. For example, 'one month later' is commonly used. However, it is clear
- that this is not the same as wxTimeSpan of 60*60*24*31 seconds because 'one
- month later' Feb 15 is Mar 15 and not Mar 17 or Mar 16 (depending on whether
- the year is leap or not).
+But in the daily life other, calendar-dependent time interval specifications are
+used. For example, 'one month later' is commonly used. However, it is clear
+that this is not the same as wxTimeSpan of 60*60*24*31 seconds because 'one
+month later' Feb 15 is Mar 15 and not Mar 17 or Mar 16 (depending on whether
+the year is leap or not).
- This is why there is another class for representing such intervals called
- wxDateSpan. It handles these sort of operations in the
- most natural way possible, but note that manipulating with intervals of
- this kind is not always well-defined. Consider, for example, Jan 31 + '1
- month': this will give Feb 28 (or 29), i.e. the last day of February and not
- the non-existent Feb 31. Of course, this is what is usually wanted, but you
- still might be surprised to notice that now subtracting back the same
- interval from Feb 28 will result in Jan 28 and @b not Jan 31 we started
- with!
+This is why there is another class for representing such intervals called
+wxDateSpan. It handles these sort of operations in the
+most natural way possible, but note that manipulating with intervals of
+this kind is not always well-defined. Consider, for example, Jan 31 + '1
+month': this will give Feb 28 (or 29), i.e. the last day of February and not
+the non-existent Feb 31. Of course, this is what is usually wanted, but you
+still might be surprised to notice that now subtracting back the same
+interval from Feb 28 will result in Jan 28 and @b not Jan 31 we started
+with!
- So, unless you plan to implement some kind of natural language parsing in the
- program, you should probably use wxTimeSpan instead of wxDateSpan (which is
- also more efficient). However, wxDateSpan may be very useful in situations
- when you do need to understand what 'in a month' means (of course, it is
- just @c wxDateTime::Now() + wxDateSpan::Month()).
+So, unless you plan to implement some kind of natural language parsing in the
+program, you should probably use wxTimeSpan instead of wxDateSpan (which is
+also more efficient). However, wxDateSpan may be very useful in situations
+when you do need to understand what 'in a month' means (of course, it is
+just @c wxDateTime::Now() + wxDateSpan::Month()).
- @section overview_datetime_arithmetics Date arithmetics
+@section overview_datetime_arithmetics Date arithmetics
- Many different operations may be performed with the dates, however not all of
- them make sense. For example, multiplying a date by a number is an invalid
- operation, even though multiplying either of the time span classes by a number
- is perfectly valid.
+Many different operations may be performed with the dates, however not all of
+them make sense. For example, multiplying a date by a number is an invalid
+operation, even though multiplying either of the time span classes by a number
+is perfectly valid.
- Here is what can be done:
+Here is what can be done:
- @li @b Addition: a wxTimeSpan or wxDateSpan can be added to wxDateTime
- resulting in a new wxDateTime object and also 2 objects of the same span class
- can be added together giving another object of the same class.
+@li @b Addition: a wxTimeSpan or wxDateSpan can be added to wxDateTime
+ resulting in a new wxDateTime object and also 2 objects of the same span class
+ can be added together giving another object of the same class.
- @li @b Subtraction: the same types of operations as above are
- allowed and, additionally, a difference between two wxDateTime objects can be
- taken and this will yield wxTimeSpan.
+@li @b Subtraction: the same types of operations as above are
+ allowed and, additionally, a difference between two wxDateTime objects can be
+ taken and this will yield wxTimeSpan.
- @li @b Multiplication: a wxTimeSpan or wxDateSpan object can be
- multiplied by an integer number resulting in an object of the same type.
+@li @b Multiplication: a wxTimeSpan or wxDateSpan object can be
+ multiplied by an integer number resulting in an object of the same type.
- @li <b>Unary minus</b>: a wxTimeSpan or wxDateSpan object may finally be
- negated giving an interval of the same magnitude but of opposite time
- direction.
+@li <b>Unary minus</b>: a wxTimeSpan or wxDateSpan object may finally be
+ negated giving an interval of the same magnitude but of opposite time
+ direction.
- For all these operations there are corresponding global (overloaded) operators
- and also member functions which are synonyms for them: Add(), Subtract() and
- Multiply(). Unary minus as well as composite assignment operations (like +=)
- are only implemented as members and Neg() is the synonym for unary minus.
+For all these operations there are corresponding global (overloaded) operators
+and also member functions which are synonyms for them: Add(), Subtract() and
+Multiply(). Unary minus as well as composite assignment operations (like +=)
+are only implemented as members and Neg() is the synonym for unary minus.
- @section overview_datetime_timezones Time zone considerations
+@section overview_datetime_timezones Time zone considerations
- Although the time is always stored internally in GMT, you will usually work in
- the local time zone. Because of this, all wxDateTime constructors and setters
- which take the broken down date assume that these values are for the local
- time zone. Thus, @c wxDateTime(1, wxDateTime::Jan, 1970) will not
- correspond to the wxDateTime Epoch unless you happen to live in the UK.
- All methods returning the date components (year, month, day, hour, minute,
- second...) will also return the correct values for the local time zone by
- default, so, generally, doing the natural things will lead to natural and
- correct results.
+Although the time is always stored internally in GMT, you will usually work in
+the local time zone. Because of this, all wxDateTime constructors and setters
+which take the broken down date assume that these values are for the local
+time zone. Thus, @c wxDateTime(1, wxDateTime::Jan, 1970) will not
+correspond to the wxDateTime Epoch unless you happen to live in the UK.
+All methods returning the date components (year, month, day, hour, minute,
+second...) will also return the correct values for the local time zone by
+default, so, generally, doing the natural things will lead to natural and
+correct results.
- If you only want to do this, you may safely skip the rest of this section.
- However, if you want to work with different time zones, you should read it to
- the end.
+If you only want to do this, you may safely skip the rest of this section.
+However, if you want to work with different time zones, you should read it to
+the end.
- In this (rare) case, you are still limited to the local time zone when
- constructing wxDateTime objects, i.e. there is no way to construct a
- wxDateTime corresponding to the given date in, say, Pacific Standard Time.
- To do it, you will need to call wxDateTime::ToTimezone or wxDateTime::MakeTimezone
- methods to adjust the date for the target time zone. There are also special
- versions of these functions wxDateTime::ToUTC and wxDateTime::MakeUTC for
- the most common case - when the date should be constructed in UTC.
+In this (rare) case, you are still limited to the local time zone when
+constructing wxDateTime objects, i.e. there is no way to construct a
+wxDateTime corresponding to the given date in, say, Pacific Standard Time.
+To do it, you will need to call wxDateTime::ToTimezone or wxDateTime::MakeTimezone
+methods to adjust the date for the target time zone. There are also special
+versions of these functions wxDateTime::ToUTC and wxDateTime::MakeUTC for
+the most common case - when the date should be constructed in UTC.
- You also can just retrieve the value for some time zone without converting the
- object to it first. For this you may pass TimeZone argument to any of the
- methods which are affected by the time zone (all methods getting date
- components and the date formatting ones, for example). In particular, the
- Format() family of methods accepts a TimeZone parameter and this allows to
- simply print time in any time zone.
+You also can just retrieve the value for some time zone without converting the
+object to it first. For this you may pass TimeZone argument to any of the
+methods which are affected by the time zone (all methods getting date
+components and the date formatting ones, for example). In particular, the
+Format() family of methods accepts a TimeZone parameter and this allows to
+simply print time in any time zone.
- To see how to do it, the last issue to address is how to construct a TimeZone
- object which must be passed to all these methods. First of all, you may construct
- it manually by specifying the time zone offset in seconds from GMT, but
- usually you will just use one of the @ref overview_datetime and
- let the conversion constructor do the job.
+To see how to do it, the last issue to address is how to construct a TimeZone
+object which must be passed to all these methods. First of all, you may construct
+it manually by specifying the time zone offset in seconds from GMT, but
+usually you will just use one of the @ref overview_datetime and
+let the conversion constructor do the job.
- I.e. you would just write
+I.e. you would just write
- @code
- wxDateTime dt(...whatever...);
- printf("The time is %s in local time zone", dt.FormatTime().c_str());
- printf("The time is %s in GMT", dt.FormatTime(wxDateTime::GMT).c_str());
- @endcode
+@code
+wxDateTime dt(...whatever...);
+printf("The time is %s in local time zone", dt.FormatTime().c_str());
+printf("The time is %s in GMT", dt.FormatTime(wxDateTime::GMT).c_str());
+@endcode
- @section overview_datetime_dst Daylight saving time (DST)
+@section overview_datetime_dst Daylight saving time (DST)
- DST (a.k.a. 'summer time') handling is always a delicate task which is better
- left to the operating system which is supposed to be configured by the
- administrator to behave correctly. Unfortunately, when doing calculations with
- date outside of the range supported by the standard library, we are forced to
- deal with these issues ourselves.
+DST (a.k.a. 'summer time') handling is always a delicate task which is better
+left to the operating system which is supposed to be configured by the
+administrator to behave correctly. Unfortunately, when doing calculations with
+date outside of the range supported by the standard library, we are forced to
+deal with these issues ourselves.
- Several functions are provided to calculate the beginning and end of DST in
- the given year and to determine whether it is in effect at the given moment or
- not, but they should not be considered as absolutely correct because, first of
- all, they only work more or less correctly for only a handful of countries
- (any information about other ones appreciated!) and even for them the rules
- may perfectly well change in the future.
+Several functions are provided to calculate the beginning and end of DST in
+the given year and to determine whether it is in effect at the given moment or
+not, but they should not be considered as absolutely correct because, first of
+all, they only work more or less correctly for only a handful of countries
+(any information about other ones appreciated!) and even for them the rules
+may perfectly well change in the future.
- The time zone handling methods (see @ref overview_datetime_timezones) use
- these functions too, so they are subject to the same limitations.
+The time zone handling methods (see @ref overview_datetime_timezones) use
+these functions too, so they are subject to the same limitations.
- @section overview_datetime_holidays wxDateTime and Holidays
+@section overview_datetime_holidays wxDateTime and Holidays
- TODO.
+@todo WRITE THIS DOC PARAGRAPH.
- @section overview_datetime_compat Compatibility
+@section overview_datetime_compat Compatibility
- The old classes for date/time manipulations ported from wxWidgets version 1.xx
- are still included but are reimplemented in terms of wxDateTime. However, using
- them is strongly discouraged because they have a few quirks/bugs and were not
- 'Y2K' compatible.
+The old classes for date/time manipulations ported from wxWidgets version 1.xx
+are still included but are reimplemented in terms of wxDateTime. However, using
+them is strongly discouraged because they have a few quirks/bugs and were not
+'Y2K' compatible.
*/
/**
- @page overview_dc Device Contexts
-
- Classes: wxBufferedDC, wxBufferedPaintDC, wxDC, wxPostScriptDC,
- wxMetafileDC, wxMemoryDC, wxPrinterDC, wxScreenDC, wxClientDC,
- wxPaintDC, wxWindowDC.
-
- A wxDC is a @e device context onto which graphics and text can be drawn.
- The device context is intended to represent a number of output devices in a
- generic way, with the same API being used throughout.
-
- Some device contexts are created temporarily in order to draw on a window.
- This is @true of wxScreenDC, wxClientDC, wxPaintDC, and wxWindowDC.
- The following describes the differences between these device contexts and
- when you should use them.
-
- @li @b wxScreenDC. Use this to paint on the screen, as opposed to an individual window.
- @li @b wxClientDC. Use this to paint on the client area of window (the part without
- borders and other decorations), but do not use it from within an wxPaintEvent.
- @li @b wxPaintDC. Use this to paint on the client area of a window, but @e only from
- within a wxPaintEvent.
- @li @b wxWindowDC. Use this to paint on the whole area of a window, including decorations.
- This may not be available on non-Windows platforms.
-
- To use a client, paint or window device context, create an object on the stack with
- the window as argument, for example:
-
- @code
- void MyWindow::OnMyCmd(wxCommandEvent& event)
- {
- wxClientDC dc(window);
- DrawMyPicture(dc);
- }
- @endcode
-
- Try to write code so it is parameterised by wxDC - if you do this, the same piece of code may
- write to a number of different devices, by passing a different device context. This doesn't
- work for everything (for example not all device contexts support bitmap drawing) but
- will work most of the time.
+@page overview_dc Device Contexts
+
+Classes: wxBufferedDC, wxBufferedPaintDC, wxDC, wxPostScriptDC,
+ wxMetafileDC, wxMemoryDC, wxPrinterDC, wxScreenDC, wxClientDC,
+ wxPaintDC, wxWindowDC.
+
+A wxDC is a @e device context onto which graphics and text can be drawn.
+The device context is intended to represent a number of output devices in a
+generic way, with the same API being used throughout.
+
+Some device contexts are created temporarily in order to draw on a window.
+This is @true of wxScreenDC, wxClientDC, wxPaintDC, and wxWindowDC.
+The following describes the differences between these device contexts and
+when you should use them.
+
+@li @b wxScreenDC. Use this to paint on the screen, as opposed to an individual window.
+@li @b wxClientDC. Use this to paint on the client area of window (the part without
+ borders and other decorations), but do not use it from within an wxPaintEvent.
+@li @b wxPaintDC. Use this to paint on the client area of a window, but @e only from
+ within a wxPaintEvent.
+@li @b wxWindowDC. Use this to paint on the whole area of a window, including decorations.
+ This may not be available on non-Windows platforms.
+
+To use a client, paint or window device context, create an object on the stack with
+the window as argument, for example:
+
+@code
+void MyWindow::OnMyCmd(wxCommandEvent& event)
+{
+ wxClientDC dc(window);
+ DrawMyPicture(dc);
+}
+@endcode
+
+Try to write code so it is parameterised by wxDC - if you do this, the same piece of code may
+write to a number of different devices, by passing a different device context. This doesn't
+work for everything (for example not all device contexts support bitmap drawing) but
+will work most of the time.
*/
/**
- @page overview_debugging Debugging
+@page overview_debugging Debugging
- Classes, functions and macros: wxDebugContext, wxObject, wxLog,
+Classes, functions and macros: wxDebugContext, wxObject, wxLog,
@ref page_func_cat_log, @ref page_macro_cat_debugging
- Various classes, functions and macros are provided in wxWidgets to help you debug
- your application. Most of these are only available if you compile both wxWidgets,
- your application and @e all libraries that use wxWidgets with the __WXDEBUG__ symbol
- defined. You can also test the __WXDEBUG__ symbol in your own applications to execute
- code that should be active only in debug mode.
+Various classes, functions and macros are provided in wxWidgets to help you debug
+your application. Most of these are only available if you compile both wxWidgets,
+your application and @e all libraries that use wxWidgets with the __WXDEBUG__ symbol
+defined. You can also test the __WXDEBUG__ symbol in your own applications to execute
+code that should be active only in debug mode.
- @li @ref overview_debugging_dbgctx
- @li @ref overview_debugging_dbgmacros
- @li @ref overview_debugging_logging
- @li @ref overview_debugging_dbgctx2
+@li @ref overview_debugging_dbgctx
+@li @ref overview_debugging_dbgmacros
+@li @ref overview_debugging_logging
+@li @ref overview_debugging_dbgctx2
- <hr>
+<hr>
- @section overview_debugging_dbgctx wxDebugContext
+@section overview_debugging_dbgctx wxDebugContext
- wxDebugContext is a class that never gets instantiated, but ties together
- various static functions and variables. It allows you to dump all objects to that stream,
- write statistics about object allocation, and check memory for errors.
+wxDebugContext is a class that never gets instantiated, but ties together
+various static functions and variables. It allows you to dump all objects to that stream,
+write statistics about object allocation, and check memory for errors.
- It is good practice to define a wxObject::Dump member function for each class you derive
- from a wxWidgets class, so that wxDebugContext::Dump can call it and
- give valuable information about the state of the application.
+It is good practice to define a wxObject::Dump member function for each class you derive
+from a wxWidgets class, so that wxDebugContext::Dump can call it and
+give valuable information about the state of the application.
- If you have difficulty tracking down a memory leak, recompile
- in debugging mode and call wxDebugContext::Dump and wxDebugContext::PrintStatistics at
- appropriate places. They will tell you what objects have not yet been
- deleted, and what kinds of object they are. In fact, in debug mode wxWidgets will automatically
- detect memory leaks when your application is about to exit, and if there are any leaks,
- will give you information about the problem. (How much information depends on the operating system
- and compiler -- some systems don't allow all memory logging to be enabled). See the
- memcheck sample for example of usage.
+If you have difficulty tracking down a memory leak, recompile
+in debugging mode and call wxDebugContext::Dump and wxDebugContext::PrintStatistics at
+appropriate places. They will tell you what objects have not yet been
+deleted, and what kinds of object they are. In fact, in debug mode wxWidgets will automatically
+detect memory leaks when your application is about to exit, and if there are any leaks,
+will give you information about the problem. (How much information depends on the operating system
+and compiler -- some systems don't allow all memory logging to be enabled). See the
+memcheck sample for example of usage.
- For wxDebugContext to do its work, the @e new and @e delete operators for wxObject
- have been redefined to store extra information about dynamically allocated objects
- (but not statically declared objects).
+For wxDebugContext to do its work, the @e new and @e delete operators for wxObject
+have been redefined to store extra information about dynamically allocated objects
+(but not statically declared objects).
- This slows down a debugging version of an application, but can
- find difficult-to-detect memory leaks (objects are not
- deallocated), overwrites (writing past the end of your object) and
- underwrites (writing to memory in front of the object).
+This slows down a debugging version of an application, but can
+find difficult-to-detect memory leaks (objects are not
+deallocated), overwrites (writing past the end of your object) and
+underwrites (writing to memory in front of the object).
- If debugging mode is on and the symbols wxUSE_GLOBAL_MEMORY_OPERATORS and
- wxUSE_DEBUG_NEW_ALWAYS are set to 1 in setup.h, 'new' is defined to be:
+If debugging mode is on and the symbols wxUSE_GLOBAL_MEMORY_OPERATORS and
+wxUSE_DEBUG_NEW_ALWAYS are set to 1 in setup.h, 'new' is defined to be:
- @code
- #define new new(__FILE__,__LINE__)
- @endcode
+@code
+#define new new(__FILE__,__LINE__)
+@endcode
- All occurrences of 'new' in wxWidgets and your own application will use
- the overridden form of the operator with two extra arguments. This means that
- the debugging output (and error messages reporting memory problems) will tell you what
- file and on what line you allocated the object. Unfortunately not all
- compilers allow this definition to work properly, but most do.
+All occurrences of 'new' in wxWidgets and your own application will use
+the overridden form of the operator with two extra arguments. This means that
+the debugging output (and error messages reporting memory problems) will tell you what
+file and on what line you allocated the object. Unfortunately not all
+compilers allow this definition to work properly, but most do.
- @section overview_debugging_dbgmacros Debug macros
+@section overview_debugging_dbgmacros Debug macros
- You should also use @ref page_macro_cat_debugging as part of a 'defensive programming'
- strategy, scattering wxASSERTs liberally to test for problems in your code as early as
- possible.
- Forward thinking will save a surprising amount of time in the long run.
+You should also use @ref page_macro_cat_debugging as part of a 'defensive programming'
+strategy, scattering wxASSERTs liberally to test for problems in your code as early as
+possible.
+Forward thinking will save a surprising amount of time in the long run.
- #wxASSERT is used to pop up an error message box when a condition
- is not @true. You can also use #wxASSERT_MSG to supply your
- own helpful error message. For example:
+#wxASSERT is used to pop up an error message box when a condition
+is not @true. You can also use #wxASSERT_MSG to supply your
+own helpful error message. For example:
- @code
- void MyClass::MyFunction(wxObject* object)
- {
- wxASSERT_MSG( (object != NULL), "object should not be NULL in MyFunction!" );
+@code
+void MyClass::MyFunction(wxObject* object)
+{
+ wxASSERT_MSG( (object != NULL), "object should not be NULL in MyFunction!" );
- ...
- };
- @endcode
+ ...
+};
+@endcode
- The message box allows you to continue execution or abort the program. If you are running
- the application inside a debugger, you will be able to see exactly where the problem was.
+The message box allows you to continue execution or abort the program. If you are running
+the application inside a debugger, you will be able to see exactly where the problem was.
- @section overview_debugging_logging Logging functions
+@section overview_debugging_logging Logging functions
- You can use the wxLogDebug and wxLogTrace functions to output debugging information in
- debug mode; it will do nothing for non-debugging code.
+You can use the wxLogDebug and wxLogTrace functions to output debugging information in
+debug mode; it will do nothing for non-debugging code.
- @section overview_debugging_dbgctx2 wxDebugContext overview
+@section overview_debugging_dbgctx2 wxDebugContext overview
- Class: wxDebugContext
+Class: wxDebugContext
- wxDebugContext is a class for performing various debugging and memory tracing operations.
+wxDebugContext is a class for performing various debugging and memory tracing operations.
- This class has only static data and function members, and there should be
- no instances. Probably the most useful members are SetFile (for directing output
- to a file, instead of the default standard error or debugger output);
- Dump (for dumping the dynamically allocated objects) and PrintStatistics
- (for dumping information about allocation of objects). You can also call
- Check to check memory blocks for integrity.
+This class has only static data and function members, and there should be
+no instances. Probably the most useful members are SetFile (for directing output
+to a file, instead of the default standard error or debugger output);
+Dump (for dumping the dynamically allocated objects) and PrintStatistics
+(for dumping information about allocation of objects). You can also call
+Check to check memory blocks for integrity.
- Here's an example of use. The SetCheckpoint ensures that only the
- allocations done after the checkpoint will be dumped.
+Here's an example of use. The SetCheckpoint ensures that only the
+allocations done after the checkpoint will be dumped.
- @code
- wxDebugContext::SetCheckpoint();
+@code
+wxDebugContext::SetCheckpoint();
- wxDebugContext::SetFile("c:\\temp\\debug.log");
+wxDebugContext::SetFile("c:\\temp\\debug.log");
- wxString *thing = new wxString;
+wxString *thing = new wxString;
- char *ordinaryNonObject = new char[1000];
+char *ordinaryNonObject = new char[1000];
- wxDebugContext::Dump();
- wxDebugContext::PrintStatistics();
- @endcode
+wxDebugContext::Dump();
+wxDebugContext::PrintStatistics();
+@endcode
- You can use wxDebugContext if __WXDEBUG__ is defined, or you can use it
- at any other time (if wxUSE_DEBUG_CONTEXT is set to 1 in setup.h). It is not disabled
- in non-debug mode because you may not wish to recompile wxWidgets and your entire application
- just to make use of the error logging facility.
+You can use wxDebugContext if __WXDEBUG__ is defined, or you can use it
+at any other time (if wxUSE_DEBUG_CONTEXT is set to 1 in setup.h). It is not disabled
+in non-debug mode because you may not wish to recompile wxWidgets and your entire application
+just to make use of the error logging facility.
- @note wxDebugContext::SetFile has a problem at present, so use the default stream instead.
- Eventually the logging will be done through the wxLog facilities instead.
+@note wxDebugContext::SetFile has a problem at present, so use the default stream instead.
+ Eventually the logging will be done through the wxLog facilities instead.
*/
/**
- @page overview_dialog wxDialog Overview
+@page overview_dialog wxDialog Overview
- Classes: wxDialog, wxDialogLayoutAdapter
+Classes: wxDialog, wxDialogLayoutAdapter
- A dialog box is similar to a panel, in that it is a window which can
- be used for placing controls, with the following exceptions:
+A dialog box is similar to a panel, in that it is a window which can
+be used for placing controls, with the following exceptions:
- @li A surrounding frame is implicitly created.
- @li Extra functionality is automatically given to the dialog box,
- such as tabbing between items (currently Windows only).
- @li If the dialog box is @e modal, the calling program is blocked
- until the dialog box is dismissed.
+@li A surrounding frame is implicitly created.
+@li Extra functionality is automatically given to the dialog box,
+ such as tabbing between items (currently Windows only).
+@li If the dialog box is @e modal, the calling program is blocked
+ until the dialog box is dismissed.
- For a set of dialog convenience functions, including file selection, see
- @ref page_func_cat_dialog.
+For a set of dialog convenience functions, including file selection, see
+@ref page_func_cat_dialog.
- See also wxTopLevelWindow and wxWindow for inherited
- member functions. Validation of data in controls is covered in @ref overview_validator.
+See also wxTopLevelWindow and wxWindow for inherited
+member functions. Validation of data in controls is covered in @ref overview_validator.
- @li @ref overview_dialog_autoscrolling
+@li @ref overview_dialog_autoscrolling
- <hr>
+<hr>
- @section overview_dialog_autoscrolling Automatic scrolling dialogs
+@section overview_dialog_autoscrolling Automatic scrolling dialogs
- As an ever greater variety of mobile hardware comes to market, it becomes more
- imperative for wxWidgets applications to adapt to these platforms without putting
- too much burden on the programmer. One area where wxWidgets can help is in adapting
- dialogs for the lower resolution screens that inevitably accompany a smaller form factor.
- wxDialog therefore supplies a global wxDialogLayoutAdapter class that implements
- automatic scrolling adaptation for most sizer-based custom dialogs.
+As an ever greater variety of mobile hardware comes to market, it becomes more
+imperative for wxWidgets applications to adapt to these platforms without putting
+too much burden on the programmer. One area where wxWidgets can help is in adapting
+dialogs for the lower resolution screens that inevitably accompany a smaller form factor.
+wxDialog therefore supplies a global wxDialogLayoutAdapter class that implements
+automatic scrolling adaptation for most sizer-based custom dialogs.
- Many applications should therefore be able to adapt to small displays with little
- or no work, as far as dialogs are concerned.
- By default this adaptation is off. To switch scrolling adaptation on globally in
- your application, call the static function wxDialog::EnableLayoutAdaptation passing @true.
- You can also adjust adaptation on a per-dialog basis by calling
- wxDialog::SetLayoutAdaptationMode with one of @c wxDIALOG_ADAPTATION_MODE_DEFAULT
- (use the global setting), @c wxDIALOG_ADAPTATION_MODE_ENABLED or @c wxDIALOG_ADAPTATION_MODE_DISABLED.
+Many applications should therefore be able to adapt to small displays with little
+or no work, as far as dialogs are concerned.
+By default this adaptation is off. To switch scrolling adaptation on globally in
+your application, call the static function wxDialog::EnableLayoutAdaptation passing @true.
+You can also adjust adaptation on a per-dialog basis by calling
+wxDialog::SetLayoutAdaptationMode with one of @c wxDIALOG_ADAPTATION_MODE_DEFAULT
+(use the global setting), @c wxDIALOG_ADAPTATION_MODE_ENABLED or @c wxDIALOG_ADAPTATION_MODE_DISABLED.
- The last two modes override the global adaptation setting.
- With adaptation enabled, if the display size is too small for the dialog, wxWidgets (or rather the
- standard adapter class wxStandardDialogLayoutAdapter) will make part of the dialog scrolling,
- leaving standard buttons in a non-scrolling part at the bottom of the dialog.
- This is done as follows, in wxDialogLayoutAdapter::DoLayoutAdaptation called from
- within wxDialog::Show or wxDialog::ShowModal:
+The last two modes override the global adaptation setting.
+With adaptation enabled, if the display size is too small for the dialog, wxWidgets (or rather the
+standard adapter class wxStandardDialogLayoutAdapter) will make part of the dialog scrolling,
+leaving standard buttons in a non-scrolling part at the bottom of the dialog.
+This is done as follows, in wxDialogLayoutAdapter::DoLayoutAdaptation called from
+within wxDialog::Show or wxDialog::ShowModal:
- @li If wxDialog::GetContentWindow returns a window derived from wxBookCtrlBase,
- the pages are made scrollable and no other adaptation is done.
- @li wxWidgets looks for a wxStdDialogButtonSizer and uses it for the non-scrolling part.
- @li If that search failed, wxWidgets looks for a horizontal wxBoxSizer with one or more
- standard buttons, with identifiers such as @c wxID_OK and @c wxID_CANCEL.
- @li If that search failed too, wxWidgets finds 'loose' standard buttons (in any kind of sizer)
- and adds them to a wxStdDialogButtonSizer.
- If no standard buttons were found, the whole dialog content will scroll.
- @li All the children apart from standard buttons are reparented onto a new wxScrolledWindow
- object, using the old top-level sizer for the scrolled window and creating a new top-level
- sizer to lay out the scrolled window and standard button sizer.
+@li If wxDialog::GetContentWindow returns a window derived from wxBookCtrlBase,
+ the pages are made scrollable and no other adaptation is done.
+@li wxWidgets looks for a wxStdDialogButtonSizer and uses it for the non-scrolling part.
+@li If that search failed, wxWidgets looks for a horizontal wxBoxSizer with one or more
+ standard buttons, with identifiers such as @c wxID_OK and @c wxID_CANCEL.
+@li If that search failed too, wxWidgets finds 'loose' standard buttons (in any kind of sizer)
+ and adds them to a wxStdDialogButtonSizer.
+ If no standard buttons were found, the whole dialog content will scroll.
+@li All the children apart from standard buttons are reparented onto a new wxScrolledWindow
+ object, using the old top-level sizer for the scrolled window and creating a new top-level
+ sizer to lay out the scrolled window and standard button sizer.
- @subsection overview_dialog_autoscrolling_custom Customising scrolling adaptation
+@subsection overview_dialog_autoscrolling_custom Customising scrolling adaptation
- In addition to switching adaptation on and off globally and per dialog,
- you can choose how aggressively wxWidgets will search for standard buttons by setting
- wxDialog::SetLayoutAdaptationLevel. By default, all the steps described above will be
- performed but by setting the level to 1, for example, you can choose to only look for
- wxStdDialogButtonSizer.
+In addition to switching adaptation on and off globally and per dialog,
+you can choose how aggressively wxWidgets will search for standard buttons by setting
+wxDialog::SetLayoutAdaptationLevel. By default, all the steps described above will be
+performed but by setting the level to 1, for example, you can choose to only look for
+wxStdDialogButtonSizer.
- You can use wxDialog::AddMainButtonId to add identifiers for buttons that should also be
- treated as standard buttons for the non-scrolling area.
+You can use wxDialog::AddMainButtonId to add identifiers for buttons that should also be
+treated as standard buttons for the non-scrolling area.
- You can derive your own class from wxDialogLayoutAdapter or wxStandardDialogLayoutAdapter and call
- wxDialog::SetLayoutAdapter, deleting the old object that this function returns. Override
- the functions CanDoLayoutAdaptation and DoLayoutAdaptation to test for adaptation applicability
- and perform the adaptation.
+You can derive your own class from wxDialogLayoutAdapter or wxStandardDialogLayoutAdapter and call
+wxDialog::SetLayoutAdapter, deleting the old object that this function returns. Override
+the functions CanDoLayoutAdaptation and DoLayoutAdaptation to test for adaptation applicability
+and perform the adaptation.
- You can also override wxDialog::CanDoLayoutAdaptation and wxDialog::DoLayoutAdaptation
- in a class derived from wxDialog.
+You can also override wxDialog::CanDoLayoutAdaptation and wxDialog::DoLayoutAdaptation
+in a class derived from wxDialog.
- @subsection overview_dialog_autoscrolling_fail Situations where automatic scrolling adaptation may fail
+@subsection overview_dialog_autoscrolling_fail Situations where automatic scrolling adaptation may fail
- Because adaptation rearranges your sizer and window hierarchy, it is not fool-proof,
- and may fail in the following situations:
+Because adaptation rearranges your sizer and window hierarchy, it is not fool-proof,
+and may fail in the following situations:
- @li The dialog doesn't use sizers.
- @li The dialog implementation makes assumptions about the window hierarchy,
- for example getting the parent of a control and casting to the dialog class.
- @li The dialog does custom painting and/or event handling not handled by the scrolled window.
- If this problem can be solved globally, you can derive a new adapter class from
- wxStandardDialogLayoutAdapter and override its CreateScrolledWindow function to return
- an instance of your own class.
- @li The dialog has unusual layout, for example a vertical sizer containing a mixture of
- standard buttons and other controls.
- @li The dialog makes assumptions about the sizer hierarchy, for example to show or hide
- children of the top-level sizer. However, the original sizer hierarchy will still hold
- until Show or ShowModal is called.
+@li The dialog doesn't use sizers.
+@li The dialog implementation makes assumptions about the window hierarchy,
+ for example getting the parent of a control and casting to the dialog class.
+@li The dialog does custom painting and/or event handling not handled by the scrolled window.
+ If this problem can be solved globally, you can derive a new adapter class from
+ wxStandardDialogLayoutAdapter and override its CreateScrolledWindow function to return
+ an instance of your own class.
+@li The dialog has unusual layout, for example a vertical sizer containing a mixture of
+ standard buttons and other controls.
+@li The dialog makes assumptions about the sizer hierarchy, for example to show or hide
+ children of the top-level sizer. However, the original sizer hierarchy will still hold
+ until Show or ShowModal is called.
- You can help make sure that your dialogs will continue to function after adaptation by:
+You can help make sure that your dialogs will continue to function after adaptation by:
- @li avoiding the above situations and assumptions;
- @li using wxStdDialogButtonSizer;
- @li only making assumptions about hierarchy immediately after the dialog is created;
- @li using an intermediate sizer under the main sizer, a @false top-level sizer that
- can be relied on to exist for the purposes of manipulating child sizers and windows;
- @li overriding wxDialog::GetContentWindow to return a book control if your dialog implements
- pages: wxWidgets will then only make the pages scrollable.
+@li avoiding the above situations and assumptions;
+@li using wxStdDialogButtonSizer;
+@li only making assumptions about hierarchy immediately after the dialog is created;
+@li using an intermediate sizer under the main sizer, a @false top-level sizer that
+ can be relied on to exist for the purposes of manipulating child sizers and windows;
+@li overriding wxDialog::GetContentWindow to return a book control if your dialog implements
+ pages: wxWidgets will then only make the pages scrollable.
- @subsection overview_dialog_propertysheet wxPropertySheetDialog and wxWizard
+@subsection overview_dialog_propertysheet wxPropertySheetDialog and wxWizard
- Adaptation for wxPropertySheetDialog is always done by simply making the pages
- scrollable, since wxDialog::GetContentWindow returns the dialog's book control and
- this is handled by the standard layout adapter.
+Adaptation for wxPropertySheetDialog is always done by simply making the pages
+scrollable, since wxDialog::GetContentWindow returns the dialog's book control and
+this is handled by the standard layout adapter.
- wxWizard uses its own CanDoLayoutAdaptation and DoLayoutAdaptation functions rather
- than the global adapter: again, only the wizard pages are made scrollable.
+wxWizard uses its own CanDoLayoutAdaptation and DoLayoutAdaptation functions rather
+than the global adapter: again, only the wizard pages are made scrollable.
*/
/**
- @page overview_docview Document/View Framework
-
- Classes: wxDocument, wxView, wxDocTemplate, wxDocManager, wxDocParentFrame,
- wxDocChildFrame, wxDocMDIParentFrame, wxDocMDIChildFrame,
- wxCommand, wxCommandProcessor
-
- The document/view framework is found in most application frameworks, because it
- can dramatically simplify the code required to build many kinds of application.
-
- The idea is that you can model your application primarily in terms of @e documents to store data
- and provide interface-independent operations upon it, and @e views to visualise and manipulate
- the data. Documents know how to do input and output given stream objects, and views are responsible
- for taking input from physical windows and performing the manipulation on the document data.
-
- If a document's data changes, all views should be updated to reflect the change.
- The framework can provide many user-interface elements based on this model.
-
- Once you have defined your own classes and the relationships between them, the framework
- takes care of popping up file selectors, opening and closing files, asking the user to save
- modifications, routing menu commands to appropriate (possibly default) code, even
- some default print/preview functionality and support for command undo/redo.
-
- The framework is highly modular, allowing overriding and replacement of functionality
- and objects to achieve more than the default behaviour.
-
- These are the overall steps involved in creating an application based on the
- document/view framework:
-
- @li Define your own document and view classes, overriding a minimal set of
- member functions e.g. for input/output, drawing and initialization.
- @li Define any subwindows (such as a scrolled window) that are needed for the view(s).
- You may need to route some events to views or documents, for example OnPaint needs
- to be routed to wxView::OnDraw.
- @li Decide what style of interface you will use: Microsoft's MDI (multiple
- document child frames surrounded by an overall frame), SDI (a separate, unconstrained frame
- for each document), or single-window (one document open at a time, as in Windows Write).
- @li Use the appropriate wxDocParentFrame and wxDocChildFrame classes. Construct an instance
- of wxDocParentFrame in your wxApp::OnInit, and a wxDocChildFrame (if not single-window) when
- you initialize a view. Create menus using standard menu ids (such as wxID_OPEN, wxID_PRINT).
- @li Construct a single wxDocManager instance at the beginning of your wxApp::OnInit, and then
- as many wxDocTemplate instances as necessary to define relationships between documents and
- views. For a simple application, there will be just one wxDocTemplate.
-
- If you wish to implement Undo/Redo, you need to derive your own class(es) from wxCommand
- and use wxCommandProcessor::Submit instead of directly executing code. The framework will
- take care of calling Undo and Do functions as appropriate, so long as the wxID_UNDO and
- wxID_REDO menu items are defined in the view menu.
-
- Here are a few examples of the tailoring you can do to go beyond the default framework
- behaviour:
+@page overview_docview Document/View Framework
+
+Classes: wxDocument, wxView, wxDocTemplate, wxDocManager, wxDocParentFrame,
+ wxDocChildFrame, wxDocMDIParentFrame, wxDocMDIChildFrame,
+ wxCommand, wxCommandProcessor
+
+The document/view framework is found in most application frameworks, because it
+can dramatically simplify the code required to build many kinds of application.
+
+The idea is that you can model your application primarily in terms of @e documents to store data
+and provide interface-independent operations upon it, and @e views to visualise and manipulate
+the data. Documents know how to do input and output given stream objects, and views are responsible
+for taking input from physical windows and performing the manipulation on the document data.
+
+If a document's data changes, all views should be updated to reflect the change.
+The framework can provide many user-interface elements based on this model.
+
+Once you have defined your own classes and the relationships between them, the framework
+takes care of popping up file selectors, opening and closing files, asking the user to save
+modifications, routing menu commands to appropriate (possibly default) code, even
+some default print/preview functionality and support for command undo/redo.
+
+The framework is highly modular, allowing overriding and replacement of functionality
+and objects to achieve more than the default behaviour.
+
+These are the overall steps involved in creating an application based on the
+document/view framework:
+
+@li Define your own document and view classes, overriding a minimal set of
+ member functions e.g. for input/output, drawing and initialization.
+@li Define any subwindows (such as a scrolled window) that are needed for the view(s).
+ You may need to route some events to views or documents, for example OnPaint needs
+ to be routed to wxView::OnDraw.
+@li Decide what style of interface you will use: Microsoft's MDI (multiple
+ document child frames surrounded by an overall frame), SDI (a separate, unconstrained frame
+ for each document), or single-window (one document open at a time, as in Windows Write).
+@li Use the appropriate wxDocParentFrame and wxDocChildFrame classes. Construct an instance
+ of wxDocParentFrame in your wxApp::OnInit, and a wxDocChildFrame (if not single-window) when
+ you initialize a view. Create menus using standard menu ids (such as wxID_OPEN, wxID_PRINT).
+@li Construct a single wxDocManager instance at the beginning of your wxApp::OnInit, and then
+ as many wxDocTemplate instances as necessary to define relationships between documents and
+ views. For a simple application, there will be just one wxDocTemplate.
+
+If you wish to implement Undo/Redo, you need to derive your own class(es) from wxCommand
+and use wxCommandProcessor::Submit instead of directly executing code. The framework will
+take care of calling Undo and Do functions as appropriate, so long as the wxID_UNDO and
+wxID_REDO menu items are defined in the view menu.
+
+Here are a few examples of the tailoring you can do to go beyond the default framework
+behaviour:
- @li Override wxDocument::OnCreateCommandProcessor to define a different Do/Undo strategy,
- or a command history editor.
- @li Override wxView::OnCreatePrintout to create an instance of a derived wxPrintout
- class, to provide multi-page document facilities.
- @li Override wxDocManager::SelectDocumentPath to provide a different file selector.
- @li Limit the maximum number of open documents and the maximum number of undo commands.
+@li Override wxDocument::OnCreateCommandProcessor to define a different Do/Undo strategy,
+ or a command history editor.
+@li Override wxView::OnCreatePrintout to create an instance of a derived wxPrintout
+ class, to provide multi-page document facilities.
+@li Override wxDocManager::SelectDocumentPath to provide a different file selector.
+@li Limit the maximum number of open documents and the maximum number of undo commands.
- Note that to activate framework functionality, you need to use some or all of
- the wxWidgets @ref overview_docview_predefid in your menus.
+Note that to activate framework functionality, you need to use some or all of
+the wxWidgets @ref overview_docview_predefid in your menus.
- @beginWxPerlOnly
- The document/view framework is available in wxPerl. To use it,
- you will need the following statements in your application code:
+@beginWxPerlOnly
+The document/view framework is available in wxPerl. To use it,
+you will need the following statements in your application code:
- @code
- use Wx::DocView;
- use Wx ':docview'; # import constants (optional)
- @endcode
- @endWxPerlOnly
-
- @li @ref overview_docview_wxdoc
- @li @ref overview_docview_wxview
- @li @ref overview_docview_wxdoctemplate
- @li @ref overview_docview_wxdocmanager
- @li @ref overview_docview_wxcommand
- @li @ref overview_docview_wxcommandproc
- @li @ref overview_docview_filehistory
- @li @ref overview_docview_predefid
-
-
- <hr>
+@code
+use Wx::DocView;
+use Wx ':docview'; # import constants (optional)
+@endcode
+@endWxPerlOnly
+
+@li @ref overview_docview_wxdoc
+@li @ref overview_docview_wxview
+@li @ref overview_docview_wxdoctemplate
+@li @ref overview_docview_wxdocmanager
+@li @ref overview_docview_wxcommand
+@li @ref overview_docview_wxcommandproc
+@li @ref overview_docview_filehistory
+@li @ref overview_docview_predefid
+
+
+<hr>
- @section overview_docview_wxdoc wxDocument overview
-
- Class: wxDocument
-
- The wxDocument class can be used to model an application's file-based
- data. It is part of the document/view framework supported by wxWidgets,
- and cooperates with the wxView, wxDocTemplate and wxDocManager classes.
- Using this framework can save a lot of routine user-interface programming,
- since a range of menu commands -- such as open, save, save as -- are supported
- automatically.
-
- The programmer just needs to define a minimal set of classes and member functions
- for the framework to call when necessary. Data, and the means to view and edit
- the data, are explicitly separated out in this model, and the concept of multiple
- @e views onto the same data is supported.
+@section overview_docview_wxdoc wxDocument overview
+
+Class: wxDocument
+
+The wxDocument class can be used to model an application's file-based
+data. It is part of the document/view framework supported by wxWidgets,
+and cooperates with the wxView, wxDocTemplate and wxDocManager classes.
+Using this framework can save a lot of routine user-interface programming,
+since a range of menu commands -- such as open, save, save as -- are supported
+automatically.
+
+The programmer just needs to define a minimal set of classes and member functions
+for the framework to call when necessary. Data, and the means to view and edit
+the data, are explicitly separated out in this model, and the concept of multiple
+@e views onto the same data is supported.
- Note that the document/view model will suit many but not all styles of application.
- For example, it would be overkill for a simple file conversion utility, where there
- may be no call for @e views on @e documents or the ability to open, edit and save
- files. But probably the majority of applications are document-based.
+Note that the document/view model will suit many but not all styles of application.
+For example, it would be overkill for a simple file conversion utility, where there
+may be no call for @e views on @e documents or the ability to open, edit and save
+files. But probably the majority of applications are document-based.
- See the example application in @c samples/docview.
- To use the abstract wxDocument class, you need to derive a new class and override
- at least the member functions SaveObject and LoadObject. SaveObject and
- LoadObject will be called by the framework when the document needs to be saved
- or loaded.
+See the example application in @c samples/docview.
+To use the abstract wxDocument class, you need to derive a new class and override
+at least the member functions SaveObject and LoadObject. SaveObject and
+LoadObject will be called by the framework when the document needs to be saved
+or loaded.
- Use the macros DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS in order
- to allow the framework to create document objects on demand. When you create
- a wxDocTemplate object on application initialization, you
- should pass CLASSINFO(YourDocumentClass) to the wxDocTemplate constructor
- so that it knows how to create an instance of this class.
+Use the macros DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS in order
+to allow the framework to create document objects on demand. When you create
+a wxDocTemplate object on application initialization, you
+should pass CLASSINFO(YourDocumentClass) to the wxDocTemplate constructor
+so that it knows how to create an instance of this class.
- If you do not wish to use the wxWidgets method of creating document
- objects dynamically, you must override wxDocTemplate::CreateDocument
- to return an instance of the appropriate class.
+If you do not wish to use the wxWidgets method of creating document
+objects dynamically, you must override wxDocTemplate::CreateDocument
+to return an instance of the appropriate class.
- @section overview_docview_wxview wxView overview
+@section overview_docview_wxview wxView overview
- Class: wxView
+Class: wxView
- The wxView class can be used to model the viewing and editing component of
- an application's file-based data. It is part of the document/view framework
- supported by wxWidgets, and cooperates with the wxDocument, wxDocTemplate
- and wxDocManager classes.
+The wxView class can be used to model the viewing and editing component of
+an application's file-based data. It is part of the document/view framework
+supported by wxWidgets, and cooperates with the wxDocument, wxDocTemplate
+and wxDocManager classes.
- See the example application in @c samples/docview.
+See the example application in @c samples/docview.
- To use the abstract wxView class, you need to derive a new class and override
- at least the member functions OnCreate, OnDraw, OnUpdate and OnClose. You will probably
- want to respond to menu commands from the frame containing the view.
+To use the abstract wxView class, you need to derive a new class and override
+at least the member functions OnCreate, OnDraw, OnUpdate and OnClose. You will probably
+want to respond to menu commands from the frame containing the view.
- Use the macros DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS in order
- to allow the framework to create view objects on demand. When you create
- a wxDocTemplate object on application initialization, you
- should pass CLASSINFO(YourViewClass) to the wxDocTemplate constructor
- so that it knows how to create an instance of this class.
+Use the macros DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS in order
+to allow the framework to create view objects on demand. When you create
+a wxDocTemplate object on application initialization, you
+should pass CLASSINFO(YourViewClass) to the wxDocTemplate constructor
+so that it knows how to create an instance of this class.
- If you do not wish to use the wxWidgets method of creating view
- objects dynamically, you must override wxDocTemplate::CreateView
- to return an instance of the appropriate class.
+If you do not wish to use the wxWidgets method of creating view
+objects dynamically, you must override wxDocTemplate::CreateView
+to return an instance of the appropriate class.
- @section overview_docview_wxdoctemplate wxDocTemplate overview
+@section overview_docview_wxdoctemplate wxDocTemplate overview
- Class: wxDocTemplate
+Class: wxDocTemplate
- The wxDocTemplate class is used to model the relationship between a
- document class and a view class. The application creates a document
- template object for each document/view pair. The list of document
- templates managed by the wxDocManager instance is used to create
- documents and views. Each document template knows what file filters
- and default extension are appropriate for a document/view combination,
- and how to create a document or view.
+The wxDocTemplate class is used to model the relationship between a
+document class and a view class. The application creates a document
+template object for each document/view pair. The list of document
+templates managed by the wxDocManager instance is used to create
+documents and views. Each document template knows what file filters
+and default extension are appropriate for a document/view combination,
+and how to create a document or view.
- For example, you might write a small doodling application that can load
- and save lists of line segments. If you had two views of the data -- graphical,
- and a list of the segments -- then you would create one document class DoodleDocument,
- and two view classes (DoodleGraphicView and DoodleListView). You would also
- need two document templates, one for the graphical view and another for the
- list view. You would pass the same document class and default file extension to both
- document templates, but each would be passed a different view class. When
- the user clicks on the Open menu item, the file selector is displayed
- with a list of possible file filters -- one for each wxDocTemplate. Selecting
- the filter selects the wxDocTemplate, and when a file is selected, that template
- will be used for creating a document and view.
+For example, you might write a small doodling application that can load
+and save lists of line segments. If you had two views of the data -- graphical,
+and a list of the segments -- then you would create one document class DoodleDocument,
+and two view classes (DoodleGraphicView and DoodleListView). You would also
+need two document templates, one for the graphical view and another for the
+list view. You would pass the same document class and default file extension to both
+document templates, but each would be passed a different view class. When
+the user clicks on the Open menu item, the file selector is displayed
+with a list of possible file filters -- one for each wxDocTemplate. Selecting
+the filter selects the wxDocTemplate, and when a file is selected, that template
+will be used for creating a document and view.
- For the case where an application has one document type and one view type,
- a single document template is constructed, and dialogs will be appropriately
- simplified.
+For the case where an application has one document type and one view type,
+a single document template is constructed, and dialogs will be appropriately
+simplified.
- wxDocTemplate is part of the document/view framework supported by wxWidgets,
- and cooperates with the wxView, wxDocument and wxDocManager classes.
+wxDocTemplate is part of the document/view framework supported by wxWidgets,
+and cooperates with the wxView, wxDocument and wxDocManager classes.
- See the example application in @c samples/docview.
+See the example application in @c samples/docview.
- To use the wxDocTemplate class, you do not need to derive a new class.
- Just pass relevant information to the constructor including CLASSINFO(YourDocumentClass)
- and CLASSINFO(YourViewClass) to allow dynamic instance creation.
+To use the wxDocTemplate class, you do not need to derive a new class.
+Just pass relevant information to the constructor including CLASSINFO(YourDocumentClass)
+and CLASSINFO(YourViewClass) to allow dynamic instance creation.
- If you do not wish to use the wxWidgets method of creating document
- objects dynamically, you must override wxDocTemplate::CreateDocument
- and wxDocTemplate::CreateView to return instances of the appropriate class.
+If you do not wish to use the wxWidgets method of creating document
+objects dynamically, you must override wxDocTemplate::CreateDocument
+and wxDocTemplate::CreateView to return instances of the appropriate class.
- @note The document template has nothing to do with the C++ template construct.
+@note The document template has nothing to do with the C++ template construct.
- @section overview_docview_wxdocmanager wxDocManager overview
+@section overview_docview_wxdocmanager wxDocManager overview
- Class: wxDocManager
+Class: wxDocManager
- The wxDocManager class is part of the document/view framework supported by wxWidgets,
- and cooperates with the wxView, wxDocument and wxDocTemplate classes.
+The wxDocManager class is part of the document/view framework supported by wxWidgets,
+and cooperates with the wxView, wxDocument and wxDocTemplate classes.
- A wxDocManager instance coordinates documents, views and document templates.
- It keeps a list of document and template instances, and much functionality is routed
- through this object, such as providing selection and file dialogs.
- The application can use this class 'as is' or derive a class and override some members
- to extend or change the functionality.
+A wxDocManager instance coordinates documents, views and document templates.
+It keeps a list of document and template instances, and much functionality is routed
+through this object, such as providing selection and file dialogs.
+The application can use this class 'as is' or derive a class and override some members
+to extend or change the functionality.
- Create an instance of this class near the beginning of your application initialization,
- before any documents, views or templates are manipulated.
+Create an instance of this class near the beginning of your application initialization,
+before any documents, views or templates are manipulated.
- There may be multiple wxDocManager instances in an application.
- See the example application in @c samples/docview.
+There may be multiple wxDocManager instances in an application.
+See the example application in @c samples/docview.
- @section overview_docview_wxcommand wxCommand overview
+@section overview_docview_wxcommand wxCommand overview
- Classes: wxCommand, wxCommandProcessor
+Classes: wxCommand, wxCommandProcessor
- wxCommand is a base class for modelling an application command,
- which is an action usually performed by selecting a menu item, pressing
- a toolbar button or any other means provided by the application to
- change the data or view.
+wxCommand is a base class for modelling an application command,
+which is an action usually performed by selecting a menu item, pressing
+a toolbar button or any other means provided by the application to
+change the data or view.
- Instead of the application functionality being scattered around
- switch statements and functions in a way that may be hard to
- read and maintain, the functionality for a command is explicitly represented
- as an object which can be manipulated by a framework or application.
+Instead of the application functionality being scattered around
+switch statements and functions in a way that may be hard to
+read and maintain, the functionality for a command is explicitly represented
+as an object which can be manipulated by a framework or application.
- When a user interface event occurs, the application @e submits a command
- to a wxCommandProcessor object to execute and store.
+When a user interface event occurs, the application @e submits a command
+to a wxCommandProcessor object to execute and store.
- The wxWidgets document/view framework handles Undo and Redo by use of
- wxCommand and wxCommandProcessor objects. You might find further uses
- for wxCommand, such as implementing a macro facility that stores, loads
- and replays commands.
+The wxWidgets document/view framework handles Undo and Redo by use of
+wxCommand and wxCommandProcessor objects. You might find further uses
+for wxCommand, such as implementing a macro facility that stores, loads
+and replays commands.
- An application can derive a new class for every command, or, more likely, use
- one class parameterized with an integer or string command identifier.
+An application can derive a new class for every command, or, more likely, use
+one class parameterized with an integer or string command identifier.
- @section overview_docview_wxcommandproc wxCommandProcessor overview
+@section overview_docview_wxcommandproc wxCommandProcessor overview
- Classes: wxCommandProcessor, wxCommand
+Classes: wxCommandProcessor, wxCommand
- wxCommandProcessor is a class that maintains a history of wxCommand
- instances, with undo/redo functionality built-in. Derive a new class from this
- if you want different behaviour.
+wxCommandProcessor is a class that maintains a history of wxCommand
+instances, with undo/redo functionality built-in. Derive a new class from this
+if you want different behaviour.
- @section overview_docview_filehistory wxFileHistory overview
+@section overview_docview_filehistory wxFileHistory overview
- Classes: wxFileHistory, wxDocManager
+Classes: wxFileHistory, wxDocManager
- wxFileHistory encapsulates functionality to record the last few files visited, and
- to allow the user to quickly load these files using the list appended to the File menu.
- Although wxFileHistory is used by wxDocManager, it can be used independently. You may wish
- to derive from it to allow different behaviour, such as popping up a scrolling
- list of files.
+wxFileHistory encapsulates functionality to record the last few files visited, and
+to allow the user to quickly load these files using the list appended to the File menu.
+Although wxFileHistory is used by wxDocManager, it can be used independently. You may wish
+to derive from it to allow different behaviour, such as popping up a scrolling
+list of files.
- By calling wxFileHistory::UseMenu() you can associate a file menu with the file history.
- The menu will then be used for appending filenames that are added to the history.
+By calling wxFileHistory::UseMenu() you can associate a file menu with the file history.
+The menu will then be used for appending filenames that are added to the history.
- Please notice that currently if the history already contained filenames when UseMenu()
- is called (e.g. when initializing a second MDI child frame), the menu is not automatically
- initialized with the existing filenames in the history and so you need to call
- wxFileHistory::AddFilesToMenu() after UseMenu() explicitly in order to initialize the menu with
- the existing list of MRU files (otherwise an assertion failure is raised in debug builds).
+Please notice that currently if the history already contained filenames when UseMenu()
+is called (e.g. when initializing a second MDI child frame), the menu is not automatically
+initialized with the existing filenames in the history and so you need to call
+wxFileHistory::AddFilesToMenu() after UseMenu() explicitly in order to initialize the menu with
+the existing list of MRU files (otherwise an assertion failure is raised in debug builds).
- The filenames are appended using menu identifiers in the range @c wxID_FILE1 to @c wxID_FILE9.
+The filenames are appended using menu identifiers in the range @c wxID_FILE1 to @c wxID_FILE9.
- In order to respond to a file load command from one of these identifiers,
- you need to handle them using an event handler, for example:
+In order to respond to a file load command from one of these identifiers,
+you need to handle them using an event handler, for example:
- @code
- BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame)
- EVT_MENU(wxID_EXIT, wxDocParentFrame::OnExit)
- EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocParentFrame::OnMRUFile)
- END_EVENT_TABLE()
+@code
+BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame)
+ EVT_MENU(wxID_EXIT, wxDocParentFrame::OnExit)
+ EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocParentFrame::OnMRUFile)
+END_EVENT_TABLE()
- void wxDocParentFrame::OnExit(wxCommandEvent& WXUNUSED(event))
- {
- Close();
- }
+void wxDocParentFrame::OnExit(wxCommandEvent& WXUNUSED(event))
+{
+ Close();
+}
- void wxDocParentFrame::OnMRUFile(wxCommandEvent& event)
- {
- wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1));
- if (!f.empty())
- (void)m_docManager-CreateDocument(f, wxDOC_SILENT);
- }
- @endcode
+void wxDocParentFrame::OnMRUFile(wxCommandEvent& event)
+{
+ wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1));
+ if (!f.empty())
+ (void)m_docManager-CreateDocument(f, wxDOC_SILENT);
+}
+@endcode
- @section overview_docview_predefid wxWidgets predefined command identifiers
+@section overview_docview_predefid wxWidgets predefined command identifiers
- To allow communication between the application's menus and the
- document/view framework, several command identifiers are predefined for you
- to use in menus.
+To allow communication between the application's menus and the
+document/view framework, several command identifiers are predefined for you
+to use in menus.
- @verbatim
- wxID_OPEN (5000)
- wxID_CLOSE (5001)
- wxID_NEW (5002)
- wxID_SAVE (5003)
- wxID_SAVEAS (5004)
- wxID_REVERT (5005)
- wxID_EXIT (5006)
- wxID_UNDO (5007)
- wxID_REDO (5008)
- wxID_HELP (5009)
- wxID_PRINT (5010)
- wxID_PRINT_SETUP (5011)
- wxID_PREVIEW (5012)
- @endverbatim
+@verbatim
+wxID_OPEN (5000)
+wxID_CLOSE (5001)
+wxID_NEW (5002)
+wxID_SAVE (5003)
+wxID_SAVEAS (5004)
+wxID_REVERT (5005)
+wxID_EXIT (5006)
+wxID_UNDO (5007)
+wxID_REDO (5008)
+wxID_HELP (5009)
+wxID_PRINT (5010)
+wxID_PRINT_SETUP (5011)
+wxID_PREVIEW (5012)
+@endverbatim
*/
/**
- @page overview_envvars Environment Variables
+@page overview_envvars Environment Variables
- This section describes all environment variables that affect execution of
- wxWidgets programs.
+This section describes all environment variables that affect execution of
+wxWidgets programs.
- @beginDefList
- @itemdef{WXTRACE,
- (Debug build only.)
- This variable can be set to a comma-separated list of trace masks used in
- wxLogTrace calls; wxLog::AddTraceMask is called for every mask
- in the list during wxWidgets initialization.}
- @itemdef{WXPREFIX,
- (Unix only.)
- Overrides installation prefix. Normally, the prefix
- is hard-coded and is the same as the value passed to @c configure via
- the @c --prefix switch when compiling the library (typically
- @c /usr/local or @c /usr). You can set WXPREFIX if you are for example
- distributing a binary version of an application and you don't know in advance
- where it will be installed.}
- @itemdef{WXMODE,
- (wxMGL only.)
- Sets MGL video mode. The value must be in form
- @e widthx@e height-@e depth. The default is @c 640x480-16.}
- @itemdef{WXSTDERR,
- (wxMGL only.)
- Redirects stderr output to a file.}
+@beginDefList
+@itemdef{WXTRACE,
+ (Debug build only.)
+ This variable can be set to a comma-separated list of trace masks used in
+ wxLogTrace calls; wxLog::AddTraceMask is called for every mask
+ in the list during wxWidgets initialization.}
+@itemdef{WXPREFIX,
+ (Unix only.)
+ Overrides installation prefix. Normally, the prefix
+ is hard-coded and is the same as the value passed to @c configure via
+ the @c --prefix switch when compiling the library (typically
+ @c /usr/local or @c /usr). You can set WXPREFIX if you are for example
+ distributing a binary version of an application and you don't know in advance
+ where it will be installed.}
+@itemdef{WXMODE,
+ (wxMGL only.)
+ Sets MGL video mode. The value must be in form
+ @e widthx@e height-@e depth. The default is @c 640x480-16.}
+@itemdef{WXSTDERR,
+ (wxMGL only.)
+ Redirects stderr output to a file.}
*/
/**
- @page overview_exceptions C++ Exceptions
+@page overview_exceptions C++ Exceptions
- @li @ref overview_exceptions_introduction
- @li @ref overview_exceptions_strategies
- @li @ref overview_exceptions_tech
+@li @ref overview_exceptions_introduction
+@li @ref overview_exceptions_strategies
+@li @ref overview_exceptions_tech
- <hr>
+<hr>
- @section overview_exceptions_introduction Introduction
+@section overview_exceptions_introduction Introduction
- wxWidgets had been started long before the exceptions were introduced in C++ so
- it is not very surprising that it is not built around using them as some more
- modern C++ libraries are. For instance, the library doesn't throw exceptions to
- signal about the errors. Moreover, up to (and including) the version 2.4 of
- wxWidgets, even using the exceptions in the user code was dangerous because the
- library code wasn't exception-safe and so an exception propagating through it
- could result in memory and/or resource leaks, and also not very convenient.
+wxWidgets had been started long before the exceptions were introduced in C++ so
+it is not very surprising that it is not built around using them as some more
+modern C++ libraries are. For instance, the library doesn't throw exceptions to
+signal about the errors. Moreover, up to (and including) the version 2.4 of
+wxWidgets, even using the exceptions in the user code was dangerous because the
+library code wasn't exception-safe and so an exception propagating through it
+could result in memory and/or resource leaks, and also not very convenient.
- wxWidgets is exception-friendly.
- It still doesn't use the exceptions by itself but it should be now safe to use the
- exceptions in the user code and the library tries to help you with this. Please
- note that making the library exception-safe is still work in progress.
+wxWidgets is exception-friendly.
+It still doesn't use the exceptions by itself but it should be now safe to use the
+exceptions in the user code and the library tries to help you with this. Please
+note that making the library exception-safe is still work in progress.
- @section overview_exceptions_strategies Strategies for exceptions handling
+@section overview_exceptions_strategies Strategies for exceptions handling
- There are several choice for using the exceptions in wxWidgets programs. First
- of all, you may not use them at all. As stated above, the library doesn't throw
- any exceptions by itself and so you don't have to worry about exceptions at all
- unless your own code throws them. This is, of course, the simplest solution but
- may be not the best one to deal with all possible errors.
+There are several choice for using the exceptions in wxWidgets programs. First
+of all, you may not use them at all. As stated above, the library doesn't throw
+any exceptions by itself and so you don't have to worry about exceptions at all
+unless your own code throws them. This is, of course, the simplest solution but
+may be not the best one to deal with all possible errors.
- Another strategy is to use exceptions only to signal truly fatal errors. In
- this case you probably don't expect to recover from them and the default
- behaviour -- to simply terminate the program -- may be appropriate. If it is
- not, you may override wxApp::OnUnhandledException()
- in your wxApp-derived class to perform any clean up tasks. Note, however, that
- any information about the exact exception type is lost when this function is
- called, so if you need you should override wxApp::OnRun() and
- add a try/catch clause around the call of the base class version. This would
- allow you to catch any exceptions generated during the execution of the main
- event loop. To deal with the exceptions which may arise during the program
- startup and/or shutdown you should insert try/catch clauses in
- wxApp::OnInit() and/or wxApp::OnExit() as well.
+Another strategy is to use exceptions only to signal truly fatal errors. In
+this case you probably don't expect to recover from them and the default
+behaviour -- to simply terminate the program -- may be appropriate. If it is
+not, you may override wxApp::OnUnhandledException()
+in your wxApp-derived class to perform any clean up tasks. Note, however, that
+any information about the exact exception type is lost when this function is
+called, so if you need you should override wxApp::OnRun() and
+add a try/catch clause around the call of the base class version. This would
+allow you to catch any exceptions generated during the execution of the main
+event loop. To deal with the exceptions which may arise during the program
+startup and/or shutdown you should insert try/catch clauses in
+wxApp::OnInit() and/or wxApp::OnExit() as well.
- Finally, you may also want to continue running even when certain exceptions
- occur. If all of your exceptions may happen only in the event handlers of a
- single class (or only in the classes derived from it), you may centralize your
- exception handling code in wxApp::ProcessEvent
- method of this class. If this is impractical, you may also consider overriding
- the wxApp::HandleEvent() which allows you to handle
- all the exceptions thrown by any event handler.
+Finally, you may also want to continue running even when certain exceptions
+occur. If all of your exceptions may happen only in the event handlers of a
+single class (or only in the classes derived from it), you may centralize your
+exception handling code in wxApp::ProcessEvent
+method of this class. If this is impractical, you may also consider overriding
+the wxApp::HandleEvent() which allows you to handle
+all the exceptions thrown by any event handler.
- @section overview_exceptions_tech Technicalities
+@section overview_exceptions_tech Technicalities
- To use any kind of exception support in the library you need to build it
- with @c wxUSE_EXCEPTIONS set to 1. This should be the case by default but
- if it isn't, you should edit the @c include/wx/msw/setup.h file under
- Windows or run @c configure with @c --enable-exceptions argument
- under Unix.
+To use any kind of exception support in the library you need to build it
+with @c wxUSE_EXCEPTIONS set to 1. This should be the case by default but
+if it isn't, you should edit the @c include/wx/msw/setup.h file under
+Windows or run @c configure with @c --enable-exceptions argument
+under Unix.
- On the other hand, if you do not plan to use exceptions, setting this
- flag to 0 or using @c --disable-exceptions could result in a leaner and
- slightly faster library.
+On the other hand, if you do not plan to use exceptions, setting this
+flag to 0 or using @c --disable-exceptions could result in a leaner and
+slightly faster library.
- As for any other library feature, there is a sample (@c except)
- showing how to use it. Please look at its sources for further information.
+As for any other library feature, there is a sample (@c except)
+showing how to use it. Please look at its sources for further information.
*/
/**
- @page overview_file File Classes and Functions
+@page overview_file File Classes and Functions
- Classes: wxFile, wxDir, wxTempFile, wxTextFile
+Classes: wxFile, wxDir, wxTempFile, wxTextFile
- Functions: see @ref page_func_cat_file.
+Functions: see @ref page_func_cat_file.
- wxWidgets provides some functions and classes to facilitate working with files.
- As usual, the accent is put on cross-platform features which explains, for
- example, the wxTextFile class which may be used to convert
- between different types of text files (DOS/Unix/Mac).
+wxWidgets provides some functions and classes to facilitate working with files.
+As usual, the accent is put on cross-platform features which explains, for
+example, the wxTextFile class which may be used to convert
+between different types of text files (DOS/Unix/Mac).
- wxFile may be used for low-level IO. It contains all the usual functions to work
- with files (opening/closing, reading/writing, seeking, and so on) but compared with
- using standard C functions, has error checking (in case of an error a message
- is logged using wxLog facilities) and closes the file
- automatically in the destructor which may be quite convenient.
+wxFile may be used for low-level IO. It contains all the usual functions to work
+with files (opening/closing, reading/writing, seeking, and so on) but compared with
+using standard C functions, has error checking (in case of an error a message
+is logged using wxLog facilities) and closes the file
+automatically in the destructor which may be quite convenient.
- wxTempFile is a very small file designed to make replacing the files contents
- safer - see its documentation for more details.
+wxTempFile is a very small file designed to make replacing the files contents
+safer - see its documentation for more details.
- wxTextFile is a general purpose class for working with small text files on line
- by line basis. It is especially well suited for working with configuration files
- and program source files. It can be also used to work with files with "non
- native" line termination characters and write them as "native" files if needed
- (in fact, the files may be written in any format).
+wxTextFile is a general purpose class for working with small text files on line
+by line basis. It is especially well suited for working with configuration files
+and program source files. It can be also used to work with files with "non
+native" line termination characters and write them as "native" files if needed
+(in fact, the files may be written in any format).
- wxDir is a helper class for enumerating the files or subdirectories of a
- directory. It may be used to enumerate all files, only files satisfying the
- given template mask or only non-hidden files.
+wxDir is a helper class for enumerating the files or subdirectories of a
+directory. It may be used to enumerate all files, only files satisfying the
+given template mask or only non-hidden files.
*/
/**
- @page overview_fs wxFileSystem Overview
+@page overview_fs wxFileSystem Overview
- The wxHTML library uses a @b virtual file systems mechanism
- similar to the one used in Midnight Commander, Dos Navigator,
- FAR or almost any modern file manager. It allows the user to access
- data stored in archives as if they were ordinary files. On-the-fly
- generated files that exist only in memory are also supported.
+The wxHTML library uses a @b virtual file systems mechanism
+similar to the one used in Midnight Commander, Dos Navigator,
+FAR or almost any modern file manager. It allows the user to access
+data stored in archives as if they were ordinary files. On-the-fly
+generated files that exist only in memory are also supported.
- @li @ref overview_fs_classes
- @li @ref overview_fs_locations
- @li @ref overview_fs_combined
- @li @ref overview_fs_wxhtmlfs
- @li @ref overview_fs_init
+@li @ref overview_fs_classes
+@li @ref overview_fs_locations
+@li @ref overview_fs_combined
+@li @ref overview_fs_wxhtmlfs
+@li @ref overview_fs_init
- <hr>
+<hr>
- @section overview_fs_classes Classes
+@section overview_fs_classes Classes
- Three classes are used in order to provide virtual file systems mechanism:
+Three classes are used in order to provide virtual file systems mechanism:
- @li The wxFSFile class provides information
- about opened file (name, input stream, mime type and anchor).
- @li The wxFileSystem class is the interface.
- Its main methods are ChangePathTo() and OpenFile(). This class
- is most often used by the end user.
- @li The wxFileSystemHandler is the core
- of virtual file systems mechanism. You can derive your own handler and pass
- it to the VFS mechanism. You can derive your own handler and pass it to
- wxFileSystem's AddHandler() method. In the new handler you only need to
- override the OpenFile() and CanOpen() methods.
+@li The wxFSFile class provides information
+ about opened file (name, input stream, mime type and anchor).
+@li The wxFileSystem class is the interface.
+ Its main methods are ChangePathTo() and OpenFile(). This class
+ is most often used by the end user.
+@li The wxFileSystemHandler is the core
+ of virtual file systems mechanism. You can derive your own handler and pass
+ it to the VFS mechanism. You can derive your own handler and pass it to
+ wxFileSystem's AddHandler() method. In the new handler you only need to
+ override the OpenFile() and CanOpen() methods.
- @section overview_fs_locations Locations
+@section overview_fs_locations Locations
- Locations (aka filenames aka addresses) are constructed from four parts:
+Locations (aka filenames aka addresses) are constructed from four parts:
- @li @b protocol - handler can recognize if it is able to open a
- file by checking its protocol. Examples are "http", "file" or "ftp".
- @li <b>right location</b> - is the name of file within the protocol.
- In "http://www.wxwidgets.org/index.html" the right location is "//www.wxwidgets.org/index.html".
- @li @b anchor - an anchor is optional and is usually not present.
- In "index.htm#chapter2" the anchor is "chapter2".
- @li <b>left location</b> - this is usually an empty string.
- It is used by 'local' protocols such as ZIP.
- See Combined Protocols paragraph for details.
+@li @b protocol - handler can recognize if it is able to open a
+ file by checking its protocol. Examples are "http", "file" or "ftp".
+@li <b>right location</b> - is the name of file within the protocol.
+ In "http://www.wxwidgets.org/index.html" the right location is "//www.wxwidgets.org/index.html".
+@li @b anchor - an anchor is optional and is usually not present.
+ In "index.htm#chapter2" the anchor is "chapter2".
+@li <b>left location</b> - this is usually an empty string.
+ It is used by 'local' protocols such as ZIP.
+ See Combined Protocols paragraph for details.
- @section overview_fs_combined Combined Protocols
+@section overview_fs_combined Combined Protocols
- The left location precedes the protocol in the URL string.
+The left location precedes the protocol in the URL string.
- It is not used by global protocols like HTTP but it becomes handy when nesting
- protocols - for example you may want to access files in a ZIP archive:
- file:archives/cpp_doc.zip#zip:reference/fopen.htm#syntax
- In this example, the protocol is "zip", right location is
- "reference/fopen.htm", anchor is "syntax" and left location
- is "file:archives/cpp_doc.zip".
+It is not used by global protocols like HTTP but it becomes handy when nesting
+protocols - for example you may want to access files in a ZIP archive:
+file:archives/cpp_doc.zip#zip:reference/fopen.htm#syntax
+In this example, the protocol is "zip", right location is
+"reference/fopen.htm", anchor is "syntax" and left location
+is "file:archives/cpp_doc.zip".
- There are @b two protocols used in this example: "zip" and "file".
+There are @b two protocols used in this example: "zip" and "file".
- @section overview_fs_wxhtmlfs File Systems Included in wxHTML
+@section overview_fs_wxhtmlfs File Systems Included in wxHTML
- The following virtual file system handlers are part of wxWidgets so far:
+The following virtual file system handlers are part of wxWidgets so far:
- @li @b wxArchiveFSHandler:
- A handler for archives such as zip
- and tar. Include file is wx/fs_arc.h. URLs examples:
- "archive.zip#zip:filename", "archive.tar.gz#gzip:#tar:filename".
- @li @b wxFilterFSHandler:
- A handler for compression schemes such
- as gzip. Header is wx/fs_filter.h. URLs are in the form, e.g.:
- "document.ps.gz#gzip:".
- @li @b wxInternetFSHandler:
- A handler for accessing documents
- via HTTP or FTP protocols. Include file is wx/fs_inet.h.
- @li @b wxMemoryFSHandler:
- This handler allows you to access
- data stored in memory (such as bitmaps) as if they were regular files.
- See wxMemoryFSHandler for details.
- Include file is wx/fs_mem.h. URL is prefixed with memory:, e.g.
- "memory:myfile.htm"
+@li @b wxArchiveFSHandler:
+ A handler for archives such as zip
+ and tar. Include file is wx/fs_arc.h. URLs examples:
+ "archive.zip#zip:filename", "archive.tar.gz#gzip:#tar:filename".
+@li @b wxFilterFSHandler:
+ A handler for compression schemes such
+ as gzip. Header is wx/fs_filter.h. URLs are in the form, e.g.:
+ "document.ps.gz#gzip:".
+@li @b wxInternetFSHandler:
+ A handler for accessing documents
+ via HTTP or FTP protocols. Include file is wx/fs_inet.h.
+@li @b wxMemoryFSHandler:
+ This handler allows you to access
+ data stored in memory (such as bitmaps) as if they were regular files.
+ See wxMemoryFSHandler for details.
+ Include file is wx/fs_mem.h. URL is prefixed with memory:, e.g.
+ "memory:myfile.htm"
- In addition, wxFileSystem itself can access local files.
+In addition, wxFileSystem itself can access local files.
- @section overview_fs_init Initializing file system handlers
+@section overview_fs_init Initializing file system handlers
- Use wxFileSystem::AddHandler to initialize a handler, for example:
+Use wxFileSystem::AddHandler to initialize a handler, for example:
- @code
- #include <wx/fs_mem.h>
+@code
+#include <wx/fs_mem.h>
- ...
+...
- bool MyApp::OnInit()
- {
- wxFileSystem::AddHandler(new wxMemoryFSHandler);
- ...
- }
- @endcode
+bool MyApp::OnInit()
+{
+ wxFileSystem::AddHandler(new wxMemoryFSHandler);
+...
+}
+@endcode
*/
/**
- @page overview_font wxFont Overview
-
- Class: wxFont, wxFontDialog
-
- @li @ref overview_font_intro
- @li @ref overview_font_nativeinfo
-
- <hr>
-
-
- @section overview_font_intro Introduction
-
- A font is an object which determines the appearance of text, primarily
- when drawing text to a window or device context. A font is determined by
- the following parameters (not all of them have to be specified, of course):
-
- @beginDefList
- @itemdef{Point size, This is the standard way of referring to text size.}
- @itemdef{Family,
- Supported families are:
- @b wxDEFAULT, @b wxDECORATIVE, @b wxROMAN, @b wxSCRIPT, @b wxSWISS, @b wxMODERN.
- @b wxMODERN is a fixed pitch font; the others are either fixed or variable pitch.}
- @itemdef{Style, The value can be @b wxNORMAL, @b wxSLANT or @b wxITALIC.}
- @itemdef{Weight, The value can be @b wxNORMAL, @b wxLIGHT or @b wxBOLD.}
- @itemdef{Underlining, The value can be @true or @false.}
- @itemdef{Face name,
- An optional string specifying the actual typeface to be used. If @NULL,
- a default typeface will chosen based on the family.}
- @itemdef{Encoding,
- The font encoding (see @b wxFONTENCODING_XXX
- constants and the @ref overview_fontencoding for more details)}
- @endDefList
-
- Specifying a family, rather than a specific typeface name, ensures a degree of
- portability across platforms because a suitable font will be chosen for the
- given font family, however it doesn't allow to choose a font precisely as the
- parameters above don't suffice, in general, to identify all the available fonts
- and this is where using the native font descriptions may be helpful - see
- below.
-
- Under Windows, the face name can be one of the installed fonts on the user's
- system. Since the choice of fonts differs from system to system, either choose
- standard Windows fonts, or if allowing the user to specify a face name, store
- the family name with any file that might be transported to a different Windows
- machine or other platform.
-
- @note There is currently a difference between the appearance
- of fonts on the two platforms, if the mapping mode is anything other than
- wxMM_TEXT. Under X, font size is always specified in points. Under MS
- Windows, the unit for text is points but the text is scaled according to the
- current mapping mode. However, user scaling on a device context will also
- scale fonts under both environments.
-
-
-
- @section overview_font_nativeinfo Native font information
-
- An alternative way of choosing fonts is to use the native font description.
- This is the only acceptable solution if the user is allowed to choose the font
- using the wxFontDialog because the selected font cannot
- be described using only the family name and so, if only family name is stored
- permanently, the user would almost surely see a different font in the program
- later.
-
- Instead, you should store the value returned by wxFont::GetNativeFontInfoDesc and pass
- it to wxFont::SetNativeFontInfo later to recreate exactly the same font.
-
- Note that the contents of this string depends on the platform and shouldn't be
- used for any other purpose (in particular, it is not meant to be shown to the
- user). Also please note that although the native font information is currently
- implemented for Windows and Unix (GTK+ and Motif) ports only, all the methods
- are available for all the ports and should be used to make your program work
- correctly when they are implemented later.
+@page overview_font wxFont Overview
+
+Class: wxFont, wxFontDialog
+
+@li @ref overview_font_intro
+@li @ref overview_font_nativeinfo
+
+<hr>
+
+
+@section overview_font_intro Introduction
+
+A font is an object which determines the appearance of text, primarily
+when drawing text to a window or device context. A font is determined by
+the following parameters (not all of them have to be specified, of course):
+
+@beginDefList
+@itemdef{Point size, This is the standard way of referring to text size.}
+@itemdef{Family,
+ Supported families are:
+ @b wxDEFAULT, @b wxDECORATIVE, @b wxROMAN, @b wxSCRIPT, @b wxSWISS, @b wxMODERN.
+ @b wxMODERN is a fixed pitch font; the others are either fixed or variable pitch.}
+@itemdef{Style, The value can be @b wxNORMAL, @b wxSLANT or @b wxITALIC.}
+@itemdef{Weight, The value can be @b wxNORMAL, @b wxLIGHT or @b wxBOLD.}
+@itemdef{Underlining, The value can be @true or @false.}
+@itemdef{Face name,
+ An optional string specifying the actual typeface to be used. If @NULL,
+ a default typeface will chosen based on the family.}
+@itemdef{Encoding,
+ The font encoding (see @b wxFONTENCODING_XXX
+ constants and the @ref overview_fontencoding for more details)}
+@endDefList
+
+Specifying a family, rather than a specific typeface name, ensures a degree of
+portability across platforms because a suitable font will be chosen for the
+given font family, however it doesn't allow to choose a font precisely as the
+parameters above don't suffice, in general, to identify all the available fonts
+and this is where using the native font descriptions may be helpful - see
+below.
+
+Under Windows, the face name can be one of the installed fonts on the user's
+system. Since the choice of fonts differs from system to system, either choose
+standard Windows fonts, or if allowing the user to specify a face name, store
+the family name with any file that might be transported to a different Windows
+machine or other platform.
+
+@note There is currently a difference between the appearance
+ of fonts on the two platforms, if the mapping mode is anything other than
+ wxMM_TEXT. Under X, font size is always specified in points. Under MS
+ Windows, the unit for text is points but the text is scaled according to the
+ current mapping mode. However, user scaling on a device context will also
+ scale fonts under both environments.
+
+
+
+@section overview_font_nativeinfo Native font information
+
+An alternative way of choosing fonts is to use the native font description.
+This is the only acceptable solution if the user is allowed to choose the font
+using the wxFontDialog because the selected font cannot
+be described using only the family name and so, if only family name is stored
+permanently, the user would almost surely see a different font in the program
+later.
+
+Instead, you should store the value returned by wxFont::GetNativeFontInfoDesc and pass
+it to wxFont::SetNativeFontInfo later to recreate exactly the same font.
+
+Note that the contents of this string depends on the platform and shouldn't be
+used for any other purpose (in particular, it is not meant to be shown to the
+user). Also please note that although the native font information is currently
+implemented for Windows and Unix (GTK+ and Motif) ports only, all the methods
+are available for all the ports and should be used to make your program work
+correctly when they are implemented later.
*/
/**
- @page overview_grid wxGrid Overview
+@page overview_grid wxGrid Overview
- Classes: wxGrid
+Classes: wxGrid
- @li @ref overview_grid_intro
- @li @ref overview_grid_simpleexample
- @li @ref overview_grid_complexexample
- @li @ref overview_grid_classrelations
- @li @ref overview_grid_keyboardmouse
+@li @ref overview_grid_intro
+@li @ref overview_grid_simpleexample
+@li @ref overview_grid_complexexample
+@li @ref overview_grid_classrelations
+@li @ref overview_grid_keyboardmouse
- <hr>
+<hr>
- @section overview_grid_intro Introduction
+@section overview_grid_intro Introduction
- wxGrid and its related classes are used for displaying and editing tabular data.
+wxGrid and its related classes are used for displaying and editing tabular data.
- @section overview_grid_simpleexample Getting started: a simple example
+@section overview_grid_simpleexample Getting started: a simple example
- For simple applications you need only refer to the wxGrid class in your
- code. This example shows how you might create a grid in a frame or
- dialog constructor and illustrates some of the formatting functions.
+For simple applications you need only refer to the wxGrid class in your
+code. This example shows how you might create a grid in a frame or
+dialog constructor and illustrates some of the formatting functions.
- @code
- // Create a wxGrid object
+@code
+ // Create a wxGrid object
- grid = new wxGrid( this,
+ grid = new wxGrid( this,
-1,
wxPoint( 0, 0 ),
wxSize( 400, 300 ) );
- // Then we call CreateGrid to set the dimensions of the grid
- // (100 rows and 10 columns in this example)
- grid->CreateGrid( 100, 10 );
+ // Then we call CreateGrid to set the dimensions of the grid
+ // (100 rows and 10 columns in this example)
+ grid->CreateGrid( 100, 10 );
- // We can set the sizes of individual rows and columns
- // in pixels
- grid->SetRowSize( 0, 60 );
- grid->SetColSize( 0, 120 );
+ // We can set the sizes of individual rows and columns
+ // in pixels
+ grid->SetRowSize( 0, 60 );
+ grid->SetColSize( 0, 120 );
- // And set grid cell contents as strings
- grid->SetCellValue( 0, 0, "wxGrid is good" );
+ // And set grid cell contents as strings
+ grid->SetCellValue( 0, 0, "wxGrid is good" );
- // We can specify that some cells are read->only
- grid->SetCellValue( 0, 3, "This is read->only" );
- grid->SetReadOnly( 0, 3 );
+ // We can specify that some cells are read->only
+ grid->SetCellValue( 0, 3, "This is read->only" );
+ grid->SetReadOnly( 0, 3 );
- // Colours can be specified for grid cell contents
- grid->SetCellValue(3, 3, "green on grey");
- grid->SetCellTextColour(3, 3, *wxGREEN);
- grid->SetCellBackgroundColour(3, 3, *wxLIGHT_GREY);
+ // Colours can be specified for grid cell contents
+ grid->SetCellValue(3, 3, "green on grey");
+ grid->SetCellTextColour(3, 3, *wxGREEN);
+ grid->SetCellBackgroundColour(3, 3, *wxLIGHT_GREY);
- // We can specify the some cells will store numeric
- // values rather than strings. Here we set grid column 5
- // to hold floating point values displayed with width of 6
- // and precision of 2
- grid->SetColFormatFloat(5, 6, 2);
- grid->SetCellValue(0, 6, "3.1415");
- @endcode
+ // We can specify the some cells will store numeric
+ // values rather than strings. Here we set grid column 5
+ // to hold floating point values displayed with width of 6
+ // and precision of 2
+ grid->SetColFormatFloat(5, 6, 2);
+ grid->SetCellValue(0, 6, "3.1415");
+@endcode
- @section overview_grid_complexexample A more complex example
+@section overview_grid_complexexample A more complex example
- Yet to be written
+@todo Yet to be written
- @section overview_grid_classrelations How the wxGrid classes relate to each other
+@section overview_grid_classrelations How the wxGrid classes relate to each other
- Yet to be written
+@todo Yet to be written
- @section overview_grid_keyboardmouse Keyboard and mouse actions
+@section overview_grid_keyboardmouse Keyboard and mouse actions
- Yet to be written
+@todo Yet to be written
*/
/**
- @page overview_helloworld Hello World Example
-
- Many people have requested a mini-sample to be published here
- so that some quick judgment concerning syntax
- and basic principles can be made, so here we go.
-
- First, you have to include wxWidgets' header files, of course. This can
- be done on a file by file basis (such as <tt>@#include "wx/window.h"</tt>)
- or using one global include (<tt>@#include "wx/wx.h"</tt>). This is
- also useful on platforms which support precompiled headers such
- as all major compilers on the Windows platform and GCC on Unix platforms.
-
- @code
- //
- // file name: hworld.cpp
- //
- // purpose: wxWidgets "Hello world"
- //
-
- // For compilers that support precompilation, includes "wx/wx.h".
- #include "wx/wxprec.h"
-
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
-
- #ifndef WX_PRECOMP
- #include "wx/wx.h"
- #endif
- @endcode
-
- Practically every app should define a new class derived from wxApp.
- By overriding wxApp's OnInit() the program can be initialized,
- e.g. by creating a new main window.
-
- @code
- class MyApp: public wxApp
- {
- virtual bool OnInit();
- };
- @endcode
-
- The main window is created by deriving a class from wxFrame and
- giving it a menu and a status bar in its constructor. Also, any class
- that wishes to respond to any "event" (such as mouse clicks or
- messages from the menu or a button) must declare an event table
- using the macro below.
-
- Finally, the way to react to such events must be done in "handlers".
- In our sample, we react to two menu items, one for "Quit" and one for
- displaying an "About" window. These handlers should not be virtual.
-
- @code
- class MyFrame: public wxFrame
- {
- public:
- MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
-
- void OnQuit(wxCommandEvent& event);
- void OnAbout(wxCommandEvent& event);
-
- private:
- DECLARE_EVENT_TABLE()
- };
- @endcode
-
- In order to be able to react to a menu command, it must be given a unique
- identifier such as a const or an enum.
-
- @code
- enum
- {
- ID_Quit = 1,
- ID_About,
- };
- @endcode
-
- We then proceed to actually implement an event table in which the events
- are routed to their respective handler functions in the class MyFrame.
-
- There are predefined macros for routing all common events, ranging from
- the selection of a list box entry to a resize event when a user resizes
- a window on the screen. If -1 is given as the ID, the given handler will be
- invoked for any event of the specified type, so that you could add just
- one entry in the event table for all menu commands or all button commands etc.
-
- The origin of the event can still be distinguished in the event handler as
- the (only) parameter in an event handler is a reference to a wxEvent object,
- which holds various information about the event (such as the ID of and a
- pointer to the class, which emitted the event).
-
- @code
- BEGIN_EVENT_TABLE(MyFrame, wxFrame)
- EVT_MENU(ID_Quit, MyFrame::OnQuit)
- EVT_MENU(ID_About, MyFrame::OnAbout)
- END_EVENT_TABLE()
- @endcode
-
- As in all programs there must be a "main" function. Under wxWidgets main is implemented
- using this macro, which creates an application instance and starts the program.
-
- @code
- IMPLEMENT_APP(MyApp)
- @endcode
-
- As mentioned above, wxApp::OnInit() is called upon startup and should be
- used to initialize the program, maybe showing a "splash screen" and creating
- the main window (or several). The frame should get a title bar text ("Hello World")
- and a position and start-up size. One frame can also be declared to be the
- top window. Returning @true indicates a successful initialization.
-
- @code
- bool MyApp::OnInit()
- {
- MyFrame *frame = new MyFrame( "Hello World", wxPoint(50,50), wxSize(450,340) );
- frame->Show( true );
- SetTopWindow( frame );
- return true;
- }
- @endcode
-
- In the constructor of the main window (or later on) we create a menu with two menu
- items as well as a status bar to be shown at the bottom of the main window. Both have
- to be "announced" to the frame with respective calls.
-
- @code
- MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
+@page overview_helloworld Hello World Example
+
+Many people have requested a mini-sample to be published here
+so that some quick judgment concerning syntax
+and basic principles can be made, so here we go.
+
+First, you have to include wxWidgets' header files, of course. This can
+be done on a file by file basis (such as <tt>@#include "wx/window.h"</tt>)
+or using one global include (<tt>@#include "wx/wx.h"</tt>). This is
+also useful on platforms which support precompiled headers such
+as all major compilers on the Windows platform and GCC on Unix platforms.
+
+@code
+//
+// file name: hworld.cpp
+//
+// purpose: wxWidgets "Hello world"
+//
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+@endcode
+
+Practically every app should define a new class derived from wxApp.
+By overriding wxApp's OnInit() the program can be initialized,
+e.g. by creating a new main window.
+
+@code
+class MyApp: public wxApp
+{
+ virtual bool OnInit();
+};
+@endcode
+
+The main window is created by deriving a class from wxFrame and
+giving it a menu and a status bar in its constructor. Also, any class
+that wishes to respond to any "event" (such as mouse clicks or
+messages from the menu or a button) must declare an event table
+using the macro below.
+
+Finally, the way to react to such events must be done in "handlers".
+In our sample, we react to two menu items, one for "Quit" and one for
+displaying an "About" window. These handlers should not be virtual.
+
+@code
+class MyFrame: public wxFrame
+{
+public:
+ MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
+
+ void OnQuit(wxCommandEvent& event);
+ void OnAbout(wxCommandEvent& event);
+
+private:
+ DECLARE_EVENT_TABLE()
+};
+@endcode
+
+In order to be able to react to a menu command, it must be given a unique
+identifier such as a const or an enum.
+
+@code
+enum
+{
+ ID_Quit = 1,
+ ID_About,
+};
+@endcode
+
+We then proceed to actually implement an event table in which the events
+are routed to their respective handler functions in the class MyFrame.
+
+There are predefined macros for routing all common events, ranging from
+the selection of a list box entry to a resize event when a user resizes
+a window on the screen. If -1 is given as the ID, the given handler will be
+invoked for any event of the specified type, so that you could add just
+one entry in the event table for all menu commands or all button commands etc.
+
+The origin of the event can still be distinguished in the event handler as
+the (only) parameter in an event handler is a reference to a wxEvent object,
+which holds various information about the event (such as the ID of and a
+pointer to the class, which emitted the event).
+
+@code
+BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_MENU(ID_Quit, MyFrame::OnQuit)
+ EVT_MENU(ID_About, MyFrame::OnAbout)
+END_EVENT_TABLE()
+@endcode
+
+As in all programs there must be a "main" function. Under wxWidgets main is implemented
+using this macro, which creates an application instance and starts the program.
+
+@code
+IMPLEMENT_APP(MyApp)
+@endcode
+
+As mentioned above, wxApp::OnInit() is called upon startup and should be
+used to initialize the program, maybe showing a "splash screen" and creating
+the main window (or several). The frame should get a title bar text ("Hello World")
+and a position and start-up size. One frame can also be declared to be the
+top window. Returning @true indicates a successful initialization.
+
+@code
+bool MyApp::OnInit()
+{
+ MyFrame *frame = new MyFrame( "Hello World", wxPoint(50,50), wxSize(450,340) );
+ frame->Show( true );
+ SetTopWindow( frame );
+ return true;
+}
+@endcode
+
+In the constructor of the main window (or later on) we create a menu with two menu
+items as well as a status bar to be shown at the bottom of the main window. Both have
+to be "announced" to the frame with respective calls.
+
+@code
+MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
- {
- wxMenu *menuFile = new wxMenu;
-
- menuFile->Append( ID_About, "" );
- menuFile->AppendSeparator();
- menuFile->Append( ID_Quit, "E" );
-
- wxMenuBar *menuBar = new wxMenuBar;
- menuBar->Append( menuFile, "" );
-
- SetMenuBar( menuBar );
-
- CreateStatusBar();
- SetStatusText( "Welcome to wxWidgets!" );
- }
- @endcode
-
- Here are the actual event handlers. MyFrame::OnQuit() closes the main window
- by calling Close(). The parameter @true indicates that other windows have no veto
- power such as after asking "Do you really want to close?". If there is no other
- main window left, the application will quit.
-
- @code
- void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
- {
- Close( true );
- }
- @endcode
-
- MyFrame::OnAbout() will display a small window with some text in it. In this
- case a typical "About" window with information about the program.
-
- @code
- void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
- {
- wxMessageBox( "This is a wxWidgets' Hello world sample",
- "About Hello World", wxOK | wxICON_INFORMATION );
- }
- @endcode
+{
+ wxMenu *menuFile = new wxMenu;
+
+ menuFile->Append( ID_About, "" );
+ menuFile->AppendSeparator();
+ menuFile->Append( ID_Quit, "E" );
+
+ wxMenuBar *menuBar = new wxMenuBar;
+ menuBar->Append( menuFile, "" );
+
+ SetMenuBar( menuBar );
+
+ CreateStatusBar();
+ SetStatusText( "Welcome to wxWidgets!" );
+}
+@endcode
+
+Here are the actual event handlers. MyFrame::OnQuit() closes the main window
+by calling Close(). The parameter @true indicates that other windows have no veto
+power such as after asking "Do you really want to close?". If there is no other
+main window left, the application will quit.
+
+@code
+void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
+{
+ Close( true );
+}
+@endcode
+
+MyFrame::OnAbout() will display a small window with some text in it. In this
+case a typical "About" window with information about the program.
+
+@code
+void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
+{
+ wxMessageBox( "This is a wxWidgets' Hello world sample",
+ "About Hello World", wxOK | wxICON_INFORMATION );
+}
+@endcode
*/
/**
- @page overview_html wxHTML Overview
+@page overview_html wxHTML Overview
- The wxHTML library provides classes for parsing and displaying HTML.
- It is not intended to be a high-end HTML browser. If you are looking for
- something like that try <http://www.mozilla.org/>.
+The wxHTML library provides classes for parsing and displaying HTML.
+It is not intended to be a high-end HTML browser. If you are looking for
+something like that try <http://www.mozilla.org/>.
- wxHTML can be used as a generic rich text viewer - for example to display
- a nice About Box (like those of GNOME apps) or to display the result of
- database searching. There is a wxFileSystem class which allows you to use
- your own virtual file systems.
+wxHTML can be used as a generic rich text viewer - for example to display
+a nice About Box (like those of GNOME apps) or to display the result of
+database searching. There is a wxFileSystem class which allows you to use
+your own virtual file systems.
- wxHtmlWindow supports tag handlers. This means that you can easily
- extend wxHtml library with new, unsupported tags. Not only that,
- you can even use your own application-specific tags!
+wxHtmlWindow supports tag handlers. This means that you can easily
+extend wxHtml library with new, unsupported tags. Not only that,
+you can even use your own application-specific tags!
- See @c src/html/m_*.cpp files for details.
+See @c src/html/m_*.cpp files for details.
- There is a generic wxHtmlParser class, independent of wxHtmlWindow.
+There is a generic wxHtmlParser class, independent of wxHtmlWindow.
- @li @ref overview_html_quickstart
- @li @ref overview_html_printing
- @li @ref overview_html_helpformats
- @li @ref overview_html_filters
- @li @ref overview_html_cells
- @li @ref overview_html_handlers
- @li @ref overview_html_supptags
+@li @ref overview_html_quickstart
+@li @ref overview_html_printing
+@li @ref overview_html_helpformats
+@li @ref overview_html_filters
+@li @ref overview_html_cells
+@li @ref overview_html_handlers
+@li @ref overview_html_supptags
- <hr>
+<hr>
- @section overview_html_quickstart wxHTML quick start
+@section overview_html_quickstart wxHTML quick start
- @subsection overview_html_quickstart_disphtml Displaying HTML
+@subsection overview_html_quickstart_disphtml Displaying HTML
- First of all, you must include @c wx/wxhtml.h.
+First of all, you must include @c wx/wxhtml.h.
- Class wxHtmlWindow (derived from wxScrolledWindow) is used to display HTML documents.
+Class wxHtmlWindow (derived from wxScrolledWindow) is used to display HTML documents.
- It has two important methods: wxHtmlWindow::LoadPage and wxHtmlWindow::SetPage.
- LoadPage loads and displays HTML file while SetPage displays directly the
- passed @b string. See the example:
+It has two important methods: wxHtmlWindow::LoadPage and wxHtmlWindow::SetPage.
+LoadPage loads and displays HTML file while SetPage displays directly the
+passed @b string. See the example:
- @code
- mywin -> LoadPage("test.htm");
- mywin -> SetPage("htmlbody"
- "h1Error/h1"
- "Some error occurred :-H)"
- "/body/hmtl");
- @endcode
+@code
+ mywin -> LoadPage("test.htm");
+ mywin -> SetPage("htmlbody"
+ "h1Error/h1"
+ "Some error occurred :-H)"
+ "/body/hmtl");
+@endcode
- @subsection overview_html_quickstart_disphelp Displaying Help
+@subsection overview_html_quickstart_disphelp Displaying Help
- See wxHtmlHelpController.
+See wxHtmlHelpController.
- @subsection overview_html_quickstart_settingup Setting up wxHtmlWindow
+@subsection overview_html_quickstart_settingup Setting up wxHtmlWindow
- Because wxHtmlWindow is derived from wxScrolledWindow and not from
- wxFrame, it doesn't have visible frame. But the user usually wants to see
- the title of HTML page displayed somewhere and the frame's titlebar is
- the ideal place for it.
+Because wxHtmlWindow is derived from wxScrolledWindow and not from
+wxFrame, it doesn't have visible frame. But the user usually wants to see
+the title of HTML page displayed somewhere and the frame's titlebar is
+the ideal place for it.
- wxHtmlWindow provides 2 methods in order to handle this:
- wxHtmlWindow::SetRelatedFrame and wxHtmlWindow::SetRelatedStatusBar.
- See the example:
+wxHtmlWindow provides 2 methods in order to handle this:
+wxHtmlWindow::SetRelatedFrame and wxHtmlWindow::SetRelatedStatusBar.
+See the example:
- @code
- html = new wxHtmlWindow(this);
- html -> SetRelatedFrame(this, "HTML : %%s");
- html -> SetRelatedStatusBar(0);
- @endcode
+@code
+ html = new wxHtmlWindow(this);
+ html -> SetRelatedFrame(this, "HTML : %%s");
+ html -> SetRelatedStatusBar(0);
+@endcode
- The first command associates the HTML object with its parent frame
- (this points to wxFrame object there) and sets the format of the title.
- Page title "Hello, world!" will be displayed as "HTML : Hello, world!"
- in this example.
+The first command associates the HTML object with its parent frame
+(this points to wxFrame object there) and sets the format of the title.
+Page title "Hello, world!" will be displayed as "HTML : Hello, world!"
+in this example.
- The second command sets which frame's status bar should be used to display
- browser's messages (such as "Loading..." or "Done" or hypertext links).
+The second command sets which frame's status bar should be used to display
+browser's messages (such as "Loading..." or "Done" or hypertext links).
- @subsection overview_html_quickstart_custom Customizing wxHtmlWindow
+@subsection overview_html_quickstart_custom Customizing wxHtmlWindow
- You can customize wxHtmlWindow by setting font size, font face and
- borders (space between border of window and displayed HTML). Related functions:
+You can customize wxHtmlWindow by setting font size, font face and
+borders (space between border of window and displayed HTML). Related functions:
- @li wxHtmlWindow::SetFonts
- @li wxHtmlWindow::SetBorders
- @li wxHtmlWindow::ReadCustomization
- @li wxHtmlWindow::WriteCustomization
+@li wxHtmlWindow::SetFonts
+@li wxHtmlWindow::SetBorders
+@li wxHtmlWindow::ReadCustomization
+@li wxHtmlWindow::WriteCustomization
- The last two functions are used to store user customization info wxConfig stuff
- (for example in the registry under Windows, or in a dotfile under Unix).
+The last two functions are used to store user customization info wxConfig stuff
+(for example in the registry under Windows, or in a dotfile under Unix).
- @section overview_html_printing HTML Printing
+@section overview_html_printing HTML Printing
- The wxHTML library provides printing facilities with several levels of complexity.
- The easiest way to print an HTML document is to use the wxHtmlEasyPrinting class.
+The wxHTML library provides printing facilities with several levels of complexity.
+The easiest way to print an HTML document is to use the wxHtmlEasyPrinting class.
- It lets you print HTML documents with only one command and you don't have to worry
- about deriving from the wxPrintout class at all. It is only a simple wrapper around the
- wxHtmlPrintout, normal wxWidgets printout class.
+It lets you print HTML documents with only one command and you don't have to worry
+about deriving from the wxPrintout class at all. It is only a simple wrapper around the
+wxHtmlPrintout, normal wxWidgets printout class.
- And finally there is the low level class wxHtmlDCRenderer which you can use to
- render HTML into a rectangular area on any DC.
+And finally there is the low level class wxHtmlDCRenderer which you can use to
+render HTML into a rectangular area on any DC.
- It supports rendering into multiple rectangles with the same
- width. (The most common use of this is placing one rectangle on each page or
- printing into two columns.)
+It supports rendering into multiple rectangles with the same
+width. (The most common use of this is placing one rectangle on each page or
+printing into two columns.)
- @section overview_html_helpformats Help Files Format
+@section overview_html_helpformats Help Files Format
- wxHTML library uses a reduced version of MS HTML Workshop format.
- Tex2RTF can produce these files when generating HTML, if you set
- @b htmlWorkshopFiles to @true in your tex2rtf.ini file.
- (See wxHtmlHelpController for help controller description.)
+wxHTML library uses a reduced version of MS HTML Workshop format.
+Tex2RTF can produce these files when generating HTML, if you set
+@b htmlWorkshopFiles to @true in your tex2rtf.ini file.
+(See wxHtmlHelpController for help controller description.)
- A @b book consists of three files: the header file, the contents file
- and the index file.
+A @b book consists of three files: the header file, the contents file
+and the index file.
- You can make a regular zip archive of these files, plus the HTML and any
- image files, for wxHTML (or helpview) to read; and the @c .zip file can
- optionally be renamed to @c .htb.
+You can make a regular zip archive of these files, plus the HTML and any
+image files, for wxHTML (or helpview) to read; and the @c .zip file can
+optionally be renamed to @c .htb.
- @subsection overview_html_helpformats_hhp Header file (.hhp)
+@subsection overview_html_helpformats_hhp Header file (.hhp)
- The header file must contain these lines (and may contain additional lines
- which are ignored):
+The header file must contain these lines (and may contain additional lines
+which are ignored):
- @code
- Contents file=filename.hhc
- Index file=filename.hhk
- Title=title of your book
- Default topic=default page to be displayed.htm
- @endcode
+@code
+Contents file=filename.hhc
+Index file=filename.hhk
+Title=title of your book
+Default topic=default page to be displayed.htm
+@endcode
- All filenames (including the Default topic) are relative to the
- location of the @c .hhp file.
+All filenames (including the Default topic) are relative to the
+location of the @c .hhp file.
- @note For localization, in addition the @c .hhp file may contain the line
- @code
+@note For localization, in addition the @c .hhp file may contain the line
+ @code
Charset=rfc_charset
- @endcode
- which specifies what charset (e.g. "iso8859_1") was used in contents
- and index files. Please note that this line is incompatible with
- MS HTML Help Workshop and it would either silently remove it or complain
- with some error. See also @ref overview_nonenglish.
+ @endcode
+ which specifies what charset (e.g. "iso8859_1") was used in contents
+ and index files. Please note that this line is incompatible with
+ MS HTML Help Workshop and it would either silently remove it or complain
+ with some error. See also @ref overview_nonenglish.
- @subsection overview_html_helpformats_hhc Contents file (.hhc)
+@subsection overview_html_helpformats_hhc Contents file (.hhc)
- Contents file has HTML syntax and it can be parsed by regular HTML parser.
- It contains exactly one list (@c <ul>....@c </ul> statement):
+Contents file has HTML syntax and it can be parsed by regular HTML parser.
+It contains exactly one list (@c <ul>....@c </ul> statement):
- @code
- <ul>
+@code
+<ul>
- <li><object type="text/sitemap">
+<li><object type="text/sitemap">
<param name="Name" value="@topic name@">
<param name="ID" value=@numeric_id@>
<param name="Local" value="@filename.htm@">
</object>
- <li><object type="text/sitemap">
+<li><object type="text/sitemap">
<param name="Name" value="@topic name@">
<param name="ID" value=@numeric_id@>
<param name="Local" value="@filename.htm@">
</object>
- ...
- </ul>
- @endcode
+...
+</ul>
+@endcode
- You can modify value attributes of param tags.
- The <em>topic name</em> is name of chapter/topic as is displayed in
- contents, <em>filename.htm</em> is the HTML page name (relative to the @c .hhp file)
- and <em>numeric_id</em> is optional - it is used only when you use wxHtmlHelpController::Display(int).
+You can modify value attributes of param tags.
+The <em>topic name</em> is name of chapter/topic as is displayed in
+contents, <em>filename.htm</em> is the HTML page name (relative to the @c .hhp file)
+and <em>numeric_id</em> is optional - it is used only when you use wxHtmlHelpController::Display(int).
- Items in the list may be nested - one @c <li> statement may contain a @c <ul> sub-statement:
+Items in the list may be nested - one @c <li> statement may contain a @c <ul> sub-statement:
- @code
- <ul>
+@code
+<ul>
- <li><object type="text/sitemap">
- <param name="Name" value="Top node">
- <param name="Local" value="top.htm">
- </object>
- <ul>
- <li><object type="text/sitemap">
- <param name="Name" value="subnode in topnode">
- <param name="Local" value="subnode1.htm">
- </object>
- ...
- </ul>
+<li><object type="text/sitemap">
+ <param name="Name" value="Top node">
+ <param name="Local" value="top.htm">
+ </object>
+ <ul>
+ <li><object type="text/sitemap">
+ <param name="Name" value="subnode in topnode">
+ <param name="Local" value="subnode1.htm">
+ </object>
+ ...
+ </ul>
- <li><object type="text/sitemap">
- <param name="Name" value="Another Top">
- <param name="Local" value="top2.htm">
- </object>
- ...
+<li><object type="text/sitemap">
+ <param name="Name" value="Another Top">
+ <param name="Local" value="top2.htm">
+ </object>
+...
- </ul>
- @endcode
+</ul>
+@endcode
- @subsection overview_html_helpformats_hhk Index file (.hhk)
+@subsection overview_html_helpformats_hhk Index file (.hhk)
- Index files have same format as contents file except that ID params are ignored
- and sublists are @b not allowed.
+Index files have same format as contents file except that ID params are ignored
+and sublists are @b not allowed.
- @section overview_html_filters Input Filters
+@section overview_html_filters Input Filters
- The wxHTML library provides a mechanism for reading and displaying
- files of many different file formats.
+The wxHTML library provides a mechanism for reading and displaying
+files of many different file formats.
- wxHtmlWindow::LoadPage can load not only HTML files but any known file.
- To make a file type known to wxHtmlWindow you must create a wxHtmlFilter filter and
- register it using wxHtmlWindow::AddFilter.
+wxHtmlWindow::LoadPage can load not only HTML files but any known file.
+To make a file type known to wxHtmlWindow you must create a wxHtmlFilter filter and
+register it using wxHtmlWindow::AddFilter.
- @section overview_html_cells Cells and Containers
+@section overview_html_cells Cells and Containers
- This article describes mechanism used by wxHtmlWinParser and
- wxHtmlWindow to parse and display HTML documents.
+This article describes mechanism used by wxHtmlWinParser and
+wxHtmlWindow to parse and display HTML documents.
- @subsection overview_html_cells_cells Cells
+@subsection overview_html_cells_cells Cells
- You can divide any text (or HTML) into small fragments. Let's call these
- fragments @b cells. Cell is for example one word, horizontal line, image
- or any other part of document. Each cell has width and height (except special
- "magic" cells with zero dimensions - e.g. colour changers or font changers).
- See wxHtmlCell.
+You can divide any text (or HTML) into small fragments. Let's call these
+fragments @b cells. Cell is for example one word, horizontal line, image
+or any other part of document. Each cell has width and height (except special
+"magic" cells with zero dimensions - e.g. colour changers or font changers).
+See wxHtmlCell.
- @subsection overview_html_cells_containers Containers
+@subsection overview_html_cells_containers Containers
- Container is kind of cell that may contain sub-cells. Its size depends
- on number and sizes of its sub-cells (and also depends on width of window).
- See wxHtmlContainerCell, wxHtmlCell::Layout. This image shows the cells and
- containers:
+Container is kind of cell that may contain sub-cells. Its size depends
+on number and sizes of its sub-cells (and also depends on width of window).
+See wxHtmlContainerCell, wxHtmlCell::Layout. This image shows the cells and
+containers:
- @image html overview_html_contbox.png
+@image html overview_html_contbox.png
- @subsection overview_html_cells_conttaghandler Using Containers in Tag Handler
+@subsection overview_html_cells_conttaghandler Using Containers in Tag Handler
- wxHtmlWinParser provides a user-friendly way of managing containers.
- It is based on the idea of opening and closing containers.
+wxHtmlWinParser provides a user-friendly way of managing containers.
+It is based on the idea of opening and closing containers.
- Use wxHtmlWinParser::OpenContainer to open new a container @e within an already
- opened container.
- This new container is a @e sub-container of the old one. (If you want to create a
- new container with the same depth level you can call @c CloseContainer(); OpenContainer();.)
+Use wxHtmlWinParser::OpenContainer to open new a container @e within an already
+opened container.
+This new container is a @e sub-container of the old one. (If you want to create a
+new container with the same depth level you can call @c CloseContainer(); OpenContainer();.)
- Use wxHtmlWinParser::CloseContainer to close the container.
- This doesn't create a new container with same depth level but it returns "control"
- to the parent container. See explanation:
+Use wxHtmlWinParser::CloseContainer to close the container.
+This doesn't create a new container with same depth level but it returns "control"
+to the parent container. See explanation:
- @image html overview_html_cont.png
+@image html overview_html_cont.png
- There clearly must be same number of calls to OpenContainer as to
- CloseContainer.
+There clearly must be same number of calls to OpenContainer as to
+CloseContainer.
- @subsubsection overview_html_cells_conttaghandler_example Example
+@subsubsection overview_html_cells_conttaghandler_example Example
- This code creates a new paragraph (container at same depth level)
- with "Hello, world!":
+This code creates a new paragraph (container at same depth level)
+with "Hello, world!":
- @code
- m_WParser -> CloseContainer();
- c = m_WParser -> OpenContainer();
+@code
+m_WParser -> CloseContainer();
+c = m_WParser -> OpenContainer();
- m_WParser -> AddText("Hello, ");
- m_WParser -> AddText("world!");
+m_WParser -> AddText("Hello, ");
+m_WParser -> AddText("world!");
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
- @endcode
+m_WParser -> CloseContainer();
+m_WParser -> OpenContainer();
+@endcode
- and here is image of the situation:
+and here is image of the situation:
- @image html overview_html_hello.png
+@image html overview_html_hello.png
- You can see that there was an opened container before the code was executed.
- We closed it, created our own container, then closed our container and opened
- new container.
+You can see that there was an opened container before the code was executed.
+We closed it, created our own container, then closed our container and opened
+new container.
- The result was that we had @e same depth level after executing.
- This is general rule that should be followed by tag handlers:
- leave depth level of containers unmodified (in other words, number of
- OpenContainer and CloseContainer calls should be same within
- wxHtmlTagHandler::HandleTag's body).
+The result was that we had @e same depth level after executing.
+This is general rule that should be followed by tag handlers:
+leave depth level of containers unmodified (in other words, number of
+OpenContainer and CloseContainer calls should be same within
+wxHtmlTagHandler::HandleTag's body).
- Notice that it would be usually better to use wxHtmlContainerCell::InsertCell instead
- of adding text to the parser directly.
+Notice that it would be usually better to use wxHtmlContainerCell::InsertCell instead
+of adding text to the parser directly.
- @section overview_html_handlers Tag Handlers
+@section overview_html_handlers Tag Handlers
- The wxHTML library provides architecture of pluggable @e tag handlers.
- Tag handler is class that understands particular HTML tag (or tags) and is
- able to interpret it.
+The wxHTML library provides architecture of pluggable @e tag handlers.
+Tag handler is class that understands particular HTML tag (or tags) and is
+able to interpret it.
- wxHtmlWinParser has a static table of @b modules.
- Each module contains one or more tag handlers. Each time a new wxHtmlWinParser
- object is constructed all modules are scanned and handlers are added
- to wxHtmlParser's list of available handlers (note: wxHtmlParser's list
- is non-static).
+wxHtmlWinParser has a static table of @b modules.
+Each module contains one or more tag handlers. Each time a new wxHtmlWinParser
+object is constructed all modules are scanned and handlers are added
+to wxHtmlParser's list of available handlers (note: wxHtmlParser's list
+is non-static).
- @subsection overview_html_handlers_howworks How it works
+@subsection overview_html_handlers_howworks How it works
- Common tag handler's wxHtmlTagHandler::HandleTag method works in four steps:
+Common tag handler's wxHtmlTagHandler::HandleTag method works in four steps:
- @li Save state of parent parser into local variables
- @li Change parser state according to tag's params
- @li Parse text between the tag and paired ending tag (if present)
- @li Restore original parser state
+@li Save state of parent parser into local variables
+@li Change parser state according to tag's params
+@li Parse text between the tag and paired ending tag (if present)
+@li Restore original parser state
- See wxHtmlWinParser for methods for modifying parser's state.
- In general you can do things like opening/closing containers, changing colors, fonts etc.
+See wxHtmlWinParser for methods for modifying parser's state.
+In general you can do things like opening/closing containers, changing colors, fonts etc.
- @subsection overview_html_handlers_custom Providing own tag handlers
+@subsection overview_html_handlers_custom Providing own tag handlers
- You should create a new .cpp file and place the following lines into it:
+You should create a new .cpp file and place the following lines into it:
- @code
- #include <mod_templ.h>
- #include <forcelink.h>
- FORCE_LINK_ME(yourmodulefilenamewithoutcpp)
- @endcode
+@code
+#include <mod_templ.h>
+#include <forcelink.h>
+FORCE_LINK_ME(yourmodulefilenamewithoutcpp)
+@endcode
- Then you must define handlers and one module.
+Then you must define handlers and one module.
- @subsection overview_html_handlers_tag Tag handlers
+@subsection overview_html_handlers_tag Tag handlers
- The handler is derived from wxHtmlWinTagHandler (or directly from wxHtmlTagHandler).
+The handler is derived from wxHtmlWinTagHandler (or directly from wxHtmlTagHandler).
- You can use set of macros to define the handler (see src/html/m_*.cpp files
- for details). Handler definition must start with @b TAG_HANDLER_BEGIN macro
- and end with @b TAG_HANDLER_END macro.
+You can use set of macros to define the handler (see src/html/m_*.cpp files
+for details). Handler definition must start with @b TAG_HANDLER_BEGIN macro
+and end with @b TAG_HANDLER_END macro.
- I strongly recommend to have a look at @e include/wxhtml/mod_templ.h file.
- Otherwise you won't understand the structure of macros.
+I strongly recommend to have a look at @e include/wxhtml/mod_templ.h file.
+Otherwise you won't understand the structure of macros.
- See macros reference:
- @li @b TAG_HANDLER_BEGIN(@e name, @e tags):
- Starts handler definition. @e name is handler identifier (in fact
- part of class name), @e tags is string containing list of tags
- supported by this handler (in uppercase). This macro derives new class from
- wxHtmlWinTagHandler and implements it is wxHtmlTagHandler::GetSupportedTags method.
- Example: TAG_HANDLER_BEGIN(FONTS, "B,I,U,T")
+See macros reference:
+@li @b TAG_HANDLER_BEGIN(@e name, @e tags):
+ Starts handler definition. @e name is handler identifier (in fact
+ part of class name), @e tags is string containing list of tags
+ supported by this handler (in uppercase). This macro derives new class from
+ wxHtmlWinTagHandler and implements it is wxHtmlTagHandler::GetSupportedTags method.
+ Example: TAG_HANDLER_BEGIN(FONTS, "B,I,U,T")
- @li @b TAG_HANDLER_VARS:
- This macro starts block of variables definitions. (Variables are identical
- to class attributes.) Example:
+@li @b TAG_HANDLER_VARS:
+ This macro starts block of variables definitions. (Variables are identical
+ to class attributes.) Example:
- @code
- TAG_HANDLER_BEGIN(VARS_ONLY, "CRAZYTAG")
+ @code
+ TAG_HANDLER_BEGIN(VARS_ONLY, "CRAZYTAG")
TAG_HANDLER_VARS
int my_int_var;
wxString something_else;
- TAG_HANDLER_END(VARS_ONLY)
- @endcode
+ TAG_HANDLER_END(VARS_ONLY)
+ @endcode
- This macro is used only in rare cases.
+ This macro is used only in rare cases.
- @li @b TAG_HANDLER_CONSTR(@e name):
- This macro supplies object constructor. @e name is same name as the one
- from TAG_HANDLER_BEGIN macro. Body of constructor follow after
- this macro (you must use { and } ). Example:
+@li @b TAG_HANDLER_CONSTR(@e name):
+ This macro supplies object constructor. @e name is same name as the one
+ from TAG_HANDLER_BEGIN macro. Body of constructor follow after
+ this macro (you must use { and } ). Example:
- @code
- TAG_HANDLER_BEGIN(VARS2, "CRAZYTAG")
+ @code
+ TAG_HANDLER_BEGIN(VARS2, "CRAZYTAG")
TAG_HANDLER_VARS
int my_int_var;
TAG_HANDLER_CONSTR(vars2)
{ // !!!!!!
- my_int_var = 666;
+ my_int_var = 666;
} // !!!!!!
- TAG_HANDLER_END(VARS2)
- @endcode
+ TAG_HANDLER_END(VARS2)
+ @endcode
- Never used in wxHTML :-)
+ Never used in wxHTML :-)
- @li @b TAG_HANDLER_PROC(@e varib):
- This is very important macro. It defines wxHtmlTagHandler::HandleTag
- method. @e varib is name of parameter passed to the method, usually
- @e tag. Body of method follows after this macro.
- Note than you must use { and } !
- Example:
+@li @b TAG_HANDLER_PROC(@e varib):
+ This is very important macro. It defines wxHtmlTagHandler::HandleTag
+ method. @e varib is name of parameter passed to the method, usually
+ @e tag. Body of method follows after this macro.
+ Note than you must use { and } !
+ Example:
- @code
- TAG_HANDLER_BEGIN(TITLE, "TITLE")
+ @code
+ TAG_HANDLER_BEGIN(TITLE, "TITLE")
TAG_HANDLER_PROC(tag)
{
- printf("TITLE found...\n");
+ printf("TITLE found...\n");
}
- TAG_HANDLER_END(TITLE)
- @endcode
+ TAG_HANDLER_END(TITLE)
+ @endcode
- @li @b TAG_HANDLER_END(@e name):
- Ends definition of tag handler @e name.
+@li @b TAG_HANDLER_END(@e name):
+ Ends definition of tag handler @e name.
- @subsection overview_html_handlers_modules Tags Modules
+@subsection overview_html_handlers_modules Tags Modules
- You can use set of 3 macros TAGS_MODULE_BEGIN, TAGS_MODULE_ADD and
- TAGS_MODULE_END to inherit new module from
- wxHtmlTagsModule and to create instance of it.
+You can use set of 3 macros TAGS_MODULE_BEGIN, TAGS_MODULE_ADD and
+TAGS_MODULE_END to inherit new module from
+wxHtmlTagsModule and to create instance of it.
- See macros reference:
+See macros reference:
- @li @b TAGS_MODULE_BEGIN(@e modname):
- Begins module definition. @e modname is part of class name and must be unique.
- @li @b TAGS_MODULE_ADD(@e name):
- Adds the handler to this module. @e name is the identifier from TAG_HANDLER_BEGIN.
- @li @b TAGS_MODULE_END(@e modname):
- Ends the definition of module.
- Example:
+@li @b TAGS_MODULE_BEGIN(@e modname):
+ Begins module definition. @e modname is part of class name and must be unique.
+@li @b TAGS_MODULE_ADD(@e name):
+ Adds the handler to this module. @e name is the identifier from TAG_HANDLER_BEGIN.
+@li @b TAGS_MODULE_END(@e modname):
+ Ends the definition of module.
+ Example:
- @code
- TAGS_MODULE_BEGIN(Examples)
+ @code
+ TAGS_MODULE_BEGIN(Examples)
TAGS_MODULE_ADD(VARS_ONLY)
TAGS_MODULE_ADD(VARS2)
TAGS_MODULE_ADD(TITLE)
- TAGS_MODULE_END(Examples)
- @endcode
-
-
- @section overview_html_supptags Tags supported by wxHTML
-
- wxHTML is not full implementation of HTML standard. Instead, it supports most
- common tags so that it is possible to display @e simple HTML documents with it.
- (For example it works fine with pages created in Netscape Composer or generated by tex2rtf).
-
- Following tables list all tags known to wxHTML, together with supported parameters.
-
- A tag has general form of @c tagname param_1 param_2 ... param_n where param_i is
- either @c paramname="paramvalue" or @c paramname=paramvalue - these two are equivalent.
- Unless stated otherwise, wxHTML is case-insensitive.
-
- @subsection overview_html_supptags_commonvalues Table of common parameter values
-
- We will use these substitutions in tags descriptions:
-
- @code
- [alignment] CENTER
- LEFT
- RIGHT
- JUSTIFY
-
- [v_alignment] TOP
- BOTTOM
- CENTER
-
- [color] HTML 4.0-compliant colour specification
-
- [fontsize] -2
- -1
- +0
- +1
- +2
- +3
- +4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
- [pixels] integer value that represents dimension in pixels
-
- [percent] i%
- where i is integer
-
- [url] an URL
-
- [string] text string
-
- [coords] c(1),c(2),c(3),...,c(n)
- where c(i) is integer
- @endcode
-
-
- @subsection overview_html_supptags_list List of supported tags
-
- @code
- A NAME=[string]
- HREF=[url]
- TARGET=[target window spec]
- ADDRESS
- AREA SHAPE=POLY
- SHAPE=CIRCLE
- SHAPE=RECT
- COORDS=[coords]
- HREF=[url]
- B
- BIG
- BLOCKQUOTE
- BODY TEXT=[color]
- LINK=[color]
- BGCOLOR=[color]
- BR ALIGN=[alignment]
- CENTER
- CITE
- CODE
- DD
- DIV ALIGN=[alignment]
- DL
- DT
- EM
- FONT COLOR=[color]
- SIZE=[fontsize]
- FACE=[comma-separated list of facenames]
- HR ALIGN=[alignment]
- SIZE=[pixels]
- WIDTH=[percent|pixels]
- NOSHADE
- H1
- H2
- H3
- H4
- H5
- H6
- I
- IMG SRC=[url]
- WIDTH=[pixels]
- HEIGHT=[pixels]
- ALIGN=TEXTTOP
- ALIGN=CENTER
- ALIGN=ABSCENTER
- ALIGN=BOTTOM
- USEMAP=[url]
- KBD
- LI
- MAP NAME=[string]
- META HTTP-EQUIV="Content-Type"
- CONTENT=[string]
- OL
- P ALIGN=[alignment]
- PRE
- SAMP
- SMALL
- STRIKE
- STRONG
- SUB
- SUP
- TABLE ALIGN=[alignment]
- WIDTH=[percent|pixels]
- BORDER=[pixels]
- VALIGN=[v_alignment]
- BGCOLOR=[color]
- CELLSPACING=[pixels]
- CELLPADDING=[pixels]
- TD ALIGN=[alignment]
- VALIGN=[v_alignment]
- BGCOLOR=[color]
- WIDTH=[percent|pixels]
- COLSPAN=[pixels]
- ROWSPAN=[pixels]
- NOWRAP
- TH ALIGN=[alignment]
- VALIGN=[v_alignment]
- BGCOLOR=[color]
- WIDTH=[percent|pixels]
- COLSPAN=[pixels]
- ROWSPAN=[pixels]
- TITLE
- TR ALIGN=[alignment]
- VALIGN=[v_alignment]
- BGCOLOR=[color]
- TT
- U
- UL
- @endcode
+ TAGS_MODULE_END(Examples)
+ @endcode
+
+
+@section overview_html_supptags Tags supported by wxHTML
+
+wxHTML is not full implementation of HTML standard. Instead, it supports most
+common tags so that it is possible to display @e simple HTML documents with it.
+(For example it works fine with pages created in Netscape Composer or generated by tex2rtf).
+
+Following tables list all tags known to wxHTML, together with supported parameters.
+
+A tag has general form of @c tagname param_1 param_2 ... param_n where param_i is
+either @c paramname="paramvalue" or @c paramname=paramvalue - these two are equivalent.
+Unless stated otherwise, wxHTML is case-insensitive.
+
+@subsection overview_html_supptags_commonvalues Table of common parameter values
+
+We will use these substitutions in tags descriptions:
+
+@code
+[alignment] CENTER
+ LEFT
+ RIGHT
+ JUSTIFY
+
+[v_alignment] TOP
+ BOTTOM
+ CENTER
+
+[color] HTML 4.0-compliant colour specification
+
+[fontsize] -2
+ -1
+ +0
+ +1
+ +2
+ +3
+ +4
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+
+[pixels] integer value that represents dimension in pixels
+
+[percent] i%
+ where i is integer
+
+[url] an URL
+
+[string] text string
+
+[coords] c(1),c(2),c(3),...,c(n)
+ where c(i) is integer
+@endcode
+
+
+@subsection overview_html_supptags_list List of supported tags
+
+@code
+A NAME=[string]
+ HREF=[url]
+ TARGET=[target window spec]
+ADDRESS
+AREA SHAPE=POLY
+ SHAPE=CIRCLE
+ SHAPE=RECT
+ COORDS=[coords]
+ HREF=[url]
+B
+BIG
+BLOCKQUOTE
+BODY TEXT=[color]
+ LINK=[color]
+ BGCOLOR=[color]
+BR ALIGN=[alignment]
+CENTER
+CITE
+CODE
+DD
+DIV ALIGN=[alignment]
+DL
+DT
+EM
+FONT COLOR=[color]
+ SIZE=[fontsize]
+ FACE=[comma-separated list of facenames]
+HR ALIGN=[alignment]
+ SIZE=[pixels]
+ WIDTH=[percent|pixels]
+ NOSHADE
+H1
+H2
+H3
+H4
+H5
+H6
+I
+IMG SRC=[url]
+ WIDTH=[pixels]
+ HEIGHT=[pixels]
+ ALIGN=TEXTTOP
+ ALIGN=CENTER
+ ALIGN=ABSCENTER
+ ALIGN=BOTTOM
+ USEMAP=[url]
+KBD
+LI
+MAP NAME=[string]
+META HTTP-EQUIV="Content-Type"
+ CONTENT=[string]
+OL
+P ALIGN=[alignment]
+PRE
+SAMP
+SMALL
+STRIKE
+STRONG
+SUB
+SUP
+TABLE ALIGN=[alignment]
+ WIDTH=[percent|pixels]
+ BORDER=[pixels]
+ VALIGN=[v_alignment]
+ BGCOLOR=[color]
+ CELLSPACING=[pixels]
+ CELLPADDING=[pixels]
+TD ALIGN=[alignment]
+ VALIGN=[v_alignment]
+ BGCOLOR=[color]
+ WIDTH=[percent|pixels]
+ COLSPAN=[pixels]
+ ROWSPAN=[pixels]
+ NOWRAP
+TH ALIGN=[alignment]
+ VALIGN=[v_alignment]
+ BGCOLOR=[color]
+ WIDTH=[percent|pixels]
+ COLSPAN=[pixels]
+ ROWSPAN=[pixels]
+TITLE
+TR ALIGN=[alignment]
+ VALIGN=[v_alignment]
+ BGCOLOR=[color]
+TT
+U
+UL
+@endcode
*/
Classes: wxListCtrl, wxImageList
-Sorry, this topic hasn't been written yet.
+@todo Sorry, this topic hasn't been written yet.
*/