module CertAttrsEditorF where import Maybe(fromMaybe) import Fudgets import Attrs import CertAttrs import CertServers(serverName,certAttrs) dynCertAttrsEditorPopupsF = dynF nullF >=^< mapEither certAttrsEditorPopupsF id certAttrsEditorPopupsF = listF . map edF where edF s = (n,attrsEditorPopupF n (certAttrs s)) where n = serverName s attrsEditorPopupF ctype attrs = post >^=< inputPopupF title (attrsEditorF attrs) Nothing >=^< pre where title = ctype++" certificate Attribute Editor" pre (cname,cattrs) = (Just cname,Just cattrs) post ((Just cname,_),attrs) = (cname,attrs) attrsEditorF :: CertAttrs -> InF Attrs Attrs attrsEditorF attrs = placerF (tableP 2) $ inputListF [(name,attrEditorF attr)|(name,attr)<-attrs] >=^< pre where pre cattrs = map (pickattr cattrs) attrs pickattr cattrs (aname,attr) = (aname,fromMaybe (fromMaybe "" (adefault attr)) (lookup aname cattrs)) attrEditorF Attr {atype=t,label=lbl} = labelF lbl >*< attrEditorF' t attrEditorF' t = case t of String -> stringF File -> stringF -- !! Nat -> stringF -- !!! Bool -> inputChange.show>^==^<(=="True")