+ virtual ~wxSizer();
+
+ /**
+ Appends a child to the sizer.
+
+ wxSizer itself is an abstract class, but the parameters are equivalent
+ in the derived classes that you will instantiate to use it so they are
+ described here:
+
+ @param 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.
+ @param flags
+ A wxSizerFlags object that enables you to specify most of the above
+ parameters more conveniently.
+ */
+ wxSizerItem* Add(wxWindow* window, const wxSizerFlags& flags);
+
+ /**
+ Appends a child to the sizer.
+
+ wxSizer itself is an abstract class, but the parameters are equivalent
+ in the derived classes that you will instantiate to use it so they are
+ described here:
+
+ @param 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.
+ @param proportion
+ Although the meaning of this parameter is undefined in wxSizer, it
+ is used in wxBoxSizer to indicate if a child of a sizer can change
+ its size in the main orientation of the wxBoxSizer - where 0 stands
+ for not changeable and a value of more than zero is interpreted
+ relative to the value of other children of the same wxBoxSizer. For
+ example, you might 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 value of 1 each
+ to make them grow and shrink equally with the sizer's horizontal
+ dimension.
+ @param flag
+ OR-combination of flags affecting sizer's behavior. See
+ @ref wxsizer_flags "wxSizer flags list" for details.
+ @param border
+ Determines the border width, if the flag parameter is set to
+ include any border flag.
+ @param userData
+ Allows an extra object to be attached to the sizer item, for use in
+ derived classes when sizing information is more complex than the
+ proportion and flag will allow for.
+ */
+ wxSizerItem* Add(wxWindow* window,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL);
+
+ /**
+ Appends a child to the sizer.
+
+ wxSizer itself is an abstract class, but the parameters are equivalent
+ in the derived classes that you will instantiate to use it so they are
+ described here:
+
+ @param 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 horizontal
+ boxes on the level beneath).
+ @param flags
+ A wxSizerFlags object that enables you to specify most of the above
+ parameters more conveniently.
+ */
+ wxSizerItem* Add(wxSizer* sizer, const wxSizerFlags& flags);
+
+ /**
+ Appends a child to the sizer.
+
+ wxSizer itself is an abstract class, but the parameters are equivalent
+ in the derived classes that you will instantiate to use it so they are
+ described here:
+
+ @param 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 horizontal
+ boxes on the level beneath).
+ @param proportion
+ Although the meaning of this parameter is undefined in wxSizer, it
+ is used in wxBoxSizer to indicate if a child of a sizer can change
+ its size in the main orientation of the wxBoxSizer - where 0 stands
+ for not changeable and a value of more than zero is interpreted
+ relative to the value of other children of the same wxBoxSizer. For
+ example, you might 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 value of 1 each
+ to make them grow and shrink equally with the sizer's horizontal
+ dimension.
+ @param flag
+ OR-combination of flags affecting sizer's behavior. See
+ @ref wxsizer_flags "wxSizer flags list" for details.
+ @param border
+ Determines the border width, if the flag parameter is set to
+ include any border flag.
+ @param userData
+ Allows an extra object to be attached to the sizer item, for use in
+ derived classes when sizing information is more complex than the
+ proportion and flag will allow for.
+ */
+ wxSizerItem* Add(wxSizer* sizer,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL);
+
+ /**
+ Appends a spacer child to the sizer.
+
+ wxSizer itself is an abstract class, but the parameters are equivalent
+ in the derived classes that you will instantiate to use it so they are
+ described here.
+
+ @a width and @a height specify the dimension of a spacer to be added to
+ the sizer. Adding spacers to sizers gives more flexibility in the
+ design of dialogs; imagine for example a horizontal box with two
+ buttons at the bottom of a dialog: you might want to insert a space
+ between the two buttons and make that space stretchable using the
+ proportion flag and the result will be that the left button will be
+ aligned with the left side of the dialog and the right button with the
+ right side - the space in between will shrink and grow with the dialog.
+
+ @param width
+ Width of the spacer.
+ @param height
+ Height of the spacer.
+ @param proportion
+ Although the meaning of this parameter is undefined in wxSizer, it
+ is used in wxBoxSizer to indicate if a child of a sizer can change
+ its size in the main orientation of the wxBoxSizer - where 0 stands
+ for not changeable and a value of more than zero is interpreted
+ relative to the value of other children of the same wxBoxSizer. For
+ example, you might 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 value of 1 each
+ to make them grow and shrink equally with the sizer's horizontal
+ dimension.
+ @param flag
+ OR-combination of flags affecting sizer's behavior. See
+ @ref wxsizer_flags "wxSizer flags list" for details.
+ @param border
+ Determines the border width, if the flag parameter is set to
+ include any border flag.
+ @param userData
+ Allows an extra object to be attached to the sizer item, for use in
+ derived classes when sizing information is more complex than the
+ proportion and flag will allow for.
+ */
+ wxSizerItem* Add(int width, int height,
+ int proportion = 0,
+ int flag = 0,
+ int border = 0,
+ wxObject* userData = NULL);
+
+ /**
+ Adds non-stretchable space to the sizer.
+ More readable way of calling:
+ @code
+ wxSizer::Add(size, size, 0).
+ @endcode
+ */
+ wxSizerItem* AddSpacer(int size);
+
+ /**
+ Adds stretchable space to the sizer.
+ More readable way of calling:
+ @code
+ wxSizer::Add(0, 0, prop).
+ @endcode
+ */
+ wxSizerItem* AddStretchSpacer(int prop = 1);
+
+ /**
+ This method is abstract and has to be overwritten by any derived class.
+ Here, the sizer will do the actual calculation of its children's minimal sizes.
+ */
+ virtual wxSize CalcMin() = 0;
+
+ /**
+ Detaches all children from the sizer.
+ If @a delete_windows is @true then child windows will also be deleted.
+ */
+ virtual void Clear(bool delete_windows = false);
+
+ /**
+ Computes client area size for @a window so that it matches the sizer's
+ minimal size. Unlike GetMinSize(), this method accounts for other
+ constraints imposed on @e window, namely display's size (returned size
+ will never be too large for the display) and maximum window size if
+ previously set by wxWindow::SetMaxSize().
+
+ The returned value is suitable for passing to wxWindow::SetClientSize() or
+ wxWindow::SetMinClientSize().
+
+ @since 2.8.8
+
+ @see ComputeFittingWindowSize(), Fit()
+ */
+ wxSize ComputeFittingClientSize(wxWindow* window);
+
+ /**
+ Like ComputeFittingClientSize(), but converts the result into window
+ size. The returned value is suitable for passing to wxWindow::SetSize()
+ or wxWindow::SetMinSize().
+
+ @since 2.8.8
+
+ @see ComputeFittingClientSize(), Fit()
+ */
+ wxSize ComputeFittingWindowSize(wxWindow* window);
+
+ /**
+ Detach the child @a window from the sizer without destroying it.
+
+ This method does not cause any layout or resizing to take place, call Layout()
+ to update the layout "on screen" after detaching a child from the sizer.
+
+ Returns @true if the child item was found and detached, @false otherwise.
+
+ @see Remove()
+ */
+ virtual bool Detach(wxWindow* window);
+
+ /**
+ Detach the child @a sizer from the sizer without destroying it.
+
+ This method does not cause any layout or resizing to take place, call Layout()
+ to update the layout "on screen" after detaching a child from the sizer.
+
+ Returns @true if the child item was found and detached, @false otherwise.
+
+ @see Remove()
+ */
+ virtual bool Detach(wxSizer* sizer);
+
+ /**
+ Detach a item at position @a index from the sizer without destroying it.
+
+ This method does not cause any layout or resizing to take place, call Layout()
+ to update the layout "on screen" after detaching a child from the sizer.
+ Returns @true if the child item was found and detached, @false otherwise.
+
+ @see Remove()
+ */
+ virtual bool Detach(int index);
+
+ /**
+ Tell the sizer to resize the @a window so that its client area matches the
+ sizer's minimal size (ComputeFittingClientSize() is called to determine it).
+ This is commonly done in the constructor of the window itself, see sample
+ in the description of wxBoxSizer.
+
+ @return The new window size.
+
+ @see ComputeFittingClientSize(), ComputeFittingWindowSize()
+ */
+ wxSize Fit(wxWindow* window);
+
+ /**
+ Tell the sizer to resize the virtual size of the @a window to match the sizer's
+ minimal size. This will not alter the on screen size of the window, but may
+ cause the addition/removal/alteration of scrollbars required to view the virtual
+ area in windows which manage it.
+
+ @see wxScrolled::SetScrollbars(), SetVirtualSizeHints()
+ */
+ void FitInside(wxWindow* window);
+
+ //@{
+ /**
+ Returns the list of the items in this sizer.
+
+ The elements of type-safe wxList @c wxSizerItemList are pointers to
+ objects of type wxSizerItem.
+ */
+ wxSizerItemList& GetChildren();
+ const wxSizerItemList& GetChildren() const;
+ //@}