{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} -- | HTk\'s /checkbutton/ widget. -- A simple checkbutton associated with a polymorphic variable. module HTk.Widgets.CheckButton ( CheckButton, newCheckButton ) 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 -- ----------------------------------------------------------------------- -- type -- ----------------------------------------------------------------------- -- | The @CheckButton@ datatpe - it is associated with a -- polymorphic @TkVariable@. newtype CheckButton a = CheckButton GUIOBJECT deriving Eq -- ----------------------------------------------------------------------- -- creation -- ----------------------------------------------------------------------- -- | Constructs a new checkbutton widget and returns a handler. newCheckButton :: Container par => par -- ^ the parent widget, which has to be a container widget -- (an instance of @class Container@). -> [Config (CheckButton a)] -- ^ the list of configuration options for this -- checkbutton. -> IO (CheckButton a) -- ^ A checkbutton widget. newCheckButton par cnf = do b <- createGUIObject (toGUIObject par) CHECKBUTTON defMethods configure (CheckButton b) cnf -- ----------------------------------------------------------------------- -- instances -- ----------------------------------------------------------------------- -- | Internal. instance GUIObject (CheckButton a) where toGUIObject (CheckButton w) = w cname _ = "CheckButton" -- | A checkbutton widget can be destroyed. instance Destroyable (CheckButton a) where -- Destroys a checkbutton widget. destroy = destroy . toGUIObject -- | A checkbutton widget has standard widget properties -- (concerning focus, cursor). instance Widget (CheckButton a) -- | A checkbutton widget can be flashed (redisplayed several times in -- alternate colours) and invoked (the associated event) as any button -- widget. instance ButtonWidget (CheckButton a) -- | A checkbutton widget can contain a bitmap. instance HasBitMap (CheckButton a) -- | A checkbutton widget has a configureable border. instance HasBorder (CheckButton a) -- | A checkbutton widget has a normal foreground and background colour and -- an active\/disabled foreground and background colour. instance HasColour (CheckButton a) where legalColourID = buttonColours -- | A checkbutton widget is a stateful widget, it can be enabled or -- disabled. instance HasEnable (CheckButton a) -- | You can specify the font of a checkbutton. instance HasFont (CheckButton a) -- | A checkbutton has a text justification configuration. instance HasJustify (CheckButton a) -- | A checkbutton can contain an image. instance HasPhoto (CheckButton a) -- | You can specify the size of a checkbutton. instance HasSize (CheckButton a) -- | A checkbutton can contain text. instance GUIValue v => HasText (CheckButton a) v -- | You can set the index of a text character to underline. instance HasUnderline (CheckButton a) -- | You can synchronize on a checkbutton object. instance Synchronized (CheckButton a) where -- Synchronizes on a checkbutton object. synchronize = synchronize . toGUIObject -- | When a checkbutton is clicked, a corresponding event is invoked. instance HasCommand (CheckButton a) -- | A checkbutton has a value, that corresponds to a polymorphic -- @TkVariable@. -- instance GUIValue a => HasValue (CheckButton a) a -- No, it doesn\'t. -- | The polymorphic variable the checkbutton\'s value is associated with. instance HasVariable (CheckButton a) -- | An checkbutton can have a tooltip (only displayed if you are using -- tixwish). instance HasTooltip (CheckButton a) -- | A checkbutton has a text anchor. instance HasAnchor (CheckButton a)