packages feed

brick 0.2.1 → 0.2.2

raw patch · 3 files changed

+24/−11 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Brick.AttrMap: instance Default AttrMap
- Brick.AttrMap: instance Default AttrName
- Brick.AttrMap: instance Eq AttrName
- Brick.AttrMap: instance IsString AttrName
- Brick.AttrMap: instance Monoid AttrName
- Brick.AttrMap: instance Ord AttrName
- Brick.AttrMap: instance Show AttrMap
- Brick.AttrMap: instance Show AttrName
- Brick.Main: appAttrMap :: App s e -> s -> AttrMap
- Brick.Main: appChooseCursor :: App s e -> s -> [CursorLocation] -> Maybe CursorLocation
- Brick.Main: appDraw :: App s e -> s -> [Widget]
- Brick.Main: appHandleEvent :: App s e -> s -> e -> EventM (Next s)
- Brick.Main: appLiftVtyEvent :: App s e -> Event -> e
- Brick.Main: appStartEvent :: App s e -> s -> EventM s
- Brick.Markup: instance GetAttr Attr
- Brick.Markup: instance GetAttr AttrName
- Brick.Types: _vpLeft :: Viewport -> Int
- Brick.Types: _vpSize :: Viewport -> DisplayRegion
- Brick.Types: _vpTop :: Viewport -> Int
- Brick.Types: cursorLocation :: CursorLocation -> !Location
- Brick.Types: cursorLocationName :: CursorLocation -> !(Maybe Name)
- Brick.Types: cursors :: Result -> [CursorLocation]
- Brick.Types: hSize :: Widget -> Size
- Brick.Types: image :: Result -> Image
- Brick.Types: instance Default Result
- Brick.Types: instance Eq Size
- Brick.Types: instance Ord Size
- Brick.Types: instance Show Result
- Brick.Types: instance Show Size
- Brick.Types: instance TerminalLocation CursorLocation
- Brick.Types: loc :: Location -> (Int, Int)
- Brick.Types: render :: Widget -> RenderM Result
- Brick.Types: vSize :: Widget -> Size
- Brick.Types: visibilityRequests :: Result -> [VisibilityRequest]
- Brick.Types: vrPosition :: VisibilityRequest -> Location
- Brick.Types: vrSize :: VisibilityRequest -> DisplayRegion
- Brick.Widgets.Border.Style: bsCornerBL :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsCornerBR :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsCornerTL :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsCornerTR :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsHorizontal :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsIntersectB :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsIntersectFull :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsIntersectL :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsIntersectR :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsIntersectT :: BorderStyle -> Char
- Brick.Widgets.Border.Style: bsVertical :: BorderStyle -> Char
- Brick.Widgets.Border.Style: instance Default BorderStyle
- Brick.Widgets.Border.Style: instance Read BorderStyle
- Brick.Widgets.Border.Style: instance Show BorderStyle
- Brick.Widgets.Dialog: instance HandleEvent (Dialog a)
- Brick.Widgets.Edit: instance HandleEvent Editor
- Brick.Widgets.List: instance HandleEvent (List e)
- Data.Text.Markup: instance Default a => IsString (Markup a)
- Data.Text.Markup: instance Monoid (Markup a)
- Data.Text.Markup: instance Show a => Show (Markup a)
+ Brick.AttrMap: instance Data.Default.Class.Default Brick.AttrMap.AttrMap
+ Brick.AttrMap: instance Data.Default.Class.Default Brick.AttrMap.AttrName
+ Brick.AttrMap: instance Data.String.IsString Brick.AttrMap.AttrName
+ Brick.AttrMap: instance GHC.Base.Monoid Brick.AttrMap.AttrName
+ Brick.AttrMap: instance GHC.Classes.Eq Brick.AttrMap.AttrName
+ Brick.AttrMap: instance GHC.Classes.Ord Brick.AttrMap.AttrName
+ Brick.AttrMap: instance GHC.Show.Show Brick.AttrMap.AttrMap
+ Brick.AttrMap: instance GHC.Show.Show Brick.AttrMap.AttrName
+ Brick.Main: [appAttrMap] :: App s e -> s -> AttrMap
+ Brick.Main: [appChooseCursor] :: App s e -> s -> [CursorLocation] -> Maybe CursorLocation
+ Brick.Main: [appDraw] :: App s e -> s -> [Widget]
+ Brick.Main: [appHandleEvent] :: App s e -> s -> e -> EventM (Next s)
+ Brick.Main: [appLiftVtyEvent] :: App s e -> Event -> e
+ Brick.Main: [appStartEvent] :: App s e -> s -> EventM s
+ Brick.Markup: instance Brick.Markup.GetAttr Brick.AttrMap.AttrName
+ Brick.Markup: instance Brick.Markup.GetAttr Graphics.Vty.Attributes.Attr
+ Brick.Types: [_vpLeft] :: Viewport -> Int
+ Brick.Types: [_vpSize] :: Viewport -> DisplayRegion
+ Brick.Types: [_vpTop] :: Viewport -> Int
+ Brick.Types: [cursorLocationName] :: CursorLocation -> !(Maybe Name)
+ Brick.Types: [cursorLocation] :: CursorLocation -> !Location
+ Brick.Types: [cursors] :: Result -> [CursorLocation]
+ Brick.Types: [hSize] :: Widget -> Size
+ Brick.Types: [image] :: Result -> Image
+ Brick.Types: [loc] :: Location -> (Int, Int)
+ Brick.Types: [render] :: Widget -> RenderM Result
+ Brick.Types: [vSize] :: Widget -> Size
+ Brick.Types: [visibilityRequests] :: Result -> [VisibilityRequest]
+ Brick.Types: [vrPosition] :: VisibilityRequest -> Location
+ Brick.Types: [vrSize] :: VisibilityRequest -> DisplayRegion
+ Brick.Types: instance Brick.Types.Internal.TerminalLocation Brick.Types.Internal.CursorLocation
+ Brick.Types: instance Data.Default.Class.Default Brick.Types.Result
+ Brick.Types: instance GHC.Classes.Eq Brick.Types.Size
+ Brick.Types: instance GHC.Classes.Ord Brick.Types.Size
+ Brick.Types: instance GHC.Show.Show Brick.Types.Result
+ Brick.Types: instance GHC.Show.Show Brick.Types.Size
+ Brick.Widgets.Border.Style: [bsCornerBL] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsCornerBR] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsCornerTL] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsCornerTR] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsHorizontal] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsIntersectB] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsIntersectFull] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsIntersectL] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsIntersectR] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsIntersectT] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: [bsVertical] :: BorderStyle -> Char
+ Brick.Widgets.Border.Style: instance Data.Default.Class.Default Brick.Widgets.Border.Style.BorderStyle
+ Brick.Widgets.Border.Style: instance GHC.Read.Read Brick.Widgets.Border.Style.BorderStyle
+ Brick.Widgets.Border.Style: instance GHC.Show.Show Brick.Widgets.Border.Style.BorderStyle
+ Brick.Widgets.Dialog: instance Brick.Types.HandleEvent (Brick.Widgets.Dialog.Dialog a)
+ Brick.Widgets.Edit: instance Brick.Types.HandleEvent Brick.Widgets.Edit.Editor
+ Brick.Widgets.List: instance Brick.Types.HandleEvent (Brick.Widgets.List.List e)
+ Data.Text.Markup: instance Data.Default.Class.Default a => Data.String.IsString (Data.Text.Markup.Markup a)
+ Data.Text.Markup: instance GHC.Base.Monoid (Data.Text.Markup.Markup a)
+ Data.Text.Markup: instance GHC.Show.Show a => GHC.Show.Show (Data.Text.Markup.Markup a)
- Brick.Types: handleEventLensed :: HandleEvent b => a -> Lens' a b -> Event -> EventM a
+ Brick.Types: handleEventLensed :: (HandleEvent b) => a -> Lens' a b -> Event -> EventM a
- Brick.Util: clamp :: Ord a => a -> a -> a -> a
+ Brick.Util: clamp :: (Ord a) => a -> a -> a -> a
- Brick.Widgets.Dialog: dialogButtonsL :: Lens (Dialog a_auzL) (Dialog a_auAh) [(String, a_auzL)] [(String, a_auAh)]
+ Brick.Widgets.Dialog: dialogButtonsL :: Lens (Dialog a_aGrY) (Dialog a_aGst) [(String, a_aGrY)] [(String, a_aGst)]
- Brick.Widgets.Dialog: dialogNameL :: Lens' (Dialog a_auzL) Name
+ Brick.Widgets.Dialog: dialogNameL :: Lens' (Dialog a_aGrY) Name
- Brick.Widgets.Dialog: dialogSelectedIndexL :: Lens' (Dialog a_auzL) (Maybe Int)
+ Brick.Widgets.Dialog: dialogSelectedIndexL :: Lens' (Dialog a_aGrY) (Maybe Int)
- Brick.Widgets.Dialog: dialogTitleL :: Lens' (Dialog a_auzL) (Maybe String)
+ Brick.Widgets.Dialog: dialogTitleL :: Lens' (Dialog a_aGrY) (Maybe String)
- Brick.Widgets.Dialog: dialogWidthL :: Lens' (Dialog a_auzL) Int
+ Brick.Widgets.Dialog: dialogWidthL :: Lens' (Dialog a_aGrY) Int
- Brick.Widgets.List: listElementsL :: Lens (List e_az2p) (List e_az3D) (Vector e_az2p) (Vector e_az3D)
+ Brick.Widgets.List: listElementsL :: Lens (List e_aMcj) (List e_aMdd) (Vector e_aMcj) (Vector e_aMdd)
- Brick.Widgets.List: listItemHeightL :: Lens' (List e_az2p) Int
+ Brick.Widgets.List: listItemHeightL :: Lens' (List e_aMcj) Int
- Brick.Widgets.List: listNameL :: Lens' (List e_az2p) Name
+ Brick.Widgets.List: listNameL :: Lens' (List e_aMcj) Name
- Brick.Widgets.List: listSelectedL :: Lens' (List e_az2p) (Maybe Int)
+ Brick.Widgets.List: listSelectedL :: Lens' (List e_aMcj) (Maybe Int)
- Data.Text.Markup: fromText :: Default a => Text -> Markup a
+ Data.Text.Markup: fromText :: (Default a) => Text -> Markup a
- Data.Text.Markup: markupSet :: Eq a => (Int, Int) -> a -> Markup a -> Markup a
+ Data.Text.Markup: markupSet :: (Eq a) => (Int, Int) -> a -> Markup a -> Markup a
- Data.Text.Markup: markupToList :: Eq a => Markup a -> [(Text, a)]
+ Data.Text.Markup: markupToList :: (Eq a) => Markup a -> [(Text, a)]
- Data.Text.Markup: toText :: Eq a => Markup a -> Text
+ Data.Text.Markup: toText :: (Eq a) => Markup a -> Text

Files

CHANGELOG.md view
@@ -2,6 +2,14 @@ Brick changelog --------------- +0.2.2+-----++Demo changes:+* Improved the list demo by using characters instead of integers in the+  demo list and cleaned up item-adding code (thanks Jøhannes Lippmann+  <code@schauderbasis.de>)+ 0.2.1 ----- 
brick.cabal view
@@ -1,5 +1,5 @@ name:                brick-version:             0.2.1+version:             0.2.2 synopsis:            A declarative terminal user interface library description:   Write terminal applications painlessly with 'brick'! You write an
programs/ListDemo.hs view
@@ -4,6 +4,7 @@ import Control.Lens ((^.)) import Control.Monad (void) import Data.Monoid+import Data.Maybe (fromMaybe) import qualified Graphics.Vty as V  import qualified Brick.Main as M@@ -26,7 +27,7 @@   ) import Brick.Util (fg, on) -drawUI :: L.List Int -> [Widget]+drawUI :: (Show a) => L.List a -> [Widget] drawUI l = [ui]     where         label = str "Item " <+> cur <+> str " of " <+> total@@ -44,12 +45,13 @@                               , C.hCenter $ str "Press Esc to exit."                               ] -appEvent :: L.List Int -> V.Event -> T.EventM (T.Next (L.List Int))+appEvent :: L.List Char -> V.Event -> T.EventM (T.Next (L.List Char)) appEvent l e =     case e of         V.EvKey (V.KChar '+') [] ->-            let el = V.length $ l^.(L.listElementsL)-            in M.continue $ L.listInsert el el l+            let el = nextElement (L.listElements l)+                pos = V.length $ l^.(L.listElementsL)+            in M.continue $ L.listInsert pos el l          V.EvKey (V.KChar '-') [] ->             case l^.(L.listSelectedL) of@@ -59,16 +61,19 @@         V.EvKey V.KEsc [] -> M.halt l          ev -> M.continue =<< T.handleEvent ev l+    where+      nextElement :: V.Vector Char -> Char+      nextElement v = fromMaybe '?' $ V.find (flip V.notElem v) (V.fromList ['a' .. 'z']) -listDrawElement :: Bool -> Int -> Widget-listDrawElement sel i =+listDrawElement :: (Show a) => Bool -> a -> Widget+listDrawElement sel a =     let selStr s = if sel                    then withAttr customAttr (str $ "<" <> s <> ">")                    else str s-    in C.hCenter $ str "Item " <+> (selStr $ show i)+    in C.hCenter $ str "Item " <+> (selStr $ show a) -initialState :: L.List Int-initialState = L.list (T.Name "list") (V.fromList [0, 1, 2]) 1+initialState :: L.List Char+initialState = L.list (T.Name "list") (V.fromList ['a','b','c']) 1  customAttr :: A.AttrName customAttr = L.listSelectedAttr <> "custom"@@ -80,7 +85,7 @@     , (customAttr,            fg V.cyan)     ] -theApp :: M.App (L.List Int) V.Event+theApp :: M.App (L.List Char) V.Event theApp =     M.App { M.appDraw = drawUI           , M.appChooseCursor = M.showFirstCursor