packages feed

tart-0.1: programs/UI/AskForSaveFilename.hs

module UI.AskForSaveFilename
  ( drawAskForSaveFilenameUI
  )
where

import qualified Data.Text as T
import Lens.Micro.Platform

import Brick
import Brick.Widgets.Border
import Brick.Widgets.Center
import Brick.Widgets.Edit

import Types
import Theme

drawAskForSaveFilenameUI :: AppState -> [Widget Name]
drawAskForSaveFilenameUI s = [drawPromptWindow s]

drawPromptWindow :: AppState -> Widget Name
drawPromptWindow s =
    centerLayer $
    borderWithLabel (str "Save") $
        hLimit 60 $
        padLeftRight 2 $ padTopBottom 1 body
    where
        help = hBox [ str "("
                    , withDefAttr keybindingAttr $ str "Enter"
                    , str " to save and quit, "
                    , withDefAttr keybindingAttr $ str "Esc"
                    , str " to quit without saving)"
                    ]
        body = (hCenter $ str "Save changes to:") <=>
               (hCenter help) <=>
               padTopBottom 1 fn
        renderString = txt . T.unlines
        fn = str "Path: " <+> renderEditor renderString True (s^.askToSaveFilenameEdit)