uni-htk-2.2.0.0: HTk/Widgets/RadioButton.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-- | HTk\'s /radiobutton/ widget.
-- A simple radiobutton associated with a polymorphic variable.
module HTk.Widgets.RadioButton (
RadioButton,
newRadioButton
) where
import Util.Computation
import Events.Destructible
import Events.Synchronized
import HTk.Kernel.Core
import HTk.Kernel.ButtonWidget
import HTk.Kernel.BaseClasses(Widget)
import HTk.Kernel.Configuration
import HTk.Components.Image
import HTk.Components.BitMap
import HTk.Kernel.TkVariables
import HTk.Kernel.Packer
import HTk.Kernel.Tooltip
-- -----------------------------------------------------------------------
-- datatype
-- -----------------------------------------------------------------------
-- | The @RadioButton@ datatpe - it is associated with a
-- polymorphic @TkVariable@.
newtype RadioButton a = RadioButton GUIOBJECT deriving Eq
-- -----------------------------------------------------------------------
-- creation
-- -----------------------------------------------------------------------
-- | Constructs a new radiobutton widget and returns a handler.
newRadioButton :: Container par => par
-- ^ the parent widget, which has to be a container widget
-- (an instance of @class Container@).
-> [Config (RadioButton a)]
-- ^ the list of configuration options for this
-- radiobutton.
->
IO (RadioButton a)
-- ^ A radiobutton widget.
newRadioButton par cnf =
do
b <- createGUIObject (toGUIObject par) RADIOBUTTON defMethods
configure (RadioButton b) cnf
-- -----------------------------------------------------------------------
-- instances
-- -----------------------------------------------------------------------
-- | Internal.
instance GUIObject (RadioButton a) where
toGUIObject (RadioButton w) = w
cname _ = "RadioButton"
-- | A radiobutton widget can be destroyed.
instance Destroyable (RadioButton a) where
-- Destroys a radiobutton widget.
destroy = destroy . toGUIObject
-- | A radiobutton widget has standard widget properties
-- (concerning focus, cursor).
instance Widget (RadioButton a)
-- | A radiobutton widget can be flashed (redisplayed several times in
-- alternate colours) and invoked (the associated event) as any button
-- widget.
instance ButtonWidget (RadioButton a)
-- | A radiobutton widget can contain a bitmap.
instance HasBitMap (RadioButton a)
-- | A radiobutton widget has a configureable border.
instance HasBorder (RadioButton a)
-- | A radiobutton widget has a normal foreground and background colour and
-- an active\/disabled foreground and background colour.
instance HasColour (RadioButton a) where
legalColourID = buttonColours
-- | A radiobutton widget is a stateful widget, it can be enabled or
-- disabled.
instance HasEnable (RadioButton a)
-- | You can specify the font of a check button.
instance HasFont (RadioButton a)
-- | A radiobutton has a configureable text justification.
instance HasJustify (RadioButton a)
-- | A radiobutton can contain an image.
instance HasPhoto (RadioButton a)
-- | You can specify the size of a radiobutton.
instance HasSize (RadioButton a)
-- | A radiobutton can contain text.
instance GUIValue v => HasText (RadioButton a) v
-- | You can set the index of a text character to underline.
instance HasUnderline (RadioButton a)
-- | You can synchronize on a radiobutton object.
instance Synchronized (RadioButton a) where
-- Synchronizes on a radiobutton object.
synchronize = synchronize . toGUIObject
-- | When a radiobutton is clicked, a corresponding event is invoked.
instance HasCommand (RadioButton a)
-- | A radiobutton has a value, that corresponds to a polymorphic
-- @TkVariable@.
instance GUIValue c => HasValue (RadioButton a) c
-- | The radiobutton\'s value is associated with a polymorphic
-- @TkVariable@.
instance HasVariable (RadioButton a)
-- | A radiobutton can have a tooltip.
instance HasTooltip (RadioButton a)