brick-0.64: 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

Instances

Instances details
Eq Location Source # 
Instance details

Defined in Brick.Types.Common

Ord Location Source # 
Instance details

Defined in Brick.Types.Common

Read Location Source # 
Instance details

Defined in Brick.Types.Common

Show Location Source # 
Instance details

Defined in Brick.Types.Common

Generic Location Source # 
Instance details

Defined in Brick.Types.Common

Associated Types

type Rep Location :: Type -> Type #

Methods

from :: Location -> Rep Location x #

to :: Rep Location x -> Location #

Semigroup Location Source # 
Instance details

Defined in Brick.Types.Common

Monoid Location Source # 
Instance details

Defined in Brick.Types.Common

NFData Location Source # 
Instance details

Defined in Brick.Types.Common

Methods

rnf :: Location -> () #

TerminalLocation Location Source # 
Instance details

Defined in Brick.Types.Internal

Field1 Location Location Int Int Source # 
Instance details

Defined in Brick.Types.Common

Field2 Location Location Int Int Source # 
Instance details

Defined in Brick.Types.Common

type Rep Location Source # 
Instance details

Defined in Brick.Types.Common

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

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 #

data CursorLocation n Source #

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

Constructors

CursorLocation 

Fields

Instances

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

Defined in Brick.Types.Internal

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

Defined in Brick.Types.Internal

Generic (CursorLocation n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (CursorLocation n) :: Type -> Type #

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

Defined in Brick.Types.Internal

Methods

rnf :: CursorLocation n -> () #

TerminalLocation (CursorLocation n) Source # 
Instance details

Defined in Brick.Types

type Rep (CursorLocation n) Source # 
Instance details

Defined in Brick.Types.Internal

type Rep (CursorLocation n) = D1 ('MetaData "CursorLocation" "Brick.Types.Internal" "brick-0.64-8TD3N1qzYbwGy8qXtAaS5I" '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))))

Viewports

data Viewport Source #

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

Constructors

VP 

Fields

Instances

Instances details
Read Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Show Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Generic Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep Viewport :: Type -> Type #

Methods

from :: Viewport -> Rep Viewport x #

to :: Rep Viewport x -> Viewport #

NFData Viewport Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: Viewport -> () #

type Rep Viewport Source # 
Instance details

Defined in Brick.Types.Internal

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
Eq ViewportType Source # 
Instance details

Defined in Brick.Types.Internal

Show ViewportType Source # 
Instance details

Defined in Brick.Types.Internal

Event-handling types

newtype EventM n a Source #

The monad in which event handlers run. Although it may be tempting to dig into the reader value yourself, just use lookupViewport.

Constructors

EventM 

Fields

Instances

Instances details
Monad (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

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

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

return :: a -> EventM n a #

Functor (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

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

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

MonadFail (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

fail :: String -> EventM n a #

Applicative (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

pure :: a -> EventM n a #

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

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

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

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

MonadIO (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

liftIO :: IO a -> EventM n a #

MonadThrow (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

throwM :: Exception e => e -> EventM n a #

MonadCatch (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

catch :: Exception e => EventM n a -> (e -> EventM n a) -> EventM n a #

MonadMask (EventM n) Source # 
Instance details

Defined in Brick.Types

Methods

mask :: ((forall a. EventM n a -> EventM n a) -> EventM n b) -> EventM n b #

uninterruptibleMask :: ((forall a. EventM n a -> EventM n a) -> EventM n b) -> EventM n b #

generalBracket :: EventM n a -> (a -> ExitCase b -> EventM n c) -> (a -> EventM n b) -> EventM n (b, c) #

data Next a Source #

The type of actions to take upon completion of an event handler.

Instances

Instances details
Functor Next Source # 
Instance details

Defined in Brick.Types.Internal

Methods

fmap :: (a -> b) -> Next a -> Next b #

(<$) :: a -> Next b -> Next a #

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
(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 #

(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 #

handleEventLensed Source #

Arguments

:: a

The state value.

-> Lens' a b

The lens to use to extract and store the target of the event.

-> (e -> b -> EventM n b)

The event handler.

-> e

The event to handle.

-> EventM n a 

A convenience function for handling events intended for values that are targets of lenses in your application state. This function obtains the target value of the specified lens, invokes handleEvent on it, and stores the resulting transformed value back in the state using the lens.

Rendering infrastructure

type RenderM n a = ReaderT Context (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 Source #

Get the current rendering context.

The rendering context

data Context 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.

Instances

Instances details
Show Context Source # 
Instance details

Defined in Brick.Types.Internal

attrL :: forall r. Getting r Context Attr Source #

The rendering context's current drawing attribute.

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
Read n => Read (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

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 #

Generic (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (Result n) :: Type -> Type #

Methods

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

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

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

Defined in Brick.Types.Internal

Methods

rnf :: Result n -> () #

type Rep (Result n) Source # 
Instance details

Defined in Brick.Types.Internal

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 

Instances

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

Defined in Brick.Types.Internal

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 #

Generic (Extent n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (Extent n) :: Type -> Type #

Methods

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

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

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

Defined in Brick.Types.Internal

Methods

rnf :: Extent n -> () #

type Rep (Extent n) Source # 
Instance details

Defined in Brick.Types.Internal

type Rep (Extent n) = D1 ('MetaData "Extent" "Brick.Types.Internal" "brick-0.64-8TD3N1qzYbwGy8qXtAaS5I" 'False) (C1 ('MetaCons "Extent" 'PrefixI 'True) (S1 ('MetaSel ('Just "extentName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 n) :*: (S1 ('MetaSel ('Just "extentUpperLeft") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Location) :*: S1 ('MetaSel ('Just "extentSize") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Int, Int)))))

Rendering result lenses

imageL :: forall n. Lens' (Result n) Image Source #

extentsL :: forall n. Lens' (Result n) [Extent n] Source #

Visibility requests

data VisibilityRequest Source #

Constructors

VR 

Instances

Instances details
Eq VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Read VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Show VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Generic VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep VisibilityRequest :: Type -> Type #

NFData VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: VisibilityRequest -> () #

type Rep VisibilityRequest Source # 
Instance details

Defined in Brick.Types.Internal

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

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.

Dynamic borders

data DynBorder Source #

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

Constructors

DynBorder 

Fields

Instances

Instances details
Eq DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Read DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Show DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Generic DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep DynBorder :: Type -> Type #

NFData DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: DynBorder -> () #

type Rep DynBorder Source # 
Instance details

Defined in Brick.Types.Internal

type Rep DynBorder = D1 ('MetaData "DynBorder" "Brick.Types.Internal" "brick-0.64-8TD3N1qzYbwGy8qXtAaS5I" '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)))))

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
Eq BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Ord BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Read BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Show BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Generic BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep BorderSegment :: Type -> Type #

NFData BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: BorderSegment -> () #

type Rep BorderSegment Source # 
Instance details

Defined in Brick.Types.Internal

type Rep BorderSegment = D1 ('MetaData "BorderSegment" "Brick.Types.Internal" "brick-0.64-8TD3N1qzYbwGy8qXtAaS5I" '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
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 #

Functor Edges Source # 
Instance details

Defined in Brick.Types.Common

Methods

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

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

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 #

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 #

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

Defined in Brick.Types.Common

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 #

Generic (Edges a) Source # 
Instance details

Defined in Brick.Types.Common

Associated Types

type Rep (Edges a) :: Type -> Type #

Methods

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

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

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

Defined in Brick.Types.Common

Methods

rnf :: 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-0.64-8TD3N1qzYbwGy8qXtAaS5I" '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. Lens' (Edges a) a Source #

eBottomL :: forall a. Lens' (Edges a) a Source #

eRightL :: forall a. Lens' (Edges a) a Source #

eLeftL :: forall a. Lens' (Edges a) 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
Eq Size Source # 
Instance details

Defined in Brick.Types

Methods

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

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

Ord Size Source # 
Instance details

Defined in Brick.Types

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 #

Show Size Source # 
Instance details

Defined in Brick.Types

Methods

showsPrec :: Int -> Size -> ShowS #

show :: Size -> String #

showList :: [Size] -> ShowS #

data Padding Source #

The type of padding.

Constructors

Pad Int

Pad by the specified number of rows or columns.

Max

Pad up to the number of available rows or columns.

data Direction Source #

Scrolling direction.

Constructors

Up

Up/left

Down

Down/right

Instances

Instances details
Eq Direction Source # 
Instance details

Defined in Brick.Types.Internal

Read Direction Source # 
Instance details

Defined in Brick.Types.Internal

Show Direction Source # 
Instance details

Defined in Brick.Types.Internal

Generic Direction Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep Direction :: Type -> Type #

NFData Direction Source # 
Instance details

Defined in Brick.Types.Internal

Methods

rnf :: Direction -> () #

type Rep Direction Source # 
Instance details

Defined in Brick.Types.Internal

type Rep Direction = D1 ('MetaData "Direction" "Brick.Types.Internal" "brick-0.64-8TD3N1qzYbwGy8qXtAaS5I" '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
(Ord n, Read n) => Read (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

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

Defined in Brick.Types.Internal

Generic (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

Associated Types

type Rep (RenderState n) :: Type -> Type #

Methods

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

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

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

Defined in Brick.Types.Internal

Methods

rnf :: RenderState n -> () #

type Rep (RenderState n) Source # 
Instance details

Defined in Brick.Types.Internal

type Rep (RenderState n)

Orphan instances