{-# LANGUAGE CPP #-} module FDefaults(module FDefaults,module Alignment,fromMaybe) where import Fudget import CompOps import Xtypes import Alignment(Alignment(..)) --import Geometry(pmax) import Data.Maybe(fromMaybe) import Sizing(Sizing) import GCAttrs --(ColorSpec,colorSpec) #include "defaults.h" type Customiser a = a -> a cust :: (a->a) -> Customiser a -- to obtain better type signatures cust = id type PF p a b = F (Either (Customiser p) a) b type PK p a b = K (Either (Customiser p) a) b getpar pp = fromMaybe (error "getpar:: missing default") . getparMaybe pp getparMaybe pp [] = Nothing getparMaybe pp (p:ps) = case pp p of Just a -> Just a Nothing -> getparMaybe pp ps noPF :: PF p a b -> F a b noPF f = f >=^< Right standard :: Customiser a standard = id parameter_class(FontSpec,FontSpec) setFont f = setFontSpec (fontSpec f) --parameter_class(Title,String) parameter_class(Keys,[(ModState,KeySym)]) parameter_class(WinAttr,[WindowAttributes]) parameter_class(BorderWidth,Int) parameter_class(BgColorSpec,ColorSpec) parameter_class(FgColorSpec,ColorSpec) -- eta expanded because of the stupid monomorphism restriction setBgColor c = setBgColorSpec . colorSpec $ c setFgColor c = setFgColorSpec . colorSpec $ c --getBgColor c = getBgColorSpec $ c --getFgColor c = getFgColorSpec $ c parameter_class(Margin,Int) parameter_class(Align,Alignment) parameter_class1(InitSize) parameter_class1(InitDisp) parameter_class(Stretchable,(Bool,Bool)) parameter_class(InitText,[String]) parameter_class(Sizing,Sizing)