method to determine where the drawing operations should take place.
+Please notice that sizers, like child windows, are owned by the library and
+will be deleted by it which implies that they must be allocated on the heap.
+However if you create a sizer and do not add it to another sizer or window, the
+library wouldn't be able to delete such an orphan sizer and in this, and only
+this, case it should be deleted explicitly.
+
\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.}
<wx/sizer.h>
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
\wxheading{See also}
\helpref{Sizer overview}{sizeroverview}
\docparam{window}{The window to be added to the sizer. Its initial size (either set explicitly by the
user or calculated internally when using wxDefaultSize) is interpreted as the minimal and in many
-cases also the initial size. This is particularly useful in connection with \helpref{SetSizeHints}{wxsizersetsizehints}.}
+cases also the initial size.}
\docparam{sizer}{The (child-)sizer to be added to the sizer. This allows placing a child sizer in a
sizer and thus to create hierarchies of sizers (typically a vertical box as the top sizer and several
adjust when an item changes and its \arg{best size} becomes
different. If you would rather have a window item stay the size it
started with then use wxFIXED\_MINSIZE.}
-\twocolitem{\windowstyle{wxALIGN\_CENTER}\\
+\twocolitem{\windowstyle{wxALIGN\_CENTER wxALIGN\_CENTRE}\\
\windowstyle{wxALIGN\_LEFT}\\
\windowstyle{wxALIGN\_RIGHT}\\
\windowstyle{wxALIGN\_TOP}\\
\windowstyle{wxALIGN\_BOTTOM}\\
-\windowstyle{wxALIGN\_CENTER\_VERTICAL}\\
-\windowstyle{wxALIGN\_CENTER\_HORIZONTAL}}{The wxALIGN flags allow you to
+\windowstyle{wxALIGN\_CENTER\_VERTICAL wxALIGN\_CENTRE\_VERTICAL}\\
+\windowstyle{wxALIGN\_CENTER\_HORIZONTAL wxALIGN\_CENTRE\_HORIZONTAL}}{The wxALIGN flags allow you to
specify the alignment of the item within the space allotted to it by
the sizer, adjusted for the border if any.}
\end{twocollist}
\helpref{wxSizer::SetVirtualSizeHints}{wxsizersetvirtualsizehints}
+\membersection{wxSizer::GetChildren}\label{wxsizergetchildren}
+
+\constfunc{const wxSizerItemList\&}{GetChildren}{\void}
+
+\func{wxSizerItemList\&}{GetChildren}{\void}
+
+Returns the list of the items in this sizer. The elements of type-safe
+\helpref{wxList}{wxlist} \texttt{wxSizerItemList} are objects of type
+\helpref{wxSizerItem *}{wxsizeritem}.
+
+
+\membersection{wxSizer::GetContainingWindow}\label{wxsizergetcontainingwindow}
+
+\constfunc{wxWindow *}{GetContainingWindow}{\void}
+
+Returns the window this sizer is used in or \NULL if none.
+
+
\membersection{wxSizer::GetItem}\label{wxsizergetitem}
\func{wxSizerItem *}{GetItem}{\param{wxWindow* }{window}, \param{bool }{recursive = false}}
Returns true if the child item was found and removed, false otherwise.
+\membersection{wxSizer::Replace}\label{wxsizerreplace}
+
+\func{bool}{Replace}{\param{wxWindow* }{oldwin}, \param{wxWindow* }{newwin}, \param{bool }{recursive = false}}
+
+\func{bool}{Replace}{\param{wxSizer* }{oldsz}, \param{wxSizer* }{newsz}, \param{bool }{recursive = false}}
+
+\func{bool}{Remove}{\param{size\_t }{oldindex}, \param{wxSizerItem* }{newitem}}
+
+Detaches the given \arg{oldwin}, \arg{oldsz} child from the sizer and
+replaces it with the given window, sizer, or wxSizerItem.
+
+The detached child is removed {\bf only} if it is a sizer or a spacer
+(because windows are owned by their parent window, not the sizer).
+
+Use parameter \arg{recursive} to search the given element recursively in subsizers.
+
+
+This method does not cause any layout or resizing to take place, call
+\helpref{wxSizer::Layout}{wxsizerlayout} to update the layout "on screen" after replacing a
+child from the sizer.
+
+Returns true if the child item was found and removed, false otherwise.
+
+
\membersection{wxSizer::SetDimension}\label{wxsizersetdimension}
\func{void}{SetDimension}{\param{int }{x}, \param{int }{y}, \param{int }{width}, \param{int }{height}}
\func{void}{SetSizeHints}{\param{wxWindow* }{window}}
-Tell the sizer to set (and \helpref{Fit}{wxsizerfit}) the minimal size of the \arg{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 are many dialogs under Unix and frames on probably all platforms).
+This method first calls \helpref{wxSizer::Fit}{wxsizerfit} and then
+\helpref{SetSizeHints}{wxtoplevelwindowsetsizehints} on the {\it window}
+passed to it. This only makes sense when {\it window} is actually a
+\helpref{wxTopLevelWindow}{wxtoplevelwindow} such as a wxFrame or a
+wxDialog, since SetSizeHints only has any effect in these classes.
+It does nothing in normal windows or controls.
+This method is commonly invoked in the constructor of a toplevel window itself
+(see the sample in the description of \helpref{wxBoxSizer}{wxboxsizer}) if the
+toplevel window is resizable.
\membersection{wxSizer::SetVirtualSizeHints}\label{wxsizersetvirtualsizehints}
\section{\class{wxSizerFlags}}\label{wxsizerflags}
-PRELIMINARY.
+Normally, when you add an item to a sizer via
+\helpref{wxSizer::Add}{wxsizeradd}, you have to specify a lot of flags and
+parameters which can be unwieldy. This is where wxSizerFlags comes in: it
+allows you to specify all parameters using the named methods instead. For
+example, instead of
+
+\begin{verbatim}
+ sizer->Add(ctrl, 0, wxEXPAND | wxALL, 10);
+\end{verbatim}
+
+you can now write
-Normally, when you add something to a sizer via \helpref{wxSizer::Add}{wxsizeradd}, you have to specify a lot of flags and parameters. This can be unwieldy.
+\begin{verbatim}
+ sizer->Add(ctrl, wxSizerFlags().Expand().Border(10));
+\end{verbatim}
-This is where wxSizerFlags comes in. Instead of a bunch of flags and other stuff, you can use wxSizerFlags, which is a convenient class for doing so.
+This is more readable and also allows you to create wxSizerFlags objects which
+can be reused for several sizer items.
+\begin{verbatim}
+ wxSizerFlags flagsExpand(1);
+ flagsExpand.Expand().Border(10);
-Note that by specification, all methods of wxSizerFlags return the wxSizerFlags object itself to ease the calling of multiple methods at a time.
+ sizer->Add(ctrl1, flagsExpand);
+ sizer->Add(ctrl2, flagsExpand);
+\end{verbatim}
+Note that by specification, all methods of wxSizerFlags return the wxSizerFlags
+object itself to allowing chaining multiple methods calls like in the examples
+above.
+
+\wxheading{See also}
+
+\helpref{wxSizer}{wxsizer}
+
+\wxheading{Derived from}
+
+No base class
+
+\wxheading{Include files}
+
+<wx/sizer.h>
+
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxSizerFlags::wxSizerFlags}\label{wxsizerflagsctor}
\func{}{wxSizerFlags}{\param{int }{proportion = 0}}
-Creates the wxSizer with the proportion specified by \tt{proportion}.
+Creates the wxSizer with the proportion specified by \arg{proportion}.
\membersection{wxSizerFlags::Align}\label{wxsizerflagsalign}
\func{wxSizerFlags\& }{Align}{\param{int }{align = 0}}
-Sets the alignment of this wxSizerFlags to \tt{align}.
+Sets the alignment of this wxSizerFlags to \arg{align}.
Note that if this method is not called, the wxSizerFlags has no specified alignment.
\wxheading{See also}
+\helpref{Top}{wxsizerflagstop},\\
\helpref{Left}{wxsizerflagsleft},\\
\helpref{Right}{wxsizerflagsright},\\
+\helpref{Bottom}{wxsizerflagsbottom},\\
\helpref{Centre}{wxsizerflagscentre}
\func{wxSizerFlags\& }{Border}{\param{int }{direction}, \param{int }{borderinpixels}}
-Sets the wxSizerFlags to have a border of a number of pixels specified by \tt{borderinpixels} with the directions specified by \tt{direction}.
-
\func{wxSizerFlags\& }{Border}{\param{int }{direction = wxALL}}
-Sets the wxSizerFlags to have a border of a default size with the directions specified by \tt{direction}.
+Sets the wxSizerFlags to have a border of a number of pixels specified by
+\arg{borderinpixels} with the directions specified by \arg{direction}.
+
+In the overloaded version without \arg{borderinpixels} parameter, the border of
+default size, as returned by \helpref{GetDefaultBorder}{wxsizerflagsgetdefaultborder},
+is used.
+
+
+\membersection{wxSizerFlags::Bottom}\label{wxsizerflagsbottom}
+
+\func{wxSizerFlags\& }{Bottom}{\void}
+
+Aligns the object to the bottom, shortcut for \texttt{Align(wxALIGN\_BOTTOM)}
+
+\wxheading{See also}
+
+\helpref{Align}{wxsizerflagsalign}
\membersection{wxSizerFlags::Center}\label{wxsizerflagscenter}
\helpref{wxSizerFlags::Center}{wxsizerflagscenter} for people with the other dialect of english.
+\membersection{wxSizerFlags::DoubleBorder}\label{wxsizerflagsdoubleborder}
+
+\func{wxSizerFlags\& }{DoubleBorder}{\param{int }{direction = wxALL}}
+
+Sets the border in the given \arg{direction} having twice the default border
+size.
+
+
+\membersection{wxSizerFlags::DoubleHorzBorder}\label{wxsizerflagsdoublehorzborder}
+
+\func{wxSizerFlags\& }{DoubleHorzBorder}{\void}
+
+Sets the border in left and right directions having twice the default border
+size.
+
+
\membersection{wxSizerFlags::Expand}\label{wxsizerflagsexpand}
\func{wxSizerFlags\& }{Expand}{\void}
Sets the object of the wxSizerFlags to expand to fill as much area as it can.
+\membersection{wxSizerFlags::GetDefaultBorder}\label{wxsizerflagsgetdefaultborder}
+
+\func{static int}{GetDefaultBorder}{\void}
+
+Returns the border used by default in \helpref{Border}{wxsizerflagsborder} method.
+
+
\membersection{wxSizerFlags::Left}\label{wxsizerflagsleft}
\func{wxSizerFlags\& }{Left}{\void}
\helpref{Align}{wxsizerflagsalign}
+\membersection{wxSizerFlags::FixedMinSize}\label{wxsizerflagsfixedminsize}
+
+\func{wxSizerFlags\& }{FixedMinSize}{\void}
+
+Set the \texttt{wxFIXED\_MINSIZE} flag which indicates that the initial size of
+the window should be also set as its minimal size.
+
+
\membersection{wxSizerFlags::Proportion}\label{wxsizerflagsproportion}
\func{wxSizerFlags\& }{Proportion}{\param{int }{proportion = 0}}
-Sets the proportion of this wxSizerFlags to \tt{proportion}
+Sets the proportion of this wxSizerFlags to \arg{proportion}
\membersection{wxSizerFlags::Right}\label{wxsizerflagsright}
\helpref{Align}{wxsizerflagsalign}
+
+\membersection{wxSizerFlags::Shaped}\label{wxsizerflagsshaped}
+
+\func{wxSizerFlags\& }{Shaped}{\void}
+
+Set the \texttt{wx\_SHAPED} flag which indicates that the elements should
+always keep the fixed width to height ratio equal to its original value.
+
+
+\membersection{wxSizerFlags::Top}\label{wxsizerflagstop}
+
+\func{wxSizerFlags\& }{Top}{\void}
+
+Aligns the object to the top, shortcut for \texttt{Align(wxALIGN\_TOP)}
+
+\wxheading{See also}
+
+\helpref{Align}{wxsizerflagsalign}
+
+
+\membersection{wxSizerFlags::TripleBorder}\label{wxsizerflagstriplebleborder}
+
+\func{wxSizerFlags\& }{TripleBorder}{\param{int }{direction = wxALL}}
+
+Sets the border in the given \arg{direction} having thrice the default border
+size.
+
+