]>
git.saurik.com Git - wxWidgets.git/blob - interface/sizer.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxStdDialogButtonSizer
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
10 @class wxStdDialogButtonSizer
13 This class creates button layouts which conform to the standard button spacing
14 and ordering defined by the platform
15 or toolkit's user interface guidelines (if such things exist). By using this
16 class, you can ensure that all your
17 standard dialogs look correct on all major platforms. Currently it conforms to
18 the Windows, GTK+ and Mac OS X
19 human interface guidelines.
21 When there aren't interface guidelines defined for a particular platform or
22 toolkit, wxStdDialogButtonSizer reverts
23 to the Windows implementation.
25 To use this class, first add buttons to the sizer by calling AddButton (or
26 SetAffirmativeButton, SetNegativeButton,
27 or SetCancelButton) and then call Realize in order to create the actual button
28 layout used. Other than these special
29 operations, this sizer works like any other sizer.
31 If you add a button with wxID_SAVE, on Mac OS X the button will be renamed to
33 the wxID_NO button will be renamed to "Don't Save" in accordance with the Mac
34 OS X Human Interface Guidelines.
39 @see wxSizer, @ref overview_sizeroverview "Sizer overview",
40 wxDialog::CreateButtonSizer
42 class wxStdDialogButtonSizer
: public wxBoxSizer
46 Constructor for a wxStdDialogButtonSizer.
48 wxStdDialogButtonSizer();
51 Adds a button to the wxStdDialogButtonSizer. The button must have one of the
52 following identifiers:
63 void AddButton(wxButton
* button
);
66 Rearranges the buttons and applies proper spacing between buttons to make them
67 match the platform or toolkit's interface guidelines.
72 Sets the affirmative button for the sizer. This allows you to use identifiers
73 other than the standard identifiers outlined above.
75 void SetAffirmativeButton(wxButton
* button
);
78 Sets the cancel button for the sizer. This allows you to use identifiers other
79 than the standard identifiers outlined above.
81 void SetCancelButton(wxButton
* button
);
84 Sets the negative button for the sizer. This allows you to use identifiers
85 other than the standard identifiers outlined above.
87 void SetNegativeButton(wxButton
* button
);
96 The wxSizerItem class is used to track the position, size and other
97 attributes of each item managed by a wxSizer. It is not usually necessary
98 to use this class because the sizer elements can also be identified by
99 their positions or window or sizer pointers but sometimes it may be more
100 convenient to use it directly.
105 class wxSizerItem
: public wxObject
110 Construct a sizer item for tracking a subsizer.
112 wxSizerItem(int width
, int height
, int proportion
, int flag
,
113 int border
, wxObject
* userData
);
114 wxSizerItem(wxWindow
* window
, const wxSizerFlags
& flags
);
115 wxSizerItem(wxWindow
* window
, int proportion
, int flag
,
118 wxSizerItem(wxSizer
* window
, const wxSizerFlags
& flags
);
119 wxSizerItem(wxSizer
* sizer
, int proportion
, int flag
,
125 Deletes the user data and subsizer, if any.
130 Calculates the minimum desired size for the item, including any space
136 Destroy the window or the windows in a subsizer, depending on the type
139 void DeleteWindows();
142 Enable deleting the SizerItem without destroying the contained sizer.
147 Return the border attribute.
149 int GetBorder() const;
152 Return the flags attribute.
154 See @ref wxsizer_flags "wxSizer flags list" for details.
159 Return the numeric id of wxSizerItem, or @c wxID_NONE if the id has
165 Get the minimum size needed for the item.
167 wxSize
GetMinSize() const;
170 Sets the minimum size to be allocated for this item.
172 If this item is a window, the @a size is also passed to
173 wxWindow::SetMinSize().
175 void SetMinSize(const wxSize
& size
);
180 void SetMinSize(int x
, int y
);
183 What is the current position of the item, as set in the last Layout.
185 wxPoint
GetPosition() const;
188 Get the proportion item attribute.
190 int GetProportion() const;
193 Get the ration item attribute.
195 float GetRatio() const;
198 Get the rectangle of the item on the parent window, excluding borders.
203 Get the current size of the item, as set in the last Layout.
205 wxSize
GetSize() const;
208 If this item is tracking a sizer, return it. @NULL otherwise.
210 wxSizer
* GetSizer() const;
213 If this item is tracking a spacer, return its size.
215 const wxSize
GetSpacer() const;
218 Get the userData item attribute.
220 wxObject
* GetUserData() const;
223 If this item is tracking a window then return it. @NULL otherwise.
225 wxWindow
* GetWindow() const;
228 Returns @true if this item is a window or a spacer and it is shown or
229 if this item is a sizer and not all of its elements are hidden.
231 In other words, for sizer items, all of the child elements must be
232 hidden for the sizer itself to be considered hidden.
234 As an exception, if the @c wxRESERVE_SPACE_EVEN_IF_HIDDEN flag was
235 used for this sizer item, then IsShown() always returns @true for it
236 (see wxSizerFlags::ReserveSpaceEvenIfHidden()).
238 bool IsShown() const;
241 Is this item a sizer?
243 bool IsSizer() const;
246 Is this item a spacer?
248 bool IsSpacer() const;
251 Is this item a window?
253 bool IsWindow() const;
256 Set the border item attribute.
258 void SetBorder(int border
);
261 Set the position and size of the space allocated to the sizer, and
262 adjust the position and size of the item to be within that space
263 taking alignment and borders into account.
265 void SetDimension(const wxPoint
& pos
, const wxSize
& size
);
268 Set the flag item attribute.
270 void SetFlag(int flag
);
273 Sets the numeric id of the wxSizerItem to @e id.
280 void SetInitSize(int x
, int y
);
283 Set the proportion item attribute.
285 void SetProportion(int proportion
);
289 Set the ratio item attribute.
291 void SetRatio(int width
, int height
);
292 void SetRatio(wxSize size
);
293 void SetRatio(float ratio
);
297 Set the sizer tracked by this item.
299 void SetSizer(wxSizer
* sizer
);
302 Set the size of the spacer tracked by this item.
304 void SetSpacer(const wxSize
& size
);
307 Set the window to be tracked by thsi item.
309 void SetWindow(wxWindow
* window
);
312 Set the show item attribute, which sizers use to determine if the item
313 is to be made part of the layout or not. If the item is tracking a
314 window then it is shown or hidden as needed.
316 void Show(bool show
);
325 Container for sizer items flags providing readable names for them.
327 Normally, when you add an item to a sizer via wxSizer::Add, you have to
328 specify a lot of flags and parameters which can be unwieldy. This is where
329 wxSizerFlags comes in: it allows you to specify all parameters using the
330 named methods instead. For example, instead of
333 sizer->Add(ctrl, 0, wxEXPAND | wxALL, 10);
339 sizer->Add(ctrl, wxSizerFlags().Expand().Border(10));
342 This is more readable and also allows you to create wxSizerFlags objects which
343 can be reused for several sizer items.
346 wxSizerFlags flagsExpand(1);
347 flagsExpand.Expand().Border(10);
349 sizer->Add(ctrl1, flagsExpand);
350 sizer->Add(ctrl2, flagsExpand);
353 Note that by specification, all methods of wxSizerFlags return the wxSizerFlags
354 object itself to allowing chaining multiple methods calls like in the examples
366 Creates the wxSizer with the proportion specified by @e proportion.
368 wxSizerFlags(int proportion
= 0);
371 Sets the alignment of this wxSizerFlags to @e align.
373 This method replaces the previously set alignment with the specified
376 @see Top(), Left(), Right(), Bottom(), Centre()
378 @param align Combination of @c wxALIGN_XXX bit masks.
380 wxSizerFlags
& Align(int align
= 0);
383 Sets the wxSizerFlags to have a border of a number of pixels specified
384 by @a borderinpixels with the directions specified by @e direction.
386 wxSizerFlags
& Border(int direction
, int borderinpixels
);
389 Sets the wxSizerFlags to have a border with size as returned by
392 @param direction Direction(s) to apply the border in.
394 wxSizerFlags
& Border(int direction
= wxALL
);
397 Aligns the object to the bottom, similar for @c Align(wxALIGN_BOTTOM).
399 Unlike Align(), this method doesn't change the horizontal alignment of
402 wxSizerFlags
& Bottom();
405 Sets the object of the wxSizerFlags to center itself in the area it is
408 wxSizerFlags
& Center();
411 Center() for people with the other dialect of English.
413 wxSizerFlags
& Centre();
416 Sets the border in the given @a direction having twice the default
419 wxSizerFlags
& DoubleBorder(int direction
= wxALL
);
422 Sets the border in left and right directions having twice the default
425 wxSizerFlags
& DoubleHorzBorder();
428 Sets the object of the wxSizerFlags to expand to fill as much area as
431 wxSizerFlags
& Expand();
434 Set the @c wxFIXED_MINSIZE flag which indicates that the initial size
435 of the window should be also set as its minimal size.
437 wxSizerFlags
& FixedMinSize();
440 Set the @c wxRESERVE_SPACE_EVEN_IF_HIDDEN flag. Normally wxSizers
441 don't allocate space for hidden windows or other items. This flag
442 overrides this behavior so that sufficient space is allocated for the
443 window even if it isn't visible. This makes it possible to dynamically
444 show and hide controls without resizing parent dialog, for example.
448 wxSizerFlags
& ReserveSpaceEvenIfHidden();
451 Returns the border used by default in Border() method.
453 static int GetDefaultBorder();
456 Aligns the object to the left, similar for @c Align(wxALIGN_LEFT).
458 Unlike Align(), this method doesn't change the vertical alignment of
461 wxSizerFlags
& Left();
464 Sets the proportion of this wxSizerFlags to @e proportion
466 wxSizerFlags
& Proportion(int proportion
= 0);
469 Aligns the object to the right, similar for @c Align(wxALIGN_RIGHT).
471 Unlike Align(), this method doesn't change the vertical alignment of
474 wxSizerFlags
& Right();
477 Set the @c wx_SHAPED flag which indicates that the elements should
478 always keep the fixed width to height ratio equal to its original value.
480 wxSizerFlags
& Shaped();
483 Aligns the object to the top, similar for @c Align(wxALIGN_TOP).
485 Unlike Align(), this method doesn't change the horizontal alignment of
491 Sets the border in the given @a direction having thrice the default
494 wxSizerFlags
& TripleBorder(int direction
= wxALL
);
500 @class wxNotebookSizer
504 This class is deprecated and should not be used in new code! It is no
505 longer needed, wxNotebook control can be inserted
506 into any sizer class and its minimal size will be determined correctly.
508 wxNotebookSizer is a specialized sizer to make sizers work in connection
509 with using notebooks. This sizer is different from any other sizer as you
510 must not add any children to it - instead, it queries the notebook class
511 itself. The only thing this sizer does is to determine the size of the
512 biggest page of the notebook and report an adjusted minimal size to a more
518 @see wxSizer, wxNotebook,
519 @ref overview_sizer "Sizers overview"
521 class wxNotebookSizer
: public wxSizer
525 Constructor. It takes an associated notebook as its only parameter.
527 wxNotebookSizer(wxNotebook
* notebook
);
530 Returns the notebook associated with the sizer.
532 wxNotebook
* GetNotebook();
538 @class wxFlexGridSizer
541 A flex grid sizer is a sizer which lays out its children in a two-dimensional
542 table with all table fields in one row having the same
543 height and all fields in one column having the same width, but all
544 rows or all columns are not necessarily the same height or width as in
547 Since wxWidgets 2.5.0, wxFlexGridSizer can also size items equally in one
548 direction but unequally ("flexibly") in the other. If the sizer is only
549 flexible in one direction (this can be changed using
550 wxFlexGridSizer::SetFlexibleDirection),
551 it needs to be decided how the sizer should grow in the other ("non-flexible")
552 direction in order to fill the available space. The
553 wxFlexGridSizer::SetNonFlexibleGrowMode method
559 @see wxSizer, @ref overview_sizeroverview "Sizer overview"
561 class wxFlexGridSizer
: public wxGridSizer
566 Constructor for a wxGridSizer. @a rows and @a cols determine the number of
567 columns and rows in the sizer - if either of the parameters is zero, it will be
568 calculated to form the total number of children in the sizer, thus making the
569 sizer grow dynamically. @a vgap and @a hgap define extra space between
572 wxFlexGridSizer(int rows
, int cols
, int vgap
, int hgap
);
573 wxFlexGridSizer(int cols
, int vgap
= 0, int hgap
= 0);
577 Specifies that column @a idx (starting from zero) should be grown if
578 there is extra space available to the sizer.
579 The @a proportion parameter has the same meaning as the stretch factor for
580 the sizers() except that if all proportions are 0,
581 then all columns are resized equally (instead of not being resized at all).
583 void AddGrowableCol(size_t idx
, int proportion
= 0);
586 Specifies that row idx (starting from zero) should be grown if there
587 is extra space available to the sizer.
588 See AddGrowableCol() for the description
589 of @a proportion parameter.
591 void AddGrowableRow(size_t idx
, int proportion
= 0);
594 Returns a wxOrientation value that specifies whether the sizer flexibly
595 resizes its columns, rows, or both (default).
597 @return One of the following values:
599 @see SetFlexibleDirection()
601 int GetFlexibleDirection() const;
604 Returns the value that specifies how the sizer grows in the "non-flexible"
605 direction if there is one.
607 @return One of the following values:
609 @see SetFlexibleDirection(),
610 SetNonFlexibleGrowMode()
612 int GetNonFlexibleGrowMode() const;
615 Specifies that column idx is no longer growable.
617 void RemoveGrowableCol(size_t idx
);
620 Specifies that row idx is no longer growable.
622 void RemoveGrowableRow(size_t idx
);
625 Specifies whether the sizer should flexibly resize its columns, rows, or
626 both. Argument @c direction can be @c wxVERTICAL, @c wxHORIZONTAL
627 or @c wxBOTH (which is the default value). Any other value is ignored. See
628 @ref getflexibledrection() GetFlexibleDirection for the
629 explanation of these values.
630 Note that this method does not trigger relayout.
632 void SetFlexibleDirection(int direction
);
635 Specifies how the sizer should grow in the non-flexible direction if
637 SetFlexibleDirection() must have
638 been called previously). Argument @a mode can be one of those documented in
639 GetNonFlexibleGrowMode(), please
640 see there for their explanation.
641 Note that this method does not trigger relayout.
643 void SetNonFlexibleGrowMode(wxFlexSizerGrowMode mode
);
652 wxSizer is the abstract base class used for laying out subwindows in a window.
654 cannot use wxSizer directly; instead, you will have to use one of the sizer
655 classes derived from it. Currently there are wxBoxSizer,
662 The layout algorithm used by sizers in wxWidgets is closely related to layout
663 in other GUI toolkits, such as Java's AWT, the GTK toolkit or the Qt toolkit.
665 based upon the idea of the individual subwindows reporting their minimal
667 size and their ability to get stretched if the size of the parent window has
669 This will most often mean that the programmer does not set the original size of
670 a dialog in the beginning, rather the dialog will be assigned a sizer and this
672 will be queried about the recommended size. The sizer in turn will query its
673 children, which can be normal windows, empty space or other sizers, so that
674 a hierarchy of sizers can be constructed. Note that wxSizer does not derive
676 and thus does not interfere with tab ordering and requires very little
678 to a real window on screen.
680 What makes sizers so well fitted for use in wxWidgets is the fact that every
682 reports its own minimal size and the algorithm can handle differences in font
684 or different window (dialog item) sizes on different platforms without
686 the standard font as well as the overall design of Motif widgets requires more
688 on Windows, the initial dialog size will automatically be bigger on Motif than
691 Sizers may also be used to control the layout of custom drawn items on the
692 window. The Add(), Insert(), and Prepend() functions return a pointer to
693 the newly added wxSizerItem. Just add empty space of the desired size and
694 attributes, and then use the wxSizerItem::GetRect() method to determine
695 where the drawing operations should take place.
697 Please notice that sizers, like child windows, are owned by the library and
698 will be deleted by it which implies that they must be allocated on the
699 heap. However if you create a sizer and do not add it to another sizer or
700 window, the library wouldn't be able to delete such an orphan sizer and in
701 this, and only this, case it should be deleted explicitly.
703 @b wxPython note: If you wish to create a sizer class in wxPython you should
704 derive the class from @c wxPySizer in order to get Python-aware
705 capabilities for the various virtual methods.
707 @anchor wxsizer_flags
709 The "flag" argument accepted by wxSizeItem constructors and other
710 functions, e.g. wxSizer::Add(), is OR-combination of the following flags.
711 Two main behaviours are defined using these flags. One is the border around
712 a window: the border parameter determines the border width whereas the
713 flags given here determine which side(s) of the item that the border will
714 be added. The other flags determine how the sizer item behaves when the
715 space allotted to the sizer changes, and is somewhat dependent on the
716 specific kind of sizer used.
723 These flags are used to specify which side(s) of the sizer item
724 the border width will apply to.}
726 The item will be expanded to fill the space assigned to the item.}
728 The item will be expanded as much as possible while also
729 maintaining its aspect ratio.}
730 @itemdef{wxFIXED_MINSIZE,
731 Normally wxSizers will use GetAdjustedBestSize() to determine what
732 the minimal size of window items should be, and will use that size
733 to calculate the layout. This allows layouts to adjust when an
734 item changes and its best size becomes different. If you would
735 rather have a window item stay the size it started with then use
737 @itemdef{wxRESERVE_SPACE_EVEN_IF_HIDDEN,
738 Normally wxSizers don't allocate space for hidden windows or other
739 items. This flag overrides this behavior so that sufficient space
740 is allocated for the window even if it isn't visible. This makes
741 it possible to dynamically show and hide controls without resizing
742 parent dialog, for example. (Available since 2.8.8.)
744 @itemdef{wxALIGN_CENTER<br>
750 wxALIGN_CENTER_VERTICAL<br>
751 wxALIGN_CENTRE_VERTICAL<br>
752 wxALIGN_CENTER_HORIZONTAL<br>
753 wxALIGN_CENTRE_HORIZONTAL,
754 The wxALIGN flags allow you to specify the alignment of the item
755 within the space allotted to it by the sizer, adjusted for the
763 @see @ref overview_sizeroverview "Sizer overview"
765 class wxSizer
: public wxObject
769 The constructor. Note that wxSizer is an abstract base class and may not
780 Appends a child to the sizer.
782 wxSizer itself is an abstract class, but the parameters are equivalent
783 in the derived classes that you will instantiate to use it so they are
787 The window to be added to the sizer. Its initial size (either set
788 explicitly by the user or calculated internally when using
789 wxDefaultSize) is interpreted as the minimal and in many cases also
792 A wxSizerFlags object that enables you to specify most of the above
793 parameters more conveniently.
795 wxSizerItem
* Add(wxWindow
* window
, const wxSizerFlags
& flags
);
798 Appends a child to the sizer.
800 wxSizer itself is an abstract class, but the parameters are equivalent
801 in the derived classes that you will instantiate to use it so they are
805 The window to be added to the sizer. Its initial size (either set
806 explicitly by the user or calculated internally when using
807 wxDefaultSize) is interpreted as the minimal and in many cases also
810 Although the meaning of this parameter is undefined in wxSizer, it
811 is used in wxBoxSizer to indicate if a child of a sizer can change
812 its size in the main orientation of the wxBoxSizer - where 0 stands
813 for not changeable and a value of more than zero is interpreted
814 relative to the value of other children of the same wxBoxSizer. For
815 example, you might have a horizontal wxBoxSizer with three
816 children, two of which are supposed to change their size with the
817 sizer. Then the two stretchable windows would get a value of 1 each
818 to make them grow and shrink equally with the sizer's horizontal
821 OR-combination of flags affecting sizer's behavior. See
822 @ref wxsizer_flags "wxSizer flags list" for details.
824 Determines the border width, if the flag parameter is set to
825 include any border flag.
827 Allows an extra object to be attached to the sizer item, for use in
828 derived classes when sizing information is more complex than the
829 proportion and flag will allow for.
831 wxSizerItem
* Add(wxWindow
* window
, int proportion
= 0,
834 wxObject
* userData
= NULL
);
837 Appends a child to the sizer.
839 wxSizer itself is an abstract class, but the parameters are equivalent
840 in the derived classes that you will instantiate to use it so they are
844 The (child-)sizer to be added to the sizer. This allows placing a
845 child sizer in a sizer and thus to create hierarchies of sizers
846 (typically a vertical box as the top sizer and several horizontal
847 boxes on the level beneath).
849 A wxSizerFlags object that enables you to specify most of the above
850 parameters more conveniently.
852 wxSizerItem
* Add(wxSizer
* sizer
, const wxSizerFlags
& flags
);
855 Appends a child to the sizer.
857 wxSizer itself is an abstract class, but the parameters are equivalent
858 in the derived classes that you will instantiate to use it so they are
862 The (child-)sizer to be added to the sizer. This allows placing a
863 child sizer in a sizer and thus to create hierarchies of sizers
864 (typically a vertical box as the top sizer and several horizontal
865 boxes on the level beneath).
867 Although the meaning of this parameter is undefined in wxSizer, it
868 is used in wxBoxSizer to indicate if a child of a sizer can change
869 its size in the main orientation of the wxBoxSizer - where 0 stands
870 for not changeable and a value of more than zero is interpreted
871 relative to the value of other children of the same wxBoxSizer. For
872 example, you might have a horizontal wxBoxSizer with three
873 children, two of which are supposed to change their size with the
874 sizer. Then the two stretchable windows would get a value of 1 each
875 to make them grow and shrink equally with the sizer's horizontal
878 OR-combination of flags affecting sizer's behavior. See
879 @ref wxsizer_flags "wxSizer flags list" for details.
881 Determines the border width, if the flag parameter is set to
882 include any border flag.
884 Allows an extra object to be attached to the sizer item, for use in
885 derived classes when sizing information is more complex than the
886 proportion and flag will allow for.
888 wxSizerItem
* Add(wxSizer
* sizer
, int proportion
= 0,
891 wxObject
* userData
= NULL
);
894 Appends a spacer child to the sizer.
896 wxSizer itself is an abstract class, but the parameters are equivalent
897 in the derived classes that you will instantiate to use it so they are
900 @a width and @a height specify the dimension of a spacer to be added to
901 the sizer. Adding spacers to sizers gives more flexibility in the
902 design of dialogs; imagine for example a horizontal box with two
903 buttons at the bottom of a dialog: you might want to insert a space
904 between the two buttons and make that space stretchable using the
905 proportion flag and the result will be that the left button will be
906 aligned with the left side of the dialog and the right button with the
907 right side - the space in between will shrink and grow with the dialog.
912 Height of the spacer.
914 Although the meaning of this parameter is undefined in wxSizer, it
915 is used in wxBoxSizer to indicate if a child of a sizer can change
916 its size in the main orientation of the wxBoxSizer - where 0 stands
917 for not changeable and a value of more than zero is interpreted
918 relative to the value of other children of the same wxBoxSizer. For
919 example, you might have a horizontal wxBoxSizer with three
920 children, two of which are supposed to change their size with the
921 sizer. Then the two stretchable windows would get a value of 1 each
922 to make them grow and shrink equally with the sizer's horizontal
925 OR-combination of flags affecting sizer's behavior. See
926 @ref wxsizer_flags "wxSizer flags list" for details.
928 Determines the border width, if the flag parameter is set to
929 include any border flag.
931 Allows an extra object to be attached to the sizer item, for use in
932 derived classes when sizing information is more complex than the
933 proportion and flag will allow for.
935 wxSizerItem
* Add(int width
, int height
, int proportion
= 0,
938 wxObject
* userData
= NULL
);
941 Adds non-stretchable space to the sizer. More readable way of calling
942 wxSizer::Add(size, size, 0).
944 wxSizerItem
* AddSpacer(int size
);
947 Adds stretchable space to the sizer. More readable way of calling
948 wxSizer::Add(0, 0, prop).
950 wxSizerItem
* AddStretchSpacer(int prop
= 1);
953 This method is abstract and has to be overwritten by any derived class.
954 Here, the sizer will do the actual calculation of its children's minimal sizes.
959 Detaches all children from the sizer. If @a delete_windows is @true then
960 child windows will also be deleted.
962 void Clear(bool delete_windows
= false);
965 Computes client area size for @a window so that it matches the sizer's
966 minimal size. Unlike GetMinSize(), this method accounts for other
967 constraints imposed on @e window, namely display's size (returned size
968 will never be too large for the display) and maximum window size if
969 previously set by wxWindow::SetMaxSize(). The returned value is
970 suitable for passing to wxWindow::SetClientSize() or
971 wxWindow::SetMinClientSize().
975 @see ComputeFittingWindowSize(), Fit()
977 wxSize
ComputeFittingClientSize(wxWindow
* window
);
980 Like ComputeFittingClientSize(), but converts the result into window
981 size. The returned value is suitable for passing to wxWindow::SetSize()
982 or wxWindow::SetMinSize().
986 @see ComputeFittingClientSize(), Fit()
988 wxSize
ComputeFittingWindowSize(wxWindow
* window
);
991 Detach the child @a window from the sizer without destroying it.
993 This method does not cause any layout or resizing to take place, call Layout()
994 to update the layout "on screen" after detaching a child from the sizer.
996 Returns @true if the child item was found and detached, @false otherwise.
1000 bool Detach(wxWindow
* window
);
1003 Detach the child @a sizer from the sizer without destroying it.
1005 This method does not cause any layout or resizing to take place, call Layout()
1006 to update the layout "on screen" after detaching a child from the sizer.
1008 Returns @true if the child item was found and detached, @false otherwise.
1012 bool Detach(wxSizer
* sizer
);
1015 Detach a item at position @a index from the sizer without destroying it.
1017 This method does not cause any layout or resizing to take place, call Layout()
1018 to update the layout "on screen" after detaching a child from the sizer.
1019 Returns @true if the child item was found and detached, @false otherwise.
1023 bool Detach(size_t index
);
1026 Tell the sizer to resize the @a window so that its client area matches the
1027 sizer's minimal size
1028 (ComputeFittingClientSize() is called
1030 This is commonly done in the constructor of the window
1031 itself, see sample in the description
1032 of wxBoxSizer. Returns the new window size.
1034 @see ComputeFittingClientSize(), ComputeFittingWindowSize()
1036 wxSize
Fit(wxWindow
* window
);
1039 Tell the sizer to resize the virtual size of the @a window to match the sizer's
1040 minimal size. This will not alter the on screen size of the window, but may
1041 cause the addition/removal/alteration of scrollbars required to view the virtual
1042 area in windows which manage it.
1044 @see wxScrolled::SetScrollbars(), SetVirtualSizeHints()
1046 void FitInside(wxWindow
* window
);
1049 Returns the list of the items in this sizer. The elements of type-safe
1050 wxList @a wxSizerItemList are objects of type
1051 @ref overview_wxsizeritem "wxSizerItem *".
1053 wxSizerItemList
& GetChildren();
1056 Returns the list of the items in this sizer. The elements of type-safe
1057 wxList @a wxSizerItemList are objects of type
1058 @ref overview_wxsizeritem "wxSizerItem *".
1060 const wxSizerItemList
& GetChildren() const;
1063 Returns the window this sizer is used in or @NULL if none.
1065 wxWindow
* GetContainingWindow() const;
1068 Finds wxSizerItem which holds the given @a window
1069 Use parameter @a recursive to search in subsizers too.
1070 Returns pointer to item or @NULL.
1072 wxSizerItem
* GetItem(wxWindow
* window
, bool recursive
= false);
1075 Finds wxSizerItem which holds the given @a sizer
1076 Use parameter @a recursive to search in subsizers too.
1077 Returns pointer to item or @NULL.
1080 wxSizerItem
* GetItem(wxSizer
* sizer
, bool recursive
= false);
1082 Finds wxSizerItem which is located in the sizer at position
1084 Use parameter @a recursive to search in subsizers too.
1085 Returns pointer to item or @NULL.
1087 wxSizerItem
* GetItem(size_t index
);
1090 Finds item of the sizer which has the given @e id. This @a id is not the
1091 window id but the id of the wxSizerItem itself. This is mainly useful for
1092 retrieving the sizers created from XRC resources.
1093 Use parameter @a recursive to search in subsizers too.
1094 Returns pointer to item or @NULL.
1096 wxSizerItem
* GetItemById(int id
, bool recursive
= false);
1099 Returns the minimal size of the sizer. This is either the combined minimal
1100 size of all the children and their borders or the minimal size set by
1101 SetMinSize(), depending on which is bigger.
1102 Note that the returned value is client size, not window size.
1103 In particular, if you use the value to set toplevel window's minimal or
1104 actual size, use wxWindow::SetMinClientSize
1105 or wxWindow::SetClientSize, not
1106 wxWindow::SetMinSize
1107 or wxWindow::SetSize.
1109 wxSize
GetMinSize();
1112 Returns the current position of the sizer.
1114 wxPoint
GetPosition();
1117 Returns the current size of the sizer.
1122 Hides the child @a window.
1124 To make a sizer item disappear, use Hide() followed by Layout().
1126 Use parameter @a recursive to hide elements found in subsizers.
1127 Returns @true if the child item was found, @false otherwise.
1129 @see IsShown(), Show()
1131 bool Hide(wxWindow
* window
, bool recursive
= false);
1134 Hides the child @a sizer.
1136 To make a sizer item disappear, use Hide() followed by Layout().
1138 Use parameter @a recursive to hide elements found in subsizers.
1139 Returns @true if the child item was found, @false otherwise.
1141 @see IsShown(), Show()
1143 bool Hide(wxSizer
* sizer
, bool recursive
= false);
1146 Hides the item at position @a index.
1148 To make a sizer item disappear, use Hide() followed by Layout().
1150 Use parameter @a recursive to hide elements found in subsizers.
1151 Returns @true if the child item was found, @false otherwise.
1153 @see IsShown(), Show()
1155 bool Hide(size_t index
);
1158 Insert a child into the sizer before any existing item at
1160 See Add() for the meaning of the other parameters.
1162 wxSizerItem
* Insert(size_t index
, wxWindow
* window
,
1163 const wxSizerFlags
& flags
);
1166 Insert a child into the sizer before any existing item at
1168 See Add() for the meaning of the other parameters.
1170 wxSizerItem
* Insert(size_t index
, wxWindow
* window
,
1174 wxObject
* userData
= NULL
);
1177 Insert a child into the sizer before any existing item at
1179 See Add() for the meaning of the other parameters.
1181 wxSizerItem
* Insert(size_t index
, wxSizer
* sizer
,
1182 const wxSizerFlags
& flags
);
1185 Insert a child into the sizer before any existing item at
1187 See Add() for the meaning of the other parameters.
1189 wxSizerItem
* Insert(size_t index
, wxSizer
* sizer
,
1193 wxObject
* userData
= NULL
);
1196 Insert a child into the sizer before any existing item at
1198 See Add() for the meaning of the other parameters.
1200 wxSizerItem
* Insert(size_t index
, int width
, int height
,
1204 wxObject
* userData
= NULL
);
1207 Inserts non-stretchable space to the sizer. More readable way of calling
1208 wxSizer::Insert(size, size, 0).
1210 wxSizerItem
* InsertSpacer(size_t index
, int size
);
1213 Inserts stretchable space to the sizer. More readable way of calling
1214 wxSizer::Insert(0, 0, prop).
1216 wxSizerItem
* InsertStretchSpacer(size_t index
, int prop
= 1);
1219 Returns @true if the @e window is shown.
1221 @see Hide(), Show(), wxSizerItem::IsShown()
1223 bool IsShown(wxWindow
* window
) const;
1226 Returns @true if the @e sizer is shown.
1228 @see Hide(), Show(), wxSizerItem::IsShown()
1230 bool IsShown(wxSizer
* sizer
) const;
1233 Returns @true if the item at @a index is shown.
1235 @see Hide(), Show(), wxSizerItem::IsShown()
1237 bool IsShown(size_t index
) const;
1240 Call this to force layout of the children anew, e.g. after having added a child
1241 to or removed a child (window, other sizer or space) from the sizer while
1243 the current dimension.
1248 Same as Add(), but prepends the items to the beginning of the
1249 list of items (windows, subsizers or spaces) owned by this sizer.
1251 wxSizerItem
* Prepend(wxWindow
* window
, const wxSizerFlags
& flags
);
1254 Same as Add(), but prepends the items to the beginning of the
1255 list of items (windows, subsizers or spaces) owned by this sizer.
1257 wxSizerItem
* Prepend(wxWindow
* window
, int proportion
= 0,
1260 wxObject
* userData
= NULL
);
1263 Same as Add(), but prepends the items to the beginning of the
1264 list of items (windows, subsizers or spaces) owned by this sizer.
1266 wxSizerItem
* Prepend(wxSizer
* sizer
,
1267 const wxSizerFlags
& flags
);
1270 Same as Add(), but prepends the items to the beginning of the
1271 list of items (windows, subsizers or spaces) owned by this sizer.
1273 wxSizerItem
* Prepend(wxSizer
* sizer
, int proportion
= 0,
1276 wxObject
* userData
= NULL
);
1279 Same as Add(), but prepends the items to the beginning of the
1280 list of items (windows, subsizers or spaces) owned by this sizer.
1282 wxSizerItem
* Prepend(int width
, int height
,
1286 wxObject
* userData
= NULL
);
1289 Prepends non-stretchable space to the sizer. More readable way of
1290 calling wxSizer::Prepend(size, size, 0).
1292 wxSizerItem
* PrependSpacer(int size
);
1295 Prepends stretchable space to the sizer. More readable way of calling
1296 wxSizer::Prepend(0, 0, prop).
1298 wxSizerItem
* PrependStretchSpacer(int prop
= 1);
1301 This method is abstract and has to be overwritten by any derived class.
1302 Here, the sizer will do the actual calculation of its children's
1303 positions and sizes.
1308 Removes a child window from the sizer, but does @b not destroy it
1309 (because windows are owned by their parent window, not the sizer).
1312 The overload of this method taking a wxWindow* parameter
1313 is deprecated as it does not destroy the window as would usually be
1314 expected from Remove(). You should use Detach() in new code instead.
1315 There is currently no wxSizer method that will both detach and destroy
1318 @note This method does not cause any layout or resizing to take
1319 place, call Layout() to update the layout "on screen" after
1320 removing a child from the sizer.
1322 @return @true if the child item was found and removed, @false otherwise.
1324 bool Remove(wxWindow
* window
);
1327 Removes a sizer child from the sizer and destroys it.
1329 @note This method does not cause any layout or resizing to take
1330 place, call Layout() to update the layout "on screen" after
1331 removing a child from the sizer.
1333 @param sizer The wxSizer to be removed.
1335 @return @true if the child item was found and removed, @false otherwise.
1337 bool Remove(wxSizer
* sizer
);
1340 Removes a child from the sizer and destroys it if it is a sizer or a
1341 spacer, but not if it is a window (because windows are owned by their
1342 parent window, not the sizer).
1344 @note This method does not cause any layout or resizing to take
1345 place, call Layout() to update the layout "on screen" after
1346 removing a child from the sizer.
1348 @param index The position of the child in the sizer, e.g. 0 for the
1351 @return @true if the child item was found and removed, @false otherwise.
1353 bool Remove(size_t index
);
1356 Detaches the given @a oldwin from the sizer and
1357 replaces it with the given @newwin. The detached
1358 child window is @b not deleted (because windows are
1359 owned by their parent window, not the sizer).
1361 Use parameter @a recursive to search the given element recursively in subsizers.
1363 This method does not cause any layout or resizing to take place,
1364 call Layout() to update the layout "on screen" after replacing a
1365 child from the sizer.
1367 Returns @true if the child item was found and removed, @false otherwise.
1369 bool Replace(wxWindow
* oldwin
, wxWindow
* newwin
,
1370 bool recursive
= false);
1373 Detaches the given @a oldsz from the sizer and
1374 replaces it with the given @newwin. The detached
1375 child sizer is deleted.
1377 Use parameter @a recursive to search the given element recursively in subsizers.
1379 This method does not cause any layout or resizing to take place,
1380 call Layout() to update the layout "on screen" after replacing a
1381 child from the sizer.
1383 Returns @true if the child item was found and removed, @false otherwise.
1385 bool Replace(wxSizer
* oldsz
, wxSizer
* newsz
,
1386 bool recursive
= false);
1389 Detaches the given item at position @a index from the sizer and
1390 replaces it with the given wxSizerItem @ newitem.
1392 The detached child is deleted @b only if it is a sizer or a spacer
1393 (but not if it is a wxWindow because windows are owned by their
1394 parent window, not the sizer).
1396 This method does not cause any layout or resizing to take place,
1397 call Layout() to update the layout "on screen" after replacing a
1398 child from the sizer.
1400 Returns @true if the child item was found and removed, @false otherwise.
1402 bool Replace(size_t index
, wxSizerItem
* newitem
);
1405 Call this to force the sizer to take the given dimension and thus force
1406 the items owned by the sizer to resize themselves according to the
1407 rules defined by the parameter in the Add() and Prepend() methods.
1409 void SetDimension(int x
, int y
, int width
, int height
);
1414 void SetDimension(const wxPoint
& pos
, const wxSize
& size
);
1417 Set an item's minimum size by window, sizer, or position.
1419 The item will be found recursively in the sizer's descendants. This
1420 function enables an application to set the size of an item after
1423 @see wxSizerItem::SetMinSize()
1425 void SetItemMinSize(wxWindow
* window
, int width
, int height
);
1428 Set an item's minimum size by window, sizer, or position.
1430 The item will be found recursively in the sizer's descendants. This
1431 function enables an application to set the size of an item after
1434 @see wxSizerItem::SetMinSize()
1436 void SetItemMinSize(wxSizer
* sizer
, int width
, int height
);
1439 Set an item's minimum size by window, sizer, or position.
1441 The item will be found recursively in the sizer's descendants. This
1442 function enables an application to set the size of an item after
1445 @see wxSizerItem::SetMinSize()
1447 void SetItemMinSize(size_t index
, int width
, int height
);
1450 Call this to give the sizer a minimal size. Normally, the sizer will
1451 calculate its minimal size based purely on how much space its children
1452 need. After calling this method GetMinSize() will return either the
1453 minimal size as requested by its children or the minimal size set here,
1454 depending on which is bigger.
1456 void SetMinSize(const wxSize
& size
);
1461 void SetMinSize(int width
, int height
);
1464 This method first calls Fit() and then
1465 wxTopLevelWindow::SetSizeHints on the @e window
1466 passed to it. This only makes sense when @a window is actually a
1467 wxTopLevelWindow such as a wxFrame or a
1468 wxDialog, since SetSizeHints only has any effect in these classes.
1469 It does nothing in normal windows or controls.
1470 This method is implicitly used by wxWindow::SetSizerAndFit
1471 which is commonly invoked in the constructor of a toplevel window itself (see
1472 the sample in the description of wxBoxSizer) if the
1473 toplevel window is resizable.
1475 void SetSizeHints(wxWindow
* window
);
1478 Tell the sizer to set the minimal size of the @a window virtual area to match
1480 minimal size. For windows with managed scrollbars this will set them
1483 @see wxScrolled::SetScrollbars()
1485 void SetVirtualSizeHints(wxWindow
* window
);
1488 Shows or hides the @a window.
1489 To make a sizer item disappear or reappear, use Show() followed by Layout().
1491 Use parameter @a recursive to show or hide elements found in subsizers.
1493 Returns @true if the child item was found, @false otherwise.
1495 @see Hide(), IsShown()
1497 bool Show(wxWindow
* window
, bool show
= true,
1498 bool recursive
= false);
1501 Shows or hides @a sizer.
1502 To make a sizer item disappear or reappear, use Show() followed by Layout().
1504 Use parameter @a recursive to show or hide elements found in subsizers.
1506 Returns @true if the child item was found, @false otherwise.
1508 @see Hide(), IsShown()
1510 bool Show(wxSizer
* sizer
, bool show
= true,
1511 bool recursive
= false);
1514 Shows the item at @a index.
1515 To make a sizer item disappear or reappear, use Show() followed by Layout().
1517 Returns @true if the child item was found, @false otherwise.
1519 @see Hide(), IsShown()
1521 bool Show(size_t index
, bool show
= true);
1530 A grid sizer is a sizer which lays out its children in a two-dimensional
1531 table with all table fields having the same size,
1532 i.e. the width of each field is the width of the widest child,
1533 the height of each field is the height of the tallest child.
1536 @category{winlayout}
1538 @see wxSizer, @ref overview_sizeroverview "Sizer overview"
1540 class wxGridSizer
: public wxSizer
1545 Constructor for a wxGridSizer. @a rows and @a cols determine the number of
1546 columns and rows in the sizer - if either of the parameters is zero, it will be
1547 calculated to form the total number of children in the sizer, thus making the
1548 sizer grow dynamically. @a vgap and @a hgap define extra space between
1551 wxGridSizer(int rows
, int cols
, int vgap
, int hgap
);
1552 wxGridSizer(int cols
, int vgap
= 0, int hgap
= 0);
1556 Returns the number of columns in the sizer.
1561 Returns the horizontal gap (in pixels) between cells in the sizer.
1566 Returns the number of rows in the sizer.
1571 Returns the vertical gap (in pixels) between the cells in the sizer.
1576 Sets the number of columns in the sizer.
1578 void SetCols(int cols
);
1581 Sets the horizontal gap (in pixels) between cells in the sizer.
1583 void SetHGap(int gap
);
1586 Sets the number of rows in the sizer.
1588 void SetRows(int rows
);
1591 Sets the vertical gap (in pixels) between the cells in the sizer.
1593 void SetVGap(int gap
);
1599 @class wxStaticBoxSizer
1602 wxStaticBoxSizer is a sizer derived from wxBoxSizer but adds a static
1603 box around the sizer. This static box may be either created independently or
1604 the sizer may create it itself as a convenience. In any case, the sizer owns
1605 the wxStaticBox control and will delete it if it is
1609 @category{winlayout}
1611 @see wxSizer, wxStaticBox, wxBoxSizer, @ref overview_sizeroverview "Sizer
1614 class wxStaticBoxSizer
: public wxBoxSizer
1619 The first constructor uses an already existing static box. It takes the
1620 associated static box and the orientation @e orient, which can be either
1621 @c wxVERTICAL or @c wxHORIZONTAL as parameters.
1622 The second one creates a new static box with the given label and parent window.
1624 wxStaticBoxSizer(wxStaticBox
* box
, int orient
);
1625 wxStaticBoxSizer(int orient
, wxWindow parent
,
1626 const wxString
& label
= wxEmptyString
);
1630 Returns the static box associated with the sizer.
1632 wxStaticBox
* GetStaticBox();
1641 The basic idea behind a box sizer is that windows will most often be laid out
1643 simple basic geometry, typically in a row or a column or several hierarchies of
1646 For more information, please see @ref overview_boxsizerprogramming "Programming
1650 @category{winlayout}
1652 @see wxSizer, @ref overview_sizeroverview "Sizer overview"
1654 class wxBoxSizer
: public wxSizer
1658 Constructor for a wxBoxSizer. @a orient may be either of wxVERTICAL
1659 or wxHORIZONTAL for creating either a column sizer or a row sizer.
1661 wxBoxSizer(int orient
);
1664 Implements the calculation of a box sizer's minimal. It is used internally
1665 only and must not be called by the user. Documented for information.
1670 Returns the orientation of the box sizer, either wxVERTICAL
1673 int GetOrientation();
1676 Implements the calculation of a box sizer's dimensions and then sets
1677 the size of its children (calling wxWindow::SetSize
1678 if the child is a window). It is used internally only and must not be called
1679 by the user (call Layout() if you want to resize). Documented for information.