brick 2.0 → 2.1
raw patch · 6 files changed
+40/−16 lines, 6 filesdep +vty-unixdep ~microlensPVP ok
version bump matches the API change (PVP)
Dependencies added: vty-unix
Dependency ranges changed: microlens
API changes (from Hackage documentation)
+ Brick.Main: customMainWithDefaultVty :: Ord n => Maybe (BChan e) -> App s e n -> s -> IO (s, Vty)
- Brick.BorderMap: eBottomL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.BorderMap: eBottomL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.BorderMap: eLeftL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.BorderMap: eLeftL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.BorderMap: eRightL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.BorderMap: eRightL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.BorderMap: eTopL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.BorderMap: eTopL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.Types: availHeightL :: forall n_azaX. Lens' (Context n_azaX) Int
+ Brick.Types: availHeightL :: forall n_awxS. Lens' (Context n_awxS) Int
- Brick.Types: availWidthL :: forall n_azaX. Lens' (Context n_azaX) Int
+ Brick.Types: availWidthL :: forall n_awxS. Lens' (Context n_awxS) Int
- Brick.Types: bordersL :: forall n_azb1. Lens' (Result n_azb1) (BorderMap DynBorder)
+ Brick.Types: bordersL :: forall n_awxW. Lens' (Result n_awxW) (BorderMap DynBorder)
- Brick.Types: ctxAttrMapL :: forall n_azaX. Lens' (Context n_azaX) AttrMap
+ Brick.Types: ctxAttrMapL :: forall n_awxS. Lens' (Context n_awxS) AttrMap
- Brick.Types: ctxAttrNameL :: forall n_azaX. Lens' (Context n_azaX) AttrName
+ Brick.Types: ctxAttrNameL :: forall n_awxS. Lens' (Context n_awxS) AttrName
- Brick.Types: ctxBorderStyleL :: forall n_azaX. Lens' (Context n_azaX) BorderStyle
+ Brick.Types: ctxBorderStyleL :: forall n_awxS. Lens' (Context n_awxS) BorderStyle
- Brick.Types: ctxDynBordersL :: forall n_azaX. Lens' (Context n_azaX) Bool
+ Brick.Types: ctxDynBordersL :: forall n_awxS. Lens' (Context n_awxS) Bool
- Brick.Types: ctxHScrollBarOrientationL :: forall n_azaX. Lens' (Context n_azaX) (Maybe HScrollBarOrientation)
+ Brick.Types: ctxHScrollBarOrientationL :: forall n_awxS. Lens' (Context n_awxS) (Maybe HScrollBarOrientation)
- Brick.Types: ctxHScrollBarRendererL :: forall n_azaX. Lens' (Context n_azaX) (Maybe (HScrollbarRenderer n_azaX))
+ Brick.Types: ctxHScrollBarRendererL :: forall n_awxS. Lens' (Context n_awxS) (Maybe (HScrollbarRenderer n_awxS))
- Brick.Types: ctxVScrollBarOrientationL :: forall n_azaX. Lens' (Context n_azaX) (Maybe VScrollBarOrientation)
+ Brick.Types: ctxVScrollBarOrientationL :: forall n_awxS. Lens' (Context n_awxS) (Maybe VScrollBarOrientation)
- Brick.Types: ctxVScrollBarRendererL :: forall n_azaX. Lens' (Context n_azaX) (Maybe (VScrollbarRenderer n_azaX))
+ Brick.Types: ctxVScrollBarRendererL :: forall n_awxS. Lens' (Context n_awxS) (Maybe (VScrollbarRenderer n_awxS))
- Brick.Types: cursorLocationL :: forall n_azb2. Lens' (CursorLocation n_azb2) Location
+ Brick.Types: cursorLocationL :: forall n_awxX. Lens' (CursorLocation n_awxX) Location
- Brick.Types: cursorLocationNameL :: forall n_azb2 n_aBBt. Lens (CursorLocation n_azb2) (CursorLocation n_aBBt) (Maybe n_azb2) (Maybe n_aBBt)
+ Brick.Types: cursorLocationNameL :: forall n_awxX n_az7z. Lens (CursorLocation n_awxX) (CursorLocation n_az7z) (Maybe n_awxX) (Maybe n_az7z)
- Brick.Types: cursorsL :: forall n_azb1. Lens' (Result n_azb1) [CursorLocation n_azb1]
+ Brick.Types: cursorsL :: forall n_awxW. Lens' (Result n_awxW) [CursorLocation n_awxW]
- Brick.Types: eBottomL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.Types: eBottomL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.Types: eLeftL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.Types: eLeftL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.Types: eRightL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.Types: eRightL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.Types: eTopL :: forall a_aeFw. Lens' (Edges a_aeFw) a_aeFw
+ Brick.Types: eTopL :: forall a_agjP. Lens' (Edges a_agjP) a_agjP
- Brick.Types: extentsL :: forall n_azb1. Lens' (Result n_azb1) [Extent n_azb1]
+ Brick.Types: extentsL :: forall n_awxW. Lens' (Result n_awxW) [Extent n_awxW]
- Brick.Types: imageL :: forall n_azb1. Lens' (Result n_azb1) Image
+ Brick.Types: imageL :: forall n_awxW. Lens' (Result n_awxW) Image
- Brick.Types: visibilityRequestsL :: forall n_azb1. Lens' (Result n_azb1) [VisibilityRequest]
+ Brick.Types: visibilityRequestsL :: forall n_awxW. Lens' (Result n_awxW) [VisibilityRequest]
- Brick.Types: windowHeightL :: forall n_azaX. Lens' (Context n_azaX) Int
+ Brick.Types: windowHeightL :: forall n_awxS. Lens' (Context n_awxS) Int
- Brick.Types: windowWidthL :: forall n_azaX. Lens' (Context n_azaX) Int
+ Brick.Types: windowWidthL :: forall n_awxS. Lens' (Context n_awxS) Int
- Brick.Widgets.Dialog: dialogButtonsL :: forall a_a1lef n_a1leg a_a1lf3. Lens (Dialog a_a1lef n_a1leg) (Dialog a_a1lf3 n_a1leg) [(String, n_a1leg, a_a1lef)] [(String, n_a1leg, a_a1lf3)]
+ Brick.Widgets.Dialog: dialogButtonsL :: forall a_a1riV n_a1riW a_a1rjT. Lens (Dialog a_a1riV n_a1riW) (Dialog a_a1rjT n_a1riW) [(String, n_a1riW, a_a1riV)] [(String, n_a1riW, a_a1rjT)]
- Brick.Widgets.Dialog: dialogTitleL :: forall a_a1lef n_a1leg. Lens' (Dialog a_a1lef n_a1leg) (Maybe (Widget n_a1leg))
+ Brick.Widgets.Dialog: dialogTitleL :: forall a_a1riV n_a1riW. Lens' (Dialog a_a1riV n_a1riW) (Maybe (Widget n_a1riW))
- Brick.Widgets.Dialog: dialogWidthL :: forall a_a1lef n_a1leg. Lens' (Dialog a_a1lef n_a1leg) Int
+ Brick.Widgets.Dialog: dialogWidthL :: forall a_a1riV n_a1riW. Lens' (Dialog a_a1riV n_a1riW) Int
- Brick.Widgets.Edit: editContentsL :: forall t_a1ewE n_a1ewF t_a1exj. Lens (Editor t_a1ewE n_a1ewF) (Editor t_a1exj n_a1ewF) (TextZipper t_a1ewE) (TextZipper t_a1exj)
+ Brick.Widgets.Edit: editContentsL :: forall t_a1jrt n_a1jru t_a1jse. Lens (Editor t_a1jrt n_a1jru) (Editor t_a1jse n_a1jru) (TextZipper t_a1jrt) (TextZipper t_a1jse)
- Brick.Widgets.FileBrowser: fileBrowserEntriesG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) (List n_a1wth FileInfo)
+ Brick.Widgets.FileBrowser: fileBrowserEntriesG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) (List n_a1E0y FileInfo)
- Brick.Widgets.FileBrowser: fileBrowserEntryFilterG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) (Maybe (FileInfo -> Bool))
+ Brick.Widgets.FileBrowser: fileBrowserEntryFilterG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) (Maybe (FileInfo -> Bool))
- Brick.Widgets.FileBrowser: fileBrowserExceptionG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) (Maybe IOException)
+ Brick.Widgets.FileBrowser: fileBrowserExceptionG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) (Maybe IOException)
- Brick.Widgets.FileBrowser: fileBrowserLatestResultsG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) [FileInfo]
+ Brick.Widgets.FileBrowser: fileBrowserLatestResultsG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) [FileInfo]
- Brick.Widgets.FileBrowser: fileBrowserNameG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) n_a1wth
+ Brick.Widgets.FileBrowser: fileBrowserNameG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) n_a1E0y
- Brick.Widgets.FileBrowser: fileBrowserSearchStringG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) (Maybe Text)
+ Brick.Widgets.FileBrowser: fileBrowserSearchStringG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) (Maybe Text)
- Brick.Widgets.FileBrowser: fileBrowserSelectableG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) (FileInfo -> Bool)
+ Brick.Widgets.FileBrowser: fileBrowserSelectableG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) (FileInfo -> Bool)
- Brick.Widgets.FileBrowser: fileBrowserSelectableL :: forall n_a1wth. Lens' (FileBrowser n_a1wth) (FileInfo -> Bool)
+ Brick.Widgets.FileBrowser: fileBrowserSelectableL :: forall n_a1E0y. Lens' (FileBrowser n_a1E0y) (FileInfo -> Bool)
- Brick.Widgets.FileBrowser: fileBrowserSelectedFilesG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) (Set String)
+ Brick.Widgets.FileBrowser: fileBrowserSelectedFilesG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) (Set String)
- Brick.Widgets.FileBrowser: fileBrowserWorkingDirectoryG :: forall n_a1wth. SimpleGetter (FileBrowser n_a1wth) FilePath
+ Brick.Widgets.FileBrowser: fileBrowserWorkingDirectoryG :: forall n_a1E0y. SimpleGetter (FileBrowser n_a1E0y) FilePath
- Brick.Widgets.List: listElementsL :: forall n_a1r20 t_a1r21 e_a1r22 t_a1rhe e_a1rhf. Lens (GenericList n_a1r20 t_a1r21 e_a1r22) (GenericList n_a1r20 t_a1rhe e_a1rhf) (t_a1r21 e_a1r22) (t_a1rhe e_a1rhf)
+ Brick.Widgets.List: listElementsL :: forall n_a1xDF t_a1xDG e_a1xDH t_a1xTg e_a1xTh. Lens (GenericList n_a1xDF t_a1xDG e_a1xDH) (GenericList n_a1xDF t_a1xTg e_a1xTh) (t_a1xDG e_a1xDH) (t_a1xTg e_a1xTh)
- Brick.Widgets.List: listItemHeightL :: forall n_a1r20 t_a1r21 e_a1r22. Lens' (GenericList n_a1r20 t_a1r21 e_a1r22) Int
+ Brick.Widgets.List: listItemHeightL :: forall n_a1xDF t_a1xDG e_a1xDH. Lens' (GenericList n_a1xDF t_a1xDG e_a1xDH) Int
- Brick.Widgets.List: listNameL :: forall n_a1r20 t_a1r21 e_a1r22 n_a1rhg. Lens (GenericList n_a1r20 t_a1r21 e_a1r22) (GenericList n_a1rhg t_a1r21 e_a1r22) n_a1r20 n_a1rhg
+ Brick.Widgets.List: listNameL :: forall n_a1xDF t_a1xDG e_a1xDH n_a1xTi. Lens (GenericList n_a1xDF t_a1xDG e_a1xDH) (GenericList n_a1xTi t_a1xDG e_a1xDH) n_a1xDF n_a1xTi
- Brick.Widgets.List: listSelectedL :: forall n_a1r20 t_a1r21 e_a1r22. Lens' (GenericList n_a1r20 t_a1r21 e_a1r22) (Maybe Int)
+ Brick.Widgets.List: listSelectedL :: forall n_a1xDF t_a1xDG e_a1xDH. Lens' (GenericList n_a1xDF t_a1xDG e_a1xDH) (Maybe Int)
Files
- CHANGELOG.md +8/−0
- brick.cabal +4/−4
- programs/CustomEventDemo.hs +2/−5
- programs/TailDemo.hs +1/−2
- src/Brick/Main.hs +22/−4
- tests/Render.hs +3/−1
CHANGELOG.md view
@@ -2,6 +2,14 @@ Brick changelog --------------- +2.1+---++API changes:++* Added `Brick.Main.customMainWithDefaultVty` as an alternative way to+ initialize Brick.+ 2.0 ---
brick.cabal view
@@ -1,5 +1,5 @@ name: brick-version: 2.0+version: 2.1 synopsis: A declarative terminal user interface library description: Write terminal user interfaces (TUIs) painlessly with 'brick'! You@@ -94,7 +94,7 @@ Brick.Types.Internal Brick.Widgets.Internal - build-depends: base >= 4.9.0.0 && < 4.19.0.0,+ build-depends: base >= 4.9.0.0 && < 4.21.0.0, vty >= 6.0, vty-crossplatform, bimap >= 0.5 && < 0.6,@@ -113,7 +113,7 @@ text, text-zipper >= 0.13, template-haskell,- deepseq >= 1.3 && < 1.5,+ deepseq >= 1.3 && < 1.6, unix-compat, bytestring, word-wrap >= 0.2@@ -453,7 +453,6 @@ build-depends: base, brick, vty,- vty-crossplatform, text, microlens >= 0.3.0.0, microlens-th,@@ -576,4 +575,5 @@ microlens, vector, vty,+ vty-unix, QuickCheck
programs/CustomEventDemo.hs view
@@ -12,13 +12,12 @@ import Data.Monoid #endif import qualified Graphics.Vty as V-import Graphics.Vty.CrossPlatform (mkVty) import Brick.BChan import Brick.Main ( App(..) , showFirstCursor- , customMain+ , customMainWithDefaultVty , halt ) import Brick.AttrMap@@ -83,6 +82,4 @@ writeBChan chan Counter threadDelay 1000000 - let buildVty = mkVty V.defaultConfig- initialVty <- buildVty- void $ customMain initialVty buildVty (Just chan) theApp initialState+ void $ customMainWithDefaultVty (Just chan) theApp initialState
programs/TailDemo.hs view
@@ -143,10 +143,9 @@ main :: IO () main = do- vty <- mkVty V.defaultConfig chan <- newBChan 10 -- Run thread to simulate incoming data void $ forkIO $ generateLines chan - void $ customMain vty (mkVty V.defaultConfig) (Just chan) app initialState+ void $ customMainWithDefaultVty (Just chan) app initialState
src/Brick/Main.hs view
@@ -5,6 +5,7 @@ , defaultMain , customMain , customMainWithVty+ , customMainWithDefaultVty , simpleMain , resizeOrQuit , simpleApp@@ -130,10 +131,8 @@ -> s -- ^ The initial application state. -> IO s-defaultMain app st = do- let builder = mkVty defaultConfig- initialVty <- builder- customMain initialVty builder Nothing app st+defaultMain app st =+ fst <$> customMainWithDefaultVty Nothing app st -- | A simple main entry point which takes a widget and renders it. This -- event loop terminates when the user presses any key, but terminal@@ -234,6 +233,25 @@ shutdown vty restoreInitialState return s++-- | Like 'customMainWithVty', except that Vty is initialized with the+-- default configuration.+customMainWithDefaultVty :: (Ord n)+ => Maybe (BChan e)+ -- ^ An event channel for sending custom+ -- events to the event loop (you write to this+ -- channel, the event loop reads from it).+ -- Provide 'Nothing' if you don't plan on+ -- sending custom events.+ -> App s e n+ -- ^ The application.+ -> s+ -- ^ The initial application state.+ -> IO (s, Vty)+customMainWithDefaultVty mUserChan app initialAppState = do+ let builder = mkVty defaultConfig+ vty <- builder+ customMainWithVty vty builder mUserChan app initialAppState -- | Like 'customMain', except the last 'Vty' handle used by the -- application is returned without being shut down with 'shutdown'. This
tests/Render.hs view
@@ -10,6 +10,8 @@ import Data.Monoid #endif import qualified Graphics.Vty as V+import qualified Graphics.Vty.Platform.Unix.Output as VU+import qualified Graphics.Vty.Platform.Unix.Settings as VU import Brick.Widgets.Border (hBorder) import Control.Exception (SomeException, try) @@ -18,7 +20,7 @@ renderDisplay :: Ord n => [Widget n] -> IO () renderDisplay ws = do- outp <- V.outputForConfig V.defaultConfig+ outp <- VU.buildOutput =<< VU.defaultSettings ctx <- V.displayContext outp region V.outputPicture ctx (renderWidget Nothing ws region) V.releaseDisplay outp