From 928f1a076c97a28d27cf03fa04af1131e173c188 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Sat, 22 Mar 2008 17:49:09 +0000 Subject: [PATCH] remove the 1-space indentation from remaining pages; mark with @todo tags parts of the docs which need to be written yet git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/doxygen/mainpages/const_cpp.h | 464 ++++----- docs/doxygen/mainpages/const_keycode.h | 268 ++--- docs/doxygen/mainpages/const_keymod.h | 58 +- docs/doxygen/mainpages/const_langcodes.h | 16 +- docs/doxygen/mainpages/const_stdevtid.h | 286 +++--- docs/doxygen/mainpages/const_stockitems.h | 124 +-- docs/doxygen/mainpages/const_wxusedef.h | 692 ++++++------- docs/doxygen/mainpages/constants.h | 18 +- docs/doxygen/mainpages/copyright.h | 1105 +++++++++++---------- docs/doxygen/mainpages/devtips.h | 420 ++++---- docs/doxygen/mainpages/introduction.h | 438 ++++---- docs/doxygen/mainpages/manual.h | 36 +- docs/doxygen/mainpages/platdetails.h | 1036 +++++++++---------- docs/doxygen/mainpages/strategies.h | 146 +-- docs/doxygen/overviews/datetime.h | 328 +++--- docs/doxygen/overviews/dc.h | 76 +- docs/doxygen/overviews/debugging.h | 178 ++-- docs/doxygen/overviews/dialog.h | 178 ++-- docs/doxygen/overviews/docview.h | 498 +++++----- docs/doxygen/overviews/envvars.h | 48 +- docs/doxygen/overviews/exceptions.h | 106 +- docs/doxygen/overviews/file.h | 44 +- docs/doxygen/overviews/filesystem.h | 150 +-- docs/doxygen/overviews/font.h | 146 +-- docs/doxygen/overviews/grid.h | 92 +- docs/doxygen/overviews/helloworld.h | 332 +++---- docs/doxygen/overviews/html.h | 870 ++++++++-------- docs/doxygen/overviews/listctrl.h | 2 +- 28 files changed, 4079 insertions(+), 4076 deletions(-) diff --git a/docs/doxygen/mainpages/const_cpp.h b/docs/doxygen/mainpages/const_cpp.h index 48b832eccf..90cdaf6414 100644 --- a/docs/doxygen/mainpages/const_cpp.h +++ b/docs/doxygen/mainpages/const_cpp.h @@ -9,239 +9,239 @@ /** - @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 - -
- - - @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 + +
+ + +@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 */ diff --git a/docs/doxygen/mainpages/const_keycode.h b/docs/doxygen/mainpages/const_keycode.h index 85ff19614f..a3ef2fd237 100644 --- a/docs/doxygen/mainpages/const_keycode.h +++ b/docs/doxygen/mainpages/const_keycode.h @@ -9,146 +9,146 @@ /** - @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 */ diff --git a/docs/doxygen/mainpages/const_keymod.h b/docs/doxygen/mainpages/const_keymod.h index 2d3cb6a115..139849e977 100644 --- a/docs/doxygen/mainpages/const_keymod.h +++ b/docs/doxygen/mainpages/const_keymod.h @@ -9,34 +9,34 @@ /** - @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. */ diff --git a/docs/doxygen/mainpages/const_langcodes.h b/docs/doxygen/mainpages/const_langcodes.h index 9376014b43..2f9816d0bd 100644 --- a/docs/doxygen/mainpages/const_langcodes.h +++ b/docs/doxygen/mainpages/const_langcodes.h @@ -9,16 +9,18 @@ /** - @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: - + - 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 - +This enum is generated by misc/languages/genlang.py +When making changes, please put them into misc/languages/langtabl.txt + + */ diff --git a/docs/doxygen/mainpages/const_stdevtid.h b/docs/doxygen/mainpages/const_stdevtid.h index e22a3580ab..f43140ed2d 100644 --- a/docs/doxygen/mainpages/const_stdevtid.h +++ b/docs/doxygen/mainpages/const_stdevtid.h @@ -9,148 +9,148 @@ /** - @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 */ diff --git a/docs/doxygen/mainpages/const_stockitems.h b/docs/doxygen/mainpages/const_stockitems.h index 79b1a0afed..450ed3f0ec 100644 --- a/docs/doxygen/mainpages/const_stockitems.h +++ b/docs/doxygen/mainpages/const_stockitems.h @@ -9,70 +9,70 @@ /** - @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{Stock ID, Stock label} - @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{Stock ID, Stock label} +@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. */ diff --git a/docs/doxygen/mainpages/const_wxusedef.h b/docs/doxygen/mainpages/const_wxusedef.h index 5e08a34f4a..39791641a9 100644 --- a/docs/doxygen/mainpages/const_wxusedef.h +++ b/docs/doxygen/mainpages/const_wxusedef.h @@ -9,351 +9,351 @@ /** - @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 - - -
- - - - @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 long long 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 + + +
+ + + +@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 long long 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 diff --git a/docs/doxygen/mainpages/constants.h b/docs/doxygen/mainpages/constants.h index e5a4a26d38..89fdf3cd60 100644 --- a/docs/doxygen/mainpages/constants.h +++ b/docs/doxygen/mainpages/constants.h @@ -9,16 +9,16 @@ /** - @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 */ diff --git a/docs/doxygen/mainpages/copyright.h b/docs/doxygen/mainpages/copyright.h index 91d2d7cd5b..d633a4c285 100644 --- a/docs/doxygen/mainpages/copyright.h +++ b/docs/doxygen/mainpages/copyright.h @@ -9,588 +9,589 @@ /** - @page page_copyright Copyright notice +@page page_copyright Copyright notice -
- Copyright (c) 1992-2008 Julian Smart, Robert Roebling, Vadim Zeitlin and other - members of the wxWidgets team +
+Copyright (c) 1992-2008 Julian Smart, Robert Roebling, Vadim Zeitlin and other +members of the wxWidgets team - Portions (c) 1996 Artificial Intelligence Applications Institute -
+Portions (c) 1996 Artificial Intelligence Applications Institute +
- 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 - +--> - 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. -
- WXWINDOWS LIBRARY LICENCE +
+WXWINDOWS LIBRARY LICENCE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +
- 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. - -
- GNU LIBRARY GENERAL PUBLIC LICENSE - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -
- - 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. - -
- NO WARRANTY -
- - 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. - - -
- END OF TERMS AND CONDITIONS -
- - @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 - - Copyright (C) - - 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. - - , 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. + +
+ GNU LIBRARY GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +
+ +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. + +
+NO WARRANTY +
+ +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. + + +
+END OF TERMS AND CONDITIONS +
+ +@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 + +Copyright (C) + +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. + +, 1 April 1990 +Ty Coon, President of Vice +@endverbatim + + +That's all there is to it! + */ diff --git a/docs/doxygen/mainpages/devtips.h b/docs/doxygen/mainpages/devtips.h index 80c4daca55..1116a71b99 100644 --- a/docs/doxygen/mainpages/devtips.h +++ b/docs/doxygen/mainpages/devtips.h @@ -9,303 +9,303 @@ /** - @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 -
+
- @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 +@verbatim +// For compilers that support precompilation, includes "wx.h". +#include - #ifdef __BORLANDC__ - #pragma hdrstop - #endif +#ifdef __BORLANDC__ +#pragma hdrstop +#endif - #ifndef WX_PRECOMP - // Include your minimal set of headers here, or wx.h - #include - #endif +#ifndef WX_PRECOMP +// Include your minimal set of headers here, or wx.h +#include +#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. */ diff --git a/docs/doxygen/mainpages/introduction.h b/docs/doxygen/mainpages/introduction.h index 585925f2a5..d358d36b34 100644 --- a/docs/doxygen/mainpages/introduction.h +++ b/docs/doxygen/mainpages/introduction.h @@ -9,226 +9,226 @@ /** - @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 - - -
- - - @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 + + +
+ + +@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. - - - 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. - +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. + + +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. + */ diff --git a/docs/doxygen/mainpages/manual.h b/docs/doxygen/mainpages/manual.h index 4a627fb1c3..459e10b9fe 100644 --- a/docs/doxygen/mainpages/manual.h +++ b/docs/doxygen/mainpages/manual.h @@ -9,25 +9,25 @@ /** - @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 */ diff --git a/docs/doxygen/mainpages/platdetails.h b/docs/doxygen/mainpages/platdetails.h index aa93fc9632..26a12f5b7b 100644 --- a/docs/doxygen/mainpages/platdetails.h +++ b/docs/doxygen/mainpages/platdetails.h @@ -9,605 +9,605 @@ /** - @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 -
+
- @section page_port_wxgtk wxGTK +@section page_port_wxgtk wxGTK - @htmlonly - - @endhtmlonly +@htmlonly + +@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 - - @endhtmlonly +@htmlonly + +@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 - - @endhtmlonly +@htmlonly + +@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 - - @endhtmlonly +@htmlonly + +@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 - Windows CE Tools/wce420/POCKET PC 2003/Samples/Win32/AppInst. - @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 demos/life/setup/wince 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 - - Run-time type information - - 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 - - Windows Mobile 5.0 emulator - - Note that there is no separate emulator configuration for Windows Mobile 5.0: the - emulator runs the ARM code directly. - - Visual Studio 2005 project files - - 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: - ..\\$(PlatformName)\\$(ConfigurationName)\\wx_mono.lib. - - Then, for a sample you want to compile, edit the configuration properties - and make sure - ..\\..\\lib\\$(PlatformName)\\$(ConfigurationName) - is in the Linker/General/Additional Library Directories property. - Also change the Linker/Input/Additional Dependencies property to something like - coredll.lib wx_mono.lib wx_wxjpeg.lib wx_wxpng.lib wx_wxzlib.lib wx_wxexpat.lib - commctrl.lib winsock.lib wininet.lib - (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 Windows Mobile 5 issues. 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 Sizer speed. Particularly for dialogs containing notebooks, - layout seems slow. Some analysis is required. - @li Notification boxes. The balloon-like notification messages, and their - icons, should be implemented. This will be quite straightforward. - @li SIP size. 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 Input Dialogs topic in - the Programming Windows CE guide for more on this, and how to have dialogs - show the SIP automatically using the WC_SIPREF control. - @li wxStaticBitmap. 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 wxStaticLine. Lines don't show up, and the documentation suggests that - missing styles are implemented with WM_PAINT. - @li HTML control. 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 Tooltip control. 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 Focus. 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 OK button. 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 Dynamic adaptation. 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 Modeless dialogs. 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 Home screen plugins. 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 Further abstraction. We should be able to abstract away more of the differences - between desktop and mobile applications, in particular for sizer layout. - @li Dialog captions. 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 + Windows CE Tools/wce420/POCKET PC 2003/Samples/Win32/AppInst. +@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 demos/life/setup/wince 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 + +Run-time type information + +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 + +Windows Mobile 5.0 emulator + +Note that there is no separate emulator configuration for Windows Mobile 5.0: the +emulator runs the ARM code directly. + +Visual Studio 2005 project files + +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: +..\\$(PlatformName)\\$(ConfigurationName)\\wx_mono.lib. + +Then, for a sample you want to compile, edit the configuration properties +and make sure +..\\..\\lib\\$(PlatformName)\\$(ConfigurationName) +is in the Linker/General/Additional Library Directories property. +Also change the Linker/Input/Additional Dependencies property to something like +coredll.lib wx_mono.lib wx_wxjpeg.lib wx_wxpng.lib wx_wxzlib.lib wx_wxexpat.lib + commctrl.lib winsock.lib wininet.lib +(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 Windows Mobile 5 issues. 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 Sizer speed. Particularly for dialogs containing notebooks, +layout seems slow. Some analysis is required. +@li Notification boxes. The balloon-like notification messages, and their +icons, should be implemented. This will be quite straightforward. +@li SIP size. 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 Input Dialogs topic in +the Programming Windows CE guide for more on this, and how to have dialogs +show the SIP automatically using the WC_SIPREF control. +@li wxStaticBitmap. 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 wxStaticLine. Lines don't show up, and the documentation suggests that +missing styles are implemented with WM_PAINT. +@li HTML control. 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 Tooltip control. 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 Focus. 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 OK button. 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 Dynamic adaptation. 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 Modeless dialogs. 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 Home screen plugins. 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 Further abstraction. We should be able to abstract away more of the differences +between desktop and mobile applications, in particular for sizer layout. +@li Dialog captions. 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 */ diff --git a/docs/doxygen/mainpages/strategies.h b/docs/doxygen/mainpages/strategies.h index 6d1e6a231a..d052fc13f9 100644 --- a/docs/doxygen/mainpages/strategies.h +++ b/docs/doxygen/mainpages/strategies.h @@ -9,117 +9,117 @@ /** - @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 -
+
- @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. */ diff --git a/docs/doxygen/overviews/datetime.h b/docs/doxygen/overviews/datetime.h index f0729a7f97..55de8ffca0 100644 --- a/docs/doxygen/overviews/datetime.h +++ b/docs/doxygen/overviews/datetime.h @@ -8,237 +8,237 @@ /** - @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 -
+
- @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 Unary minus: a wxTimeSpan or wxDateSpan object may finally be - negated giving an interval of the same magnitude but of opposite time - direction. +@li Unary minus: 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. */ diff --git a/docs/doxygen/overviews/dc.h b/docs/doxygen/overviews/dc.h index 8cc019ddb0..ab88266c9b 100644 --- a/docs/doxygen/overviews/dc.h +++ b/docs/doxygen/overviews/dc.h @@ -8,44 +8,44 @@ /** - @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. */ diff --git a/docs/doxygen/overviews/debugging.h b/docs/doxygen/overviews/debugging.h index c01da04628..c094d14231 100644 --- a/docs/doxygen/overviews/debugging.h +++ b/docs/doxygen/overviews/debugging.h @@ -8,137 +8,137 @@ /** - @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 -
+
- @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. */ diff --git a/docs/doxygen/overviews/dialog.h b/docs/doxygen/overviews/dialog.h index bf1804a46a..e140628d37 100644 --- a/docs/doxygen/overviews/dialog.h +++ b/docs/doxygen/overviews/dialog.h @@ -8,127 +8,127 @@ /** - @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 -
+
- @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. */ diff --git a/docs/doxygen/overviews/docview.h b/docs/doxygen/overviews/docview.h index 0400fbadc6..f90c664ff4 100644 --- a/docs/doxygen/overviews/docview.h +++ b/docs/doxygen/overviews/docview.h @@ -8,325 +8,325 @@ /** - @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 - - -
+@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 + + +
- @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 */ diff --git a/docs/doxygen/overviews/envvars.h b/docs/doxygen/overviews/envvars.h index fd9a82e40b..f997db35e5 100644 --- a/docs/doxygen/overviews/envvars.h +++ b/docs/doxygen/overviews/envvars.h @@ -8,32 +8,32 @@ /** - @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.} */ diff --git a/docs/doxygen/overviews/exceptions.h b/docs/doxygen/overviews/exceptions.h index 42247986f7..b207a656c1 100644 --- a/docs/doxygen/overviews/exceptions.h +++ b/docs/doxygen/overviews/exceptions.h @@ -8,75 +8,75 @@ /** - @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 -
+
- @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. */ diff --git a/docs/doxygen/overviews/file.h b/docs/doxygen/overviews/file.h index 59aad759d4..d06cd4191f 100644 --- a/docs/doxygen/overviews/file.h +++ b/docs/doxygen/overviews/file.h @@ -8,35 +8,35 @@ /** - @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. */ diff --git a/docs/doxygen/overviews/filesystem.h b/docs/doxygen/overviews/filesystem.h index f48a446fce..9fe758b239 100644 --- a/docs/doxygen/overviews/filesystem.h +++ b/docs/doxygen/overviews/filesystem.h @@ -8,109 +8,109 @@ /** - @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 -
+
- @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 right location - 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 left location - 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 right location - 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 left location - 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 +@code +#include - ... +... - bool MyApp::OnInit() - { - wxFileSystem::AddHandler(new wxMemoryFSHandler); - ... - } - @endcode +bool MyApp::OnInit() +{ + wxFileSystem::AddHandler(new wxMemoryFSHandler); +... +} +@endcode */ diff --git a/docs/doxygen/overviews/font.h b/docs/doxygen/overviews/font.h index 455bb57ac8..86812a7eff 100644 --- a/docs/doxygen/overviews/font.h +++ b/docs/doxygen/overviews/font.h @@ -8,79 +8,79 @@ /** - @page overview_font wxFont Overview - - Class: wxFont, wxFontDialog - - @li @ref overview_font_intro - @li @ref overview_font_nativeinfo - -
- - - @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 + +
+ + +@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. */ diff --git a/docs/doxygen/overviews/grid.h b/docs/doxygen/overviews/grid.h index 144692dc00..3cc342c8c2 100644 --- a/docs/doxygen/overviews/grid.h +++ b/docs/doxygen/overviews/grid.h @@ -8,82 +8,82 @@ /** - @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 -
+
- @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 */ diff --git a/docs/doxygen/overviews/helloworld.h b/docs/doxygen/overviews/helloworld.h index 8bf019fac3..d19670c21f 100644 --- a/docs/doxygen/overviews/helloworld.h +++ b/docs/doxygen/overviews/helloworld.h @@ -8,173 +8,173 @@ /** - @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 @#include "wx/window.h") - or using one global include (@#include "wx/wx.h"). 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 @#include "wx/window.h") +or using one global include (@#include "wx/wx.h"). 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 */ diff --git a/docs/doxygen/overviews/html.h b/docs/doxygen/overviews/html.h index 3a5027b2a7..4d8485e9c6 100644 --- a/docs/doxygen/overviews/html.h +++ b/docs/doxygen/overviews/html.h @@ -8,579 +8,579 @@ /** - @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 . +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 . - 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 -
+
- @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 -
    +@code +
      -
    • +
    • -
    • +
    • - ... - - @endcode +... + +@endcode - You can modify value attributes of param tags. - The topic name is name of chapter/topic as is displayed in - contents, filename.htm is the HTML page name (relative to the @c .hhp file) - and numeric_id is optional - it is used only when you use wxHtmlHelpController::Display(int). +You can modify value attributes of param tags. +The topic name is name of chapter/topic as is displayed in +contents, filename.htm is the HTML page name (relative to the @c .hhp file) +and numeric_id 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 -
        +@code +
          -
        • - - - -
            -
          • - - - - ... -
          +
        • + + + +
            +
          • + + + + ... +
          -
        • - - - - ... +
        • + + + +... -
        - @endcode +
      +@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 - #include - FORCE_LINK_ME(yourmodulefilenamewithoutcpp) - @endcode +@code +#include +#include +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 */ diff --git a/docs/doxygen/overviews/listctrl.h b/docs/doxygen/overviews/listctrl.h index 463a2d533d..35be956454 100644 --- a/docs/doxygen/overviews/listctrl.h +++ b/docs/doxygen/overviews/listctrl.h @@ -12,7 +12,7 @@ Classes: wxListCtrl, wxImageList -Sorry, this topic hasn't been written yet. +@todo Sorry, this topic hasn't been written yet. */ -- 2.45.2