module Test.Sandwich.Formatters.TerminalUI.Keys where

import qualified Data.List as L
import qualified Graphics.Vty as V

-- Column 1
nextKey :: Key
nextKey = Char -> Key
V.KChar Char
'n'
previousKey :: Key
previousKey = Char -> Key
V.KChar Char
'p'
nextFailureKey :: Key
nextFailureKey = Char -> Key
V.KChar Char
'N'
previousFailureKey :: Key
previousFailureKey = Char -> Key
V.KChar Char
'P'
closeNodeKey :: Key
closeNodeKey = Key
V.KLeft
openNodeKey :: Key
openNodeKey = Key
V.KRight
toggleKeys :: [Key]
toggleKeys = [Key
V.KEnter, Char -> Key
V.KChar Char
'\t']

-- Column 2
cancelAllKey :: Key
cancelAllKey = Char -> Key
V.KChar Char
'C'
cancelSelectedKey :: Key
cancelSelectedKey = Char -> Key
V.KChar Char
'c'
runAllKey :: Key
runAllKey = Char -> Key
V.KChar Char
'R'
runSelectedKey :: Key
runSelectedKey = Char -> Key
V.KChar Char
'r'
clearAllKey :: Key
clearAllKey = Char -> Key
V.KChar Char
'K'
clearSelectedKey :: Key
clearSelectedKey = Char -> Key
V.KChar Char
'k'
openSelectedFolderInFileExplorer :: Key
openSelectedFolderInFileExplorer = Char -> Key
V.KChar Char
'o'
openTestRootKey :: Key
openTestRootKey = Char -> Key
V.KChar Char
'O'
openTestInEditorKey :: Key
openTestInEditorKey = Char -> Key
V.KChar Char
't'
openFailureInEditorKey :: Key
openFailureInEditorKey = Char -> Key
V.KChar Char
'f'
openLogsInEditorKey :: Key
openLogsInEditorKey = Char -> Key
V.KChar Char
'l'

-- Column 3
cycleVisibilityThresholdKey :: Key
cycleVisibilityThresholdKey = Char -> Key
V.KChar Char
'v'
toggleShowRunTimesKey :: Key
toggleShowRunTimesKey = Char -> Key
V.KChar Char
'T'
toggleFileLocationsKey :: Key
toggleFileLocationsKey = Char -> Key
V.KChar Char
'F'
toggleVisibilityThresholdsKey :: Key
toggleVisibilityThresholdsKey = Char -> Key
V.KChar Char
'V'
debugKey :: Key
debugKey = Char -> Key
V.KChar Char
'd'
infoKey :: Key
infoKey = Char -> Key
V.KChar Char
'i'
warnKey :: Key
warnKey = Char -> Key
V.KChar Char
'w'
errorKey :: Key
errorKey = Char -> Key
V.KChar Char
'e'
exitKey :: Key
exitKey = Char -> Key
V.KChar Char
'q'



-- Other

showKey :: Key -> [Char]
showKey (V.KChar Char
'\t') = [Char]
"Tab"
showKey (V.KChar Char
c) = [Char
c]
showKey Key
V.KEnter = [Char]
"Enter"
showKey Key
_ = [Char]
"?"

showKeys :: [Key] -> [Char]
showKeys = [Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
L.intercalate [Char]
"/" ([[Char]] -> [Char]) -> ([Key] -> [[Char]]) -> [Key] -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Key -> [Char]) -> [Key] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> [Char]
showKey

unKChar :: V.Key -> Char
unKChar :: Key -> Char
unKChar (V.KChar Char
c) = Char
c
unKChar Key
V.KLeft = Char
'←'
unKChar Key
V.KRight = Char
'→'
unKChar Key
_ = Char
'?'