fudgets-0.18.3: Contrib/SplitF.hs
module SplitF where
import AllFudgets
import HandleF(vHandleF,hHandleF)
import LinearSplitP(linearSplitP)
hSplitF = hSplitF' aCenter
vSplitF = vSplitF' aCenter
hSplitF' = splitF' Horizontal
vSplitF' = splitF' Vertical
splitF' dir alignment fud1 fud2 =
loopCompThroughRightF $
groupF startcmds sizeK $
placerF (linearSplitP dir defaultSep) $
fud1>+<hF>+<fud2
where
startcmds = [XCmd $ ChangeWindowAttributes [CWBackPixmap parentRelative]]
hF = colinear dir hHandleF vHandleF alignment
toLoop = Just . High . Left
out = Just . High . Right
toHandle = toLoop . Left . Right
toFud1 = toLoop . Left . Left
toFud2 = toLoop . Right
sizeK = K (mapFilterSP route)
route = message low high
low (LEvt (LayoutSize size)) = toHandle size
low event = ignore event
high = either fromLoop (either toFud1 toFud2)
fromLoop = either (either fromFud1 ignore) fromFud2
fromFud1 = out . Left
fromFud2 = out . Right
ignore _ = Nothing