gtk-0.11.0: Graphics/UI/Gtk/Selectors/ColorSelection.chs
-- -*-haskell-*-
-- GIMP Toolkit (GTK) Widget ColorSelection
--
-- Author : Duncan Coutts
--
-- Created: 2 August 2004
--
-- Copyright (C) 2004-2005 Duncan Coutts
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- |
-- Maintainer : gtk2hs-users@lists.sourceforge.net
-- Stability : provisional
-- Portability : portable (depends on GHC)
--
-- A widget used to select a color
--
module Graphics.UI.Gtk.Selectors.ColorSelection (
-- * Detail
--
-- | The 'ColorSelection' is a widget that is used to select a color. It
-- consists of a color wheel and number of sliders and entry boxes for color
-- parameters such as hue, saturation, value, red, green, blue, and opacity. It
-- is found on the standard color selection dialog box 'ColorSelectionDialog'.
-- * Class Hierarchy
-- |
-- @
-- | 'GObject'
-- | +----'Object'
-- | +----'Widget'
-- | +----'Container'
-- | +----'Box'
-- | +----'VBox'
-- | +----ColorSelection
-- @
-- * Types
ColorSelection,
ColorSelectionClass,
castToColorSelection, gTypeColorSelection,
toColorSelection,
-- * Constructors
colorSelectionNew,
-- * Methods
colorSelectionGetCurrentAlpha,
colorSelectionSetCurrentAlpha,
colorSelectionGetCurrentColor,
colorSelectionSetCurrentColor,
colorSelectionGetHasOpacityControl,
colorSelectionSetHasOpacityControl,
colorSelectionGetHasPalette,
colorSelectionSetHasPalette,
colorSelectionGetPreviousAlpha,
colorSelectionSetPreviousAlpha,
colorSelectionGetPreviousColor,
colorSelectionSetPreviousColor,
colorSelectionIsAdjusting,
-- * Attributes
colorSelectionHasOpacityControl,
colorSelectionHasPalette,
colorSelectionCurrentAlpha,
colorSelectionPreviousAlpha,
) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.Attributes
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
{#import Graphics.UI.Gtk.Types#}
import Graphics.UI.Gtk.General.Structs (Color)
{# context lib="gtk" prefix="gtk" #}
--------------------
-- Constructors
-- | Creates a new 'ColorSelection'.
--
colorSelectionNew :: IO ColorSelection
colorSelectionNew =
makeNewObject mkColorSelection $
liftM (castPtr :: Ptr Widget -> Ptr ColorSelection) $
{# call unsafe color_selection_new #}
--------------------
-- Methods
-- | Returns the current alpha value.
--
colorSelectionGetCurrentAlpha :: ColorSelectionClass self => self
-> IO Int -- ^ returns an integer between 0 and 65535.
colorSelectionGetCurrentAlpha self =
liftM fromIntegral $
{# call unsafe color_selection_get_current_alpha #}
(toColorSelection self)
-- | Sets the current opacity to be @alpha@. The first time this is called, it
-- will also set the original opacity to be @alpha@ too.
--
colorSelectionSetCurrentAlpha :: ColorSelectionClass self => self
-> Int -- ^ @alpha@ - an integer between 0 and 65535.
-> IO ()
colorSelectionSetCurrentAlpha self alpha =
{# call color_selection_set_current_alpha #}
(toColorSelection self)
(fromIntegral alpha)
-- | Gets the current color in the 'ColorSelection' widget.
--
colorSelectionGetCurrentColor :: ColorSelectionClass self => self -> IO Color
colorSelectionGetCurrentColor self =
alloca $ \colorPtr -> do
{# call unsafe color_selection_get_current_color #}
(toColorSelection self)
(castPtr colorPtr)
peek colorPtr
-- | Sets the current color to be @color@. The first time this is called, it
-- will also set the original color to be @color@ too.
--
colorSelectionSetCurrentColor :: ColorSelectionClass self => self
-> Color -- ^ @color@ - A 'Color' to set the current color with.
-> IO ()
colorSelectionSetCurrentColor self color =
with color $ \colorPtr ->
{# call color_selection_set_current_color #}
(toColorSelection self)
(castPtr colorPtr)
-- | Determines whether the 'ColorSelection' widget has an opacity control.
--
colorSelectionGetHasOpacityControl :: ColorSelectionClass self => self
-> IO Bool -- ^ returns @True@ if the color selector has an opacity control.
-- @False@ if it does't.
colorSelectionGetHasOpacityControl self =
liftM toBool $
{# call unsafe color_selection_get_has_opacity_control #}
(toColorSelection self)
-- | Sets the 'ColorSelection' widget to use or not use opacity.
--
colorSelectionSetHasOpacityControl :: ColorSelectionClass self => self
-> Bool -- ^ @hasOpacity@ - @True@ if color selector can set the opacity,
-- @False@ otherwise.
-> IO ()
colorSelectionSetHasOpacityControl self hasOpacity =
{# call color_selection_set_has_opacity_control #}
(toColorSelection self)
(fromBool hasOpacity)
-- | Determines whether the color selector has a color palette.
--
colorSelectionGetHasPalette :: ColorSelectionClass self => self
-> IO Bool -- ^ returns @True@ if the selector has a palette. @False@ if it
-- hasn't.
colorSelectionGetHasPalette self =
liftM toBool $
{# call unsafe color_selection_get_has_palette #}
(toColorSelection self)
-- | Sets whether to show or hide the palette.
--
colorSelectionSetHasPalette :: ColorSelectionClass self => self
-> Bool -- ^ @hasPalette@ - @True@ if palette is to be visible, @False@
-- otherwise.
-> IO ()
colorSelectionSetHasPalette self hasPalette =
{# call color_selection_set_has_palette #}
(toColorSelection self)
(fromBool hasPalette)
-- | Returns the previous alpha value.
--
colorSelectionGetPreviousAlpha :: ColorSelectionClass self => self
-> IO Int -- ^ returns an integer between 0 and 65535.
colorSelectionGetPreviousAlpha self =
liftM fromIntegral $
{# call unsafe color_selection_get_previous_alpha #}
(toColorSelection self)
-- | Sets the \'previous\' alpha to be @alpha@. This function should be called
-- with some hesitations, as it might seem confusing to have that alpha change.
--
colorSelectionSetPreviousAlpha :: ColorSelectionClass self => self
-> Int -- ^ @alpha@ - an integer between 0 and 65535.
-> IO ()
colorSelectionSetPreviousAlpha self alpha =
{# call color_selection_set_previous_alpha #}
(toColorSelection self)
(fromIntegral alpha)
-- | Returns the original color value.
--
colorSelectionGetPreviousColor :: ColorSelectionClass self => self -> IO Color
colorSelectionGetPreviousColor self =
alloca $ \colorPtr -> do
{# call unsafe color_selection_get_previous_color #}
(toColorSelection self)
(castPtr colorPtr)
peek colorPtr
-- | Sets the \'previous\' color to be @color@. This function should be called
-- with some hesitations, as it might seem confusing to have that color change.
-- Calling 'colorSelectionSetCurrentColor' will also set this color the first
-- time it is called.
--
colorSelectionSetPreviousColor :: ColorSelectionClass self => self
-> Color -> IO ()
colorSelectionSetPreviousColor self color =
with color $ \colorPtr ->
{# call color_selection_set_previous_color #}
(toColorSelection self)
(castPtr colorPtr)
-- | Gets the current state of the widget. Returns True if the user is currently
-- dragging a color around, and False if the selection has stopped.
--
colorSelectionIsAdjusting :: ColorSelectionClass self => self -> IO Bool
colorSelectionIsAdjusting self =
liftM toBool $
{# call unsafe color_selection_is_adjusting #}
(toColorSelection self)
--------------------
-- Attributes
-- | Whether the color selector should allow setting opacity.
--
-- Default value: @False@
--
colorSelectionHasOpacityControl :: ColorSelectionClass self => Attr self Bool
colorSelectionHasOpacityControl = newAttr
colorSelectionGetHasOpacityControl
colorSelectionSetHasOpacityControl
-- | Whether a palette should be used.
--
-- Default value: @False@
--
colorSelectionHasPalette :: ColorSelectionClass self => Attr self Bool
colorSelectionHasPalette = newAttr
colorSelectionGetHasPalette
colorSelectionSetHasPalette
-- | The current opacity value (0 fully transparent, 65535 fully opaque).
--
-- Allowed values: \<= 65535
--
-- Default value: 65535
--
colorSelectionCurrentAlpha :: ColorSelectionClass self => Attr self Int
colorSelectionCurrentAlpha = newAttr
colorSelectionGetCurrentAlpha
colorSelectionSetCurrentAlpha
-- | \'previousAlpha\' property. See 'colorSelectionGetPreviousAlpha' and
-- 'colorSelectionSetPreviousAlpha'
--
colorSelectionPreviousAlpha :: ColorSelectionClass self => Attr self Int
colorSelectionPreviousAlpha = newAttr
colorSelectionGetPreviousAlpha
colorSelectionSetPreviousAlpha