| Portability | portable (depends on GHC) | 
|---|---|
| Stability | provisional | 
| Maintainer | gtk2hs-users@lists.sourceforge.net | 
| Safe Haskell | Safe-Infered | 
Graphics.UI.Gtk.Abstract.Box
Description
Base class for box containers
- data Box
 - class ContainerClass o => BoxClass o
 - castToBox :: GObjectClass obj => obj -> Box
 - gTypeBox :: GType
 - toBox :: BoxClass o => o -> Box
 - data  Packing 
- = PackRepel
 - | PackGrow
 - | PackNatural
 
 - boxPackStart :: (BoxClass self, WidgetClass child) => self -> child -> Packing -> Int -> IO ()
 - boxPackEnd :: (BoxClass self, WidgetClass child) => self -> child -> Packing -> Int -> IO ()
 - boxPackStartDefaults :: (BoxClass self, WidgetClass widget) => self -> widget -> IO ()
 - boxPackEndDefaults :: (BoxClass self, WidgetClass widget) => self -> widget -> IO ()
 - boxGetHomogeneous :: BoxClass self => self -> IO Bool
 - boxSetHomogeneous :: BoxClass self => self -> Bool -> IO ()
 - boxGetSpacing :: BoxClass self => self -> IO Int
 - boxSetSpacing :: BoxClass self => self -> Int -> IO ()
 - boxReorderChild :: (BoxClass self, WidgetClass child) => self -> child -> Int -> IO ()
 - boxQueryChildPacking :: (BoxClass self, WidgetClass child) => self -> child -> IO (Packing, Int, PackType)
 - boxSetChildPacking :: (BoxClass self, WidgetClass child) => self -> child -> Packing -> Int -> PackType -> IO ()
 - boxSpacing :: BoxClass self => Attr self Int
 - boxHomogeneous :: BoxClass self => Attr self Bool
 - boxChildPacking :: (BoxClass self, WidgetClass child) => child -> Attr self Packing
 - boxChildPadding :: (BoxClass self, WidgetClass child) => child -> Attr self Int
 - boxChildPackType :: (BoxClass self, WidgetClass child) => child -> Attr self PackType
 - boxChildPosition :: (BoxClass self, WidgetClass child) => child -> Attr self Int
 
Detail
Box is an abstract widget which encapsulates functionality for a
 particular kind of container, one that organizes a variable number of
 widgets into a rectangular area. Box currently has two derived classes,
 HBox and VBox.
The rectangular area of a Box is organized into either a single row or
 a single column of child widgets depending upon whether the box is of type
 HBox or VBox, respectively. Thus, all children of a Box are allocated
 one dimension in common, which is the height of a row, or the width of a
 column.
Box uses a notion of packing. Packing refers to adding widgets with
 reference to a particular position in a Container. For a Box, there are
 two reference positions: the start and the end of the box. For a VBox,
 the start is defined as the top of the box and the end is defined as the
 bottom. For a HBox the start is defined as the left side and the end is
 defined as the right side.
Use repeated calls to boxPackStart to pack widgets into a Box from
 start to end. Use boxPackEnd to add widgets from end to start. You may
 intersperse these calls and add widgets from both ends of the same Box.
 Besides adding widgets at the start or the end of a box, you can also
 specify the padding around each widget (in pixels) and a Packing
 parameter that denotes how to fill up unused space.
 The functions boxPackStartDefaults or boxPackEndDefaults
 are a convenient way to pack widgets into a Box without specifying
 these extra paramters.
While the right amount of padding around each widget is a matter of
 appearance, the Packing paramter specifies the way the widgets in
 the container behave when the window is resized and thereby affect
 the usability. Hence, once you have created a window, you should resize
 it and see if the widgets behave as expected. The Packing parameter of
 each child widget determines how excess space is used by that particular
 widget. See the description of Packing for a detailed explanaition.
Because Box is a Container, you may also use
 containerAdd to insert widgets into
 the box, and they will be packed as if with boxPackStartDefaults. Use
 containerRemove to remove widgets
 from the Box.
Use boxSetHomogeneous to specify whether or not all children of the
 Box are forced to get the same amount of space. Note that the
 Packing options PackNatural and PackRepel coincide if space is
 allotted homogeneously.
Use boxSetSpacing to determine how much space will be minimally placed
 between all children in the Box.
Use boxReorderChild to move a Box child to a different place in the
 box.
Use boxSetChildPacking to reset the expand, fill, and padding
 attributes of any Box child. Use boxQueryChildPacking to query these
 fields.
Class Hierarchy
|GObject| +----Object| +----Widget| +----Container| +----Box | +----ButtonBox| +----VBox| +----HBox
Types
Instances
class ContainerClass o => BoxClass o Source
castToBox :: GObjectClass obj => obj -> BoxSource
Packing parameters of a widget
-  The 
Packingparameter determines how the child behaves in the horizontal or vertical way in anHBoxorVBox, respectively.PackNaturalmeans the child is as big as it reqests. It will stay at the start of the end of aBoxif there is more space available. All children packed withPackRepelwill be padded on both sides with additional space.PackGrowwill increase the size of a widget so that it covers the available space. A menu bar, for instance, should always stay at the top of a window and should only occupy as little space as possible. Hence it should be packed at the start of aVBoxwith the packing optionPackNatural. The working area of a window (e.g. the text area in an editor) should expand when the window is resized. Here the packing optionPackGrowis the right choice and it is irrelevant whether the main area is inserted at the start or the end of a box. FinallyPackRepelis most useful in a window where no widget can make use of excess space. Examples include a dialog box without list boxes or text fields. 
Constructors
| PackRepel | |
| PackGrow | |
| PackNatural | 
Methods
Arguments
| :: (BoxClass self, WidgetClass child) | |
| => self | |
| -> child | 
  | 
| -> Packing | |
| -> Int | 
  | 
| -> IO () | 
Adds the child widget to the box, packed with reference to the start of
 the box. The
 child is packed after any other child packed with reference to the start
 of the box.
Arguments
| :: (BoxClass self, WidgetClass child) | |
| => self | |
| -> child | 
  | 
| -> Packing | |
| -> Int | 
  | 
| -> IO () | 
Adds the child widget to the box, packed with reference to the end of
 the box. The
 child is packed after (away from end of) any other child packed with
 reference to the end of the box.
Note that
 for boxPackEnd the PackNatural option will move a child to the right in
 an HBox or to the bottom in an VBox if there is more space availble.
Arguments
| :: (BoxClass self, WidgetClass widget) | |
| => self | |
| -> widget | 
  | 
| -> IO () | 
Like boxPackStart but uses the default parameters PackRepel and 0 for
 padding.
Arguments
| :: (BoxClass self, WidgetClass widget) | |
| => self | |
| -> widget | 
  | 
| -> IO () | 
Like boxPackEnd but uses the default parameters PackRepel and 0 for
 padding.
Returns whether the box is homogeneous (all children are the same size).
 See boxSetHomogeneous.
Arguments
| :: BoxClass self | |
| => self | |
| -> Bool | 
  | 
| -> IO () | 
Sets the homogeneous property, controlling whether or not all children of the box are given equal space
Retrieves the standard spacing between widgets.
Arguments
| :: BoxClass self | |
| => self | |
| -> Int | 
  | 
| -> IO () | 
Set the standard spacing between two children.
This space is in addition to the padding parameter that is given for each child.
Arguments
| :: (BoxClass self, WidgetClass child) | |
| => self | |
| -> child | 
  | 
| -> Int | 
  | 
| -> IO () | 
Moves child to a new position in the list of box children. The list
 contains both widgets packed PackStart as well as widgets packed
 PackEnd, in the order that these widgets were added to the box.
A widget's position in the box children list determines where the widget is packed into the box. A child widget at some position in the list will be packed just after all other widgets of the same packing type that appear earlier in the list.
Arguments
| :: (BoxClass self, WidgetClass child) | |
| => self | |
| -> child | 
  | 
| -> Packing | |
| -> Int | padding  | 
| -> PackType | packType  | 
| -> IO () | 
Sets the way child is packed into the box.
Attributes
boxSpacing :: BoxClass self => Attr self IntSource
The amount of space between children.
Allowed values: >= 0
Default value: 0
boxHomogeneous :: BoxClass self => Attr self BoolSource
Whether the children should all be the same size.
Default value: False
Child Attributes
boxChildPacking :: (BoxClass self, WidgetClass child) => child -> Attr self PackingSource
The packing style of the child.
Default value: PackGrow
boxChildPadding :: (BoxClass self, WidgetClass child) => child -> Attr self IntSource
Extra space to put between the child and its neighbors, in pixels.
Allowed values: <= (
maxBound :: Int)
Default value: 0
boxChildPackType :: (BoxClass self, WidgetClass child) => child -> Attr self PackTypeSource
boxChildPosition :: (BoxClass self, WidgetClass child) => child -> Attr self IntSource
The index of the child in the parent.
Allowed values: >= -1
Default value: 0