FDefaults.hs

{-# 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)

Plain-text version of FDefaults.hs | Valid HTML?