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 (ResizeAbsolute -> ResizeAbsolute -> Bool (ResizeAbsolute -> ResizeAbsolute -> Bool) -> (ResizeAbsolute -> ResizeAbsolute -> Bool) -> Eq ResizeAbsolute forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: ResizeAbsolute -> ResizeAbsolute -> Bool == :: ResizeAbsolute -> ResizeAbsolute -> Bool $c/= :: ResizeAbsolute -> ResizeAbsolute -> Bool /= :: ResizeAbsolute -> ResizeAbsolute -> Bool Eq, Int -> ResizeAbsolute -> ShowS [ResizeAbsolute] -> ShowS ResizeAbsolute -> String (Int -> ResizeAbsolute -> ShowS) -> (ResizeAbsolute -> String) -> ([ResizeAbsolute] -> ShowS) -> Show ResizeAbsolute forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> ResizeAbsolute -> ShowS showsPrec :: Int -> ResizeAbsolute -> ShowS $cshow :: ResizeAbsolute -> String show :: ResizeAbsolute -> String $cshowList :: [ResizeAbsolute] -> ShowS showList :: [ResizeAbsolute] -> ShowS Show) instance CmdArgs ResizeAbsolute where cmdArgs :: ResizeAbsolute -> [Text] cmdArgs (ResizeAbsolute Axis axis Int amount) = [Axis -> Text axisArg Axis axis, Int -> Text forall b a. (Show a, IsString b) => a -> b show Int amount] where axisArg :: Axis -> Text axisArg = \case Axis Horizontal -> Text "-x" Axis Vertical -> Text "-y" data Adjustment = Adjustment (Maybe Direction) (Maybe Int) deriving stock (Adjustment -> Adjustment -> Bool (Adjustment -> Adjustment -> Bool) -> (Adjustment -> Adjustment -> Bool) -> Eq Adjustment forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Adjustment -> Adjustment -> Bool == :: Adjustment -> Adjustment -> Bool $c/= :: Adjustment -> Adjustment -> Bool /= :: Adjustment -> Adjustment -> Bool Eq, Int -> Adjustment -> ShowS [Adjustment] -> ShowS Adjustment -> String (Int -> Adjustment -> ShowS) -> (Adjustment -> String) -> ([Adjustment] -> ShowS) -> Show Adjustment forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Adjustment -> ShowS showsPrec :: Int -> Adjustment -> ShowS $cshow :: Adjustment -> String show :: Adjustment -> String $cshowList :: [Adjustment] -> ShowS showList :: [Adjustment] -> ShowS Show) instance CmdArgs Adjustment where cmdArgs :: Adjustment -> [Text] cmdArgs (Adjustment Maybe Direction dir Maybe Int amount) = Maybe Direction -> [Text] forall a. CmdArgs a => Maybe a -> [Text] optionArgs Maybe Direction dir [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Maybe Text -> [Text] arg (Int -> Text forall b a. (Show a, IsString b) => a -> b show (Int -> Text) -> Maybe Int -> Maybe Text forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe Int amount) data ResizePaneParams = ResizePaneParams { ResizePaneParams -> Maybe ResizeAbsolute absolute :: Maybe ResizeAbsolute, ResizePaneParams -> Maybe Adjustment adjustment :: Maybe Adjustment, ResizePaneParams -> Bool zoom :: Bool, ResizePaneParams -> Bool mouse :: Bool, ResizePaneParams -> Target target :: Target } deriving stock (ResizePaneParams -> ResizePaneParams -> Bool (ResizePaneParams -> ResizePaneParams -> Bool) -> (ResizePaneParams -> ResizePaneParams -> Bool) -> Eq ResizePaneParams forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: ResizePaneParams -> ResizePaneParams -> Bool == :: ResizePaneParams -> ResizePaneParams -> Bool $c/= :: ResizePaneParams -> ResizePaneParams -> Bool /= :: ResizePaneParams -> ResizePaneParams -> Bool Eq, Int -> ResizePaneParams -> ShowS [ResizePaneParams] -> ShowS ResizePaneParams -> String (Int -> ResizePaneParams -> ShowS) -> (ResizePaneParams -> String) -> ([ResizePaneParams] -> ShowS) -> Show ResizePaneParams forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> ResizePaneParams -> ShowS showsPrec :: Int -> ResizePaneParams -> ShowS $cshow :: ResizePaneParams -> String show :: ResizePaneParams -> String $cshowList :: [ResizePaneParams] -> ShowS showList :: [ResizePaneParams] -> ShowS Show) instance Default ResizePaneParams where def :: ResizePaneParams def = ResizePaneParams { $sel:absolute:ResizePaneParams :: Maybe ResizeAbsolute absolute = Maybe ResizeAbsolute forall a. Maybe a Nothing, $sel:adjustment:ResizePaneParams :: Maybe Adjustment adjustment = Maybe Adjustment forall a. Maybe a Nothing, $sel:zoom:ResizePaneParams :: Bool zoom = Bool False, $sel:mouse:ResizePaneParams :: Bool mouse = Bool False, $sel:target:ResizePaneParams :: Target target = Target Current } instance CmdArgs ResizePaneParams where cmdArgs :: ResizePaneParams -> [Text] cmdArgs ResizePaneParams {Bool Maybe Adjustment Maybe ResizeAbsolute Target $sel:absolute:ResizePaneParams :: ResizePaneParams -> Maybe ResizeAbsolute $sel:adjustment:ResizePaneParams :: ResizePaneParams -> Maybe Adjustment $sel:zoom:ResizePaneParams :: ResizePaneParams -> Bool $sel:mouse:ResizePaneParams :: ResizePaneParams -> Bool $sel:target:ResizePaneParams :: ResizePaneParams -> Target absolute :: Maybe ResizeAbsolute adjustment :: Maybe Adjustment zoom :: Bool mouse :: Bool target :: Target ..} = Maybe ResizeAbsolute -> [Text] forall a. CmdArgs a => Maybe a -> [Text] optionArgs Maybe ResizeAbsolute absolute [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Text -> Bool -> [Text] flag1 Text "-Z" Bool zoom [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Text -> Bool -> [Text] flag1 Text "-M" Bool mouse [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Maybe Adjustment -> [Text] forall a. CmdArgs a => Maybe a -> [Text] optionArgs Maybe Adjustment adjustment [Text] -> [Text] -> [Text] forall a. Semigroup a => a -> a -> a <> Target -> [Text] forall a. CmdArgs a => a -> [Text] cmdArgs Target target