+"""Decorator classes for documentation and shell scripting.
+
+Sizer is the abstract base class used for laying out subwindows in a
+window. You cannot use Sizer directly; instead, you will have to use
+one of the sizer classes derived from it. Currently there are
+BoxSizer, StaticBoxSizer, NotebookSizer, GridSizer, and FlexGridSizer.
+
+The layout algorithm used by sizers in wxPython is closely related to
+layout in other GUI toolkits, such as Java's AWT, the GTK toolkit or
+the Qt toolkit. It is 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
+a dialog in the beginning, rather the dialog will assigned a sizer and
+this sizer will be queried about the recommended size. The sizer in
+turn will query its children, which can be normal windows, empty space
+or other sizers, so that a hierarchy of sizers can be constructed.
+Note that wxSizer does not derive from wxWindow and thus do not
+interfere with tab ordering and requires very little resources
+compared to a real window on screen.
+
+What makes sizers so well fitted for use in wxPython is the fact that
+every control reports its own minimal size and the algorithm can
+handle differences in font sizes or different window (dialog item)
+sizes on different platforms without problems. If e.g. the standard
+font as well as the overall design of Motif widgets requires more
+space than on Windows, the initial dialog size will automatically be
+bigger on Motif than on Windows.
+
+If you wish to create a sizer class in wxPython you should derive the
+class from PySizer in order to get Python-aware capabilities for the
+various virtual methods.
+"""
+
+__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
+__cvsid__ = "$Id$"
+__revision__ = "$Revision$"[11:-2]
+
+
+# These are not the real wxPython classes. These are Python versions
+# for documentation purposes. They are also used to apply docstrings
+# to the real wxPython classes, which are SWIG-generated wrappers for
+# C-language classes.
+
+
+from Base import Object
+import Parameters as wx
+
+try:
+ True
+except NameError:
+ True = 1==1
+ False = 1==0
+
+
+class Sizer(Object):
+ """Sizer is the abstract base class used for laying out subwindows
+ in a window. You shouldn't use Sizer directly; instead, you should
+ use one of the sizer classes derived from it.
+
+ If you wish to create a sizer class in wxPython you should derive
+ the class from PySizer in order to get Python-aware capabilities
+ for the various virtual methods.
+
+ Placing a child sizer in a sizer allows you to create hierarchies
+ of sizers (typically a vertical box as the top sizer and several
+ horizontal boxes on the level beneath).
+
+ When you place a window in a sizer the window's 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 SetSizeHints.
+
+ 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.
+
+ Several methods (Add, Insert, Prepend) take the following
+ parameters:
+
+ proportion - Used only by BoxSizer to indicate if a child of a
+ sizer can change its size in the main orientation of the BoxSizer,
+ 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
+ BoxSizer. For example, you might have a horizontal BoxSizer with
+ three children, two of which are supposed to change their size
+ with the sizer. Then the two stretchable windows would each get a
+ value of 1 to make them grow and shrink equally with the sizer's
+ horizontal dimension.
+
+ flag - This parameter can be used to set a number of flags which
+ can be combined using the binary OR operator |. Two main
+ behaviours are defined using these flags. One is the border
+ around a window: the border parameter determines the border width
+ whereas the flags given here determine where the border may be
+ (wx.TOP, wx.BOTTOM, wx.LEFT, wx.RIGHT or wx.ALL). The other flags
+ determine the child window's behaviour if the size of the sizer
+ changes. However this is not - in contrast to the proportion flag
+ - in the main orientation, but in the respectively other
+ orientation. So if you created a BoxSizer with the wx.VERTICAL
+ option, these flags will be relevant if the sizer changes its
+ horizontal size. A child may get resized to completely fill out
+ the new size (using either wx.GROW or wx.EXPAND), it may get
+ proportionally resized (wx.SHAPED), it may get centered
+ (wx.ALIGN_CENTER or wx.ALIGN_CENTRE) or it may get aligned to
+ either side (wx.ALIGN_LEFT and wx.ALIGN_TOP are set to 0 and thus
+ represent the default, wx.ALIGN_RIGHT and wx.ALIGN_BOTTOM have
+ their obvious meaning). With proportional resize, a child may
+ also be centered in the main orientation using
+ wx.ALIGN_CENTER_VERTICAL (same as wx.ALIGN_CENTRE_VERTICAL) and
+ wx.ALIGN_CENTER_HORIZONTAL (same as wx.ALIGN_CENTRE_HORIZONTAL)
+ flags. Finally, you can also specify wx.ADJUST_MINSIZE flag to
+ make the minimal size of the control dynamically adjust to the
+ value returned by its GetAdjustedBestSize() method - this allows,
+ for example, for correct relayouting of a static text control even
+ if its text is changed during run-time.
+
+ border - Determines the border width, if the flag parameter is set
+ to any border. A border is not a visible element, but rather a
+ margin of empty space surrounding the item.
+
+ 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 option and flag parameters will allow."""
+
+ def __init__(self):
+ """Must be defined by subclasses."""
+ pass
+
+ def Add(self, item, proportion=0, flag=0, border=0,
+ userData=wx.NULL):
+ """Add item to sizer.
+
+ item - window, sizer, or spacer. Spacer is specified with a
+ (width, height) tuple or wx.Size representing the spacer size.
+
+ Call Layout() to update the layout on-screen after adding."""
+ pass
+
+ def Clear(self, delete_windows=False):
+ """Remove all items from this sizer.
+
+ If delete_windows is True, destroy any window items."""
+ pass
+
+ def DeleteWindows(self):
+ """Destroy windows associated with this sizer."""
+ pass
+
+ def Destroy(self):
+ """Destroy the sizer."""
+ pass
+
+ def Fit(self, window):
+ """Resize window to match sizer's minimal size; return size.
+
+ This is commonly done in the constructor of the window itself."""
+ pass
+
+ def FitInside(self, window):
+ """Resize window virtual size to match 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."""
+ pass
+
+ def GetChildren(self):
+ """Return list of SizerItem instances."""
+ pass
+
+ def GetMinSize(self):
+ """Return the minimal size of the sizer.
+
+ This is either the combined minimal size of all the children
+ and their borders or the minimal size set by SetMinSize,
+ whichever is larger."""
+ pass
+
+ def GetMinSizeTuple(self):
+ """Return the minimal size of the sizer as a tuple.
+
+ This is either the combined minimal size of all the children
+ and their borders or the minimal size set by SetMinSize,
+ whichever is larger."""
+ pass
+
+ def GetPosition(self):
+ """Return the current position of the sizer."""
+ pass
+
+ def GetPositionTuple(self):
+ """Return the current position of the sizer as a tuple."""
+ pass
+
+ def GetSize(self):
+ """Return the current size of the sizer."""
+ pass
+
+ def GetSizeTuple(self):
+ """Return the current size of the sizer as a tuple."""
+ pass
+
+ def Hide(self, item):
+ """Hide item (sizer or window). To make a sizer item
+ disappear on-screen, use Hide() followed by Layout()."""
+ pass
+
+ def Insert(self, before, item, proportion=0, flag=0, border=0,
+ userData=wx.NULL):
+ """Same as Add, but inserts item into list of items (windows,
+ subsizers or spacers) owned by this sizer.
+
+ Call Layout() to update the layout on-screen after inserting."""
+ pass
+
+ def IsShown(self, item):
+ """Return True if item (sizer or window) is shown."""
+ pass
+
+ def Layout(self):
+ """Force layout of children anew.
+
+ Use after adding or removing a child (window, other sizer, or
+ spacer) from the sizer while keeping the current dimension."""
+ pass
+
+ def Prepend(self, item, proportion=0, flag=0, border=0,
+ userData=wx.NULL):
+ """Same as Add, but prepends item to beginning of list of
+ items (windows, subsizers or spacers) owned by this sizer.
+
+ Call Layout() to update the layout on-screen after prepending."""
+ pass
+
+ def Remove(self, item):
+ """Remove item from the sizer.
+
+ item - sizer, window, or index of item in the sizer, typically
+ 0 for the first item.
+
+ Does not cause any layout or resizing to take place, and does
+ not delete the child itself. Call Layout() to update the
+ layout on-screen after removing child.
+
+ Return True if child found and removed, False otherwise."""
+ pass
+
+ def SetDimension(self, x, y, width, height):
+ """Force sizer to take the given dimension and thus force
+ items owned by sizer to resize themselves according to the
+ rules defined by the parameter in the Add and Prepend methods."""
+ pass
+
+ def SetItemMinSize(self, item, width, height):
+ """Set minimal size of item.
+
+ item - sizer, window, or index of item in the sizer, typically
+ 0 for the first item.
+
+ The item will be found recursively in the sizer's descendants.
+ Enables application to set size of item after initialization."""
+ pass
+
+ def SetMinSize(self, size):
+ """Set minimal size.
+
+ Normally, sizer will calculate minimal size based on how much
+ space its children need. After calling this method,
+ GetMinSize will return the minimal size as requested by its
+ children or the minimal size set here, whichever is larger."""
+ pass
+
+ def SetSizeHints(self, window):
+ """Set (and Fit) minimal size of window to match sizer's
+ minimal size. Commonly called in the window's init."""
+ pass
+
+ def SetVirtualSizeHints(self, window):
+ """Set minimal size of window virtual area to match sizer's
+ minimal size. For windows with managed scrollbars this will
+ set them appropriately."""
+ pass
+
+ def Show(self, item, show=True):
+ """Show or hide item (sizer or window). To make item
+ disappear or reappear on-screen, use Show() followed by
+ Layout()."""
+ pass
+
+ def ShowItems(self, show):
+ """Recursively call Show() on all sizer items."""
+ pass
+
+
+class PySizer(Sizer):
+ """If you wish to create a custom sizer class you should derive
+ the class from PySizer in order to get Python-aware capabilities
+ for the various virtual methods."""
+
+ def __init__(self):
+ """Create a PySizer instance. Override in subclass."""
+ pass
+
+
+class BoxSizer(Sizer):
+ """A box sizer is used to lay out a rather simple geometry,
+ typically a row or column or several hierarchies of either."""
+
+ def __init__(self, orient=wx.HORIZONTAL):
+ """Create BoxSizer instance.
+
+ orient is either wx.VERTICAL or wx.HORIZONTAL"""
+ pass
+
+ def CalcMin(self):
+ """Calculate minimum size. Do not call directly."""
+ pass
+
+ def GetOrientation(self):
+ """Return orientation: wx.VERTICAL or wx.HORIZONTAL."""
+ pass
+
+ def RecalcSizes(self):
+ """Recalculate sizes, then set the size of its children
+ (calling SetSize if child is a window). Do not call directly."""
+ pass
+
+ def SetOrientation(self, orient):
+ """Set orientation to either wx.VERTICAL or wx.HORIZONTAL."""
+ pass
+
+
+class StaticBoxSizer(BoxSizer):
+ """Like BoxSizer, but adds a static box around the sizer. Note
+ that the static box has to be created separately."""
+
+ def __init__(self, box, orient=wx.HORIZONTAL):
+ """Create StaticBoxSizer instance.
+
+ box - instance of wx.StaticBox
+
+ orient - either wx.VERTICAL or wx.HORIZONTAL"""
+ pass
+
+ def CalcMin(self):
+ """Calculate minimum size. Do not call directly."""
+ pass
+
+ def GetStaticBox(self):
+ """Return the static box associated with the sizer."""
+ pass
+
+ def RecalcSizes(self):
+ """Recalculate sizes, then set the size of its children
+ (calling SetSize if child is a window). Do not call directly."""
+ pass
+
+
+class GridSizer(Sizer):
+ """A grid sizer lays out its children in a two-dimensional table
+ where all cells have the same size: the width of each cell is the
+ width of the widest child, the height of each cell is the height
+ of the tallest child. See also the FlexGridSizer."""
+
+ def __init__(self, rows=1, cols=0, vgap=0, hgap=0):
+ """Create a GridSizer instance.
+
+ rows and cols - the number of rows and columns in the grid; if
+ either is zero, it will be calculated as the number of
+ children in the sizer, allowing the sizer grow dynamically.
+
+ vgap and hgap - extra space between all cells, in pixels."""
+ pass
+
+ def CalcMin(self):
+ """Calculate minimum size. Do not call directly."""
+ pass
+
+ def GetCols(self):
+ """Return the number of columns in the grid."""
+ pass
+
+ def GetHGap(self):
+ """Return the horizontal gap (in pixels) between cells."""
+ pass
+
+ def GetRows(self):
+ """Return the number of rows in the grid."""
+ pass
+
+ def GetVGap(self):
+ """Return the vertical gap (in pixels) between cells."""
+ pass
+
+ def RecalcSizes(self):
+ """Recalculate sizes, then set the size of its children
+ (calling SetSize if child is a window). Do not call directly."""
+ pass
+
+ def SetCols(self, cols):
+ """Set the number of columns in the grid."""
+ pass
+
+ def SetHGap(self, gap):
+ """Set the horizontal gap (in pixels) between cells."""
+ pass
+
+ def SetRows(self, rows):
+ """Sets the number of rows in the grid."""
+ pass
+
+ def SetVGap(self, gap):
+ """Set the vertical gap (in pixels) between cells."""
+ pass
+
+
+class FlexGridSizer(GridSizer):
+ """A flex grid sizer lays out its children in a two-dimensional
+ table where all cells in one row have the same height and all
+ cells in one column have the same width, but all cells are not
+ necessarily the same height and width, as in the GridSizer."""
+
+ def __init__(self, rows=1, cols=0, vgap=0, hgap=0):
+ """Create a GridSizer instance.
+
+ rows and cols - the number of rows and columns in the grid; if
+ either is zero, it will be calculated as the number of
+ children in the sizer, allowing the sizer grow dynamically.
+
+ vgap and hgap - extra space between all cells, in pixels."""
+ pass
+
+ def AddGrowableCol(self, idx):
+ """Specify that column idx (starting from zero) should expand
+ if there is extra space available to the sizer."""
+ pass
+
+ def AddGrowableRow(self, idx):
+ """Specify that row idx (starting from zero) should expand if
+ there is extra space available to the sizer."""
+ pass
+
+ def CalcMin(self):
+ """Calculate minimum size. Do not call directly."""
+ pass
+
+ def RecalcSizes(self):
+ """Recalculate sizes, then set the size of its children
+ (calling SetSize if child is a window). Do not call directly."""
+ pass
+
+ def RemoveGrowableCol(self, idx):
+ """Specify that column idx is no longer growable."""
+ pass
+
+ def RemoveGrowableRow(self, idx):
+ """Specify that row idx is no longer growable."""
+ pass
+
+
+class NotebookSizer(Sizer):
+ """NotebookSizer works with a notebook to determine the size of
+ the biggest page and report an adjusted minimal size to a more
+ toplevel sizer. Do not add children to a NotebookSizer."""
+
+ def __init__(self, nb):
+ """Create a NotebookSizer instance for notebook."""
+ pass
+
+ def CalcMin(self):
+ """Calculate minimum size. Do not call directly."""
+ pass
+
+ def GetNotebook(self):
+ """Return the notebook associated with the sizer."""
+ pass
+
+ def RecalcSizes(self):
+ """Recalculate size. Do not call directly."""
+ pass
+
+
+class SizerItem(Object):
+ """SizerItem class. Wrapper for items managed by a sizer."""
+
+ def __init__(self, this):
+ """Create a SizerItem instance. You don't normally create one
+ directly."""
+ pass
+
+ def CalcMin(self):
+ """Calculate minimum size. Do not call directly."""
+ pass
+
+ def DeleteWindows(self):
+ """Recursively destroy windows associated with this SizerItem."""
+ pass
+
+ def GetBorder(self):
+ """Return border width."""
+ pass
+
+ def GetFlag(self):
+ """Return flag value."""
+ pass
+
+ def GetOption(self):
+ """Return option value."""
+ pass
+
+ def GetPosition(self):
+ """Return wx.Point instance representing position relative to
+ the client area."""
+ pass
+
+ def GetRatio(self):
+ """Return a floating point aspect ratio (width/height). If
+ wx.SHAPED flag is used item will maintain ratio when resized."""
+ pass
+
+ def GetSize(self):
+ """Return wx.Size instance with size."""
+ pass
+
+ def GetSizer(self):
+ """If IsSizer() return the sizer; otherwise return None."""
+ pass
+
+ def GetUserData(self):
+ """Return a wx.PyUserData object."""
+ pass
+
+ def GetWindow(self):
+ """If IsWindow() return the window; otherwise return None."""
+ pass
+
+ def IsShown(self):
+ """Return True if item is shown."""
+ pass
+
+ def IsSizer(self):
+ """Return True if SizerItem represents a sizer."""
+ pass
+
+ def IsSpacer(self):
+ """Return True if SizerItem represents a spacer."""
+ pass
+
+ def IsWindow(self):
+ """Return True if SizerItem represents a window."""
+ pass
+
+ def SetBorder(self, border):
+ """Set border width for item."""
+ pass
+
+ def SetDimension(self, pos, size):
+ """Set position and size for item."""
+ pass
+
+ def SetFlag(self, flag):
+ """Set flag for item."""
+ pass
+
+ def SetInitSize(self, x, y):
+ """Set initial size of item."""
+ pass
+
+ def SetOption(self, option):
+ """Set option for item."""
+ pass
+
+ def SetRatio(self, ratio):
+ """Set a floating point aspect ratio (width/height). If
+ wx.SHAPED flag is used item will maintain ratio when resized."""
+ pass
+
+ def SetRatioSize(self, size):
+ """Set a floating point aspect ratio (width/height). If
+ wx.SHAPED flag is used item will maintain ratio when resized."""
+ pass
+
+ def SetRatioWH(self, width, height):
+ """Set a floating point aspect ratio (width/height). If
+ wx.SHAPED flag is used item will maintain ratio when resized."""
+ pass
+
+ def SetSizer(self, sizer):
+ """Set sizer associated with SizerItem."""
+ pass
+
+ def SetWindow(self, window):
+ """Set window associated with SizerItem."""
+ pass
+
+ def Show(self, show):
+ """Is show is True, show item, otherwise hide item."""
+ pass