Graphics.UI.Gtk.Layout.Fixed

gtk3-0.14.6: Binding to the Gtk+ 3 graphical user interface library

Maintainer | gtk2hs-users@lists.sourceforge.net
Stability | provisional
Portability | portable (depends on GHC)
Safe Haskell | None
Language | Haskell98

Graphics.UI.Gtk.Layout.Fixed

Contents

- Detail
- Class Hierarchy
- Types
- Constructors
- Methods
- Child Attributes

Description

A container which allows you to position widgets at fixed coordinates

Synopsis

- data Fixed
- class ContainerClass o => FixedClass o
- castToFixed :: GObjectClass obj => obj -> Fixed
- gTypeFixed :: GType
- toFixed :: FixedClass o => o -> Fixed
- fixedNew :: IO Fixed
- fixedPut :: (FixedClass self, WidgetClass widget) => self -> widget -> (Int, Int) -> IO ()
- fixedMove :: (FixedClass self, WidgetClass widget) => self -> widget -> (Int, Int) -> IO ()
- fixedChildX :: (FixedClass self, WidgetClass child) => child -> Attr self Int
- fixedChildY :: (FixedClass self, WidgetClass child) => child -> Attr self Int

# Detail

The `Fixed` widget is a container which can place child widgets at fixed positions and with fixed sizes, given in pixels. `Fixed` performs no automatic layout management.

For most applications, you should not use this container! It keeps you from having to learn about the other Gtk+ containers, but it results in broken applications. With `Fixed`, the following things will result in truncated text, overlapping widgets, and other display bugs:

- Themes, which may change widget sizes.
- Fonts other than the one you used to write the app will of course change the size of widgets containing text; keep in mind that users may use a larger font because of difficulty reading the default, or they may be using Windows or the framebuffer port of Gtk+, where different fonts are available.
- Translation of text into other languages changes its size. Also, display of non-English text will use a different font in many cases.

In addition, the fixed widget can't properly be mirrored in right-to-left languages such as Hebrew and Arabic. i.e. normally Gtk+ will flip the interface to put labels to the right of the thing they label, but it can't do that with `Fixed`. So your application will not be usable in right-to-left languages.

Finally, fixed positioning makes it kind of annoying to add/remove GUI elements, since you have to reposition all the other elements. This is a long-term maintenance problem for your application.

If you know none of these things are an issue for your application, and prefer the simplicity of `Fixed`, by all means use the widget. But you should be aware of the tradeoffs.

# Class Hierarchy

    | GObject
    | +----Object
    | +----Widget
    | +----Container
    | +----Fixed

# Types

data Fixed #

Instances

Eq Fixed # |
Methods (==) :: Fixed -> Fixed -> Bool # (/=) :: Fixed -> Fixed -> Bool #
Ord Fixed # |
Methods compare :: Fixed -> Fixed -> Ordering # (<) :: Fixed -> Fixed -> Bool # (<=) :: Fixed -> Fixed -> Bool # (>) :: Fixed -> Fixed -> Bool # (>=) :: Fixed -> Fixed -> Bool # max :: Fixed -> Fixed -> Fixed # min :: Fixed -> Fixed -> Fixed #
GObjectClass Fixed # |
Methods toGObject :: Fixed -> GObject # unsafeCastGObject :: GObject -> Fixed #
FixedClass Fixed # |
ContainerClass Fixed # |
WidgetClass Fixed # |

class ContainerClass o => FixedClass o #

Instances

FixedClass Fixed # |

castToFixed :: GObjectClass obj => obj -> Fixed #

gTypeFixed :: GType #

toFixed :: FixedClass o => o -> Fixed #

# Constructors

fixedNew :: IO Fixed #

Creates a new `Fixed`.

# Methods

fixedPut #

Arguments

:: (FixedClass self, WidgetClass widget) |
=> self |
-> widget | `widget` - the widget to add.
-> (Int, Int) | `(x,y)` - the horizontal and vertical position to place the widget at.
-> IO () |

Adds a widget to a `Fixed` container at the given position.

fixedMove #

Arguments

:: (FixedClass self, WidgetClass widget) |
=> self |
-> widget | `widget` - the child widget.
-> (Int, Int) | `(x,y)` - the horizontal and vertical position to move the widget to.
-> IO () |

Moves a child of a `Fixed` container to the given position.

# Child Attributes

fixedChildX :: (FixedClass self, WidgetClass child) => child -> Attr self Int #

X position of child widget.

Default value: 0

fixedChildY :: (FixedClass self, WidgetClass child) => child -> Attr self Int #

Y position of child widget.

Default value: 0