{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} -- | HTk\'s /menu checkbutton/. -- A simple checkbutton inside a menu associated with a polymorphic -- variable. module HTk.Menuitems.MenuCheckButton ( MenuCheckButton, createMenuCheckButton ) where import HTk.Kernel.Core import HTk.Kernel.Configuration import HTk.Components.BitMap import HTk.Menuitems.Menu import HTk.Menuitems.MenuItem import HTk.Menuitems.Indicator import Events.Synchronized import Util.Computation import HTk.Kernel.TkVariables -- ----------------------------------------------------------------------- -- MenuCascade type -- ----------------------------------------------------------------------- -- | The @MenuCheckButton@ datatype. newtype MenuCheckButton = MenuCheckButton GUIOBJECT -- ----------------------------------------------------------------------- -- commands -- ----------------------------------------------------------------------- -- | Constructs a new menu checkbutton and returns a handler. createMenuCheckButton :: Menu -- ^ the parent menu. -> [Config MenuCheckButton] -- ^ the list of configuration options for this menu -- checkbutton. -> IO MenuCheckButton -- ^ A menu checkbutton. createMenuCheckButton m cnf = createMenuItem m MENUCHECKBUTTON MenuCheckButton cnf -- ----------------------------------------------------------------------- -- instances -- ----------------------------------------------------------------------- -- | A menu checkbutton is a menu item (any menu item instantiates the -- abstract @class MenuItem@). instance MenuItem MenuCheckButton -- | Internal. instance Eq MenuCheckButton where w1 == w2 = (toGUIObject w1) == (toGUIObject w2) -- | Internal. instance GUIObject MenuCheckButton where toGUIObject (MenuCheckButton w) = w cname _ = "MenuCheckButton" -- | You can synchronize on a menu checkbutton. instance Synchronized MenuCheckButton where -- Synchronizes on a menu checkbutton. synchronize = synchronize . toGUIObject -- | A menu checkbutton has an optional text to display as a reminder -- about a keystroke binding. instance HasAccelerator MenuCheckButton -- | A menu checkbutton can contain a bitmap (instead of text or an image). instance HasBitMap MenuCheckButton -- | A menu checkbutton has a configureable border. instance HasBorder MenuCheckButton -- | A menu checkbutton has a normal foreground and background colour and -- an active\/disabled foreground and background colour. instance HasColour MenuCheckButton where legalColourID = buttonColours -- | A menu checkbutton is a stateful object, it can be enabled or -- disabled. instance HasEnable MenuCheckButton -- | You can specify the font of a menu checkbutton. instance HasFont MenuCheckButton -- | A menu checkbutton has a configureable text justification. instance HasJustify MenuCheckButton -- | You can display an indicator with a menu checkbutton. instance HasIndicator MenuCheckButton -- | A menu checkbutton can contain an image (instead of text or a bitmap). instance HasPhoto MenuCheckButton -- | You can specify the size of a menu checkbutton. instance HasSize MenuCheckButton -- | A menu checkbutton can contain text (instead of an image or bitmap). instance GUIValue v => HasText MenuCheckButton v where -- Sets the text to display. text str w = cset w "label" str >> return w -- Gets the displayed text. getText w = cget w "label" -- | You can set the index of a text character to underline. instance HasUnderline MenuCheckButton -- | The polymorphic variable the menu checkbutton\'s value is associated -- with. instance HasVariable MenuCheckButton -- | A menu checkbutton has a value, that corresponds to a polymorphic -- @TkVariable@. instance GUIValue v => HasValue MenuCheckButton v -- | When a menu checkbutton is clicked, a corresponding event is invoked. instance HasCommand MenuCheckButton