packages feed

tart-0.4: 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 :: BrickEvent Name e -> EventM Name AppState ()
handleCanvasSizePromptEvent (MouseDown CanvasSizeWidthEdit _ _ _) =
    canvasSizeFocus %= focusSetCurrent CanvasSizeWidthEdit
handleCanvasSizePromptEvent (MouseDown CanvasSizeHeightEdit _ _ _) =
    canvasSizeFocus %= focusSetCurrent CanvasSizeHeightEdit
handleCanvasSizePromptEvent (MouseDown _ _ _ _) =
    modify popMode
handleCanvasSizePromptEvent (VtyEvent (V.EvKey (V.KChar '\t') [])) =
    canvasSizeFocus %= focusNext
handleCanvasSizePromptEvent (VtyEvent (V.EvKey V.KBackTab [])) =
    canvasSizeFocus %= focusPrev
handleCanvasSizePromptEvent (VtyEvent (V.EvKey V.KEsc [])) =
    modify popMode
handleCanvasSizePromptEvent (VtyEvent (V.EvKey V.KEnter [])) =
    tryResizeCanvas
handleCanvasSizePromptEvent e = do
    foc <- use canvasSizeFocus
    case focusGetCurrent foc of
        Just CanvasSizeWidthEdit ->
            zoom canvasSizeWidthEdit $ handleEditorEvent e
        Just CanvasSizeHeightEdit ->
            zoom canvasSizeHeightEdit $ handleEditorEvent e
        _ -> return ()