packages feed

tart-0.1: programs/Events/AskForSaveFilename.hs

module Events.AskForSaveFilename
  ( handleAskForSaveFilenameEvent
  )
where

import qualified Graphics.Vty as V
import Lens.Micro.Platform
import qualified Data.Text as T

import Brick
import Brick.Widgets.Edit

import Types
import State

handleAskForSaveFilenameEvent :: AppState -> BrickEvent Name e -> EventM Name (Next AppState)
handleAskForSaveFilenameEvent s (VtyEvent (V.EvKey V.KEsc [])) =
    halt s
handleAskForSaveFilenameEvent s (VtyEvent (V.EvKey V.KEnter [])) = do
    let [fn] = getEditContents (s^.askToSaveFilenameEdit)
    if T.null fn
        then halt s
        else quit False $ s & canvasPath .~ Just (T.unpack fn)
handleAskForSaveFilenameEvent s (VtyEvent e) =
    continue =<< handleEventLensed s askToSaveFilenameEdit handleEditorEvent e
handleAskForSaveFilenameEvent s _ =
    continue s