packages feed

tart-0.4: 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 :: BrickEvent Name e -> EventM Name AppState ()
handleBoxStyleSelectEvent e = do
    result <- handleCommonEvent e
    case result of
        True -> return ()
        False -> handleEvent e

handleEvent :: BrickEvent Name e -> EventM Name AppState ()
handleEvent (MouseDown (BoxStyleSelectorEntry i) _ _ _) = do
    boxStyleIndex .= i
    modify popMode
handleEvent (VtyEvent (V.EvKey (V.KChar c) [])) | isDigit c = do
    let i = read [c]
    case i >= 0 && i < length boxStyles of
        True -> do
            modify popMode
            boxStyleIndex .= i
        False -> return ()
handleEvent (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.
    return ()
handleEvent _ =
    modify popMode