brick-2.4: A declarative terminal user interface library
Safe HaskellNone
LanguageHaskell2010

Brick.Types

Description

Basic types used by this library.

Synopsis

The Widget type

data Widget n Source #

The type of widgets.

Constructors

Widget 

Fields

Location types and lenses

data Location Source #

A terminal screen location.

Constructors

Location 

Fields

  • loc :: (Int, Int)

    (Column, Row)

Instances

Instances details
TerminalLocation Location Source # 
Instance details

Defined in Brick.Types.Internal

NFData Location Source # 
Instance details

Defined in Brick.Types.Common

Methods

rnf :: Location -> ()

Monoid Location Source # 
Instance details

Defined in Brick.Types.Common

Semigroup Location Source # 
Instance details

Defined in Brick.Types.Common

Methods

(<>) :: Location -> Location -> Location

sconcat :: NonEmpty Location -> Location

stimes :: Integral b => b -> Location -> Location

Generic Location Source # 
Instance details

Defined in Brick.Types.Common

Associated Types

type Rep Location 
Instance details

Defined in Brick.Types.Common

type Rep Location = D1 ('MetaData "Location" "Brick.Types.Common" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Location" 'PrefixI 'True) (S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Int, Int))))

Methods

from :: Location -> Rep Location x

to :: Rep Location x -> Location

Read Location Source # 
Instance details

Defined in Brick.Types.Common

Methods

readsPrec :: Int -> ReadS Location

readList :: ReadS [Location]

readPrec :: ReadPrec Location

readListPrec :: ReadPrec [Location]

Show Location Source # 
Instance details

Defined in Brick.Types.Common

Methods

showsPrec :: Int -> Location -> ShowS

show :: Location -> String

showList :: [Location] -> ShowS

Eq Location Source # 
Instance details

Defined in Brick.Types.Common

Methods

(==) :: Location -> Location -> Bool

(/=) :: Location -> Location -> Bool

Ord Location Source # 
Instance details

Defined in Brick.Types.Common

Methods

compare :: Location -> Location -> Ordering

(<) :: Location -> Location -> Bool

(<=) :: Location -> Location -> Bool

(>) :: Location -> Location -> Bool

(>=) :: Location -> Location -> Bool

max :: Location -> Location -> Location

min :: Location -> Location -> Location

Field1 Location Location Int Int Source # 
Instance details

Defined in Brick.Types.Common

Methods

_1 :: Lens Location Location Int Int

Field2 Location Location Int Int Source # 
Instance details

Defined in Brick.Types.Common

Methods

_2 :: Lens Location Location Int Int

type Rep Location Source # 
Instance details

Defined in Brick.Types.Common

type Rep Location = D1 ('MetaData "Location" "Brick.Types.Common" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Location" 'PrefixI 'True) (S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Int, Int))))

locL :: Lens' Location (Int, Int) Source #

class TerminalLocation a where Source #

The class of types that behave like terminal locations.

Methods

locationColumnL :: Lens' a Int Source #

Get the column out of the value

locationColumn :: a -> Int Source #

locationRowL :: Lens' a Int Source #

Get the row out of the value

locationRow :: a -> Int Source #

Instances

Instances details
TerminalLocation Location Source # 
Instance details

Defined in Brick.Types.Internal

TerminalLocation (CursorLocation n) Source # 
Instance details

Defined in Brick.Types

data CursorLocation n Source #

A cursor location. These are returned by the rendering process.

Constructors

CursorLocation 

Fields

Instances

Instances details
TerminalLocation (CursorLocation n) Source # 
Instance details

Defined in Brick.Types

NFData n => NFData (CursorLocation n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: CursorLocation n -> ()

Generic (CursorLocation n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (CursorLocation n) 
Instance details

Defined in Brick.Types.Internal

type Rep (CursorLocation n) = D1 ('MetaData "CursorLocation" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "CursorLocation" 'PrefixI 'True) (S1 ('MetaSel ('Just "cursorLocation") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Location) :*: (S1 ('MetaSel ('Just "cursorLocationName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe n)) :*: S1 ('MetaSel ('Just "cursorLocationVisible") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool))))

Methods

from :: CursorLocation n -> Rep (CursorLocation n) x

to :: Rep (CursorLocation n) x -> CursorLocation n

Read n => Read (CursorLocation n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS (CursorLocation n)

readList :: ReadS [CursorLocation n]

readPrec :: ReadPrec (CursorLocation n)

readListPrec :: ReadPrec [CursorLocation n]

Show n => Show (CursorLocation n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> CursorLocation n -> ShowS

show :: CursorLocation n -> String

showList :: [CursorLocation n] -> ShowS

type Rep (CursorLocation n) Source # 
Instance details

Defined in Brick.Types.Internal

type Rep (CursorLocation n) = D1 ('MetaData "CursorLocation" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "CursorLocation" 'PrefixI 'True) (S1 ('MetaSel ('Just "cursorLocation") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Location) :*: (S1 ('MetaSel ('Just "cursorLocationName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe n)) :*: S1 ('MetaSel ('Just "cursorLocationVisible") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool))))

cursorLocationL :: forall n f. Functor f => (Location -> f Location) -> CursorLocation n -> f (CursorLocation n) Source #

cursorLocationNameL :: forall n1 n2 f. Functor f => (Maybe n1 -> f (Maybe n2)) -> CursorLocation n1 -> f (CursorLocation n2) Source #

Viewports

data Viewport Source #

Describes the state of a viewport as it appears as its most recent rendering.

Constructors

VP 

Fields

  • _vpLeft :: Int

    The column offset of left side of the viewport.

  • _vpTop :: Int

    The row offset of the top of the viewport.

  • _vpSize :: DisplayRegion

    The size of the viewport.

  • _vpContentSize :: DisplayRegion

    The size of the contents of the viewport.

Instances

Instances details
NFData Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: Viewport -> ()

Generic Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep Viewport 
Instance details

Defined in Brick.Types.Internal

type Rep Viewport = D1 ('MetaData "Viewport" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "VP" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_vpLeft") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "_vpTop") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :*: (S1 ('MetaSel ('Just "_vpSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DisplayRegion) :*: S1 ('MetaSel ('Just "_vpContentSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DisplayRegion))))

Methods

from :: Viewport -> Rep Viewport x

to :: Rep Viewport x -> Viewport

Read Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS Viewport

readList :: ReadS [Viewport]

readPrec :: ReadPrec Viewport

readListPrec :: ReadPrec [Viewport]

Show Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> Viewport -> ShowS

show :: Viewport -> String

showList :: [Viewport] -> ShowS

type Rep Viewport Source # 
Instance details

Defined in Brick.Types.Internal

type Rep Viewport = D1 ('MetaData "Viewport" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "VP" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_vpLeft") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "_vpTop") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :*: (S1 ('MetaSel ('Just "_vpSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DisplayRegion) :*: S1 ('MetaSel ('Just "_vpContentSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DisplayRegion))))

data ViewportType Source #

The type of viewports that indicates the direction(s) in which a viewport is scrollable.

Constructors

Vertical

Viewports of this type are scrollable only vertically.

Horizontal

Viewports of this type are scrollable only horizontally.

Both

Viewports of this type are scrollable vertically and horizontally.

Instances

Instances details
Show ViewportType Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> ViewportType -> ShowS

show :: ViewportType -> String

showList :: [ViewportType] -> ShowS

Eq ViewportType Source # 
Instance details

Defined in Brick.Types.Internal

Methods

(==) :: ViewportType -> ViewportType -> Bool

(/=) :: ViewportType -> ViewportType -> Bool

vpSize :: Lens' Viewport DisplayRegion Source #

vpTop :: Lens' Viewport Int Source #

vpLeft :: Lens' Viewport Int Source #

vpContentSize :: Lens' Viewport DisplayRegion Source #

data VScrollBarOrientation Source #

Orientations for vertical scroll bars.

Constructors

OnLeft 
OnRight 

Instances

Instances details
Show VScrollBarOrientation Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> VScrollBarOrientation -> ShowS

show :: VScrollBarOrientation -> String

showList :: [VScrollBarOrientation] -> ShowS

Eq VScrollBarOrientation Source # 
Instance details

Defined in Brick.Types.Internal

data HScrollBarOrientation Source #

Orientations for horizontal scroll bars.

Constructors

OnBottom 
OnTop 

Instances

Instances details
Show HScrollBarOrientation Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> HScrollBarOrientation -> ShowS

show :: HScrollBarOrientation -> String

showList :: [HScrollBarOrientation] -> ShowS

Eq HScrollBarOrientation Source # 
Instance details

Defined in Brick.Types.Internal

data VScrollbarRenderer n Source #

A vertical scroll bar renderer.

Constructors

VScrollbarRenderer 

Fields

  • renderVScrollbar :: Widget n

    How to render the body of the scroll bar. This should provide a widget that expands in whatever direction(s) this renderer will be used for. So, for example, this widget would need to be one that expands vertically such as fill. The same goes for the trough widget.

  • renderVScrollbarTrough :: Widget n

    How to render the "trough" of the scroll bar (the area to either side of the scroll bar body). This should expand as described in the documentation for the scroll bar field.

  • renderVScrollbarHandleBefore :: Widget n

    How to render the handle that appears at the top or left of the scrollbar. The result will be allowed to be at most one row high.

  • renderVScrollbarHandleAfter :: Widget n

    How to render the handle that appears at the bottom or right of the scrollbar. The result will be allowed to be at most one row high.

  • scrollbarWidthAllocation :: Int

    The number of columns that will be allocated to the scroll bar. This determines how much space the widgets of the scroll bar elements can take up. If they use less than this amount, padding will be applied between the scroll bar and the viewport contents.

data HScrollbarRenderer n Source #

A horizontal scroll bar renderer.

Constructors

HScrollbarRenderer 

Fields

  • renderHScrollbar :: Widget n

    How to render the body of the scroll bar. This should provide a widget that expands in whatever direction(s) this renderer will be used for. So, for example, this widget would need to be one that expands horizontally such as fill. The same goes for the trough widget.

  • renderHScrollbarTrough :: Widget n

    How to render the "trough" of the scroll bar (the area to either side of the scroll bar body). This should expand as described in the documentation for the scroll bar field.

  • renderHScrollbarHandleBefore :: Widget n

    How to render the handle that appears at the top or left of the scrollbar. The result will be allowed to be at most one column wide.

  • renderHScrollbarHandleAfter :: Widget n

    How to render the handle that appears at the bottom or right of the scrollbar. The result will be allowed to be at most one column wide.

  • scrollbarHeightAllocation :: Int

    The number of rows that will be allocated to the scroll bar. This determines how much space the widgets of the scroll bar elements can take up. If they use less than this amount, padding will be applied between the scroll bar and the viewport contents.

data ClickableScrollbarElement Source #

Clickable elements of a scroll bar.

Constructors

SBHandleBefore

The handle at the beginning (left/top) of the scroll bar.

SBHandleAfter

The handle at the end (right/bottom) of the scroll bar.

SBBar

The scroll bar itself.

SBTroughBefore

The trough before the scroll bar.

SBTroughAfter

The trough after the scroll bar.

Event-handling types and functions

data EventM n s a Source #

The monad in which event handlers run.

Instances

Instances details
MonadState s (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

get :: EventM n s s #

put :: s -> EventM n s () #

state :: (s -> (a, s)) -> EventM n s a

MonadIO (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

liftIO :: IO a -> EventM n s a

MonadCatch (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

catch :: (HasCallStack, Exception e) => EventM n s a -> (e -> EventM n s a) -> EventM n s a

MonadMask (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

mask :: HasCallStack => ((forall a. EventM n s a -> EventM n s a) -> EventM n s b) -> EventM n s b

uninterruptibleMask :: HasCallStack => ((forall a. EventM n s a -> EventM n s a) -> EventM n s b) -> EventM n s b

generalBracket :: HasCallStack => EventM n s a -> (a -> ExitCase b -> EventM n s c) -> (a -> EventM n s b) -> EventM n s (b, c)

MonadThrow (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

throwM :: (HasCallStack, Exception e) => e -> EventM n s a

Applicative (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

pure :: a -> EventM n s a

(<*>) :: EventM n s (a -> b) -> EventM n s a -> EventM n s b

liftA2 :: (a -> b -> c) -> EventM n s a -> EventM n s b -> EventM n s c

(*>) :: EventM n s a -> EventM n s b -> EventM n s b

(<*) :: EventM n s a -> EventM n s b -> EventM n s a

Functor (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

fmap :: (a -> b) -> EventM n s a -> EventM n s b

(<$) :: a -> EventM n s b -> EventM n s a

Monad (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

Methods

(>>=) :: EventM n s a -> (a -> EventM n s b) -> EventM n s b

(>>) :: EventM n s a -> EventM n s b -> EventM n s b

return :: a -> EventM n s a

Zoom (EventM n s) (EventM n t) s t Source # 
Instance details

Defined in Brick.Types.EventM

Methods

zoom :: LensLike' (Zoomed (EventM n s) c) t s -> EventM n s c -> EventM n t c #

type Zoomed (EventM n s) Source # 
Instance details

Defined in Brick.Types.EventM

type Zoomed (EventM n s)

data BrickEvent n e Source #

The type of events.

Constructors

VtyEvent Event

The event was a Vty event.

AppEvent e

The event was an application event.

MouseDown n Button [Modifier] Location

A mouse-down event on the specified region was received. The n value is the resource name of the clicked widget (see clickable).

MouseUp n (Maybe Button) Location

A mouse-up event on the specified region was received. The n value is the resource name of the clicked widget (see clickable).

Instances

Instances details
(Show e, Show n) => Show (BrickEvent n e) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> BrickEvent n e -> ShowS

show :: BrickEvent n e -> String

showList :: [BrickEvent n e] -> ShowS

(Eq e, Eq n) => Eq (BrickEvent n e) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

(==) :: BrickEvent n e -> BrickEvent n e -> Bool

(/=) :: BrickEvent n e -> BrickEvent n e -> Bool

(Ord e, Ord n) => Ord (BrickEvent n e) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

compare :: BrickEvent n e -> BrickEvent n e -> Ordering

(<) :: BrickEvent n e -> BrickEvent n e -> Bool

(<=) :: BrickEvent n e -> BrickEvent n e -> Bool

(>) :: BrickEvent n e -> BrickEvent n e -> Bool

(>=) :: BrickEvent n e -> BrickEvent n e -> Bool

max :: BrickEvent n e -> BrickEvent n e -> BrickEvent n e

min :: BrickEvent n e -> BrickEvent n e -> BrickEvent n e

nestEventM Source #

Arguments

:: a

The initial state to use in the nested action.

-> EventM n a b

The action to run.

-> EventM n s (a, b) 

Given a state value and an EventM that mutates that state, run the specified action and return both the resulting modified state and the result of the action itself.

nestEventM' Source #

Arguments

:: a

The initial state to use in the nested action.

-> EventM n a b

The action to run.

-> EventM n s a 

Given a state value and an EventM that mutates that state, run the specified action and return resulting modified state.

Rendering infrastructure

type RenderM n a = ReaderT (Context n) (State (RenderState n)) a Source #

The type of the rendering monad. This monad is used by the library's rendering routines to manage rendering state and communicate rendering parameters to widgets' rendering functions.

getContext :: RenderM n (Context n) Source #

Get the current rendering context.

The rendering context

data Context n Source #

The rendering context. This tells widgets how to render: how much space they have in which to render, which attribute they should use to render, which bordering style should be used, and the attribute map available for rendering.

attrL :: Getting r (Context n) Attr Source #

The rendering context's current drawing attribute.

availWidthL :: forall n f. Functor f => (Int -> f Int) -> Context n -> f (Context n) Source #

availHeightL :: forall n f. Functor f => (Int -> f Int) -> Context n -> f (Context n) Source #

windowWidthL :: forall n f. Functor f => (Int -> f Int) -> Context n -> f (Context n) Source #

windowHeightL :: forall n f. Functor f => (Int -> f Int) -> Context n -> f (Context n) Source #

ctxVScrollBarOrientationL :: forall n f. Functor f => (Maybe VScrollBarOrientation -> f (Maybe VScrollBarOrientation)) -> Context n -> f (Context n) Source #

ctxVScrollBarRendererL :: forall n f. Functor f => (Maybe (VScrollbarRenderer n) -> f (Maybe (VScrollbarRenderer n))) -> Context n -> f (Context n) Source #

ctxHScrollBarOrientationL :: forall n f. Functor f => (Maybe HScrollBarOrientation -> f (Maybe HScrollBarOrientation)) -> Context n -> f (Context n) Source #

ctxHScrollBarRendererL :: forall n f. Functor f => (Maybe (HScrollbarRenderer n) -> f (Maybe (HScrollbarRenderer n))) -> Context n -> f (Context n) Source #

ctxAttrMapL :: forall n f. Functor f => (AttrMap -> f AttrMap) -> Context n -> f (Context n) Source #

ctxAttrNameL :: forall n f. Functor f => (AttrName -> f AttrName) -> Context n -> f (Context n) Source #

ctxBorderStyleL :: forall n f. Functor f => (BorderStyle -> f BorderStyle) -> Context n -> f (Context n) Source #

ctxDynBordersL :: forall n f. Functor f => (Bool -> f Bool) -> Context n -> f (Context n) Source #

Rendering results

data Result n Source #

The type of result returned by a widget's rendering function. The result provides the image, cursor positions, and visibility requests that resulted from the rendering process.

Constructors

Result 

Fields

Instances

Instances details
NFData n => NFData (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: Result n -> ()

Generic (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (Result n) 
Instance details

Defined in Brick.Types.Internal

type Rep (Result n) = D1 ('MetaData "Result" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Result" 'PrefixI 'True) ((S1 ('MetaSel ('Just "image") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Image) :*: S1 ('MetaSel ('Just "cursors") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [CursorLocation n])) :*: (S1 ('MetaSel ('Just "visibilityRequests") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [VisibilityRequest]) :*: (S1 ('MetaSel ('Just "extents") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Extent n]) :*: S1 ('MetaSel ('Just "borders") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (BorderMap DynBorder))))))

Methods

from :: Result n -> Rep (Result n) x

to :: Rep (Result n) x -> Result n

Read n => Read (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS (Result n)

readList :: ReadS [Result n]

readPrec :: ReadPrec (Result n)

readListPrec :: ReadPrec [Result n]

Show n => Show (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> Result n -> ShowS

show :: Result n -> String

showList :: [Result n] -> ShowS

type Rep (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

type Rep (Result n) = D1 ('MetaData "Result" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Result" 'PrefixI 'True) ((S1 ('MetaSel ('Just "image") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Image) :*: S1 ('MetaSel ('Just "cursors") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [CursorLocation n])) :*: (S1 ('MetaSel ('Just "visibilityRequests") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [VisibilityRequest]) :*: (S1 ('MetaSel ('Just "extents") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Extent n]) :*: S1 ('MetaSel ('Just "borders") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (BorderMap DynBorder))))))

lookupAttrName :: AttrName -> RenderM n Attr Source #

Given an attribute name, obtain the attribute for the attribute name by consulting the context's attribute map.

data Extent n Source #

An extent of a named area: its size, location, and origin.

Constructors

Extent 

Fields

Instances

Instances details
NFData n => NFData (Extent n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: Extent n -> ()

Generic (Extent n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (Extent n) 
Instance details

Defined in Brick.Types.Internal

type Rep (Extent n) = D1 ('MetaData "Extent" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Extent" 'PrefixI 'True) (S1 ('MetaSel ('Just "extentName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 n) :*: (S1 ('MetaSel ('Just "extentUpperLeft") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Location) :*: S1 ('MetaSel ('Just "extentSize") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Int, Int)))))

Methods

from :: Extent n -> Rep (Extent n) x

to :: Rep (Extent n) x -> Extent n

Read n => Read (Extent n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS (Extent n)

readList :: ReadS [Extent n]

readPrec :: ReadPrec (Extent n)

readListPrec :: ReadPrec [Extent n]

Show n => Show (Extent n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> Extent n -> ShowS

show :: Extent n -> String

showList :: [Extent n] -> ShowS

type Rep (Extent n) Source # 
Instance details

Defined in Brick.Types.Internal

type Rep (Extent n) = D1 ('MetaData "Extent" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Extent" 'PrefixI 'True) (S1 ('MetaSel ('Just "extentName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 n) :*: (S1 ('MetaSel ('Just "extentUpperLeft") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Location) :*: S1 ('MetaSel ('Just "extentSize") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Int, Int)))))

Rendering result lenses

imageL :: forall n f. Functor f => (Image -> f Image) -> Result n -> f (Result n) Source #

cursorsL :: forall n f. Functor f => ([CursorLocation n] -> f [CursorLocation n]) -> Result n -> f (Result n) Source #

visibilityRequestsL :: forall n f. Functor f => ([VisibilityRequest] -> f [VisibilityRequest]) -> Result n -> f (Result n) Source #

extentsL :: forall n f. Functor f => ([Extent n] -> f [Extent n]) -> Result n -> f (Result n) Source #

Visibility requests

data VisibilityRequest Source #

Constructors

VR 

Fields

Instances

Instances details
NFData VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: VisibilityRequest -> ()

Generic VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep VisibilityRequest 
Instance details

Defined in Brick.Types.Internal

type Rep VisibilityRequest = D1 ('MetaData "VisibilityRequest" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "VR" 'PrefixI 'True) (S1 ('MetaSel ('Just "vrPosition") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Location) :*: S1 ('MetaSel ('Just "vrSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DisplayRegion)))
Read VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Show VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> VisibilityRequest -> ShowS

show :: VisibilityRequest -> String

showList :: [VisibilityRequest] -> ShowS

Eq VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

type Rep VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

type Rep VisibilityRequest = D1 ('MetaData "VisibilityRequest" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "VR" 'PrefixI 'True) (S1 ('MetaSel ('Just "vrPosition") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Location) :*: S1 ('MetaSel ('Just "vrSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DisplayRegion)))

vrSizeL :: Lens' VisibilityRequest DisplayRegion Source #

Making lenses

suffixLenses :: Name -> DecsQ Source #

A template haskell function to build lenses for a record type. This function differs from the makeLenses function in that it does not require the record fields to be prefixed with underscores and it adds an L suffix to lens names to make it clear that they are lenses.

suffixLensesWith :: String -> LensRules -> Name -> DecsQ Source #

A more general version of suffixLenses that allows customization of the lens-building rules and allows customization of the suffix.

Dynamic borders

bordersL :: forall n f. Functor f => (BorderMap DynBorder -> f (BorderMap DynBorder)) -> Result n -> f (Result n) Source #

data DynBorder Source #

Information about how to redraw a dynamic border character when it abuts another dynamic border character.

Constructors

DynBorder 

Fields

  • dbStyle :: BorderStyle

    The Chars to use when redrawing the border. Also used to filter connections: only dynamic borders with equal BorderStyles will connect to each other.

  • dbAttr :: Attr

    What Attr to use to redraw the border character. Also used to filter connections: only dynamic borders with equal Attrs will connect to each other.

  • dbSegments :: Edges BorderSegment
     

Instances

Instances details
NFData DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: DynBorder -> ()

Generic DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep DynBorder 
Instance details

Defined in Brick.Types.Internal

type Rep DynBorder = D1 ('MetaData "DynBorder" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "DynBorder" 'PrefixI 'True) (S1 ('MetaSel ('Just "dbStyle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BorderStyle) :*: (S1 ('MetaSel ('Just "dbAttr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Attr) :*: S1 ('MetaSel ('Just "dbSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Edges BorderSegment)))))

Methods

from :: DynBorder -> Rep DynBorder x

to :: Rep DynBorder x -> DynBorder

Read DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS DynBorder

readList :: ReadS [DynBorder]

readPrec :: ReadPrec DynBorder

readListPrec :: ReadPrec [DynBorder]

Show DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> DynBorder -> ShowS

show :: DynBorder -> String

showList :: [DynBorder] -> ShowS

Eq DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Methods

(==) :: DynBorder -> DynBorder -> Bool

(/=) :: DynBorder -> DynBorder -> Bool

type Rep DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

type Rep DynBorder = D1 ('MetaData "DynBorder" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "DynBorder" 'PrefixI 'True) (S1 ('MetaSel ('Just "dbStyle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BorderStyle) :*: (S1 ('MetaSel ('Just "dbAttr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Attr) :*: S1 ('MetaSel ('Just "dbSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Edges BorderSegment)))))

dbAttrL :: Lens' DynBorder Attr Source #

data BorderSegment Source #

A border character has four segments, one extending in each direction (horizontally and vertically) from the center of the character.

Constructors

BorderSegment 

Fields

  • bsAccept :: Bool

    Would this segment be willing to be drawn if a neighbor wanted to connect to it?

  • bsOffer :: Bool

    Does this segment want to connect to its neighbor?

  • bsDraw :: Bool

    Should this segment be represented visually?

Instances

Instances details
NFData BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: BorderSegment -> ()

Generic BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep BorderSegment 
Instance details

Defined in Brick.Types.Internal

type Rep BorderSegment = D1 ('MetaData "BorderSegment" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "BorderSegment" 'PrefixI 'True) (S1 ('MetaSel ('Just "bsAccept") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "bsOffer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "bsDraw") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))
Read BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS BorderSegment

readList :: ReadS [BorderSegment]

readPrec :: ReadPrec BorderSegment

readListPrec :: ReadPrec [BorderSegment]

Show BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> BorderSegment -> ShowS

show :: BorderSegment -> String

showList :: [BorderSegment] -> ShowS

Eq BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Ord BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

type Rep BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

type Rep BorderSegment = D1 ('MetaData "BorderSegment" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "BorderSegment" 'PrefixI 'True) (S1 ('MetaSel ('Just "bsAccept") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "bsOffer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "bsDraw") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))

data Edges a Source #

Constructors

Edges 

Fields

Instances

Instances details
Applicative Edges Source # 
Instance details

Defined in Brick.Types.Common

Methods

pure :: a -> Edges a

(<*>) :: Edges (a -> b) -> Edges a -> Edges b

liftA2 :: (a -> b -> c) -> Edges a -> Edges b -> Edges c

(*>) :: Edges a -> Edges b -> Edges b

(<*) :: Edges a -> Edges b -> Edges a

Functor Edges Source # 
Instance details

Defined in Brick.Types.Common

Methods

fmap :: (a -> b) -> Edges a -> Edges b

(<$) :: a -> Edges b -> Edges a

Monad Edges Source # 
Instance details

Defined in Brick.Types.Common

Methods

(>>=) :: Edges a -> (a -> Edges b) -> Edges b

(>>) :: Edges a -> Edges b -> Edges b

return :: a -> Edges a

NFData a => NFData (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

Methods

rnf :: Edges a -> ()

Generic (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

Associated Types

type Rep (Edges a) 
Instance details

Defined in Brick.Types.Common

type Rep (Edges a) = D1 ('MetaData "Edges" "Brick.Types.Common" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Edges" 'PrefixI 'True) ((S1 ('MetaSel ('Just "eTop") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "eBottom") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :*: (S1 ('MetaSel ('Just "eLeft") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "eRight") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))

Methods

from :: Edges a -> Rep (Edges a) x

to :: Rep (Edges a) x -> Edges a

Read a => Read (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

Methods

readsPrec :: Int -> ReadS (Edges a)

readList :: ReadS [Edges a]

readPrec :: ReadPrec (Edges a)

readListPrec :: ReadPrec [Edges a]

Show a => Show (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

Methods

showsPrec :: Int -> Edges a -> ShowS

show :: Edges a -> String

showList :: [Edges a] -> ShowS

Eq a => Eq (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

Methods

(==) :: Edges a -> Edges a -> Bool

(/=) :: Edges a -> Edges a -> Bool

Ord a => Ord (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

Methods

compare :: Edges a -> Edges a -> Ordering

(<) :: Edges a -> Edges a -> Bool

(<=) :: Edges a -> Edges a -> Bool

(>) :: Edges a -> Edges a -> Bool

(>=) :: Edges a -> Edges a -> Bool

max :: Edges a -> Edges a -> Edges a

min :: Edges a -> Edges a -> Edges a

type Rep (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

type Rep (Edges a) = D1 ('MetaData "Edges" "Brick.Types.Common" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Edges" 'PrefixI 'True) ((S1 ('MetaSel ('Just "eTop") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "eBottom") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :*: (S1 ('MetaSel ('Just "eLeft") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "eRight") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))

eTopL :: forall a f. Functor f => (a -> f a) -> Edges a -> f (Edges a) Source #

eBottomL :: forall a f. Functor f => (a -> f a) -> Edges a -> f (Edges a) Source #

eRightL :: forall a f. Functor f => (a -> f a) -> Edges a -> f (Edges a) Source #

eLeftL :: forall a f. Functor f => (a -> f a) -> Edges a -> f (Edges a) Source #

Miscellaneous

data Size Source #

Widget size policies. These policies communicate how a widget uses space when being rendered. These policies influence rendering order and space allocation in the box layout algorithm for hBox and vBox.

Constructors

Fixed

Widgets advertising this size policy should take up the same amount of space no matter how much they are given, i.e. their size depends on their contents alone rather than on the size of the rendering area.

Greedy

Widgets advertising this size policy must take up all the space they are given.

Instances

Instances details
Show Size Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> Size -> ShowS

show :: Size -> String

showList :: [Size] -> ShowS

Eq Size Source # 
Instance details

Defined in Brick.Types.Internal

Methods

(==) :: Size -> Size -> Bool

(/=) :: Size -> Size -> Bool

Ord Size Source # 
Instance details

Defined in Brick.Types.Internal

Methods

compare :: Size -> Size -> Ordering

(<) :: Size -> Size -> Bool

(<=) :: Size -> Size -> Bool

(>) :: Size -> Size -> Bool

(>=) :: Size -> Size -> Bool

max :: Size -> Size -> Size

min :: Size -> Size -> Size

data Direction Source #

Scrolling direction.

Constructors

Up

Up/left

Down

Down/right

Instances

Instances details
NFData Direction Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: Direction -> ()

Generic Direction Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep Direction 
Instance details

Defined in Brick.Types.Internal

type Rep Direction = D1 ('MetaData "Direction" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Up" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Down" 'PrefixI 'False) (U1 :: Type -> Type))

Methods

from :: Direction -> Rep Direction x

to :: Rep Direction x -> Direction

Read Direction Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS Direction

readList :: ReadS [Direction]

readPrec :: ReadPrec Direction

readListPrec :: ReadPrec [Direction]

Show Direction Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> Direction -> ShowS

show :: Direction -> String

showList :: [Direction] -> ShowS

Eq Direction Source # 
Instance details

Defined in Brick.Types.Internal

Methods

(==) :: Direction -> Direction -> Bool

(/=) :: Direction -> Direction -> Bool

type Rep Direction Source # 
Instance details

Defined in Brick.Types.Internal

type Rep Direction = D1 ('MetaData "Direction" "Brick.Types.Internal" "brick-2.4-977KKoBos0D64FCePpTxpZ" 'False) (C1 ('MetaCons "Up" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Down" 'PrefixI 'False) (U1 :: Type -> Type))

Renderer internals (for benchmarking)

data RenderState n Source #

Instances

Instances details
NFData n => NFData (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: RenderState n -> ()

Generic (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (RenderState n) 
Instance details

Defined in Brick.Types.Internal

type Rep (RenderState n)

Methods

from :: RenderState n -> Rep (RenderState n) x

to :: Rep (RenderState n) x -> RenderState n

(Ord n, Read n) => Read (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

readsPrec :: Int -> ReadS (RenderState n)

readList :: ReadS [RenderState n]

readPrec :: ReadPrec (RenderState n)

readListPrec :: ReadPrec [RenderState n]

Show n => Show (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

Methods

showsPrec :: Int -> RenderState n -> ShowS

show :: RenderState n -> String

showList :: [RenderState n] -> ShowS

type Rep (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

type Rep (RenderState n)

Re-exports for convenience

get :: MonadState s m => m s #

gets :: MonadState s m => (s -> a) -> m a #

put :: MonadState s m => s -> m () #

modify :: MonadState s m => (s -> s) -> m () #

zoom :: Zoom m n s t => LensLike' (Zoomed m c) t s -> m c -> n c #

Orphan instances