ToggleButtonF

module ToggleButtonF(toggleF, oldToggleButtonF, oldToggleButtonF') where
--import Alignment
import Spacer(marginF)
import CompOps((>=^<), (>^=<),(>+<),(>=^^<))
import CompSP(idRightSP)
import SpEither(filterRightSP)
import Spacers(compS,vCenterS,noStretchS)--,centerS,hvAlignS,spacerP
--import Placers(horizontalP)
import Placer(hBoxF,spacer1F)
import EitherUtils(stripEither)
import OnOffDispF
import ButtonBorderF
import ToggleGroupF
--import Geometry(Point(..))
import GraphicsF(graphicsLabelF')
import Defaults(look3d, edgeWidth)
import FDefaults -- setFont

toggleF inside keys lblF =
   toggleGroupF keys $
   if inside
   then buttonBorderF edgew (mF lblF) >=^^< idRightSP filterRightSP
   else stripEither >^=< hBoxF (sF (buttonBorderF edgew indicatorF) >+< cF lblF)
 where
    indicatorF = mF (onOffDispF False)
    mF = marginF innersep
    sF = spacer1F (noStretchS True True `compS` vCenterS)
    cF = spacer1F (noStretchS False True `compS` vCenterS)
    innersep = 2
    edgew    = if look3d then edgeWidth else max 0 (edgeWidth-1)

oldToggleButtonF x = oldToggleButtonF' False x

oldToggleButtonF' inside fname keys lbl =
    stripEither >^=< toggleF inside keys lblF >=^< Left
  where
    lblF = graphicsLabelF' (setFont fname) lbl