-- ----------------------------------------------------------------------- -- -- $Source: /repository/uni/htk/menuitems/MenuCascade.hs,v $ -- -- HTk - a GUI toolkit for Haskell - (c) Universitaet Bremen -- -- $Revision: 1.4 $ from $Date: 2002/02/21 13:23:04 $ -- Last modification by $Author: cxl $ -- -- ----------------------------------------------------------------------- --- -- HTk's menu cascade item.
-- A containers for cascaded menus. module MenuCascade ( HasIndicator(..), HasAccelerator(..), MenuCascade, createMenuCascade, createPulldownMenu ) where import Core import Configuration import Image import BitMap import Menu import MenuItem import Indicator import Synchronized import Computation -- ----------------------------------------------------------------------- -- MenuCascade type -- ----------------------------------------------------------------------- --- -- The MenuCascade datatype. newtype MenuCascade = MenuCascade GUIOBJECT -- ----------------------------------------------------------------------- -- instances -- ----------------------------------------------------------------------- --- -- A MenuCascade item is a container for a sub-menu. instance HasMenu MenuCascade -- ----------------------------------------------------------------------- -- commands -- ----------------------------------------------------------------------- --- -- Constructs a new menu cascasde item and returns a handler. -- @param m - the parent menu. -- @param cnf - the list of configuration options for this menu -- cascade item. -- @return result - A menu cascade item. createMenuCascade :: Menu -> [Config MenuCascade] -> IO MenuCascade createMenuCascade m cnf = createMenuItem m MENUCASCADE MenuCascade cnf -- ----------------------------------------------------------------------- -- instances -- ----------------------------------------------------------------------- --- -- A menu cascade item is a menu item (any menu item instantiates the -- abstract class MenuItem). instance MenuItem MenuCascade --- -- Internal. instance Eq MenuCascade where --- -- Internal. w1 == w2 = (toGUIObject w1) == (toGUIObject w2) --- -- Internal. instance GUIObject MenuCascade where --- -- Internal. toGUIObject (MenuCascade w) = w --- -- Internal. cname _ = "MenuCascade" --- -- You can synchronize on a menu cascade item. instance Synchronized MenuCascade where --- -- Synchronizes on a menu cascade item. synchronize = synchronize . toGUIObject --- -- A menu cascade item has an optional text to display as a reminder -- about a keystroke binding. instance HasAccelerator MenuCascade --- -- A menu cascade item can contain a bitmap (instead of text or an image). instance HasBitMap MenuCascade --- -- A menu cascade item has a configureable border. instance HasBorder MenuCascade --- -- A menu cascade item has a normal foreground and background colour and -- an active/disabled foreground and background colour. instance HasColour MenuCascade where --- -- Internal. legalColourID = buttonColours --- -- A menu cascade item is a stateful object, it can be enabled or -- disabled. instance HasEnable MenuCascade --- -- You can specify the font of a menu cascade item. instance HasFont MenuCascade --- -- A menu cascade item has a configureable text justification. instance HasJustify MenuCascade --- -- You can display an indicator with a menu cascade item. instance HasIndicator MenuCascade --- -- A menu cascade item can contain an image (instead of text or a bitmap). instance HasPhoto MenuCascade --- -- You can specify the size of a menu cascade item. instance HasSize MenuCascade --- -- A menu cascade item can contain text (instead of an image or bitmap). instance GUIValue v => HasText MenuCascade 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 MenuCascade --- -- Utility function: create a pulldown menu -- -- @param mpar - the parent menu. -- @param conf - the list of configuration options for this pulldown menu -- @return result - A menu cascade item. createPulldownMenu :: Menu-> [Config MenuCascade]-> IO Menu createPulldownMenu mpar conf = do pd <- createMenuCascade mpar conf m <- createMenu mpar False [] pd # menu m return m