packages feed

tart-0.4: 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 :: Bool -> BrickEvent Name e -> EventM Name AppState ()
handleAskForSaveFilenameEvent isQuitting (VtyEvent (V.EvKey V.KEsc [])) =
    if isQuitting then halt else modify popMode
handleAskForSaveFilenameEvent isQuitting (VtyEvent (V.EvKey V.KEnter [])) = do
    editor <- use askToSaveFilenameEdit
    let [fn] = getEditContents editor
    if T.null fn
        then if isQuitting then halt else modify popMode
        else do
            canvasPath .= Just (T.unpack fn)
            if isQuitting
                then modify popMode >> quit False
                else modify popMode >> saveAndContinue
handleAskForSaveFilenameEvent _ e = do
    zoom askToSaveFilenameEdit $ handleEditorEvent e
handleAskForSaveFilenameEvent _ _ =
    return ()