gtk3-0.15.10: 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 Source #

#### Instances

Instances details

Eq Fixed Source # |
Instance details Defined in Graphics.UI.Gtk.Types Methods (==) :: Fixed -> Fixed -> Bool Source # (/=) :: Fixed -> Fixed -> Bool Source #
Ord Fixed Source # |
Instance details Defined in Graphics.UI.Gtk.Types Methods compare :: Fixed -> Fixed -> Ordering Source # (<) :: Fixed -> Fixed -> Bool Source # (<=) :: Fixed -> Fixed -> Bool Source # (>) :: Fixed -> Fixed -> Bool Source # (>=) :: Fixed -> Fixed -> Bool Source # max :: Fixed -> Fixed -> Fixed Source # min :: Fixed -> Fixed -> Fixed Source #
GObjectClass Fixed Source # |
Instance details Defined in Graphics.UI.Gtk.Types Methods toGObject :: Fixed -> GObject Source # unsafeCastGObject :: GObject -> Fixed Source #
ContainerClass Fixed Source # |
Instance details Defined in Graphics.UI.Gtk.Types
FixedClass Fixed Source # |
Instance details Defined in Graphics.UI.Gtk.Types
WidgetClass Fixed Source # |
Instance details Defined in Graphics.UI.Gtk.Types

class ContainerClass o => FixedClass o Source #

#### Instances

Instances details

FixedClass Fixed Source # |
Instance details Defined in Graphics.UI.Gtk.Types

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

gTypeFixed :: GType Source #

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

# Constructors

fixedNew :: IO Fixed Source #

Creates a new `Fixed`.

# Methods

fixedPut Source #

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 Source #

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 Source #

X position of child widget.

Default value: 0

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

Y position of child widget.

Default value: 0