chiasma-0.12.2.0: lib/Chiasma/Data/ResizePaneParams.hs
module Chiasma.Data.ResizePaneParams where
import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs), arg, flag1, optionArgs)
import Chiasma.Data.Axis (Axis (Horizontal, Vertical))
import Chiasma.Data.Direction (Direction)
import Chiasma.Data.Target (Target (Current))
data ResizeAbsolute =
ResizeAbsolute Axis Int
deriving stock (Eq, Show)
instance CmdArgs ResizeAbsolute where
cmdArgs (ResizeAbsolute axis amount) =
[axisArg axis, show amount]
where
axisArg = \case
Horizontal -> "-x"
Vertical -> "-y"
data Adjustment =
Adjustment (Maybe Direction) (Maybe Int)
deriving stock (Eq, Show)
instance CmdArgs Adjustment where
cmdArgs (Adjustment dir amount) =
optionArgs dir <> arg (show <$> amount)
data ResizePaneParams =
ResizePaneParams {
absolute :: Maybe ResizeAbsolute,
adjustment :: Maybe Adjustment,
zoom :: Bool,
mouse :: Bool,
target :: Target
}
deriving stock (Eq, Show)
instance Default ResizePaneParams where
def =
ResizePaneParams {
absolute = Nothing,
adjustment = Nothing,
zoom = False,
mouse = False,
target = Current
}
instance CmdArgs ResizePaneParams where
cmdArgs ResizePaneParams {..} =
optionArgs absolute
<>
flag1 "-Z" zoom
<>
flag1 "-M" mouse
<>
optionArgs adjustment
<>
cmdArgs target