packages feed

tart-0.1.2: programs/Events/CanvasSizePrompt.hs

module Events.CanvasSizePrompt
  ( handleCanvasSizePromptEvent
  )
where

import qualified Graphics.Vty as V
import Lens.Micro.Platform

import Brick
import Brick.Focus
import Brick.Widgets.Edit

import Types
import State

handleCanvasSizePromptEvent :: AppState -> BrickEvent Name e -> EventM Name (Next AppState)
handleCanvasSizePromptEvent s (MouseDown CanvasSizeWidthEdit _ _ _) =
    continue $ s & canvasSizeFocus %~ focusSetCurrent CanvasSizeWidthEdit
handleCanvasSizePromptEvent s (MouseDown CanvasSizeHeightEdit _ _ _) =
    continue $ s & canvasSizeFocus %~ focusSetCurrent CanvasSizeHeightEdit
handleCanvasSizePromptEvent s (MouseDown _ _ _ _) =
    continue $ popMode s
handleCanvasSizePromptEvent s (VtyEvent (V.EvKey (V.KChar '\t') [])) =
    continue $ s & canvasSizeFocus %~ focusNext
handleCanvasSizePromptEvent s (VtyEvent (V.EvKey V.KBackTab [])) =
    continue $ s & canvasSizeFocus %~ focusPrev
handleCanvasSizePromptEvent s (VtyEvent (V.EvKey V.KEsc [])) =
    continue $ popMode s
handleCanvasSizePromptEvent s (VtyEvent (V.EvKey V.KEnter [])) =
    continue =<< tryResizeCanvas s
handleCanvasSizePromptEvent s (VtyEvent e) =
    case focusGetCurrent (s^.canvasSizeFocus) of
        Just CanvasSizeWidthEdit ->
            continue =<< handleEventLensed s canvasSizeWidthEdit handleEditorEvent e
        Just CanvasSizeHeightEdit ->
            continue =<< handleEventLensed s canvasSizeHeightEdit handleEditorEvent e
        _ -> continue s
handleCanvasSizePromptEvent s _ =
    continue s