tart-0.1: programs/Events/BoxStyleSelect.hs
module Events.BoxStyleSelect
( handleBoxStyleSelectEvent
)
where
import Brick
import Data.Char (isDigit)
import qualified Graphics.Vty as V
import Lens.Micro.Platform
import Types
import State
import Events.Common
handleBoxStyleSelectEvent :: AppState -> BrickEvent Name e -> EventM Name (Next AppState)
handleBoxStyleSelectEvent s e = do
result <- handleCommonEvent s e
case result of
Just s' -> continue s'
Nothing -> handleEvent s e
handleEvent :: AppState -> BrickEvent Name e -> EventM Name (Next AppState)
handleEvent s (MouseDown (BoxStyleSelectorEntry i) _ _ _) = do
continue $ popMode $ s & boxStyleIndex .~ i
handleEvent s (VtyEvent (V.EvKey (V.KChar c) [])) | isDigit c = do
let i = read [c]
case i >= 0 && i < length boxStyles of
True -> continue $ popMode $ s & boxStyleIndex .~ i
False -> continue s
handleEvent s (MouseUp _ _ _) =
-- Ignore mouse-up events so we don't go back to Main mode. This
-- includes mouse-up events generated in this mode, in addition to
-- the mouse-up event generated just after we switch into this mode
-- from Main.
continue s
handleEvent s _ =
continue $ popMode s