Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
- Exported types
- Methods
- attach
- attachNextTo
- getBaselineRow
- getChildAt
- getColumnHomogeneous
- getColumnSpacing
- getRowBaselinePosition
- getRowHomogeneous
- getRowSpacing
- insertColumn
- insertNextTo
- insertRow
- new
- queryChild
- remove
- removeColumn
- removeRow
- setBaselineRow
- setColumnHomogeneous
- setColumnSpacing
- setRowBaselinePosition
- setRowHomogeneous
- setRowSpacing
- Properties
GtkGrid
is a container which arranges its child widgets in
rows and columns.
It supports arbitrary positions and horizontal/vertical spans.
Children are added using gridAttach
. They can span multiple
rows or columns. It is also possible to add a child next to an existing
child, using gridAttachNextTo
. To remove a child from the
grid, use gridRemove
.
The behaviour of GtkGrid
when several children occupy the same grid
cell is undefined.
GtkGrid as GtkBuildable
Every child in a GtkGrid
has access to a custom Buildable
element, called <layout>
. It can by used to specify a position in the
grid and optionally spans. All properties that can be used in the <layout>
element are implemented by GridLayoutChild
.
It is implemented by GtkWidget
using LayoutManager
.
To showcase it, here is a simple example:
xml code
<object class="GtkGrid" id="my_grid"> <child> <object class="GtkButton" id="button1"> <property name="label">Button 1</property> <layout> <property name="column">0</property> <property name="row">0</property> </layout> </object> </child> <child> <object class="GtkButton" id="button2"> <property name="label">Button 2</property> <layout> <property name="column">1</property> <property name="row">0</property> </layout> </object> </child> <child> <object class="GtkButton" id="button3"> <property name="label">Button 3</property> <layout> <property name="column">2</property> <property name="row">0</property> <property name="row-span">2</property> </layout> </object> </child> <child> <object class="GtkButton" id="button4"> <property name="label">Button 4</property> <layout> <property name="column">0</property> <property name="row">1</property> <property name="column-span">2</property> </layout> </object> </child> </object>
It organizes the first two buttons side-by-side in one cell each.
The third button is in the last column but spans across two rows.
This is defined by the row-span
property. The last button is
located in the second row and spans across two columns, which is
defined by the column-span
property.
CSS nodes
GtkGrid
uses a single CSS node with name grid
.
Accessibility
GtkGrid
uses the AccessibleRoleGroup
role.
Synopsis
- newtype Grid = Grid (ManagedPtr Grid)
- class (GObject o, IsDescendantOf Grid o) => IsGrid o
- toGrid :: (MonadIO m, IsGrid o) => o -> m Grid
- gridAttach :: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) => a -> b -> Int32 -> Int32 -> Int32 -> Int32 -> m ()
- gridAttachNextTo :: (HasCallStack, MonadIO m, IsGrid a, IsWidget b, IsWidget c) => a -> b -> Maybe c -> PositionType -> Int32 -> Int32 -> m ()
- gridGetBaselineRow :: (HasCallStack, MonadIO m, IsGrid a) => a -> m Int32
- gridGetChildAt :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> Int32 -> m (Maybe Widget)
- gridGetColumnHomogeneous :: (HasCallStack, MonadIO m, IsGrid a) => a -> m Bool
- gridGetColumnSpacing :: (HasCallStack, MonadIO m, IsGrid a) => a -> m Word32
- gridGetRowBaselinePosition :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> m BaselinePosition
- gridGetRowHomogeneous :: (HasCallStack, MonadIO m, IsGrid a) => a -> m Bool
- gridGetRowSpacing :: (HasCallStack, MonadIO m, IsGrid a) => a -> m Word32
- gridInsertColumn :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> m ()
- gridInsertNextTo :: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) => a -> b -> PositionType -> m ()
- gridInsertRow :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> m ()
- gridNew :: (HasCallStack, MonadIO m) => m Grid
- gridQueryChild :: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) => a -> b -> m (Int32, Int32, Int32, Int32)
- gridRemove :: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) => a -> b -> m ()
- gridRemoveColumn :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> m ()
- gridRemoveRow :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> m ()
- gridSetBaselineRow :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> m ()
- gridSetColumnHomogeneous :: (HasCallStack, MonadIO m, IsGrid a) => a -> Bool -> m ()
- gridSetColumnSpacing :: (HasCallStack, MonadIO m, IsGrid a) => a -> Word32 -> m ()
- gridSetRowBaselinePosition :: (HasCallStack, MonadIO m, IsGrid a) => a -> Int32 -> BaselinePosition -> m ()
- gridSetRowHomogeneous :: (HasCallStack, MonadIO m, IsGrid a) => a -> Bool -> m ()
- gridSetRowSpacing :: (HasCallStack, MonadIO m, IsGrid a) => a -> Word32 -> m ()
- constructGridBaselineRow :: (IsGrid o, MonadIO m) => Int32 -> m (GValueConstruct o)
- getGridBaselineRow :: (MonadIO m, IsGrid o) => o -> m Int32
- setGridBaselineRow :: (MonadIO m, IsGrid o) => o -> Int32 -> m ()
- constructGridColumnHomogeneous :: (IsGrid o, MonadIO m) => Bool -> m (GValueConstruct o)
- getGridColumnHomogeneous :: (MonadIO m, IsGrid o) => o -> m Bool
- setGridColumnHomogeneous :: (MonadIO m, IsGrid o) => o -> Bool -> m ()
- constructGridColumnSpacing :: (IsGrid o, MonadIO m) => Int32 -> m (GValueConstruct o)
- getGridColumnSpacing :: (MonadIO m, IsGrid o) => o -> m Int32
- setGridColumnSpacing :: (MonadIO m, IsGrid o) => o -> Int32 -> m ()
- constructGridRowHomogeneous :: (IsGrid o, MonadIO m) => Bool -> m (GValueConstruct o)
- getGridRowHomogeneous :: (MonadIO m, IsGrid o) => o -> m Bool
- setGridRowHomogeneous :: (MonadIO m, IsGrid o) => o -> Bool -> m ()
- constructGridRowSpacing :: (IsGrid o, MonadIO m) => Int32 -> m (GValueConstruct o)
- getGridRowSpacing :: (MonadIO m, IsGrid o) => o -> m Int32
- setGridRowSpacing :: (MonadIO m, IsGrid o) => o -> Int32 -> m ()
Exported types
Memory-managed wrapper type.
Instances
Eq Grid Source # | |
GObject Grid Source # | |
Defined in GI.Gtk.Objects.Grid | |
ManagedPtrNewtype Grid Source # | |
Defined in GI.Gtk.Objects.Grid toManagedPtr :: Grid -> ManagedPtr Grid # | |
TypedObject Grid Source # | |
Defined in GI.Gtk.Objects.Grid | |
HasParentTypes Grid Source # | |
Defined in GI.Gtk.Objects.Grid | |
IsGValue (Maybe Grid) Source # | Convert |
Defined in GI.Gtk.Objects.Grid | |
type ParentTypes Grid Source # | |
Defined in GI.Gtk.Objects.Grid |
class (GObject o, IsDescendantOf Grid o) => IsGrid o Source #
Instances
(GObject o, IsDescendantOf Grid o) => IsGrid o Source # | |
Defined in GI.Gtk.Objects.Grid |
Methods
Click to display all available methods, including inherited ones
Methods
actionSetEnabled, activate, activateAction, activateDefault, addController, addCssClass, addMnemonicLabel, addTickCallback, allocate, attach, attachNextTo, bindProperty, bindPropertyFull, childFocus, computeBounds, computeExpand, computePoint, computeTransform, contains, createPangoContext, createPangoLayout, dragCheckThreshold, errorBell, forceFloating, freezeNotify, getv, grabFocus, hasCssClass, hasDefault, hasFocus, hasVisibleFocus, hide, inDestruction, initTemplate, insertActionGroup, insertAfter, insertBefore, insertColumn, insertNextTo, insertRow, isAncestor, isDrawable, isFloating, isFocus, isSensitive, isVisible, keynavFailed, listMnemonicLabels, map, measure, mnemonicActivate, notify, notifyByPspec, observeChildren, observeControllers, pick, queryChild, queueAllocate, queueDraw, queueResize, realize, ref, refSink, remove, removeColumn, removeController, removeCssClass, removeMnemonicLabel, removeRow, removeTickCallback, resetProperty, resetRelation, resetState, runDispose, shouldLayout, show, sizeAllocate, snapshotChild, stealData, stealQdata, thawNotify, translateCoordinates, triggerTooltipQuery, unmap, unparent, unrealize, unref, unsetStateFlags, updateProperty, updateRelation, updateState, watchClosure.
Getters
getAccessibleRole, getAllocatedBaseline, getAllocatedHeight, getAllocatedWidth, getAllocation, getAncestor, getBaselineRow, getBuildableId, getCanFocus, getCanTarget, getChildAt, getChildVisible, getClipboard, getColumnHomogeneous, getColumnSpacing, getCssClasses, getCssName, getCursor, getData, getDirection, getDisplay, getFirstChild, getFocusChild, getFocusOnClick, getFocusable, getFontMap, getFontOptions, getFrameClock, getHalign, getHasTooltip, getHeight, getHexpand, getHexpandSet, getLastChild, getLayoutManager, getMapped, getMarginBottom, getMarginEnd, getMarginStart, getMarginTop, getName, getNative, getNextSibling, getOpacity, getOrientation, getOverflow, getPangoContext, getParent, getPreferredSize, getPrevSibling, getPrimaryClipboard, getProperty, getQdata, getRealized, getReceivesDefault, getRequestMode, getRoot, getRowBaselinePosition, getRowHomogeneous, getRowSpacing, getScaleFactor, getSensitive, getSettings, getSize, getSizeRequest, getStateFlags, getStyleContext, getTemplateChild, getTooltipMarkup, getTooltipText, getValign, getVexpand, getVexpandSet, getVisible, getWidth.
Setters
setBaselineRow, setCanFocus, setCanTarget, setChildVisible, setColumnHomogeneous, setColumnSpacing, setCssClasses, setCursor, setCursorFromName, setData, setDataFull, setDirection, setFocusChild, setFocusOnClick, setFocusable, setFontMap, setFontOptions, setHalign, setHasTooltip, setHexpand, setHexpandSet, setLayoutManager, setMarginBottom, setMarginEnd, setMarginStart, setMarginTop, setName, setOpacity, setOrientation, setOverflow, setParent, setProperty, setReceivesDefault, setRowBaselinePosition, setRowHomogeneous, setRowSpacing, setSensitive, setSizeRequest, setStateFlags, setTooltipMarkup, setTooltipText, setValign, setVexpand, setVexpandSet, setVisible.
attach
:: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) | |
=> a |
|
-> b |
|
-> Int32 |
|
-> Int32 |
|
-> Int32 |
|
-> Int32 |
|
-> m () |
Adds a widget to the grid.
The position of child
is determined by column
and row
.
The number of “cells” that child
will occupy is determined
by width
and height
.
attachNextTo
:: (HasCallStack, MonadIO m, IsGrid a, IsWidget b, IsWidget c) | |
=> a |
|
-> b |
|
-> Maybe c |
|
-> PositionType |
|
-> Int32 |
|
-> Int32 |
|
-> m () |
Adds a widget to the grid.
The widget is placed next to sibling
, on the side determined by
side
. When sibling
is Nothing
, the widget is placed in row (for
left or right placement) or column 0 (for top or bottom placement),
at the end indicated by side
.
Attaching widgets labeled [1]
, [2]
, [3]
with @sibling == %NULL
and
@side == %GTK_POS_LEFT
yields a layout of [3][2][1]
.
getBaselineRow
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> m Int32 | Returns: the row index defining the global baseline |
Returns which row defines the global baseline of grid
.
getChildAt
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> Int32 |
|
-> m (Maybe Widget) | Returns: the child at the given position |
Gets the child of grid
whose area covers the grid
cell at column
, row
.
getColumnHomogeneous
gridGetColumnHomogeneous Source #
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> m Bool | Returns: whether all columns of |
Returns whether all columns of grid
have the same width.
getColumnSpacing
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> m Word32 | Returns: the column spacing of |
Returns the amount of space between the columns of grid
.
getRowBaselinePosition
gridGetRowBaselinePosition Source #
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> m BaselinePosition | Returns: the baseline position of |
Returns the baseline position of row
.
getRowHomogeneous
gridGetRowHomogeneous Source #
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> m Bool | Returns: whether all rows of |
Returns whether all rows of grid
have the same height.
getRowSpacing
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> m Word32 | Returns: the row spacing of |
Returns the amount of space between the rows of grid
.
insertColumn
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> m () |
Inserts a column at the specified position.
Children which are attached at or to the right of this position are moved one column to the right. Children which span across this position are grown to span the new column.
insertNextTo
:: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) | |
=> a |
|
-> b |
|
-> PositionType |
|
-> m () |
Inserts a row or column at the specified position.
The new row or column is placed next to sibling
, on the side
determined by side
. If side
is PositionTypeTop
or PositionTypeBottom
,
a row is inserted. If side
is PositionTypeLeft
of PositionTypeRight
,
a column is inserted.
insertRow
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> m () |
Inserts a row at the specified position.
Children which are attached at or below this position are moved one row down. Children which span across this position are grown to span the new row.
new
:: (HasCallStack, MonadIO m) | |
=> m Grid | Returns: the new |
Creates a new grid widget.
queryChild
:: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) | |
=> a |
|
-> b |
|
-> m (Int32, Int32, Int32, Int32) |
Queries the attach points and spans of child
inside the given GtkGrid
.
remove
:: (HasCallStack, MonadIO m, IsGrid a, IsWidget b) | |
=> a |
|
-> b |
|
-> m () |
Removes a child from grid
.
The child must have been added with
gridAttach
or gridAttachNextTo
.
removeColumn
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> m () |
Removes a column from the grid.
Children that are placed in this column are removed, spanning children that overlap this column have their width reduced by one, and children after the column are moved to the left.
removeRow
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> m () |
Removes a row from the grid.
Children that are placed in this row are removed, spanning children that overlap this row have their height reduced by one, and children below the row are moved up.
setBaselineRow
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> m () |
Sets which row defines the global baseline for the entire grid.
Each row in the grid can have its own local baseline, but only
one of those is global, meaning it will be the baseline in the
parent of the grid
.
setColumnHomogeneous
gridSetColumnHomogeneous Source #
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Bool |
|
-> m () |
Sets whether all columns of grid
will have the same width.
setColumnSpacing
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Word32 |
|
-> m () |
Sets the amount of space between columns of grid
.
setRowBaselinePosition
gridSetRowBaselinePosition Source #
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Int32 |
|
-> BaselinePosition |
|
-> m () |
Sets how the baseline should be positioned on row
of the
grid, in case that row is assigned more space than is requested.
The default baseline position is BaselinePositionCenter
.
setRowHomogeneous
gridSetRowHomogeneous Source #
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Bool |
|
-> m () |
Sets whether all rows of grid
will have the same height.
setRowSpacing
:: (HasCallStack, MonadIO m, IsGrid a) | |
=> a |
|
-> Word32 |
|
-> m () |
Sets the amount of space between rows of grid
.
Properties
baselineRow
The row to align to the baseline when valign is AlignBaseline
.
constructGridBaselineRow :: (IsGrid o, MonadIO m) => Int32 -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “baseline-row
” property. This is rarely needed directly, but it is used by new
.
getGridBaselineRow :: (MonadIO m, IsGrid o) => o -> m Int32 Source #
Get the value of the “baseline-row
” property.
When overloading is enabled, this is equivalent to
get
grid #baselineRow
setGridBaselineRow :: (MonadIO m, IsGrid o) => o -> Int32 -> m () Source #
Set the value of the “baseline-row
” property.
When overloading is enabled, this is equivalent to
set
grid [ #baselineRow:=
value ]
columnHomogeneous
If True
, the columns are all the same width.
constructGridColumnHomogeneous :: (IsGrid o, MonadIO m) => Bool -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “column-homogeneous
” property. This is rarely needed directly, but it is used by new
.
getGridColumnHomogeneous :: (MonadIO m, IsGrid o) => o -> m Bool Source #
Get the value of the “column-homogeneous
” property.
When overloading is enabled, this is equivalent to
get
grid #columnHomogeneous
setGridColumnHomogeneous :: (MonadIO m, IsGrid o) => o -> Bool -> m () Source #
Set the value of the “column-homogeneous
” property.
When overloading is enabled, this is equivalent to
set
grid [ #columnHomogeneous:=
value ]
columnSpacing
The amount of space between two consecutive columns.
constructGridColumnSpacing :: (IsGrid o, MonadIO m) => Int32 -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “column-spacing
” property. This is rarely needed directly, but it is used by new
.
getGridColumnSpacing :: (MonadIO m, IsGrid o) => o -> m Int32 Source #
Get the value of the “column-spacing
” property.
When overloading is enabled, this is equivalent to
get
grid #columnSpacing
setGridColumnSpacing :: (MonadIO m, IsGrid o) => o -> Int32 -> m () Source #
Set the value of the “column-spacing
” property.
When overloading is enabled, this is equivalent to
set
grid [ #columnSpacing:=
value ]
rowHomogeneous
If True
, the rows are all the same height.
constructGridRowHomogeneous :: (IsGrid o, MonadIO m) => Bool -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “row-homogeneous
” property. This is rarely needed directly, but it is used by new
.
getGridRowHomogeneous :: (MonadIO m, IsGrid o) => o -> m Bool Source #
Get the value of the “row-homogeneous
” property.
When overloading is enabled, this is equivalent to
get
grid #rowHomogeneous
setGridRowHomogeneous :: (MonadIO m, IsGrid o) => o -> Bool -> m () Source #
Set the value of the “row-homogeneous
” property.
When overloading is enabled, this is equivalent to
set
grid [ #rowHomogeneous:=
value ]
rowSpacing
The amount of space between two consecutive rows.
constructGridRowSpacing :: (IsGrid o, MonadIO m) => Int32 -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “row-spacing
” property. This is rarely needed directly, but it is used by new
.
getGridRowSpacing :: (MonadIO m, IsGrid o) => o -> m Int32 Source #
Get the value of the “row-spacing
” property.
When overloading is enabled, this is equivalent to
get
grid #rowSpacing
setGridRowSpacing :: (MonadIO m, IsGrid o) => o -> Int32 -> m () Source #
Set the value of the “row-spacing
” property.
When overloading is enabled, this is equivalent to
set
grid [ #rowSpacing:=
value ]