diff --git a/app/Main.hs b/app/Main.hs index dc938be..34ce910 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -20,35 +20,44 @@ along with this program. If not, see . module Main (main) where -import Brick.AttrMap (forceAttrMap) +import Brick.AttrMap (AttrMap, attrMap) import Brick.Main (App (..), defaultMain, halt, showFirstCursor) import Brick.Types (BrickEvent (VtyEvent), EventM, Widget) import Brick.Util (on) -import Brick.Widgets.Core (str, vBox) -import Brick.Widgets.Edit (Editor, editor, handleEditorEvent, renderEditor) +import Brick.Widgets.FileBrowser ( + FileBrowser, + fileBrowserSelectedAttr, + handleFileBrowserEvent, + newFileBrowser, + renderFileBrowser) import Control.Monad (void) import Graphics.Vty.Attributes.Color (black, white) import Graphics.Vty.Input.Events (Event (EvKey), Key (KEsc)) -app :: App (Editor String ()) () () +app :: App (FileBrowser ()) () () app = App { appDraw = draw , appChooseCursor = showFirstCursor , appHandleEvent = eventHandler , appStartEvent = return () - , appAttrMap = const $ forceAttrMap $ white `on` black + , appAttrMap = const myAttrMap } -draw :: Editor String () -> [Widget ()] -draw = return . renderEditor (vBox . map str) True +draw :: FileBrowser () -> [Widget ()] +draw = return . renderFileBrowser True -eventHandler :: BrickEvent () () -> EventM () (Editor String ()) () +eventHandler :: BrickEvent () () -> EventM () (FileBrowser ()) () eventHandler (VtyEvent (EvKey KEsc _)) = halt -eventHandler e = handleEditorEvent e +eventHandler (VtyEvent e) = handleFileBrowserEvent e +eventHandler _ = return () + +myAttrMap :: AttrMap +myAttrMap = attrMap (white `on` black) + [ ( fileBrowserSelectedAttr , black `on` white ) + ] main :: IO () -main = let - s = editor () Nothing "" - in void $ defaultMain app s +main = void $ newFileBrowser (const True) () Nothing + >>= defaultMain app --jl