module Controller.Menu.File.Export.Diagram.BoxPlotParameters (Parameters(..),defaultParams) where import Util.Sexp (Sexp(..)) import Util.Sexpable (Sexpable(..),PSE,recordToSexp,recordFromSexp) data Parameters = Parameters { columns :: [Int] , boxWidth :: Double , gaps :: Int } defaultParams :: Parameters defaultParams = Parameters [] 0.5 1 instance Sexpable Parameters where toSexp = recordToSexp [ ("boxWidth", toSexp . boxWidth) , ("gaps", toSexp . gaps) ] fromSexp = recordFromSexp setParam defaultParams setParam :: Parameters -> Sexp -> PSE Parameters setParam p sexp = case sexp of List [Atom "boxWidth",w] -> do parameter <- fromSexp w return $ p {boxWidth = parameter} List [Atom "gaps",g] -> do parameter <- fromSexp g return $ p {gaps = parameter} _ -> return p