git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3759 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
 
 \docparam{resource}{Name of a Windows accelerator.}
 
 
 \docparam{resource}{Name of a Windows accelerator.}
 
+\pythonnote{The wxPython constructor accepts a list of
+wxAcceleratorEntry objects, or 3-tuples consisting of flags, keyCode,
+and cmd values like you would construct wxAcceleratorEntry objects with.}
+
 \membersection{wxAcceleratorTable::\destruct{wxAcceleratorTable}}
 
 \func{}{\destruct{wxAcceleratorTable}}{\void}
 \membersection{wxAcceleratorTable::\destruct{wxAcceleratorTable}}
 
 \func{}{\destruct{wxAcceleratorTable}}{\void}
 
 \docparam{pos}{Position before which to insert the items: for example, if {\it pos} is 0 the items
 will be inserted in the beginning of the listbox}
 
 \docparam{pos}{Position before which to insert the items: for example, if {\it pos} is 0 the items
 will be inserted in the beginning of the listbox}
 
+\pythonnote{The first two parameters are collapsed into a single
+parameter for wxPython, which is a list of strings.}
+
 \membersection{wxListBox::Number}\label{wxlistboxnumber}
 
 \constfunc{int}{Number}{\void}
 \membersection{wxListBox::Number}\label{wxlistboxnumber}
 
 \constfunc{int}{Number}{\void}
 
 text control will appear for in-place editing.
 
 If the user changed the label (i.e. s/he does not press ESC or leave
 text control will appear for in-place editing.
 
 If the user changed the label (i.e. s/he does not press ESC or leave
-the text control without changes, a EVT\_LIST\_END\_LABEL\_EDIT event 
+the text control without changes, a EVT\_LIST\_END\_LABEL\_EDIT event
 will be sent which can be vetoed as well.
 
 \membersection{wxListCtrl::EnsureVisible}\label{wxlistctrlensurevisible}
 will be sent which can be vetoed as well.
 
 \membersection{wxListCtrl::EnsureVisible}\label{wxlistctrlensurevisible}
 Gets information about the item. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more
 information.
 
 Gets information about the item. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more
 information.
 
-\pythonnote{The wxPython version of this method takes a parameter
-representing the item ID, and returns the wxListItem object.
+\pythonnote{The wxPython version of this method takes an integer parameter
+for the item ID, and returns the wxListItem object.
 }
 
 \membersection{wxListCtrl::GetItemData}\label{wxlistctrlgetitemdata}
 }
 
 \membersection{wxListCtrl::GetItemData}\label{wxlistctrlgetitemdata}
 
 \section{\class{wxSizer}}\label{wxsizer}
 
 wxSizer is the abstract base class used for laying out subwindows in a window. You
 \section{\class{wxSizer}}\label{wxsizer}
 
 wxSizer is the abstract base class used for laying out subwindows in a window. You
-cannot use wxSizer directly; instead, you'll have to use \helpref{wxBoxSizer}{wxboxsizer} 
+cannot use wxSizer directly; instead, you'll have to use \helpref{wxBoxSizer}{wxboxsizer}
 or \helpref{wxStaticBoxSizer}{wxstaticboxsizer}.
 
 The layout algorithm used by sizers in wxWindows closely related to layout
 or \helpref{wxStaticBoxSizer}{wxstaticboxsizer}.
 
 The layout algorithm used by sizers in wxWindows closely related to layout
 based upon the idea of the individual subwindows reporting their minimal required
 size and their ability to get stretched if the size of the parent window has changed.
 This will most often mean, that the programmer does not set the original size of
 based upon the idea of the individual subwindows reporting their minimal required
 size and their ability to get stretched if the size of the parent window has changed.
 This will most often mean, that the programmer does not set the original size of
-the dialog in the beginning, rather the top-most sizer will get queried and it will 
+the dialog in the beginning, rather the top-most sizer will get queried and it will
 then query its children. Its children can be normal windows or other sizers, so that
 a hierachy of sizer can be constructed. Note that sizer are not derived from wxWindows
 and thus do not interfere with tab ordering and require very little resources compared
 then query its children. Its children can be normal windows or other sizers, so that
 a hierachy of sizer can be constructed. Note that sizer are not derived from wxWindows
 and thus do not interfere with tab ordering and require very little resources compared
 the standard font as well as the overall design of Motif widgets requires more space than
 on Windows, the intial dialog size will automatically be bigger on Motif than on Windows.
 
 the standard font as well as the overall design of Motif widgets requires more space than
 on Windows, the intial dialog size will automatically be bigger on Motif than on Windows.
 
+\pythonnote{If you wish to create a sizer class in wxPython you should
+derive the class from \tt{wxPySizer} in order to get Python-aware
+capabilities for the various virtual methods.}
+
 \wxheading{Derived from}
 
 \helpref{wxObject}{wxobject}
 \wxheading{Derived from}
 
 \helpref{wxObject}{wxobject}
 
 \membersection{wxSizer::Add}\label{wxsizeradd}
 
 
 \membersection{wxSizer::Add}\label{wxsizeradd}
 
-\func{void}{Add}{\param{wxWindow* }{window}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}}
+\func{void}{Add}{\param{wxWindow* }{window}, \param{int }{option = 0},\param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}}
-\func{void}{Add}{\param{wxSizer* }{sizer}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}}
+\func{void}{Add}{\param{wxSizer* }{sizer}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}}
-\func{void}{Add}{\param{int }{width}, \param{int }{height}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}}
+\func{void}{Add}{\param{int }{width}, \param{int }{height}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}}
 
 Adds the {\it window} to the sizer. As wxSizer itself is an abstract class, the parameters
 have no meaning in the wxSizer class itself, but as there currently is only one class
 
 Adds the {\it window} to the sizer. As wxSizer itself is an abstract class, the parameters
 have no meaning in the wxSizer class itself, but as there currently is only one class
 to indicate if a child of a sizer can change its size in the main orientation of the wxBoxSizer - where
 0 stands for not changable and a value of more than zero in interpreted relative to the value of other
 children of the same wxBoxSizer. You might, e.g., have a horizontal wxBoxSizer with three children, two
 to indicate if a child of a sizer can change its size in the main orientation of the wxBoxSizer - where
 0 stands for not changable and a value of more than zero in interpreted relative to the value of other
 children of the same wxBoxSizer. You might, e.g., have a horizontal wxBoxSizer with three children, two
-of which are supposed to change their size with the sizer, then the two stretchable windows would get a 
+of which are supposed to change their size with the sizer, then the two stretchable windows would get a
 value of 1 each to make them grow and shrink equally with the sizer's vertical dimension.}
 
 \docparam{flag}{This parameter can be used to set a number of flags which can be combined using
 value of 1 each to make them grow and shrink equally with the sizer's vertical dimension.}
 
 \docparam{flag}{This parameter can be used to set a number of flags which can be combined using
 
 \docparam{border}{Determines the border width, if the {\it flag} parameter is set to any border.}
 
 
 \docparam{border}{Determines the border width, if the {\it flag} parameter is set to any border.}
 
+\docparam{userData}{Allows an extra object to be attached to the sizer
+item, for use in derived classes when sizing information is more
+complex than what {\it option} and {\it flag} will allow for.}
+
 \membersection{wxSizer::Prepend}\label{wxsizerprepend}
 
 \membersection{wxSizer::Prepend}\label{wxsizerprepend}
 
-\func{void}{Prepend}{\param{wxWindow* }{window}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}}
+\func{void}{Prepend}{\param{wxWindow* }{window}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}}
-\func{void}{Prepend}{\param{wxSizer* }{sizer}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}}
+\func{void}{Prepend}{\param{wxSizer* }{sizer}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}}
-\func{void}{Prepend}{\param{int }{width}, \param{int }{height}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}}
+\func{void}{Prepend}{\param{int }{width}, \param{int }{height}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border= 0}, \param{wxObject* }{userData = NULL}}
 
 Same as \helpref{wxSizer::Add}{wxsizeradd}, but prepends the items to the beginning of the
 list of items (windows, subsizers or spaces) owned by this sizer.
 
 Same as \helpref{wxSizer::Add}{wxsizeradd}, but prepends the items to the beginning of the
 list of items (windows, subsizers or spaces) owned by this sizer.
 
 \func{void}{SetSizeHints}{\param{wxWindow* }{window}}
 
 
 \func{void}{SetSizeHints}{\param{wxWindow* }{window}}
 
-Tell the sizer to set the minimal size of the {\it window} to match the sizer's minimal size. 
+Tell the sizer to set the minimal size of the {\it window} to match the sizer's minimal size.
 This is commonly done in the constructor of the window itself, see sample in the description
 of \helpref{wxBoxSizer}{wxboxsizer} if the window is resizable (as many dialogs under Unix and
 frames on probably all platforms).
 This is commonly done in the constructor of the window itself, see sample in the description
 of \helpref{wxBoxSizer}{wxboxsizer} if the window is resizable (as many dialogs under Unix and
 frames on probably all platforms).
 
 \constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
 \windowstyle [1] {{\bf #1}\index{#1}}
 \bftt [1] {\bf{\tt{#1}}}
 \constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
 \windowstyle [1] {{\bf #1}\index{#1}}
 \bftt [1] {\bf{\tt{#1}}}
-\pythonnote [1] {{\bf \fcol{blue}{wxPython note:}}\\ #1}
+\pythonnote [1] {{\bf \fcol{blue}{wxPython note:}} #1}
 
 text control will appear for in-place editing.
 
 If the user changed the label (i.e. s/he does not press ESC or leave
 text control will appear for in-place editing.
 
 If the user changed the label (i.e. s/he does not press ESC or leave
-the text control without changes, a EVT\_TREE\_END\_LABEL\_EDIT event 
+the text control without changes, a EVT\_TREE\_END\_LABEL\_EDIT event
 will be sent which can be vetoed as well.
 
 \wxheading{See also}
 will be sent which can be vetoed as well.
 
 \wxheading{See also}
 if it was not (in this case {\it rect} is not changed) - for example, if the
 item is currently invisible.
 
 if it was not (in this case {\it rect} is not changed) - for example, if the
 item is currently invisible.
 
+\pythonnote{The wxPython version of this method requires only the
+\tt{item} and \tt{textOnly} parameters.  The return value is either a
+\tt{wxRect} object or \tt{None}.}
+
 \membersection{wxTreeCtrl::GetChildrenCount}\label{wxtreectrlgetchildrencount}
 
 \constfunc{size\_t}{GetChildrenCount}{\param{const wxTreeItemId\&}{ item}, \param{bool}{ recursively = TRUE}}
 \membersection{wxTreeCtrl::GetChildrenCount}\label{wxtreectrlgetchildrencount}
 
 \constfunc{size\_t}{GetChildrenCount}{\param{const wxTreeItemId\&}{ item}, \param{bool}{ recursively = TRUE}}
 
 \constfunc{int}{GetItemSelectedImage}{\param{const wxTreeItemId\& }{item}}
 
 
 \constfunc{int}{GetItemSelectedImage}{\param{const wxTreeItemId\& }{item}}
 
-Gets the selected item image (this function is obsolete, use 
+Gets the selected item image (this function is obsolete, use
 {\tt GetItemImage(item, wxTreeItemIcon\_Selected} instead).
 
 \membersection{wxTreeCtrl::GetSelection}\label{wxtreectrlgetselection}
 {\tt GetItemImage(item, wxTreeItemIcon\_Selected} instead).
 
 \membersection{wxTreeCtrl::GetSelection}\label{wxtreectrlgetselection}
 \constfunc{wxTreeItemId}{GetSelection}{\void}
 
 Returns the selection, or an invalid item if there is no selection.
 \constfunc{wxTreeItemId}{GetSelection}{\void}
 
 Returns the selection, or an invalid item if there is no selection.
-This function only works with the controls without wxTR\_MULTIPLE style, use 
+This function only works with the controls without wxTR\_MULTIPLE style, use
 \helpref{GetSelections}{wxtreectrlgetselections} for the controls which do have
 this style.
 
 \helpref{GetSelections}{wxtreectrlgetselections} for the controls which do have
 this style.
 
 
 Returns the number of selected items.
 
 
 Returns the number of selected items.
 
+\pythonnote{The wxPython version of this method accepts no parameters
+and returns a Python list of \tt{wxTreeItemId}'s.}
+
 \membersection{wxTreeCtrl::HitTest}\label{wxtreectrlhittest}
 
 \func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
 \membersection{wxTreeCtrl::HitTest}\label{wxtreectrlhittest}
 
 \func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
 \param{int }{image},
 \param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
 
 \param{int }{image},
 \param{wxTreeItemIcon }{which = wxTreeItemIcon\_Normal}}
 
-Sets the specified item image. See \helpref{GetItemImage}{wxtreectrlgetitemimage} 
+Sets the specified item image. See \helpref{GetItemImage}{wxtreectrlgetitemimage}
 for the description of {\it which} parameter.
 
 \membersection{wxTreeCtrl::SetItemSelectedImage}\label{wxtreectrlsetitemselectedimage}
 
 \func{void}{SetItemSelectedImage}{\param{const wxTreeItemId\&}{ item}, \param{int }{selImage}}
 
 for the description of {\it which} parameter.
 
 \membersection{wxTreeCtrl::SetItemSelectedImage}\label{wxtreectrlsetitemselectedimage}
 
 \func{void}{SetItemSelectedImage}{\param{const wxTreeItemId\&}{ item}, \param{int }{selImage}}
 
-Sets the selected item image (this function is obsolete, use 
+Sets the selected item image (this function is obsolete, use
 {\tt SetItemImage(item, wxTreeItemIcon\_Selected} instead).
 
 \membersection{wxTreeCtrl::SetItemText}\label{wxtreectrlsetitemtext}
 {\tt SetItemImage(item, wxTreeItemIcon\_Selected} instead).
 
 \membersection{wxTreeCtrl::SetItemText}\label{wxtreectrlsetitemtext}
 
 \func{void}{UnselectAll}{\void}
 
 
 \func{void}{UnselectAll}{\void}
 
-This function either behaves the same as \helpref{Unselect}{wxtreectrlunselect} 
+This function either behaves the same as \helpref{Unselect}{wxtreectrlunselect}
 if the control doesn't have wxTR\_MULTIPLE style, or removes the selection from
 all items if it does have this style.
 
 if the control doesn't have wxTR\_MULTIPLE style, or removes the selection from
 all items if it does have this style.
 
 
-\helpref{Validator overview}{validatoroverview}, \helpref{wxValidator}{wxvalidator}, 
+\helpref{Validator overview}{validatoroverview}, \helpref{wxValidator}{wxvalidator},
 \helpref{wxTextValidator}{wxtextvalidator}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 \helpref{wxTextValidator}{wxtextvalidator}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 \membersection{wxGenericValidator::TransferFromWindow}\label{wxgenericvalidatortransferfromwindow}
 
 
 \membersection{wxGenericValidator::TransferFromWindow}\label{wxgenericvalidatortransferfromwindow}
 
-\func{virtual bool}{TransferToWindow}{\param{wxWindow*}{ parent}}
+\func{virtual bool}{TransferToWindow}{}
 
 Transfers the value to the window.
 
 \membersection{wxGenericValidator::TransferToWindow}\label{wxgenericvalidatortransfertowindow}
 
 
 Transfers the value to the window.
 
 \membersection{wxGenericValidator::TransferToWindow}\label{wxgenericvalidatortransfertowindow}
 
-\func{virtual bool}{TransferToWindow}{\param{wxWindow*}{ parent}}
+\func{virtual bool}{TransferToWindow}{}
 
 Transfers the window value to the appropriate data type.
 
 
 Transfers the window value to the appropriate data type.
 
 
 
 For more information, please see \helpref{Validator overview}{validatoroverview}.
 
 
 For more information, please see \helpref{Validator overview}{validatoroverview}.
 
+\pythonnote{If you wish to create a validator class in wxPython you should
+derive the class from \tt{wxPyValidator} in order to get Python-aware
+capabilities for the various virtual methods.}
+
 \wxheading{Derived from}
 
 \helpref{wxEvtHandler}{wxevthandler}\\
 \wxheading{Derived from}
 
 \helpref{wxEvtHandler}{wxevthandler}\\
-\helpref{Validator overview}{validatoroverview}, 
+\helpref{Validator overview}{validatoroverview},
 \helpref{wxTextValidator}{wxtextvalidator},
 \helpref{wxTextValidator}{wxtextvalidator},
-\helpref{wxTextValidator}{wxgenericvalidator},
+\helpref{wxGenericValidator}{wxgenericvalidator},
 
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 \membersection{wxValidator::TransferFromWindow}\label{wxvalidatortransferfromwindow}
 
 
 \membersection{wxValidator::TransferFromWindow}\label{wxvalidatortransferfromwindow}
 
-\func{virtual bool}{TransferToWindow}{\param{wxWindow*}{ parent}}
+\func{virtual bool}{TransferToWindow}{}
 
 This overridable function is called when the value in the window must be
 transferred to the validator. Return FALSE if there is a problem.
 
 \membersection{wxValidator::TransferToWindow}\label{wxvalidatortransfertowindow}
 
 
 This overridable function is called when the value in the window must be
 transferred to the validator. Return FALSE if there is a problem.
 
 \membersection{wxValidator::TransferToWindow}\label{wxvalidatortransfertowindow}
 
-\func{virtual bool}{TransferToWindow}{\param{wxWindow*}{ parent}}
+\func{virtual bool}{TransferToWindow}{}
 
 This overridable function is called when the value associated with the validator must be
 transferred to the window. Return FALSE if there is a problem.
 
 This overridable function is called when the value associated with the validator must be
 transferred to the window. Return FALSE if there is a problem.
 
-\helpref{Validator overview}{validatoroverview}, \helpref{wxValidator}{wxvalidator}, 
+\helpref{Validator overview}{validatoroverview}, \helpref{wxValidator}{wxvalidator},
 \helpref{wxGenericValidator}{wxgenericvalidator}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 \helpref{wxGenericValidator}{wxgenericvalidator}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 \membersection{wxTextValidator::TransferFromWindow}\label{wxtextvalidatortransferfromwindow}
 
 
 \membersection{wxTextValidator::TransferFromWindow}\label{wxtextvalidatortransferfromwindow}
 
-\func{virtual bool}{TransferToWindow}{\param{wxWindow*}{ parent}}
+\func{virtual bool}{TransferFromWindow}{}
 
 Transfers the string value to the window.
 
 \membersection{wxTextValidator::TransferToWindow}\label{wxtextvalidatortransfertowindow}
 
 
 Transfers the string value to the window.
 
 \membersection{wxTextValidator::TransferToWindow}\label{wxtextvalidatortransfertowindow}
 
-\func{virtual bool}{TransferToWindow}{\param{wxWindow*}{ parent}}
+\func{virtual bool}{TransferToWindow}{}
 
 Transfers the window value to the string.
 
 
 Transfers the window value to the string.
 
 
-So what is Python?  Go to 
+So what is Python?  Go to
 \urlref{http://www.python.org}{http://www.python.org} to learn more,
 but in a nutshell Python is an interpreted,
 interactive, object-oriented programming language. It is often
 \urlref{http://www.python.org}{http://www.python.org} to learn more,
 but in a nutshell Python is an interpreted,
 interactive, object-oriented programming language. It is often
 
 So why would you want to use wxPython over just C++ and wxWindows?
 Personally I prefer using Python for everything. I only use C++ when
 
 So why would you want to use wxPython over just C++ and wxWindows?
 Personally I prefer using Python for everything. I only use C++ when
-I absolutely have to eke more performance out of an algorithm, and even
+I absolutely have to eek more performance out of an algorithm, and even
 then I ususally code it as an extension module and leave the majority
 of the program in Python.
 
 then I ususally code it as an extension module and leave the majority
 of the program in Python.
 
 There are quite a few other GUI modules available for Python, some in
 active use, some that havn't been updated for ages. Most are simple
 wrappers around some C or C++ toolkit or another, and most are not
 There are quite a few other GUI modules available for Python, some in
 active use, some that havn't been updated for ages. Most are simple
 wrappers around some C or C++ toolkit or another, and most are not
-cross-platform compatible. See \urlref{this link}{http://www.python.org/download/Contributed.html\#Graphics} 
+cross-platform compatible. See \urlref{this link}{http://www.python.org/download/Contributed.html\#Graphics}
 for a listing of a few of them.
 
 %----------------------------------------------------------------------
 for a listing of a few of them.
 
 %----------------------------------------------------------------------
 
 I added a few minor features to SWIG to control some of the code
 generation. If you want to play around with this you will need to get
 
 I added a few minor features to SWIG to control some of the code
 generation. If you want to play around with this you will need to get
-a recent version of SWIG from their CVS or from a daily build. See 
+a recent version of SWIG from their CVS or from a daily build. See
 \urlref{http://www.swig.org/}{http://www.swig.org/} for details.
 
 wxPython is organized as a Python package. This means that the
 \urlref{http://www.swig.org/}{http://www.swig.org/} for details.
 
 wxPython is organized as a Python package. This means that the
 
 For Win32 systems I use Visual C++ 6.0, but 5.0 should work also. The
 build utility currently does not support any other Win32 compilers.
 
 For Win32 systems I use Visual C++ 6.0, but 5.0 should work also. The
 build utility currently does not support any other Win32 compilers.
 \item At this point you may want to make an alias or symlink, script,
 batch file, whatever on the PATH that invokes \tt{\$(WXWIN)/utils/wxPython/distrib/build.py} to
 help simplify matters somewhat. For example, on my Win32 system I have a file named
 \item At this point you may want to make an alias or symlink, script,
 batch file, whatever on the PATH that invokes \tt{\$(WXWIN)/utils/wxPython/distrib/build.py} to
 help simplify matters somewhat. For example, on my Win32 system I have a file named
 \tt{python \%WXWIN/utils/wxPython/distrib/build.py \%1 \%2 \%3 \%4 \%5 \%6}
 
 \item Change into the \tt{\$(WXWIN)/utils/wxPython/src} directory.
 \tt{python \%WXWIN/utils/wxPython/distrib/build.py \%1 \%2 \%3 \%4 \%5 \%6}
 
 \item Change into the \tt{\$(WXWIN)/utils/wxPython/src} directory.
 \item Type "\tt{build -b}" to build wxPython and "\tt{build -i}" to
 install it, or "\tt{build -bi}" to do both steps at once.
 
 \item Type "\tt{build -b}" to build wxPython and "\tt{build -i}" to
 install it, or "\tt{build -bi}" to do both steps at once.
 
 a different way, take a look at the docstring in build.py. You are
 able to to override many configuration options in a file named
 build.local.
 a different way, take a look at the docstring in build.py. You are
 able to to override many configuration options in a file named
 build.local.
 \item To build and install the add-on modules, change to the appropriate
 directory under \tt{\$(WXWIN)/utils/wxPython/modules} and run the build
 utility again.
 \item To build and install the add-on modules, change to the appropriate
 directory under \tt{\$(WXWIN)/utils/wxPython/modules} and run the build
 utility again.
 \item Change to the \tt{\$(WXWIN)/utils/wxPython/demo} directory.
 \item Change to the \tt{\$(WXWIN)/utils/wxPython/demo} directory.
 \item Try executing the demo program. For example:
 
 \tt{python demo.py}
 \item Try executing the demo program. For example:
 
 \tt{python demo.py}
 namespace pollution you can use "\tt{from wxPython import wx}" and
 then access all the wxPython identifiers through the wx module, for
 example, "\tt{wx.wxFrame}".
 namespace pollution you can use "\tt{from wxPython import wx}" and
 then access all the wxPython identifiers through the wx module, for
 example, "\tt{wx.wxFrame}".
 \item At line 13 the frame's sizing and moving events are connected to
 methods of the class. These helper functions are intended to be like
 the event table macros that wxWindows employs. But since static event
 \item At line 13 the frame's sizing and moving events are connected to
 methods of the class. These helper functions are intended to be like
 the event table macros that wxWindows employs. But since static event
 same to dynamically build the table. The only real difference is
 that the first arguemnt to the event helpers is always the window that
 the event table entry should be added to.
 same to dynamically build the table. The only real difference is
 that the first arguemnt to the event helpers is always the window that
 the event table entry should be added to.
 \item Notice the use of \tt{wxDLG\_PNT} and \tt{wxDLG\_SZE} in lines 19
 - 29 to convert from dialog units to pixels. These helpers are unique
 to wxPython since Python can't do method overloading like C++.
 \item Notice the use of \tt{wxDLG\_PNT} and \tt{wxDLG\_SZE} in lines 19
 - 29 to convert from dialog units to pixels. These helpers are unique
 to wxPython since Python can't do method overloading like C++.
 \item There is an \tt{OnCloseWindow} method at line 34 but no call to
 EVT\_CLOSE to attach the event to the method. Does it really get
 called?  The answer is, yes it does. This is because many of the
 \item There is an \tt{OnCloseWindow} method at line 34 but no call to
 EVT\_CLOSE to attach the event to the method. Does it really get
 called?  The answer is, yes it does. This is because many of the
 C++ classes in this area to determine what is \em{standard} but since
 that changes from time to time I can make no guarentees, nor will it
 be fully documented. When in doubt, use an EVT\_*** function.
 C++ classes in this area to determine what is \em{standard} but since
 that changes from time to time I can make no guarentees, nor will it
 be fully documented. When in doubt, use an EVT\_*** function.
 \item At lines 17 to 21 notice that there are no saved references to
 the panel or the static text items that are created. Those of you
 who know Python might be wondering what happens when Python deletes
 \item At lines 17 to 21 notice that there are no saved references to
 the panel or the static text items that are created. Those of you
 who know Python might be wondering what happens when Python deletes
 have a \_\_del\_\_ method that explicitly causes the C++ object to be
 deleted. If you ever have the need to forcibly delete a window, use
 the Destroy() method as shown on line 36.
 have a \_\_del\_\_ method that explicitly causes the C++ object to be
 deleted. If you ever have the need to forcibly delete a window, use
 the Destroy() method as shown on line 36.
 \item Just like wxWindows in C++, wxPython apps need to create a class
 derived from \tt{wxApp} (line 56) that implements a method named
 \tt{OnInit}, (line 59.) This method should create the application's
 main window (line 62) and use \tt{wxApp.SetTopWindow()} (line 66) to
 inform wxWindows about it.
 \item Just like wxWindows in C++, wxPython apps need to create a class
 derived from \tt{wxApp} (line 56) that implements a method named
 \tt{OnInit}, (line 59.) This method should create the application's
 main window (line 62) and use \tt{wxApp.SetTopWindow()} (line 66) to
 inform wxWindows about it.
 \item And finally, at line 72 an instance of the application class is
 created. At this point wxPython finishes initializing itself, and calls
 the \tt{OnInit} method to get things started. (The zero parameter here is
 \item And finally, at line 72 an instance of the application class is
 created. At this point wxPython finishes initializing itself, and calls
 the \tt{OnInit} method to get things started. (The zero parameter here is
 \item \helpref{wxBitmapButton}{wxbitmapbutton}
 \item \helpref{wxBitmap}{wxbitmap}
 \item wxBMPHandler
 \item \helpref{wxBitmapButton}{wxbitmapbutton}
 \item \helpref{wxBitmap}{wxbitmap}
 \item wxBMPHandler
+\item \helpref{wxBoxSizer}{wxBoxSizer}
 \item \helpref{wxBrush}{wxbrush}
 \item \helpref{wxButton}{wxbutton}
 \item \helpref{wxCalculateLayoutEvent}{wxcalculatelayoutevent}
 \item \helpref{wxBrush}{wxbrush}
 \item \helpref{wxButton}{wxbutton}
 \item \helpref{wxCalculateLayoutEvent}{wxcalculatelayoutevent}
 \item wxGridCell
 \item wxGridEvent
 \item \helpref{wxGrid}{wxgrid}
 \item wxGridCell
 \item wxGridEvent
 \item \helpref{wxGrid}{wxgrid}
+\item \helpref{wxHtmlCell}{wxHtmlCell}
+\item \helpref{wxHtmlContainerCell}{wxHtmlContainerCell}
+\item \helpref{wxHtmlParser}{wxHtmlParser}
+\item \helpref{wxHtmlTagHandler}{wxHtmlTagHandler}
+\item \helpref{wxHtmlTag}{wxHtmlTag}
+\item \helpref{wxHtmlWinParser}{wxHtmlWinParser}
+\item \helpref{wxHtmlWinTagHandler}{wxHtmlWinTagHandler}
+\item \helpref{wxHtmlWindow}{wxHtmlWindow}
 \item wxIconizeEvent
 \item \helpref{wxIcon}{wxicon}
 \item \helpref{wxIdleEvent}{wxidleevent}
 \item wxIconizeEvent
 \item \helpref{wxIcon}{wxicon}
 \item \helpref{wxIdleEvent}{wxidleevent}
 \item \helpref{wxScrollBar}{wxscrollbar}
 \item \helpref{wxScrollEvent}{wxscrollevent}
 \item \helpref{wxScrolledWindow}{wxscrolledwindow}
 \item \helpref{wxScrollBar}{wxscrollbar}
 \item \helpref{wxScrollEvent}{wxscrollevent}
 \item \helpref{wxScrolledWindow}{wxscrolledwindow}
+\item \helpref{wxScrollWinEvent}{wxscrollwinevent}
 \item wxShowEvent
 \item \helpref{wxSingleChoiceDialog}{wxsinglechoicedialog}
 \item \helpref{wxSizeEvent}{wxsizeevent}
 \item \helpref{wxSize}{wxsize}
 \item wxShowEvent
 \item \helpref{wxSingleChoiceDialog}{wxsinglechoicedialog}
 \item \helpref{wxSizeEvent}{wxsizeevent}
 \item \helpref{wxSize}{wxsize}
+\item \helpref{wxSizer}{wxSizer}
+\item wxSizerItem
 \item \helpref{wxSlider}{wxslider}
 \item \helpref{wxSpinButton}{wxspinbutton}
 \item wxSpinEvent
 \item \helpref{wxSplitterWindow}{wxsplitterwindow}
 \item \helpref{wxStaticBitmap}{wxstaticbitmap}
 \item \helpref{wxStaticBox}{wxstaticbox}
 \item \helpref{wxSlider}{wxslider}
 \item \helpref{wxSpinButton}{wxspinbutton}
 \item wxSpinEvent
 \item \helpref{wxSplitterWindow}{wxsplitterwindow}
 \item \helpref{wxStaticBitmap}{wxstaticbitmap}
 \item \helpref{wxStaticBox}{wxstaticbox}
+\item \helpref{wxStaticBoxSizer}{wxStaticBoxSizer}
 \item wxStaticLine
 \item \helpref{wxStaticText}{wxstatictext}
 \item \helpref{wxStatusBar}{wxstatusbar}
 \item wxStaticLine
 \item \helpref{wxStaticText}{wxstatictext}
 \item \helpref{wxStatusBar}{wxstatusbar}
 \item \helpref{wxTreeItemData}{wxtreeitemdata}
 \item wxTreeItemId
 \item \helpref{wxUpdateUIEvent}{wxupdateuievent}
 \item \helpref{wxTreeItemData}{wxtreeitemdata}
 \item wxTreeItemId
 \item \helpref{wxUpdateUIEvent}{wxupdateuievent}
+\item \helpref{wxValidator}{wxvalidator}
 \item \helpref{wxWindowDC}{wxwindowdc}
 \item \helpref{wxWindow}{wxwindow}
 \item \helpref{wxWindowDC}{wxwindowdc}
 \item \helpref{wxWindow}{wxwindow}
 \end{itemize}
 
 %----------------------------------------------------------------------
 \end{itemize}
 
 %----------------------------------------------------------------------