-- | HTk\'s menuitem /indicators/. -- Indicators are displayed with menu checkbuttons, menu buttons and -- menu radiobuttons. module HTk.Menuitems.Indicator ( Indicator(..), HasColour(..), HasPhoto(..), SelectButton(..), HasIndicator(..) ) where import HTk.Kernel.Core import HTk.Components.Image import HTk.Menuitems.MenuItem import Util.Computation import HTk.Kernel.Resources import HTk.Kernel.Colour -- ----------------------------------------------------------------------- -- handle -- ----------------------------------------------------------------------- -- | The @Indicator@ datatype. data Indicator a = Indicator a -- ----------------------------------------------------------------------- -- class HasIndicator -- ----------------------------------------------------------------------- -- | Menu items that can have an indicator instantiate the -- @class HasIndicator@. class GUIObject w => HasIndicator w where -- Displays\/unmaps the items indicator. indicator :: Toggle -> Config w -- @On@ if an indicator is displayed with the item, otherwise -- @Off@. getIndicator :: w -> IO Toggle indicator i w = cset w "indicatoron" i getIndicator w = cget w "indicatoron" -- ----------------------------------------------------------------------- -- instantiations -- ----------------------------------------------------------------------- -- | Internal. instance HasIndicator w => GUIObject (Indicator w) where toGUIObject (Indicator w) = toGUIObject w cname _ = "Indicator" -- | You can specify the colour for the selector of menu checkbuttons and -- menu radiobuttons. instance (HasIndicator w, SelectButton w) => HasColour (Indicator w) where -- Sets the colour for the selector. setColour w _ c = cset w "selectcolor" (toColour c) -- Gets the colour for the selector. getColour w _ = cget w "selectcolor" -- | You can specify specify an alternate image for the selector of menu -- checkbuttons and menu radiobuttons. instance (HasIndicator w, SelectButton w) => HasPhoto (Indicator w) where -- Sets the alternate image for the selector. photo i w = imageToInt i >>= cset w "selectimage" -- Gets the alternate image for the selector. getPhoto w = cget w "selectimage" >>= intToImage -- ----------------------------------------------------------------------- -- instances -- ----------------------------------------------------------------------- -- | Internal. instance HasIndicator GUIOBJECT