-- ----------------------------------------------------------------------- -- -- $Source: /repository/uni/htk/resources/Resources.hs,v $ -- -- HTk - a GUI toolkit for Haskell - (c) Universitaet Bremen -- -- $Revision: 1.7 $ from $Date: 2002/03/05 19:09:08 $ -- Last modification by $Author: ger $ -- -- ----------------------------------------------------------------------- --- -- Basic resources used with object configuration options. module Resources ( State(..), Justify(..), Relief(..), Anchor(..), Toggle(..), toggle, Orientation(..), Alignment(..), Flexibility(..), CreationConfig, showCreationConfigs ) where import GUIValue import Char -- ----------------------------------------------------------------------- -- creation configs -- ----------------------------------------------------------------------- --- -- Internal. type CreationConfig w = IO String --- -- Internal. showCreationConfigs :: [CreationConfig a] -> IO String showCreationConfigs (c : cs) = do str <- c rest <- showCreationConfigs cs return ("-" ++ str ++ " " ++ rest) showCreationConfigs _ = return "" -- ----------------------------------------------------------------------- -- state -- ----------------------------------------------------------------------- --- -- The State datatype - the state of certain widgets -- can be normal, disabled or active. data State = Disabled | Active | Normal deriving (Eq,Ord,Enum) --- -- Internal. instance GUIValue State where --- -- Internal. cdefault = Disabled --- -- Internal. instance Read State where --- -- Internal. readsPrec p b = case dropWhile (isSpace) b of 'd':'i':'s':'a':'b':'l':'e':'d': xs -> [(Disabled,xs)] 'a':'c':'t':'i':'v':'e': xs -> [(Active,xs)] 'n':'o':'r':'m':'a':'l': xs -> [(Normal,xs)] _ -> [] --- -- Internal. instance Show State where --- -- Internal. showsPrec d p r = (case p of Disabled -> "disabled" Active -> "active" Normal -> "normal" ) ++ r -- ----------------------------------------------------------------------- -- Justify -- ----------------------------------------------------------------------- --- -- The Justify datatype - representing a text justification. data Justify = JustLeft | JustCenter | JustRight deriving (Eq,Ord,Enum) --- -- Internal. instance GUIValue Justify where --- -- Internal. cdefault = JustLeft --- -- Internal. instance Read Justify where --- -- Internal. readsPrec p b = case dropWhile (isSpace) b of 'l':'e':'f':'t':xs -> [(JustLeft,xs)] 'c':'e':'n':'t':'e':'r':xs -> [(JustCenter,xs)] 'r':'i':'g':'h':'t':xs -> [(JustRight,xs)] _ -> [] --- -- Internal. instance Show Justify where --- -- Internal. showsPrec d p r = (case p of JustLeft -> "left" JustCenter -> "center" JustRight -> "right") ++ r -- ----------------------------------------------------------------------- -- relief -- ----------------------------------------------------------------------- --- -- The Relief datatype - represents the relief of certain -- widgets. data Relief = Groove | Ridge | Flat | Sunken | Raised deriving (Eq,Ord,Enum) --- -- Internal. instance GUIValue Relief where --- -- Internal. cdefault = Flat --- -- Internal. instance Read Relief where --- -- Internal. readsPrec p b = case dropWhile (isSpace) b of 'g':'r':'o':'o':'v':'e':xs -> [(Groove,xs)] 'r':'i':'d':'g':'e':xs -> [(Ridge,xs)] 'f':'l':'a':'t':xs -> [(Flat,xs)] 's':'u':'n':'k':'e':'n':xs -> [(Sunken,xs)] 'r':'a':'i':'s':'e':'d':xs -> [(Raised,xs)] _ -> [] --- -- Internal. instance Show Relief where --- -- Internal. showsPrec d p r = (case p of Groove -> "groove" Ridge -> "ridge" Flat -> "flat" Sunken -> "sunken" Raised -> "raised") ++ r -- ----------------------------------------------------------------------- -- Orientation -- ----------------------------------------------------------------------- --- -- The Orientation datatype - used for different purposes. data Orientation = Horizontal | Vertical deriving (Eq,Ord,Enum) --- -- Internal. instance GUIValue Orientation where --- -- Internal. cdefault = Horizontal --- -- Internal. instance Read Orientation where --- -- Internal. readsPrec p b = case dropWhile (isSpace) b of 'h':'o':'r':'i':'z':'o':'n':'t':'a':'l':xs -> [(Horizontal,xs)] 'v':'e':'r':'t':'i':'c':'a':'l':xs -> [(Vertical,xs)] _ -> [] --- -- Internal. instance Show Orientation where --- -- Internal. showsPrec d p r = (case p of Horizontal -> "horizontal" Vertical -> "vertical") ++ r -- ----------------------------------------------------------------------- -- Toggle -- ----------------------------------------------------------------------- --- -- A simple Toggle datatype - used for different purposes. data Toggle = Off | On deriving (Eq,Ord) --- -- Internal. instance GUIValue Toggle where --- -- Internal. cdefault = Off --- -- Internal. instance Read Toggle where --- -- Internal. readsPrec p b = case dropWhile (isSpace) b of '0':xs -> [(Off,xs)] '1':xs -> [(On,xs)] _ -> [] --- -- Internal. instance Show Toggle where --- -- Internal. showsPrec d p r = (case p of Off -> "0" On -> "1") ++ r {- toggleT :: TyRep toggleT = mkTyRep "Resources" "Toggle" instance HasTyRep Toggle where tyRep _ = toggleT -} toggle :: Toggle -> Toggle toggle On = Off toggle Off = On -- ----------------------------------------------------------------------- -- Flexibility -- ----------------------------------------------------------------------- --- -- The Flexibility datatype - used in the context of boxes -- (see containers). data Flexibility = Rigid | Flexible -- ----------------------------------------------------------------------- -- Alignment -- ----------------------------------------------------------------------- --- -- The Alignment datatype - widget alignment etc. data Alignment = Top | InCenter | Bottom | Baseline deriving (Eq,Ord,Enum) --- -- Internal. instance GUIValue Alignment where --- -- Internal. cdefault = Top --- -- Internal. instance Read Alignment where --- -- Internal. readsPrec p b = case dropWhile (isSpace) b of 'c':'e':'n':'t':'e':'r':xs -> [(InCenter,xs)] 't':'o':'p': xs -> [(Top,xs)] 'b':'o':'t':'t':'o':'m':xs -> [(Bottom,xs)] 'b':'a':'s':'e':'l':'i':'n':'e':xs -> [(Baseline,xs)] _ -> [] --- -- Internal. instance Show Alignment where --- -- Internal. showsPrec d p r = (case p of Top -> "top" InCenter -> "center" Bottom -> "bottom" Baseline -> "baseline") ++ r -- ----------------------------------------------------------------------- -- Anchor -- ----------------------------------------------------------------------- --- -- The Anchor datatype - used for different purposes, e.g. -- text anchors or anchor positions of canvas items. data Anchor = SouthEast | South | SouthWest | East | Center | West | NorthEast | North | NorthWest deriving (Eq,Ord,Enum) --- -- Internal. instance GUIValue Anchor where --- -- Internal. cdefault = Center --- -- Internal. instance Read Anchor where --- -- Internal. readsPrec p b = case dropWhile (isSpace) b of 's':'e':xs -> [(SouthEast,xs)] 's':'w':xs -> [(SouthWest,xs)] 'c':'e':'n':'t':'e':'r':xs -> [(Center,xs)] 'n':'e':xs -> [(NorthEast,xs)] 'n':'w':xs -> [(NorthWest,xs)] 'e':xs -> [(East,xs)] 'n':xs -> [(North,xs)] 'w':xs -> [(West,xs)] 's': xs -> [(South,xs)] _ -> [] --- -- Internal. instance Show Anchor where --- -- Internal. showsPrec d p r = (case p of SouthEast -> "se" South -> "s" SouthWest -> "sw" East -> "e" Center -> "center" West -> "w" NorthEast -> "ne" North -> "n" NorthWest -> "nw" ) ++ r