From 4514447c97214ef73b5a65eea5d4b96cbd8d3780 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Thu, 21 Feb 2008 21:11:25 +0000 Subject: [PATCH] move pages under 'mainpages' and also adopt new link anchor naming and use @itemdef instead of \twocolitem tag git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51975 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/doxygen/Doxyfile | 47 +- docs/doxygen/mainpages/categories.h | 740 ++++++++++++++++++++++ docs/doxygen/mainpages/const_cpp.h | 249 ++++++++ docs/doxygen/mainpages/const_keycode.h | 154 +++++ docs/doxygen/mainpages/const_keymod.h | 42 ++ docs/doxygen/mainpages/const_langcodes.h | 24 + docs/doxygen/mainpages/const_stdevtid.h | 150 +++++ docs/doxygen/mainpages/const_stockitems.h | 78 +++ docs/doxygen/mainpages/const_wxusedef.h | 359 +++++++++++ docs/doxygen/mainpages/constants.h | 24 + docs/doxygen/mainpages/copyright.h | 596 +++++++++++++++++ docs/doxygen/mainpages/devtips.h | 311 +++++++++ docs/doxygen/mainpages/introduction.h | 234 +++++++ docs/doxygen/mainpages/libs.h | 156 +++++ docs/doxygen/mainpages/manual.h | 33 + docs/doxygen/mainpages/platdetails.h | 593 +++++++++++++++++ docs/doxygen/mainpages/strategies.h | 125 ++++ docs/doxygen/mainpages/topics.h | 107 ++++ docs/doxygen/mainpages/utilities.h | 610 ++++++++++++++++++ docs/doxygen/regen.sh | 7 +- 20 files changed, 4631 insertions(+), 8 deletions(-) create mode 100644 docs/doxygen/mainpages/categories.h create mode 100644 docs/doxygen/mainpages/const_cpp.h create mode 100644 docs/doxygen/mainpages/const_keycode.h create mode 100644 docs/doxygen/mainpages/const_keymod.h create mode 100644 docs/doxygen/mainpages/const_langcodes.h create mode 100644 docs/doxygen/mainpages/const_stdevtid.h create mode 100644 docs/doxygen/mainpages/const_stockitems.h create mode 100644 docs/doxygen/mainpages/const_wxusedef.h create mode 100644 docs/doxygen/mainpages/constants.h create mode 100644 docs/doxygen/mainpages/copyright.h create mode 100644 docs/doxygen/mainpages/devtips.h create mode 100644 docs/doxygen/mainpages/introduction.h create mode 100644 docs/doxygen/mainpages/libs.h create mode 100644 docs/doxygen/mainpages/manual.h create mode 100644 docs/doxygen/mainpages/platdetails.h create mode 100644 docs/doxygen/mainpages/strategies.h create mode 100644 docs/doxygen/mainpages/topics.h create mode 100644 docs/doxygen/mainpages/utilities.h diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index ab8eccfc05..5ab090654f 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -1,7 +1,7 @@ ############################################################################# ## Name: Doxyfile ## Purpose: Doxygen configuration file for wxWidgets manual -## Author: wxWidgets team +## Author: Francesco Montorsi ## RCS-ID: $Id$ ## Licence: wxWindows license ############################################################################# @@ -62,7 +62,7 @@ ALIASES += beginExtraStyleTable="\section class_extrastyles Extra Styles\n" ALIASES += endExtraStyleTable="\n" # misc aliases -ALIASES += library{1}="\section class_lib Library\n \ref \1" +ALIASES += library{1}="\section class_lib Library\n \ref page_libraries_\1" ALIASES += nolibrary="\section class_lib Library\n None; this class implementation is entirely header-based." ALIASES += stdobjects="\section class_stdobj Predefined objects\n \b" @@ -82,14 +82,47 @@ ALIASES += true="true" ALIASES += false="false" ALIASES += NULL="NULL" -# these are useful for creation of tables +# table aliases for 2 and 3 column tables ALIASES += beginTable="
" ALIASES += beginInvisibleTable="
" -ALIASES += row{2}="" -ALIASES += row{3}="" -ALIASES += row{4}="" +ALIASES += row2col{2}="" +ALIASES += row2col{3}="" +ALIASES += row2col{4}="" +ALIASES += row2col{5}="" +ALIASES += row2col{6}="" +ALIASES += row2col{7}="" +ALIASES += row2col{8}="" +ALIASES += row2col{9}="" +ALIASES += row2col{10}="" +ALIASES += row3col{3}="" +ALIASES += row3col{4}="" +ALIASES += row3col{5}="" +ALIASES += row3col{6}="" +ALIASES += row3col{7}="" +ALIASES += row3col{8}="" +ALIASES += row3col{9}="" +ALIASES += row3col{10}="" ALIASES += endTable="
\1 \2
\1 \2 \3
\1 \2 \3 \4
\1 \2
\1 \2,\3
\1 \2,\3,\4
\1 \2,\3,\4,\5
\1 \2,\3,\4,\5,\6
\1 \2,\3,\4,\5,\6,\7
\1 \2,\3,\4,\5,\6,\7,\8
\1 \2,\3,\4,\5,\6,\7,\8,\9
\1 \2,\3,\4,\5,\6,\7,\8,\9,\10
\1 \2 \3
\1 \2 \3,\4
\1 \2 \3,\4,\5
\1 \2 \3,\4,\5,\6
\1 \2 \3,\4,\5,\6,\7
\1 \2 \3,\4,\5,\6,\7,\8
\1 \2 \3,\4,\5,\6,\7,\8,\9
\1 \2 \3,\4,\5,\6,\7,\8,\9,\10
" +# definition list aliases +# a definition list currently is rendered as 2-column table but it may use as +# well the
,
and
HTML tags in future. +# In any case a definition list differs from a table because of its semantic +# nature and because it is always the association of a "title" with a "description" +# (in contrast a table may have more than 2 columns of data)... +ALIASES += beginDefList="" +ALIASES += itemdef{2}="" +ALIASES += itemdef{3}="" +ALIASES += itemdef{4}="" +ALIASES += itemdef{5}="" +ALIASES += itemdef{6}="" +ALIASES += itemdef{7}="" +ALIASES += itemdef{8}="" +ALIASES += itemdef{9}="" +ALIASES += itemdef{10}="" +ALIASES += endDefList="
\b \1 \2
\b \1 \2,\3
\b \1 \2,\3,\4
\b \1 \2,\3,\4,\5
\b \1 \2,\3,\4,\5,\6
\b \1 \2,\3,\4,\5,\6,\7
\b \1 \2,\3,\4,\5,\6,\7,\8
\b \1 \2,\3,\4,\5,\6,\7,\8,\9
\b \1 \2,\3,\4,\5,\6,\7,\8,\9,\10
" + + # NOTE: we could put aliases also for e.g. @wxDefaultSize, @wxDefaultPosition, @wxID_ANY, # @wxEmptyString, @wxNullIcon, etc etc @@ -147,7 +180,7 @@ WARN_LOGFILE = doxygen.log #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- -INPUT = . ./overviews ../../interface +INPUT = ./mainpages ./overviews #../../interface INPUT_ENCODING = UTF-8 FILE_PATTERNS = *.h *.txt RECURSIVE = YES diff --git a/docs/doxygen/mainpages/categories.h b/docs/doxygen/mainpages/categories.h new file mode 100644 index 0000000000..fb6291a941 --- /dev/null +++ b/docs/doxygen/mainpages/categories.h @@ -0,0 +1,740 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: categories.h +// Purpose: Classes-by-category page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_categories Classes by category + + A classification of wxWidgets classes by category. + + @beginInvisibleTable + + @li @ref page_categories_manwnd + @li @ref page_categories_miscwnd + @li @ref page_categories_cmndlg + @li @ref page_categories_ctrl + @li @ref page_categories_miscpickers + @li @ref page_categories_menus + @li @ref page_categories_wxaui + @li @ref page_categories_winlayout + @li @ref page_categories_dc + @li @ref page_categories_gdi + @li @ref page_categories_events + @li @ref page_categories_val + @li @ref page_categories_data + @li @ref page_categories_containers + @li @ref page_categories_smartpointers + @li @ref page_categories_rtti + @li @ref page_categories_logging + @li @ref page_categories_debugging + @li @ref page_categories_net + + @li @ref page_categories_ipc + @li @ref page_categories_dvf + @li @ref page_categories_printing + @li @ref page_categories_dd + @li @ref page_categories_file + @li @ref page_categories_streams + @li @ref page_categories_threading + @li @ref page_categories_html + @li @ref page_categories_rich + @li @ref page_categories_stc + @li @ref page_categories_vfs + @li @ref page_categories_xml + @li @ref page_categories_xrc + @li @ref page_categories_help + @li @ref page_categories_media + @li @ref page_categories_gl + @li @ref page_categories_appmanagement + @li @ref page_categories_misc + + @endTable + +
+ + + + @section page_categories_manwnd Managed windows + + There are several types of window that are directly controlled by the + window manager (such as MS Windows, or the Motif Window Manager). + Frames and dialogs are similar in wxWidgets, but only dialogs may be modal. + + @li wxTopLevelWindow: Any top level window, dialog or frame + @li wxDialog: Dialog box + @li wxFrame: Normal frame + @li wxMDIChildFrame: MDI child frame + @li wxMDIParentFrame: MDI parent frame + @li wxMiniFrame: A frame with a small title bar + @li wxPropertySheetDialog: Property sheet dialog + @li wxSplashScreen: Splash screen class + @li wxTipWindow: Shows text in a small window + @li wxWizard: A wizard dialog + + See also the @ref commondialogs_overview. + + + @section page_categories_miscwnd Miscellaneous windows + + The following are a variety of classes that are derived from wxWindow. + + @li wxPanel: A window whose colour changes according to current user settings + @li wxScrolledWindow: Window with automatically managed scrollbars + @li wxGrid: A grid (table) window + @li wxSplitterWindow: Window which can be split vertically or horizontally + @li wxStatusBar: Implements the status bar on a frame + @li wxToolBar: Toolbar class + @li wxNotebook: Notebook class + @li wxListbook: Similar to notebook but using list control + @li wxChoicebook: Similar to notebook but using choice control + @li wxTreebook: Similar to notebook but using tree control + @li wxSashWindow: Window with four optional sashes that can be dragged + @li wxSashLayoutWindow: Window that can be involved in an IDE-like layout arrangement + @li wxVScrolledWindow: As wxScrolledWindow but supports lines of variable height + @li wxWizardPage: A base class for the page in wizard dialog. + @li wxWizardPageSimple: A page in wizard dialog. + + + @section page_categories_cmndlg Common dialogs + + @ref commondialogs_overview + + Common dialogs are ready-made dialog classes which are frequently used + in an application. + + @li wxDialog: Base class for common dialogs + @li wxColourDialog: Colour chooser dialog + @li wxDirDialog: Directory selector dialog + @li wxFileDialog: File selector dialog + @li wxFindReplaceDialog: Text search/replace dialog + @li wxMultiChoiceDialog: Dialog to get one or more selections from a list + @li wxSingleChoiceDialog: Dialog to get a single selection from a list and return the string + @li wxTextEntryDialog: Dialog to get a single line of text from the user + @li wxPasswordEntryDialog: Dialog to get a password from the user + @li wxFontDialog: Font chooser dialog + @li wxPageSetupDialog: Standard page setup dialog + @li wxPrintDialog: Standard print dialog + @li wxProgressDialog: Progress indication dialog + @li wxMessageDialog: Simple message box dialog + @li wxSymbolPickerDialog: Symbol selector dialog + @li wxRichTextFormattingDialog: A dialog for formatting the content of a wxRichTextCtrl + @li wxWizard: A wizard dialog. + + + @section page_categories_ctrl Controls + + Typically, these are small windows which provide interaction with the user. Controls + that are not static can have wxValidator associated with them. + + @li wxAnimationCtrl: A control to display an animation + @li wxControl: The base class for controls + @li wxButton: Push button control, displaying text + @li wxBitmapButton: Push button control, displaying a bitmap + @li wxBitmapComboBox: A combobox with bitmaps next to text items + @li wxToggleButton: A button which stays pressed when clicked by user. + @li wxBitmapToggleButton: A toggle button with bitmaps. + @li wxCalendarCtrl: Control showing an entire calendar month + @li wxCheckBox: Checkbox control + @li wxCheckListBox: A listbox with a checkbox to the left of each item + @li wxChoice: Choice control (a combobox without the editable area) + @li wxCollapsiblePane: A panel which can be shown/hidden by the user + @li wxComboBox: A choice with an editable area + @li wxComboCtrl: A combobox with application defined popup + @li wxDataViewCtrl: A control to tabular or tree like data + @li wxDataViewTreeCtrl: A specialized wxDataViewCtrl with wxTreeCtrl-like API + @li wxGauge: A control to represent a varying quantity, such as time remaining + @li wxGenericDirCtrl: A control for displaying a directory tree + @li wxHtmlListBox: An abstract class for creating listboxes showing HTML content + @li wxSimpleHtmlListBox: A listbox showing HTML content + @li wxStaticBox: A static, or group box for visually grouping related controls + @li wxListBox: A list of strings for single or multiple selection + @li wxListCtrl: A control for displaying lists of strings and/or icons, plus a multicolumn report view + @li wxListView: A simpler interface (façade) for wxListCtrl in report mode + @li wxOwnerDrawnComboBox: A combobox with owner-drawn list items + @li wxRichTextCtrl: Generic rich text editing control + @li wxTextCtrl: Single or multiline text editing control + @li wxTreeCtrl: Tree (hierarchy) control + @li wxScrollBar: Scrollbar control + @li wxSpinButton: A spin or `up-down' control + @li wxSpinCtrl: A spin control - i.e. spin button and text control + @li wxStaticText: One or more lines of non-editable text + @li wxHyperlinkCtrl: A static text which opens an URL when clicked + @li wxStaticBitmap: A control to display a bitmap + @li wxRadioBox: A group of radio buttons + @li wxRadioButton: A round button to be used with others in a mutually exclusive way + @li wxSlider: A slider that can be dragged by the user + @li wxVListBox: A listbox supporting variable height rows + + + + @section page_categories_miscpickers Miscellaneous pickers + + A picker control is a control whose appearance and behaviour is highly platform-dependent. + + @li wxColourPickerCtrl: A control which allows the user to choose a colour + @li wxDirPickerCtrl: A control which allows the user to choose a directory + @li wxFilePickerCtrl: A control which allows the user to choose a file + @li wxFontPickerCtrl: A control which allows the user to choose a font + @li wxDatePickerCtrl: Small date picker control + + + + @section page_categories_menus Menus + + @li wxMenu: Displays a series of menu items for selection + @li wxMenuBar: Contains a series of menus for use with a frame + @li wxMenuItem: Represents a single menu item + + + + @section page_categories_wxaui wxAUI - advanced user interface + + This is a new set of classes for writing a customizable application + interface with built-in docking, floatable panes and a flexible + MDI-like interface. Further classes for custom notebooks with + draggable tabs etc. are in progress. See also @ref aui_overview. + + @li wxAuiManager: The central class for managing the interface + @li wxAuiNotebook: A replacement notebook class with extra features + @li wxAuiPaneInfo: Describes a single pane + @li wxAuiDockArt: Art and metrics provider for customizing the docking user interface + @li wxAuiTabArt: Art and metrics provider for customizing the notebook user interface + + + + @section page_categories_winlayout Window layout + + There are two different systems for laying out windows (and dialogs in particular). + One is based upon so-called sizers and it requires less typing, thinking and calculating + and will in almost all cases produce dialogs looking equally well on all platforms, the + other is based on so-called constraints and is deprecated, though still available. + + @ref sizer_overview describes sizer-based layout. + + These are the classes relevant to sizer-based layout. + + @li wxSizer: Abstract base class + @li wxGridSizer: A sizer for laying out windows in a grid with all fields having the same size + @li wxFlexGridSizer: A sizer for laying out windows in a flexible grid + @li wxGridBagSizer: Another grid sizer that lets you specify the cell an item is in, and items can span rows and/or columns. + @li wxBoxSizer: A sizer for laying out windows in a row or column + @li wxStaticBoxSizer: Same as wxBoxSizer, but with a surrounding static box + @li wxWrapSizer: A sizer which wraps its child controls as size permits + + @ref constraints_overview describes constraints-based layout. + + These are the classes relevant to constraints-based window layout. + + @li wxIndividualLayoutConstraint: Represents a single constraint dimension + @li wxLayoutConstraints: Represents the constraints for a window class + + Other layouting classes: + + @li wxLayoutAlgorithm: An alternative window layout facility + + + @section page_categories_dc Device contexts + + @ref dc_overview + + Device contexts are surfaces that may be drawn on, and provide an + abstraction that allows parameterisation of your drawing code + by passing different device contexts. + + @li wxAutoBufferedPaintDC: A helper device context for double buffered drawing inside @b OnPaint. + @li wxBufferedDC: A helper device context for double buffered drawing. + @li wxBufferedPaintDC: A helper device context for double buffered drawing inside @b OnPaint. + @li wxClientDC: A device context to access the client area outside @b OnPaint events + @li wxPaintDC: A device context to access the client area inside @b OnPaint events + @li wxWindowDC: A device context to access the non-client area + @li wxScreenDC: A device context to access the entire screen + @li wxDC: The device context base class + @li wxMemoryDC: A device context for drawing into bitmaps + @li wxMetafileDC: A device context for drawing into metafiles + @li wxMirrorDC: A proxy device context allowing for simple mirroring. + @li wxPostScriptDC: A device context for drawing into PostScript files + @li wxPrinterDC: A device context for drawing to printers + + + @section page_categories_gdi Graphics device interface + + @ref bitmap_overview + + These classes are related to drawing on device contexts and windows. + + @li wxColour: Represents the red, blue and green elements of a colour + @li wxDCClipper: Wraps the operations of setting and destroying the clipping region + @li wxBitmap: Represents a bitmap + @li wxBrush: Used for filling areas on a device context + @li wxBrushList: The list of previously-created brushes + @li wxCursor: A small, transparent bitmap representing the cursor + @li wxFont: Represents fonts + @li wxFontList: The list of previously-created fonts + @li wxIcon: A small, transparent bitmap for assigning to frames and drawing on device contexts + @li wxImage: A platform-independent image class + @li wxImageList: A list of images, used with some controls + @li wxMask: Represents a mask to be used with a bitmap for transparent drawing + @li wxPen: Used for drawing lines on a device context + @li wxPenList: The list of previously-created pens + @li wxPalette: Represents a table of indices into RGB values + @li wxRegion: Represents a simple or complex region on a window or device context + @li wxRendererNative: Abstracts high-level drawing primitives + + + @section page_categories_events Events + + @ref eventhandling_overview + + An event object contains information about a specific event. Event handlers + (usually member functions) have a single, event argument. + + @li wxActivateEvent: A window or application activation event + @li wxCalendarEvent: Used with wxCalendarCtrl + @li wxCalculateLayoutEvent: Used to calculate window layout + @li wxChildFocusEvent: A child window focus event + @li wxClipboardTextEvent: A clipboard copy/cut/paste treebook event event + @li wxCloseEvent: A close window or end session event + @li wxCommandEvent: An event from a variety of standard controls + @li wxContextMenuEvent: An event generated when the user issues a context menu command + @li wxDateEvent: Used with wxDatePickerCtrl + @li wxDialUpEvent: Event send by wxDialUpManager + @li wxDropFilesEvent: A drop files event + @li wxEraseEvent: An erase background event + @li wxEvent: The event base class + @li wxFindDialogEvent: Event sent by wxFindReplaceDialog + @li wxFocusEvent: A window focus event + @li wxKeyEvent: A keypress event + @li wxIconizeEvent: An iconize/restore event + @li wxIdleEvent: An idle event + @li wxInitDialogEvent: A dialog initialisation event + @li wxJoystickEvent: A joystick event + @li wxListEvent: A list control event + @li wxMaximizeEvent: A maximize event + @li wxMenuEvent: A menu event + @li wxMouseCaptureChangedEvent: A mouse capture changed event + @li wxMouseCaptureLostEvent: A mouse capture lost event + @li wxMouseEvent: A mouse event + @li wxMoveEvent: A move event + @li wxNavigationKeyEvent: An event set by navigation keys such as tab + @li wxNotebookEvent: A notebook control event + @li wxNotifyEvent: A notification event, which can be vetoed + @li wxPaintEvent: A paint event + @li wxProcessEvent: A process ending event + @li wxQueryLayoutInfoEvent: Used to query layout information + @li wxRichTextEvent: A rich text editing event + @li wxScrollEvent: A scroll event from sliders, stand-alone scrollbars and spin buttons + @li wxScrollWinEvent: A scroll event from scrolled windows + @li wxSizeEvent: A size event + @li wxSocketEvent: A socket event + @li wxSpinEvent: An event from wxSpinButton + @li wxSplitterEvent: An event from wxSplitterWindow + @li wxSysColourChangedEvent: A system colour change event + @li wxTimerEvent: A timer expiration event + @li wxTreebookEvent: A treebook control event + @li wxTreeEvent: A tree control event + @li wxUpdateUIEvent: A user interface update event + @li wxWindowCreateEvent: A window creation event + @li wxWindowDestroyEvent: A window destruction event + @li wxWizardEvent: A wizard event + + + @section page_categories_val Validators + + @ref validator_overview + + These are the window validators, used for filtering and validating + user input. + + @li wxValidator: Base validator class + @li wxTextValidator: Text control validator class + @li wxGenericValidator: Generic control validator class + + + @section page_categories_data Data structures + + These are the data structure classes supported by wxWidgets. + + @li wxCmdLineParser: Command line parser class + @li wxDateSpan: A logical time interval. + @li wxDateTime: A class for date/time manipulations + @li wxLongLong: A portable 64 bit integer type + @li wxObject: The root class for most wxWidgets classes + @li wxPathList: A class to help search multiple paths + @li wxPoint: Representation of a point + @li wxRect: A class representing a rectangle + @li wxRegEx: Regular expression support + @li wxRegion: A class representing a region + @li wxString: A string class + @li wxStringTokenizer: A class for interpreting a string as a list of tokens or words + @li wxRealPoint: Representation of a point using floating point numbers + @li wxSize: Representation of a size + @li wxTimeSpan: A time interval. + @li wxURI: Represents a Uniform Resource Identifier + @li wxVariant: A class for storing arbitrary types that may change at run-time + + + @section page_categories_containers Container classes + + @ref container_overview + + These are classes, templates and class macros are used by wxWidgets. Most + of these classes provide a subset or almost complete STL API. + + @li wxArray: A type-safe dynamic array implementation (macro based) + @li wxArrayString: An efficient container for storing wxString objects + @li wxHashMap: A type-safe hash map implementation (macro based) + @li wxHashSet: A type-safe hash set implementation(macro based) + @li wxHashTable: A simple hash table implementation (deprecated, use wxHashMap) + @li wxList: A type-safe linked list implementation (macro based) + @li wxVector: Template base vector implementation identical to std::vector + + + @section page_categories_smartpointers Smart pointers + + wxWidgets provides a few smart pointer class templates. + + @li wxObjectDataPtr: A shared pointer (using intrusive reference counting) + @li wxScopedPtr: A scoped pointer + @li wxSharedPtr: A shared pointer (using non-intrusive reference counting) + @li wxWeakRef: A weak reference + + + @section page_categories_rtti Run-time class information system + + @ref runtimeclass_overview + + wxWidgets supports run-time manipulation of class information, and dynamic + creation of objects given class names. + + @li wxClassInfo: Holds run-time class information + @li wxObject: Root class for classes with run-time information + @li RTTI macros: Macros for manipulating run-time information + + + @section page_categories_logging Logging features + + @ref log_overview + + wxWidgets provides several classes and functions for message logging. + Please see the @ref log_overview for more details. + + @li wxLog: The base log class + @li wxLogStderr: Log messages to a C STDIO stream + @li wxLogStream: Log messages to a C++ iostream + @li wxLogTextCtrl: Log messages to a wxTextCtrl + @li wxLogWindow: Log messages to a log frame + @li wxLogGui: Default log target for GUI programs + @li wxLogNull: Temporarily suppress message logging + @li wxLogChain: Allows to chain two log targets + @li wxLogInterposer: Allows to filter the log messages + @li wxLogInterposerTemp: Allows to filter the log messages + @li wxStreamToTextRedirector: Allows to redirect output sent to @c cout to a wxTextCtrl + @li Log functions: Error and warning logging functions + + + @section page_categories_debugging Debugging features + + @ref debugging_overview + + wxWidgets supports some aspects of debugging an application through + classes, functions and macros. + + @li wxDebugContext: Provides memory-checking facilities + @li Debugging macros: Debug macros for assertion and checking + @li WXDEBUG_NEW: Use this macro to give further debugging information + @li wxDebugReport: Base class for creating debug reports in case of a program crash. + @li wxDebugReportCompress: Class for creating compressed debug reports. + @li wxDebugReportUpload: Class for uploading compressed debug reports via HTTP. + @li wxDebugReportPreview: Abstract base class for previewing the contents of a debug report. + @li wxDebugReportPreviewStd: Standard implementation of wxDebugReportPreview. + + + @section page_categories_net Networking classes + + wxWidgets provides its own classes for socket based networking. + + @li wxDialUpManager: Provides functions to check the status of network connection and to establish one + @li wxIPV4address: Represents an Internet address + @li wxIPaddress: Represents an Internet address + @li wxSocketBase: Represents a socket base object + @li wxSocketClient: Represents a socket client + @li wxSocketServer: Represents a socket server + @li wxSocketEvent: A socket event + @li wxFTP: FTP protocol class + @li wxHTTP: HTTP protocol class + @li wxURL: Represents a Universal Resource Locator + + + + @section page_categories_ipc Interprocess communication + + @ref ipc_overview + + wxWidgets provides simple interprocess communications facilities + based on Windows DDE, but available on most platforms using TCP. + + @li wxClient, wxDDEClient: Represents a client + @li wxConnection, wxDDEConnection: Represents the connection between a client and a server + @li wxServer, wxDDEServer: Represents a server + + + + @section page_categories_dvf Document-view framework + + @ref docview_overview + + wxWidgets supports a document/view framework which provides + housekeeping for a document-centric application. + + @li wxDocument: Represents a document + @li wxView: Represents a view + @li wxDocTemplate: Manages the relationship between a document class and a view class + @li wxDocManager: Manages the documents and views in an application + @li wxDocChildFrame: A child frame for showing a document view + @li wxDocParentFrame: A parent frame to contain views + + + + @section page_categories_printing Printing framework + + @ref printing_overview + + A printing and previewing framework is implemented to + make it relatively straightforward to provide document printing + facilities. + + @li wxPreviewFrame: Frame for displaying a print preview + @li wxPreviewCanvas: Canvas for displaying a print preview + @li wxPreviewControlBar: Standard control bar for a print preview + @li wxPrintDialog: Standard print dialog + @li wxPageSetupDialog: Standard page setup dialog + @li wxPrinter: Class representing the printer + @li wxPrinterDC: Printer device context + @li wxPrintout: Class representing a particular printout + @li wxPrintPreview: Class representing a print preview + @li wxPrintData: Represents information about the document being printed + @li wxPrintDialogData: Represents information about the print dialog + @li wxPageSetupDialogData: Represents information about the page setup dialog + + + + @section page_categories_dd Drag and drop and clipboard classes + + @ref dnd_overview + + @li wxDataObject: Data object class + @li wxDataFormat: Represents a data format + @li wxTextDataObject: Text data object class + @li wxFileDataObject: File data object class + @li wxBitmapDataObject: Bitmap data object class + @li wxURLDataObject: URL data object class + @li wxCustomDataObject: Custom data object class + @li wxClipboard: Clipboard class + @li wxDropTarget: Drop target class + @li wxFileDropTarget: File drop target class + @li wxTextDropTarget: Text drop target class + @li wxDropSource: Drop source class + + + @section page_categories_file File related classes + + wxWidgets has several small classes to work with disk files, see wxfileoverview for more details. + + @li wxFileName: Operations with the file name and attributes + @li wxDir: Class for enumerating files/subdirectories. + @li wxDirTraverser: Class used together with wxDir for recursively enumerating the files/subdirectories + @li wxFile: Low-level file input/output class. + @li wxFFile: Another low-level file input/output class. + @li wxTempFile: Class to safely replace an existing file + @li wxTextFile: Class for working with text files as with arrays of lines + @li wxStandardPaths: Paths for standard directories + @li wxPathList: A class to help search multiple paths + + + @section page_categories_streams Stream classes + + wxWidgets has its own set of stream classes, as an alternative to often buggy standard stream + libraries, and to provide enhanced functionality. + + @li wxStreamBase: Stream base class + @li wxStreamBuffer: Stream buffer class + @li wxInputStream: Input stream class + @li wxOutputStream: Output stream class + @li wxCountingOutputStream: Stream class for querying what size a stream would have. + @li wxFilterInputStream: Filtered input stream class + @li wxFilterOutputStream: Filtered output stream class + @li wxBufferedInputStream: Buffered input stream class + @li wxBufferedOutputStream: Buffered output stream class + @li wxMemoryInputStream: Memory input stream class + @li wxMemoryOutputStream: Memory output stream class + @li wxDataInputStream: Platform-independent binary data input stream class + @li wxDataOutputStream: Platform-independent binary data output stream class + @li wxTextInputStream: Platform-independent text data input stream class + @li wxTextOutputStream: Platform-independent text data output stream class + @li wxFileInputStream: File input stream class + @li wxFileOutputStream: File output stream class + @li wxFFileInputStream: Another file input stream class + @li wxFFileOutputStream: Another file output stream class + @li wxTempFileOutputStream: Stream to safely replace an existing file + @li wxStringInputStream: String input stream class + @li wxStringOutputStream: String output stream class + @li wxZlibInputStream: Zlib and gzip (compression) input stream class + @li wxZlibOutputStream: Zlib and gzip (compression) output stream class + @li wxZipInputStream: Input stream for reading from ZIP archives + @li wxZipOutputStream: Output stream for writing from ZIP archives + @li wxTarInputStream: Input stream for reading from tar archives + @li wxTarOutputStream: Output stream for writing from tar archives + @li wxSocketInputStream: Socket input stream class + @li wxSocketOutputStream: Socket output stream class + + + @section page_categories_threading Threading classes + + @ref thread_overview + + wxWidgets provides a set of classes to make use of the native thread + capabilities of the various platforms. + + @li wxThread: Thread class + @li wxThreadHelper: Manages background threads easily + @li wxMutex: Mutex class + @li wxMutexLocker: Mutex locker utility class + @li wxCriticalSection: Critical section class + @li wxCriticalSectionLocker: Critical section locker utility class + @li wxCondition: Condition class + @li wxSemaphore: Semaphore class + + + @section page_categories_html HTML classes + + wxWidgets provides a set of classes to display text in HTML format. These + class include a help system based on the HTML widget. + + @li wxHtmlHelpController: HTML help controller class + @li wxHtmlWindow: HTML window class + @li wxHtmlEasyPrinting: Simple class for printing HTML + @li wxHtmlPrintout: Generic HTML wxPrintout class + @li wxHtmlParser: Generic HTML parser class + @li wxHtmlTagHandler: HTML tag handler, pluginable into wxHtmlParser + @li wxHtmlWinParser: HTML parser class for wxHtmlWindow + @li wxHtmlWinTagHandler: HTML tag handler, pluginable into wxHtmlWinParser + + + @section page_categories_rich Rich text classes + + wxWidgets provides a set of generic classes to edit and print simple rich text with character + and paragraph formatting. + + @li wxTextAttr: Attributes specifying text styling. + @li wxRichTextCtrl: A rich text control. + @li wxRichTextBuffer: The content of a rich text control. + @li wxRichTextCharacterStyleDefinition: Definition of character styling. + @li wxRichTextParagraphStyleDefinition: Definition of paragraph styling. + @li wxRichTextListStyleDefinition: Definition of list styling. + @li wxRichTextStyleSheet: A set of style definitions. + @li wxRichTextStyleComboCtrl: A drop-down control for applying styles. + @li wxRichTextStyleListBox: A listbox for applying styles. + @li wxRichTextStyleOrganiserDialog: A dialog that can be used for managing or browsing styles. + @li wxRichTextEvent: A rich text event. + @li wxRichTextRange: Specification for ranges in a rich text control or buffer. + @li wxRichTextFileHandler: File handler base class. + @li wxRichTextHTMLHandler: A handler for converting rich text to HTML. + @li wxRichTextXMLHandler: A handler for loading and saving rich text XML. + @li wxRichTextFormattingDialog: A dialog for rich text formatting. + @li wxRichTextPrinting: A class for easy printing of rich text buffers. + @li wxRichTextPrintout: A class used by wxRichTextPrinting. + @li wxRichTextHeaderFooterData: Header and footer data specification. + + + @section page_categories_stc Scintilla text editor classes + + wxWidgets also provides a wrapper around the Scintilla text editor control, which is + a control for plain-text editing with support for highlighting, smart indentation, etc. + + @li wxStyledTextCtrl: A wxWidgets implementation of the Scintilla source code editing component. + + + @section page_categories_vfs Virtual file system classes + + wxWidgets provides a set of classes that implement an extensible virtual file system, + used internally by the HTML classes. + + @li wxFSFile: Represents a file in the virtual file system + @li wxFileSystem: Main interface for the virtual file system + @li wxFileSystemHandler: Class used to announce file system type + + + @section page_categories_xml XML classes + + @li wxXmlDocument: A class to parse XML files + @li wxXmlNode: A class which represents XML nodes + @li wxXmlAttribute: A class which represent an XML attribute + + + @section page_categories_xrc XML-based resource system classes + + @ref xrc_overview + + Resources allow your application to create controls and other user interface elements + from specifications stored in an XML format. + + @li wxXmlResource: The main class for working with resources + @li wxXmlResourceHandler: The base class for XML resource handlers + + + @section page_categories_help Online help + + @li wxHelpController: Family of classes for controlling help windows + @li wxHtmlHelpController: HTML help controller class + @li wxContextHelp: Class to put application into context-sensitive help mode + @li wxContextHelpButton: Button class for putting application into context-sensitive help mode + @li wxHelpProvider: Abstract class for context-sensitive help provision + @li wxSimpleHelpProvider: Class for simple context-sensitive help provision + @li wxHelpControllerHelpProvider: Class for context-sensitive help provision via a help controller + @li wxToolTip: Class implementing tooltips + + + @section page_categories_media Multimedia classes + + @li wxMediaCtrl: Display multimedia contents. + + + @section page_categories_gl OpenGL classes + + @li wxGLCanvas: Canvas that you can render OpenGL calls to. + @li wxGLContext: Class to ease sharing of OpenGL data resources. + + + @section page_categories_appmanagement Application and process-management classes + + @li wxApp: Application class + @li wxCmdLineParser: Command line parser class + @li wxDllLoader: Class to work with shared libraries. + @li wxProcess: Process class + + + @section page_categories_misc Miscellaneous + + @li wxCaret: A caret (cursor) object + @li wxConfigBase: Classes for reading/writing the configuration settings + @li wxTimer: Timer class + @li wxStopWatch: Stop watch class + @li wxMimeTypesManager: MIME-types manager class + @li wxSystemSettings: System settings class for obtaining various global parameters + @li wxSystemOptions: System options class for run-time configuration + @li wxAcceleratorTable: Accelerator table + @li wxAutomationObject: OLE automation class + @li wxFontMapper: Font mapping, finding suitable font for given encoding + @li wxEncodingConverter: Encoding conversions + @li wxCalendarDateAttr: Used with wxCalendarCtrl + @li wxQuantize: Class to perform quantization, or colour reduction + @li wxSingleInstanceChecker: Check that only single program instance is running + +*/ \ No newline at end of file diff --git a/docs/doxygen/mainpages/const_cpp.h b/docs/doxygen/mainpages/const_cpp.h new file mode 100644 index 0000000000..840a44aa29 --- /dev/null +++ b/docs/doxygen/mainpages/const_cpp.h @@ -0,0 +1,249 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: const_cpp.h +// Purpose: Preprocessor symbols +// Author: Vadim Zeitlin +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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. + + TODO: what can we use here instead of \twocolitem to keep text readable?? + + @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 + 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: + $1020$ for $4.2$ (the first supported version), $1100$ for + $5.0$, $1200$ for $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, $1100$ is $11.0$ and $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 $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 $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 new file mode 100644 index 0000000000..f456c6748f --- /dev/null +++ b/docs/doxygen/mainpages/const_keycode.h @@ -0,0 +1,154 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: platdetails.h +// Purpose: wxKeyCode values enumerated +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_keycodes Keycodes + + @header{wx/defs.h} + + 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 + + // 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, + + // 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 + +*/ diff --git a/docs/doxygen/mainpages/const_keymod.h b/docs/doxygen/mainpages/const_keymod.h new file mode 100644 index 0000000000..769b668d69 --- /dev/null +++ b/docs/doxygen/mainpages/const_keymod.h @@ -0,0 +1,42 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: keymod.h +// Purpose: key modifiers +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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 new file mode 100644 index 0000000000..930eeedf62 --- /dev/null +++ b/docs/doxygen/mainpages/const_langcodes.h @@ -0,0 +1,24 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: const_langcodes.h +// Purpose: Language values enumerated +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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: + + + + 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 new file mode 100644 index 0000000000..9c053fb987 --- /dev/null +++ b/docs/doxygen/mainpages/const_stdevtid.h @@ -0,0 +1,150 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: const_stdevtid.h +// Purpose: std event values enumerated +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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. + + @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_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 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_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, + + wxID_HIGHEST = 5999 + @endverbatim + +*/ diff --git a/docs/doxygen/mainpages/const_stockitems.h b/docs/doxygen/mainpages/const_stockitems.h new file mode 100644 index 0000000000..8770abe829 --- /dev/null +++ b/docs/doxygen/mainpages/const_stockitems.h @@ -0,0 +1,78 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: const_stockitems.h +// Purpose: stock item values enumerated +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_stockitems Stock items + + 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 + + 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 new file mode 100644 index 0000000000..2e70b837dd --- /dev/null +++ b/docs/doxygen/mainpages/const_wxusedef.h @@ -0,0 +1,359 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: const_wxusedef.h +// Purpose: wxUSE preprocessor symbols +// Author: Tim Stahlhut +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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 Debugging overview} + @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 new file mode 100644 index 0000000000..71be73a820 --- /dev/null +++ b/docs/doxygen/mainpages/constants.h @@ -0,0 +1,24 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: constants.h +// Purpose: Constants page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_constants Constants + + This chapter describes the constants defined by wxWidgets. + + @li @subpage page_cppconst + @li @subpage page_keycodes + @li @subpage page_keymodifiers + @li @subpage page_languagecodes + @li @subpage page_stdevtid + @li @subpage page_stockitems + @li @subpage page_wxusedef + +*/ diff --git a/docs/doxygen/mainpages/copyright.h b/docs/doxygen/mainpages/copyright.h new file mode 100644 index 0000000000..6c0bf8c2c0 --- /dev/null +++ b/docs/doxygen/mainpages/copyright.h @@ -0,0 +1,596 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: copyright.h +// Purpose: Copyright page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_copyright Copyright notice + +
+ Copyright (c) 1992-2008 Julian Smart, Robert Roebling, Vadim Zeitlin and other + members of the wxWidgets team + + 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. + + @li @subpage page_copyright_wxlicense + @li @subpage page_copyright_gnulicense + +*/ + + +/*! + + @page page_copyright_wxlicense wxWindows Library License, Version 3.1 + + + + 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. + +
+ WXWINDOWS LIBRARY LICENCE + + 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 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. + + + 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. + + 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. + + 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! +*/ diff --git a/docs/doxygen/mainpages/devtips.h b/docs/doxygen/mainpages/devtips.h new file mode 100644 index 0000000000..a58bc33893 --- /dev/null +++ b/docs/doxygen/mainpages/devtips.h @@ -0,0 +1,311 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: devtips.h +// Purpose: Cross-platform development page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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. + + @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 + + 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: + + @verbatim + // For compilers that support precompilation, includes "wx.h". + #include + + #ifdef __BORLANDC__ + #pragma hdrstop + #endif + + #ifndef WX_PRECOMP + // Include your minimal set of headers here, or wx.h + #include + #endif + + ... 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. + + + + @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 libraries_page for more information on these. + + + + @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 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 + + 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. + + 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 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. + + + + @section page_multiplatform_windowsfiles Windows-specific files + + wxWidgets application compilation under MS Windows requires at least one + extra file: a 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: + + @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: + + @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. + + @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 + + 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. + + 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. + + 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. + + + + @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: + + 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). + + The macros handling bit-swapping with respect to the applications endianness + are described in the @ref byteordermacros section. + + + + @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 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 + + The following documents some miscellaneous C++ issues. + + @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. + + @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. + + @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 + + @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. + + @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. + + 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++. + + + + @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. + + 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. + + 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. + + 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. + + See also the @ref filefunctions 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 new file mode 100644 index 0000000000..0e997ca080 --- /dev/null +++ b/docs/doxygen/mainpages/introduction.h @@ -0,0 +1,234 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: introduction.h +// Purpose: Introduction page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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. + + 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/libs.h b/docs/doxygen/mainpages/libs.h new file mode 100644 index 0000000000..396c7c234a --- /dev/null +++ b/docs/doxygen/mainpages/libs.h @@ -0,0 +1,156 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: libs.h +// Purpose: Libraries page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_libraries Libraries list + + wxWidgets can be built either as a single large + library (this is called the monolithic build) or as several smaller + libraries (multilib build}). Multilib build is the default. + + wxWidgets library is divided into libraries briefly described below. This + diagram show dependencies between them: + + @image html libs.gif + + Please note that arrows indicate the "depends from" relation and that + all blue boxes depend from @ref wxbase library (i.e. they are non-GUI libraries), + and all green boxes depend from @ref wxcore library (i.e. they are GUI libraries). + + + + + + @section page_libraries_wxbase wxBase + + Every wxWidgets application must link against this library. It contains + mandatory classes that any wxWidgets code depends on (e.g. wxString) and + portability classes that abstract differences between platforms. + @ref wxbase can be used to develop console mode applications, it does not require + any GUI libraries or running X Window System on Unix. + + + @section page_libraries_wxcore wxCore + + Basic GUI classes such as GDI classes or controls are in this library. All + wxWidgets GUI applications must link against this library, only console mode + applications don't. + + Requires @ref wxbase. + + + @section wxaui wxAui + + This contains the Advanced User Interface docking library. + + Requires @ref wxadv, @ref wxhtml, @ref wxxml, @ref wxcore, @ref wxbase. + + + @section wxnet wxNet + + Classes for network access: + + @li wxSocket classes (wxSocketClient, wxSocketServer and related classes) + @li wxSocketOutputStream and wxSocketInputStream + @li sockets-based IPC classes (wxTCPServer, wxTCPClient and wxTCPConnection) + @li wxURL + @li wxInternetFSHandler (a wxFileSystem handler) + + Requires @ref wxbase. + + + @section wxrichtext wxRichText + + This contains generic rich text control functionality. + + Requires @ref wxadv, @ref wxhtml, @ref wxxml, @ref wxcore, @ref wxbase. + + + @section wxxml wxXML + + This library contains simple classes for parsing XML documents. + + Requires @ref wxbase. + + + @section wxadv wxAdvanced + + Advanced or rarely used GUI classes: + + @li wxCalendarCtrl + @li wxGrid classes + @li wxJoystick + @li wxLayoutAlgorithm + @li wxSplashScreen + @li wxTaskBarIcon + @li wxSound + @li wxWizard + @li wxSashLayoutWindow + @li wxSashWindow + @li ...others + + Requires @ref wxcore and @ref wxbase. + + + @section wxmedia wxMedia + + Miscellaneous classes related to multimedia. Currently this library only + contains wxMediaCtrl but more classes will be added in + the future. + + Requires @ref wxcore and @ref wxbase. + + + @section wxgl wxGL + + This library contains wxGLCanvas class for integrating + OpenGL library with wxWidgets. Unlike all others, this library is {\em not} + part of the monolithic library, it is always built as separate library. + + Requires @ref wxcore and @ref wxbase. + + + @section wxhtml wxHTML + + Simple HTML renderer and other @ref html_overview are contained in this library, + as well as wxHtmlHelpController, wxBestHelpController and wxHtmlListBox. + + Requires @ref wxcore and @ref wxbase. + + + @section wxqa wxQA + + This is the library containing extra classes for quality assurance. Currently + it only contains wxDebugReport and related classes, + but more will be added to it in the future. + + Requires @ref wxxml, @ref wxcore, @ref wxbase. + + + @section wxxrc wxXRC + + This library contains wxXmlResource class that + provides access to XML resource files in XRC format. + + Requires @ref wxadv, @ref wxhtml, @ref wxxml, @ref wxcore, @ref wxbase. + + + @section wxstc wxSTC + + STC (Styled Text Control) is a wrapper around Scintilla, a syntax-highlighting text editor. + See http://www.scintilla.org for more info about Scintilla. + + Requires @ref wxcore, @ref wxbase. + +*/ diff --git a/docs/doxygen/mainpages/manual.h b/docs/doxygen/mainpages/manual.h new file mode 100644 index 0000000000..63a4f1e4c5 --- /dev/null +++ b/docs/doxygen/mainpages/manual.h @@ -0,0 +1,33 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: main.h +// Purpose: Main page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @mainpage wxWidgets 2.9.0: A portable C++ and Python GUI toolkit + @author Julian Smart, Robert Roebling, Vadim Zeitlin, Robin Dunn, et al + @date February, 2008 + + @image html wx.png + + @section Contents + @li @subpage page_copyright + @li @subpage page_introduction + @li @subpage page_multiplatform + @li @subpage page_utils + @li @subpage page_strategies + @li @subpage page_libraries + @li @subpage page_constants + @li @subpage page_categories + @li @subpage page_topics + @li @subpage page_platdetails + + + +*/ diff --git a/docs/doxygen/mainpages/platdetails.h b/docs/doxygen/mainpages/platdetails.h new file mode 100644 index 0000000000..0f2bb7eb8f --- /dev/null +++ b/docs/doxygen/mainpages/platdetails.h @@ -0,0 +1,593 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: platdetails.h +// Purpose: Platform details page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_platdetails 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. + + @li @ref page_platdetails_wxgtkport + @li @ref page_platdetails_wxmacport + @li @ref page_platdetails_wxos2port + @li @ref page_platdetails_wxmglport + @li @ref page_platdetails_wxx11port + @li @ref page_platdetails_wxmswport + @li @ref page_platdetails_nativedocs + + +
+ + + + @section page_platdetails_wxgtkport wxGTK port + + 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. + + You will need GTK+ 2.0 or higher which is available from: + + 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. + + 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. + + For further information, please see the files in docs/gtk + in the distribution. + + + + + @section page_platdetails_wxmacport wxMac port + + 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. + + + + + @section page_platdetails_wxmglport wxMGL port + + 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 + + http://www.scitechsoft.com/products/product_download.html + + In order to configure wxWidgets to compile wxMGL you will + need to type: + + @verbatim configure --with-mgl --with-universal @endverbatim + + Under DOS, wxMGL uses a dmake based make system. + + For further information, please see the files in docs/mgl + in the distribution. + + + + @section page_platdetails_wxos2port wxOS2 port + + wxOS2 is a port of wxWidgets for the IBM OS/2 platform. + It is currently under construction. + + + + @section page_platdetails_wxx11port wxX11 port + + 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: + + @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. + + + + + + @section page_platdetails_wxmswport wxMSW port + + 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. + + @subsection page_platdetails_wxmswport_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. + + 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. + + @subsubsection page_platdetails_wxmswport_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 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_platdetails_wxmswport_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. + + 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_platdetails_wxmswport_wince_port 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: + + @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 + + 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 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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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). + + 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 + + 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. + + 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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_wxmswport_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_platdetails_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 new file mode 100644 index 0000000000..4ab1119dc0 --- /dev/null +++ b/docs/doxygen/mainpages/strategies.h @@ -0,0 +1,125 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: strategies.h +// Purpose: Strategies page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @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. + + @li @ref page_strategies_reducingerr + @li @ref page_strategies_portability + @li @ref page_strategies_debug + + +
+ + + @section page_strategies_reducingerr Strategies for reducing programming errors + + @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. + + 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. + + @subsection page_strategies_reducingerr_usewxstring Use wxString in preference to character arrays + + 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). + + The same goes for other data types: use classes wherever possible. + + + + @section page_strategies_portability Strategies for portability + + @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 sizer_overview instead. + + @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 xrc_overview for more info. + + + + @section page_strategies_debug Strategies for debugging + + @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! + + 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 + + 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! + + @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. + + @subsection page_strategies_debug_uselogging Use logging functions + + There is a variety of logging functions that you can use in your program: + see @ref logfunctions. + + 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 + + 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 debugmacros 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 debugging_overview for further information. + +*/ diff --git a/docs/doxygen/mainpages/topics.h b/docs/doxygen/mainpages/topics.h new file mode 100644 index 0000000000..4eff49649f --- /dev/null +++ b/docs/doxygen/mainpages/topics.h @@ -0,0 +1,107 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: topics.h +// Purpose: Topic overviews page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +/*! + + @page page_topics Topic overviews + + This chapter contains a selection of topic overviews. + The following are a basic categorization of them: + + @li @ref page_topics_starting + @li @ref page_topics_programming + @li @ref page_topics_nongui + @li @ref page_topics_drawing + @li @ref page_topics_gui + @li @ref page_topics_indivctrl + + +
+ + + @section page_topics_starting Starting with wxWidgets + + @li @subpage referencenotes_overview + @li @subpage roughguide_overview + @li @subpage helloworld_overview + @li @subpage samples_overview + @li @subpage python_overview + + @section page_topics_programming Programming with wxWidgets + + @li @subpage backwardcompatibility_overview + @li @subpage runtimeclass_overview + @li @subpage trefcount_overview + @li @subpage app_overview + @li @subpage unicode_overview + @li @subpage mbconvclasses_overview + @li @subpage internationalization_overview + @li @subpage nonenglish_overview + @li @subpage debugging_overview + @li @subpage log_overview + @li @subpage eventhandling_overview + @li @subpage exceptions_overview + @li @subpage windowstyles_overview + @li @subpage windowdeletion_overview + @li @subpage windowids_overview + @li @subpage envvars_overview + + @section page_topics_nongui Overviews of non-GUI classes + + @li @subpage string_overview + @li @subpage bufferclasses_overview + @li @subpage datetime_overview + @li @subpage container_overview + @li @subpage file_overview + @li @subpage stream_overview + @li @subpage thread_overview + @li @subpage config_overview + @li @subpage fs_overview + @li @subpage resyn_overview + @li @subpage arc_overview + @li @subpage ipc_overview + + @section page_topics_drawing Drawing related classes + + @li @subpage dc_overview + @li @subpage bitmap_overview + @li @subpage font_overview + @li @subpage fontencoding_overview + @li @subpage printing_overview + @li @subpage unixprinting_overview + + @section page_topics_gui Overviews of GUI classes + + @li @subpage sizer_overview + @li @subpage xrc_overview + @li @subpage windowsizing_overview + @li @subpage scrolling_overview + @li @subpage dialog_overview + @li @subpage validator_overview + @li @subpage dataobject_overview + @li @subpage dnd_overview + @li @subpage constraints_overview + + @section page_topics_indivctrl Overviews of individual controls + + @li @subpage html_overview + @li @subpage richtextctrl_overview + @li @subpage aui_overview + @li @subpage commondialogs_overview + @li @subpage toolbar_overview + @li @subpage grid_overview + @li @subpage treectrl_overview + @li @subpage listctrl_overview + @li @subpage splitterwindow_overview + @li @subpage imagelist_overview + @li @subpage bookctrl_overview + @li @subpage tips_overview + @li @subpage docview_overview + +*/ diff --git a/docs/doxygen/mainpages/utilities.h b/docs/doxygen/mainpages/utilities.h new file mode 100644 index 0000000000..a0e2bbb5df --- /dev/null +++ b/docs/doxygen/mainpages/utilities.h @@ -0,0 +1,610 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: utilities.h +// Purpose: Utilities page of the Doxygen manual +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +/*! + + @page page_utils Utilities and samples supplied with wxWidgets + + @li @ref page_utils_utils + @li @ref page_utils_samples + + +
+ + + @section page_utils_utils Utilities + + In addition to the @ref libraries_page, some + additional utilities are supplied in the @c utils hierarchy. + + For other user-contributed packages, please see the Contributions page + on the wxWidgets Web site http://www.wxwidgets.org. + + + @subsection page_utils_utils_helpview Helpview + + Helpview is a program for displaying wxWidgets HTML + Help files. In many cases, you may wish to use the wxWidgets HTML + Help classes from within your application, but this provides a + handy stand-alone viewer. See @ref html_overview for more details. + You can find it in @c samples/html/helpview. + + @subsection page_utils_utils_tex2rtf Tex2RTF + + Supplied with wxWidgets is a utility called Tex2RTF for + converting @e LaTeX manuals HTML, MS HTML Help, wxHTML Help, RTF, and Windows + Help RTF formats. Tex2RTF was used for the wxWidgets manuals and can be used + independently by authors wishing to create on-line and printed manuals from the + same @e LaTeX source. Please see the separate documentation for Tex2RTF. + You can find it under @c utils/tex2rtf. + + @subsection page_utils_utils_helpgen Helpgen + + Helpgen takes C++ header files and generates a Tex2RTF-compatible + documentation file for each class it finds, using comments as appropriate. + This is a good way to start a reference for a set of classes. + Helpgen can be found in @c utils/HelpGen. + + @subsection page_utils_utils_emulator Emulator + + Xnest-based display emulator for X11-based PDA applications. + On some systems, the Xnest window does not synchronise with the + 'skin' window. This program can be found in @c utils/emulator. + + + + + @section page_utils_samples Samples + + Probably the best way to learn wxWidgets is by reading the source of some 50+ + samples provided with it. Many aspects of wxWidgets programming can be learnt + from them, but sometimes it is not simple to just choose the right sample to + look at. This overview aims at describing what each sample does/demonstrates to + make it easier to find the relevant one if a simple grep through all sources + didn't help. They also provide some notes about using the samples and what + features of wxWidgets are they supposed to test. + + There are currently more than 50 different samples as part of wxWidgets and + this list is not complete. You should start your tour of wxWidgets with the + minimal sample which is the wxWidgets version of + "Hello, world!". It shows the basic structure of wxWidgets program and is the + most commented sample of all - looking at its source code is recommended. + + The next most useful samples are probably widgets + and controls which show many of wxWidgets native and + generic controls, such as buttons, listboxes, checkboxes, comboboxes etc. + + Other, more complicated controls, have their own samples. In this category you + may find the following samples showing the corresponding controls: + + @li wxCalendarCtrl: @ref page_utils_samples_calendar + @li wxListCtrl: @ref page_utils_samples_listctrl + @li wxTreeCtrl: @ref page_utils_samples_treectrl + @li wxGrid: @ref page_utils_samples_grid + + Finally, it might be helpful to do a search in the entire sample directory if + you can't find the sample showing the control you are interested in by + name. Most classes contained in wxWidgets occur in at least one of the samples. + + + @subsection page_utils_samples_minimal Minimal sample + + The minimal sample is what most people will know under the term Hello World, + i.e. a minimal program that doesn't demonstrate anything apart from what is + needed to write a program that will display a "hello" dialog. This is usually + a good starting point for learning how to use wxWidgets. + + + @subsection page_utils_samples_animate Animate sample + + The @c animate sample shows how you can use wxAnimationCtrl + control and shows concept of a platform-dependent animation encapsulated + in wxAnimation. + + + @subsection page_utils_samples_artprovider Art provider sample + + The @c artprov sample shows how you can customize the look of standard + wxWidgets dialogs by replacing default bitmaps/icons with your own versions. + It also shows how you can use wxArtProvider to + get stock bitmaps for use in your application. + + + @subsection page_utils_samples_calendar Calendar sample + + This font shows the calendar control in action. It + shows how to configure the control (see the different options in the calendar + menu) and also how to process the notifications from it. + + + @subsection page_utils_samples_config Config sample + + This sample demonstrates the wxConfig classes in a platform + independent way, i.e. it uses text based files to store a given configuration under + Unix and uses the Registry under Windows. + + See wxConfig overview for the descriptions of all + features of this class. + + + @subsection page_utils_samples_controls Controls sample + + The controls sample is the main test program for most simple controls used in + wxWidgets. The sample tests their basic functionality, events, placement, + modification in terms of colour and font as well as the possibility to change + the controls programmatically, such as adding an item to a list box etc. Apart + from that, the sample uses a wxNotebook and tests most + features of this special control (using bitmap in the tabs, using + wxSizer instances and wxLayoutConstraints within notebook pages, advancing pages + programmatically and vetoing a page change by intercepting the wxNotebookEvent. + + The various controls tested are listed here: + + @li wxButton + @li wxBitmapButton + @li wxCheckBox + @li wxChoice + @li wxComboBox + @li wxGauge + @li wxStaticBox + @li wxListBox + @li wxSpinCtrl + @li wxSpinButton + @li wxStaticText + @li wxStaticBitmap + @li wxRadioBox + @li wxRadioButton + @li wxSlider + + + @subsection page_utils_samples_debugrpt DebugRpt sample + + This sample shows how to use wxDebugReport class to + generate a debug report in case of a program crash or otherwise. On start up, + it proposes to either crash itself (by dereferencing a NULL pointer) or + generate debug report without doing it. Next it initializes the debug report + with standard information adding a custom file to it (just a timestamp) and + allows to view the information gathered using + wxDebugReportPreview. + + For the report processing part of the sample to work you should make available + a Web server accepting form uploads, otherwise + wxDebugReportUpload will report an error. + + + @subsection page_utils_samples_dialogs Dialogs sample + + This sample shows how to use the common dialogs available from wxWidgets. These + dialogs are described in detail in the Common dialogs overview. + + + @subsection page_utils_samples_dialup Dialup sample + + This sample shows the wxDialUpManager + class. In the status bar, it displays the information gathered through its + interface: in particular, the current connection status (online or offline) and + whether the connection is permanent (in which case a string `LAN' appears in + the third status bar field - but note that you may be on a LAN not + connected to the Internet, in which case you will not see this) or not. + + Using the menu entries, you may also dial or hang up the line if you have a + modem attached and (this only makes sense for Windows) list the available + connections. + + + @subsection page_utils_samples_dnd DnD sample + + This sample shows both clipboard and drag and drop in action. It is quite non + trivial and may be safely used as a basis for implementing the clipboard and + drag and drop operations in a real-life program. + + When you run the sample, its screen is split in several parts. On the top, + there are two listboxes which show the standard derivations of + wxDropTarget: + wxTextDropTarget and + wxFileDropTarget. + + The middle of the sample window is taken by the log window which shows what is + going on (of course, this only works in debug builds) and may be helpful to see + the sequence of steps of data transfer. + + Finally, the last part is used for dragging text from it to either one of the + listboxes (only one will accept it) or another application. The last + functionality available from the main frame is to paste a bitmap from the + clipboard (or, in the case of the Windows version, also a metafile) - it will be + shown in a new frame. + + So far, everything we mentioned was implemented with minimal amount of code + using standard wxWidgets classes. The more advanced features are demonstrated + if you create a shape frame from the main frame menu. A shape is a geometric + object which has a position, size and color. It models some + application-specific data in this sample. A shape object supports its own + private wxDataFormat which means that you may cut and + paste it or drag and drop (between one and the same or different shapes) from + one sample instance to another (or the same). However, chances are that no + other program supports this format and so shapes can also be rendered as + bitmaps which allows them to be pasted/dropped in many other applications + (and, under Windows, also as metafiles which are supported by most of Windows + programs as well - try Write/Wordpad, for example). + + Take a look at DnDShapeDataObject class to see how you may use + wxDataObject to achieve this. + + + @subsection page_utils_samples_event Event sample + + The event sample demonstrates various features of the wxWidgets events. It + shows using dynamic events and connecting/disconnecting the event handlers + during run time and also using + PushEventHandler() and + PopEventHandler(). + + + @subsection page_utils_samples_except Except(ions) sample + + This very simple sample shows how to use C++ exceptions in wxWidgets programs, + i.e. where to catch the exception which may be thrown by the program code. It + doesn't do anything very exciting by itself, you need to study its code to + understand what goes on. + + You need to build the library with @c wxUSE_EXCEPTIONS being set to @c 1 + and compile your code with C++ exceptions support to be able to build this + sample. + + + @subsection page_utils_samples_exec Exec sample + + The exec sample demonstrates the wxExecute and + wxShell functions. Both of them are used to execute the + external programs and the sample shows how to do this synchronously (waiting + until the program terminates) or asynchronously (notification will come later). + + It also shows how to capture the output of the child process in both + synchronous and asynchronous cases and how to kill the processes with + wxProcess::Kill and test for their existence with + wxProcess::Exists. + + + @subsection page_utils_samples_font Font sample + + The font sample demonstrates wxFont, + wxFontEnumerator and + wxFontMapper classes. It allows you to see the fonts + available (to wxWidgets) on the computer and shows all characters of the + chosen font as well. + + + @subsection page_utils_samples_grid Grid sample + + TODO. + + + @subsection page_utils_samples_html HTML samples + + Eight HTML samples (you can find them in directory @c samples/html) + cover all features of the HTML sub-library. + + @li @b Test demonstrates how to create wxHtmlWindow + and also shows most supported HTML tags. + + @li @b Widget shows how you can embed ordinary controls or windows within an + HTML page. It also nicely explains how to write new tag handlers and extend + the library to work with unsupported tags. + + @li @b About may give you an idea how to write good-looking About boxes. + + @li @b Zip demonstrates use of virtual file systems in wxHTML. The zip archives + handler (ships with wxWidgets) allows you to access HTML pages stored + in a compressed archive as if they were ordinary files. + + @li @b Virtual is yet another virtual file systems demo. This one generates pages at run-time. + You may find it useful if you need to display some reports in your application. + + @li @b Printing explains use of wxHtmlEasyPrinting + class which serves as as-simple-as-possible interface for printing HTML + documents without much work. In fact, only few function calls are sufficient. + + @li @b Help and @b Helpview are variations on displaying HTML help + (compatible with MS HTML Help Workshop). @e Help shows how to embed + wxHtmlHelpController in your application + while @e Helpview is a simple tool that only pops up the help window and + displays help books given at command line. + + + @subsection page_utils_samples_image Image sample + + The image sample demonstrates use of the wxImage class + and shows how to download images in a variety of formats, currently PNG, GIF, + TIFF, JPEG, BMP, PNM and PCX. The top of the sample shows two rectangles, one + of which is drawn directly in the window, the other one is drawn into a + wxBitmap, converted to a wxImage, saved as a PNG image + and then reloaded from the PNG file again so that conversions between wxImage + and wxBitmap as well as loading and saving PNG files are tested. + + At the bottom of the main frame there is a test for using a monochrome bitmap by + drawing into a wxMemoryDC. The bitmap is then drawn + specifying the foreground and background colours with + wxDC::SetTextForeground and + wxDC::SetTextBackground (on the left). The + bitmap is then converted to a wxImage and the foreground colour (black) is + replaced with red using wxImage::Replace. + + This sample also contains the code for testing the image rotation and resizing + and using raw bitmap access, see the corresponding menu commands. + + + @subsection page_utils_samples_internat Internat(ionalization) sample + + The not very clearly named internat sample demonstrates the wxWidgets + internationalization (i18n for short from now on) features. To be more + precise, it only shows localization support, i.e. support for translating the + program messages into another language while true i18n would also involve + changing the other aspects of the programs behaviour. + + More information about this sample can be found in the @c readme.txt file in + its directory. Please see also i18n overview. + + + @subsection page_utils_samples_layout Layout sample + + The layout sample demonstrates the two different layout systems offered + by wxWidgets. When starting the program, you will see a frame with some + controls and some graphics. The controls will change their size whenever + you resize the entire frame and the exact behaviour of the size changes + is determined using the wxLayoutConstraints + class. See also the overview and the + wxIndividualLayoutConstraint + class for further information. + + The menu in this sample offers two more tests, one showing how to use + a wxBoxSizer in a simple dialog and the other one + showing how to use sizers in connection with a wxNotebook + class. See also wxSizer. + + + @subsection page_utils_samples_listctrl Listctrl sample + + This sample shows the wxListCtrl control. Different modes + supported by the control (list, icons, small icons, report) may be chosen from + the menu. + + The sample also provides some timings for adding/deleting/sorting a lot of + (several thousands) items into the control. + + + @subsection page_utils_samples_mediaplayer Mediaplayer sample + + This sample demonstrates how to use all the features of + wxMediaCtrl and play various types of sound, video, + and other files. + + It replaces the old dynamic sample. + + + @subsection page_utils_samples_notebook Notebook sample + + This samples shows wxBookCtrl family of controls. + Although initially it was written to demonstrate wxNotebook + only, it can now be also used to see wxListbook, + wxChoicebook and wxTreebook in action. + Test each of the controls, their orientation, images and pages using + commands through menu. + + + @subsection page_utils_samples_render Render sample + + This sample shows how to replace the default wxWidgets + renderer and also how to write a shared library + (DLL) implementing a renderer and load and unload it during the run-time. + + + @subsection page_utils_samples_scrollsub Scroll subwindow sample + + This sample demonstrates use of the wxScrolledWindow + class including placing subwindows into it and drawing simple graphics. It uses the + SetTargetWindow method and thus the effect + of scrolling does not show in the scrolled window itself, but in one of its subwindows. + + Additionally, this samples demonstrates how to optimize drawing operations in wxWidgets, + in particular using the wxWindow::IsExposed method with + the aim to prevent unnecessary drawing in the window and thus reducing or removing + flicker on screen. + + + @subsection page_utils_samples_sockets Sockets sample + + The sockets sample demonstrates how to use the communication facilities + provided by wxSocket. There are two different + applications in this sample: a server, which is implemented using a + wxSocketServer object, and a client, which + is implemented as a wxSocketClient. + + The server binds to the local address, using TCP port number 3000, + sets up an event handler to be notified of incoming connection requests + (@b wxSOCKET_CONNECTION events), and sits there, waiting for clients + (@e listening, in socket parlance). For each accepted connection, + a new wxSocketBase object is created. These + socket objects are independent from the server that created them, so + they set up their own event handler, and then request to be notified + of @b wxSOCKET_INPUT (incoming data) or @b wxSOCKET_LOST + (connection closed at the remote end) events. In the sample, the event + handler is the same for all connections; to find out which socket the + event is addressed to, the GetSocket function + is used. + + Although it might take some time to get used to the event-oriented + system upon which wxSocket is built, the benefits are many. See, for + example, that the server application, while being single-threaded + (and of course without using fork() or ugly select() loops) can handle + an arbitrary number of connections. + + The client starts up unconnected, so you can use the Connect... option + to specify the address of the server you are going to connect to (the + TCP port number is hard-coded as 3000). Once connected, a number of + tests are possible. Currently, three tests are implemented. They show + how to use the basic IO calls in wxSocketBase, + such as wxSocketBase::Read, wxSocketBase::Write, + wxSocketBase::ReadMsg and wxSocketBase::WriteMsg, + and how to set up the correct IO flags depending on what you are going to + do. See the comments in the code for more information. Note that because + both clients and connection objects in the server set up an event handler + to catch @b wxSOCKET_LOST events, each one is immediately notified + if the other end closes the connection. + + There is also a URL test which shows how to use + the wxURL class to fetch data from a given URL. + + The sockets sample is work in progress. Some things to do: + + @li More tests for basic socket functionality. + @li More tests for protocol classes (wxProtocol and its descendants). + @li Tests for the recently added (and still in alpha stage) datagram sockets. + @li New samples which actually do something useful (suggestions accepted). + + + @subsection page_utils_samples_sound Sound sample + + The @c sound sample shows how to use wxSound for simple + audio output (e.g. notifications). + + + @subsection page_utils_samples_statbar Statbar sample + + This sample shows how to create and use wxStatusBar. Although most of the + samples have a statusbar, they usually only create a default one and only + do it once. + + Here you can see how to recreate the statusbar (with possibly different number + of fields) and how to use it to show icons/bitmaps and/or put arbitrary + controls into it. + + + @subsection page_utils_samples_taborder Tab order sample + + This sample allows to test keyboard navigation (mostly done using the + @c TAB key, hence the sample name) between different controls. + It shows the use of wxWindow::MoveBeforeInTabOrder() and + MoveAfterInTabOrder() methods to change + the default order of the windows in the navigation chain and of + wxWindow::Navigate() for moving focus along this + chain. + + + @subsection page_utils_samples_text Text sample + + This sample demonstrates four features: firstly the use and many variants of + the wxTextCtrl class (single line, multi line, read only, + password, ignoring TAB, ignoring ENTER). + + Secondly it shows how to intercept a wxKeyEvent in both + the raw form using the @c EVT_KEY_UP and @c EVT_KEY_DOWN macros and the + higher level from using the @c EVT_CHAR macro. All characters will be logged + in a log window at the bottom of the main window. By pressing some of the function + keys, you can test some actions in the text ctrl as well as get statistics on the + text ctrls, which is useful for testing if these statistics actually are correct. + + Thirdly, on platforms which support it, the sample will offer to copy text to the + wxClipboard and to paste text from it. The GTK version will + use the so called PRIMARY SELECTION, which is the pseudo clipboard under X and + best known from pasting text to the XTerm program. + + Last not least: some of the text controls have tooltips and the sample also shows + how tooltips can be centrally disabled and their latency controlled. + + + @subsection page_utils_samples_thread Thread sample + + This sample demonstrates use of threads in connection with GUI programs. + There are two fundamentally different ways to use threads in GUI programs and + either way has to take care of the fact that the GUI library itself usually + is not multi-threading safe, i.e. that it might crash if two threads try to + access the GUI class simultaneously. One way to prevent that is have a normal + GUI program in the main thread and some worker threads which work in the + background. In order to make communication between the main thread and the + worker threads possible, wxWidgets offers the wxPostEvent + function and this sample makes use of this function. + + The other way to use a so called Mutex (such as those offered in the wxMutex + class) that prevent threads from accessing the GUI classes as long as any other + thread accesses them. For this, wxWidgets has the wxMutexGuiEnter + and wxMutexGuiLeave functions, both of which are + used and tested in the sample as well. + + See also @ref thread_overview and wxThread. + + + @subsection page_utils_samples_toolbar Toolbar sample + + The toolbar sample shows the wxToolBar class in action. + + The following things are demonstrated: + + @li Creating the toolbar using wxToolBar::AddTool and wxToolBar::AddControl: see + MyApp::InitToolbar in the sample. + @li Using @c EVT_UPDATE_UI handler for automatically enabling/disabling + toolbar buttons without having to explicitly call EnableTool. This is done + in MyFrame::OnUpdateCopyAndCut. + @li Using wxToolBar::DeleteTool and wxToolBar::InsertTool to dynamically update the + toolbar. + + Some buttons in the main toolbar are check buttons, i.e. they stay checked when + pressed. On the platforms which support it, the sample also adds a combobox + to the toolbar showing how you can use arbitrary controls and not only buttons + in it. + + If you toggle another toolbar in the sample (using @c Ctrl-A) you will also + see the radio toolbar buttons in action: the first three buttons form a radio + group, i.e. checking any of them automatically unchecks the previously + checked one. + + + @subsection page_utils_samples_treectrl Treectrl sample + + This sample demonstrates using the wxTreeCtrl class. Here + you may see how to process various notification messages sent by this control + and also when they occur (by looking at the messages in the text control in + the bottom part of the frame). + + Adding, inserting and deleting items and branches from the tree as well as + sorting (in default alphabetical order as well as in custom one) is + demonstrated here as well - try the corresponding menu entries. + + + @subsection page_utils_samples_widgets Widgets sample + + The widgets sample is the main presentation program for most simple and advanced + native controls and complex generic widgets provided by wxWidgets. + The sample tests their basic functionality, events, placement, modification + in terms of colour and font as well as the possibility to change + the controls programmatically, such as adding an item to a list box etc. + All widgets are categorized for easy browsing. + + + @subsection page_utils_samples_wizard Wizard sample + + This sample shows the so-called wizard dialog (implemented using + wxWizard and related classes). It shows almost all + features supported: + + @li Using bitmaps with the wizard and changing them depending on the page + shown (notice that wxValidationPage in the sample has a different image from + the other ones) + @li Using TransferDataFromWindow + to verify that the data entered is correct before passing to the next page + (done in wxValidationPage which forces the user to check a checkbox before + continuing). + @li Using more elaborated techniques to allow returning to the previous + page, but not continuing to the next one or vice versa (in wxRadioboxPage) + @li This (wxRadioboxPage) page also shows how the page may process the + @e Cancel button itself instead of relying on the wizard parent to do it. + @li Normally, the order of the pages in the wizard is known at compile-time, + but sometimes it depends on the user choices: wxCheckboxPage shows how to + dynamically decide which page to display next (see also + wxWizardPage) + +*/ diff --git a/docs/doxygen/regen.sh b/docs/doxygen/regen.sh index bd5c34006d..4591f3eca8 100755 --- a/docs/doxygen/regen.sh +++ b/docs/doxygen/regen.sh @@ -16,4 +16,9 @@ cp wxwidgets.css out/html currpath=`pwd`/ interfacepath=`cd ../../interface && pwd`/ cat doxygen.log | sed -e "s|$currpath||g" -e "s|$interfacepath||g" >temp -mv temp doxygen.log \ No newline at end of file +mv temp doxygen.log + +# filter out the following warning which we don't care about +cat doxygen.log | grep -v ".*supplied.*as.*the.*argument.*is.*not.*an.*input.*file.*" >temp +mv temp doxygen.log +