module Chiasma.Data.SelectWindowParams where

import Prelude hiding (last)

import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs), flag1)
import Chiasma.Data.Target (Target)

data SelectWindowParams =
  SelectWindowParams {
    SelectWindowParams -> Bool
last :: Bool,
    SelectWindowParams -> Bool
next :: Bool,
    SelectWindowParams -> Bool
previous :: Bool,
    SelectWindowParams -> Bool
toggle :: Bool,
    SelectWindowParams -> Target
target :: Target
  }
  deriving stock (SelectWindowParams -> SelectWindowParams -> Bool
(SelectWindowParams -> SelectWindowParams -> Bool)
-> (SelectWindowParams -> SelectWindowParams -> Bool)
-> Eq SelectWindowParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SelectWindowParams -> SelectWindowParams -> Bool
$c/= :: SelectWindowParams -> SelectWindowParams -> Bool
== :: SelectWindowParams -> SelectWindowParams -> Bool
$c== :: SelectWindowParams -> SelectWindowParams -> Bool
Eq, Int -> SelectWindowParams -> ShowS
[SelectWindowParams] -> ShowS
SelectWindowParams -> String
(Int -> SelectWindowParams -> ShowS)
-> (SelectWindowParams -> String)
-> ([SelectWindowParams] -> ShowS)
-> Show SelectWindowParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SelectWindowParams] -> ShowS
$cshowList :: [SelectWindowParams] -> ShowS
show :: SelectWindowParams -> String
$cshow :: SelectWindowParams -> String
showsPrec :: Int -> SelectWindowParams -> ShowS
$cshowsPrec :: Int -> SelectWindowParams -> ShowS
Show)

instance Default SelectWindowParams where
  def :: SelectWindowParams
def =
    SelectWindowParams :: Bool -> Bool -> Bool -> Bool -> Target -> SelectWindowParams
SelectWindowParams {
      $sel:last:SelectWindowParams :: Bool
last = Bool
False,
      $sel:next:SelectWindowParams :: Bool
next = Bool
False,
      $sel:previous:SelectWindowParams :: Bool
previous = Bool
False,
      $sel:toggle:SelectWindowParams :: Bool
toggle = Bool
False,
      $sel:target:SelectWindowParams :: Target
target = Target
forall a. Default a => a
def
    }

instance CmdArgs SelectWindowParams where
  cmdArgs :: SelectWindowParams -> [Text]
cmdArgs SelectWindowParams {Bool
Target
target :: Target
toggle :: Bool
previous :: Bool
next :: Bool
last :: Bool
$sel:target:SelectWindowParams :: SelectWindowParams -> Target
$sel:toggle:SelectWindowParams :: SelectWindowParams -> Bool
$sel:previous:SelectWindowParams :: SelectWindowParams -> Bool
$sel:next:SelectWindowParams :: SelectWindowParams -> Bool
$sel:last:SelectWindowParams :: SelectWindowParams -> Bool
..} =
    Text -> Bool -> [Text]
flag1 Text
"-l" Bool
last
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Text -> Bool -> [Text]
flag1 Text
"-n" Bool
next
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Text -> Bool -> [Text]
flag1 Text
"-p" Bool
previous
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Text -> Bool -> [Text]
flag1 Text
"-T" Bool
toggle
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Target -> [Text]
forall a. CmdArgs a => a -> [Text]
cmdArgs Target
target