| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Brick.Main
Contents
- data App s e n = App {- appDraw :: s -> [Widget n]
- appChooseCursor :: s -> [CursorLocation n] -> Maybe (CursorLocation n)
- appHandleEvent :: s -> BrickEvent n e -> EventM n (Next s)
- appStartEvent :: s -> EventM n s
- appAttrMap :: s -> AttrMap
 
- defaultMain :: Ord n => App s e n -> s -> IO s
- customMain :: Ord n => IO Vty -> Maybe (BChan e) -> App s e n -> s -> IO s
- simpleMain :: Ord n => Widget n -> IO ()
- resizeOrQuit :: s -> BrickEvent n e -> EventM n (Next s)
- continue :: s -> EventM n (Next s)
- halt :: s -> EventM n (Next s)
- suspendAndResume :: IO s -> EventM n (Next s)
- lookupViewport :: Ord n => n -> EventM n (Maybe Viewport)
- lookupExtent :: Eq n => n -> EventM n (Maybe (Extent n))
- findClickedExtents :: (Int, Int) -> EventM n [Extent n]
- clickedExtent :: (Int, Int) -> Extent n -> Bool
- getVtyHandle :: EventM n (Maybe Vty)
- viewportScroll :: n -> ViewportScroll n
- data ViewportScroll n
- vScrollBy :: ViewportScroll n -> Int -> EventM n ()
- vScrollPage :: ViewportScroll n -> Direction -> EventM n ()
- vScrollToBeginning :: ViewportScroll n -> EventM n ()
- vScrollToEnd :: ViewportScroll n -> EventM n ()
- hScrollBy :: ViewportScroll n -> Int -> EventM n ()
- hScrollPage :: ViewportScroll n -> Direction -> EventM n ()
- hScrollToBeginning :: ViewportScroll n -> EventM n ()
- hScrollToEnd :: ViewportScroll n -> EventM n ()
- setTop :: ViewportScroll n -> Int -> EventM n ()
- setLeft :: ViewportScroll n -> Int -> EventM n ()
- neverShowCursor :: s -> [CursorLocation n] -> Maybe (CursorLocation n)
- showFirstCursor :: s -> [CursorLocation n] -> Maybe (CursorLocation n)
- showCursorNamed :: Eq n => n -> [CursorLocation n] -> Maybe (CursorLocation n)
- invalidateCacheEntry :: n -> EventM n ()
- invalidateCache :: EventM n ()
Documentation
The library application abstraction. Your application's operations
 are represented here and passed to one of the various main functions
 in this module. An application is in terms of an application state
 type s, an application event type e, and a resource name type
 n. In the simplest case e is unused (left polymorphic or set to
 '()'), but you may define your own event type and use customMain
 to provide custom events. The state type is the type of application
 state to be provided by you and iteratively modified by event
 handlers. The resource name type is the type of names you can assign
 to rendering resources such as viewports and cursor locations.
Constructors
| App | |
| Fields 
 | |
The default main entry point which takes an application and an
 initial state and returns the final state returned by a halt
 operation.
Arguments
| :: Ord n | |
| => IO Vty | An IO action to build a Vty handle. This is used to build a Vty handle whenever the event loop begins or is resumed after suspension. | 
| -> 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  | 
| -> App s e n | The application. | 
| -> s | The initial application state. | 
| -> IO s | 
The custom event loop entry point to use when the simpler ones don't permit enough control.
A simple main entry point which takes a widget and renders it. This event loop terminates when the user presses any key, but terminal resize events cause redraws.
resizeOrQuit :: s -> BrickEvent n e -> EventM n (Next s) Source #
An event-handling function which continues execution of the event
 loop only when resize events occur; all other types of events trigger
 a halt. This is a convenience function useful as an appHandleEvent
 value for simple applications using the Event type that do not need
 to get more sophisticated user input.
Event handler functions
continue :: s -> EventM n (Next s) Source #
Continue running the event loop with the specified application state.
halt :: s -> EventM n (Next s) Source #
Halt the event loop and return the specified application state as the final state value.
suspendAndResume :: IO s -> EventM n (Next s) Source #
Suspend the event loop, save the terminal state, and run the specified action. When it returns an application state value, restore the terminal state, redraw the application from the new state, and resume the event loop.
lookupViewport :: Ord n => n -> EventM n (Maybe Viewport) Source #
Given a viewport name, get the viewport's size and offset
 information from the most recent rendering. Returns Nothing if
 no such state could be found, either because the name was invalid
 or because no rendering has occurred (e.g. in an appStartEvent
 handler).
lookupExtent :: Eq n => n -> EventM n (Maybe (Extent n)) Source #
Given a resource name, get the most recent rendering extent for the name (if any).
findClickedExtents :: (Int, Int) -> EventM n [Extent n] Source #
Given a mouse click location, return the extents intersected by the click. The returned extents are sorted such that the first extent in the list is the most specific extent and the last extent is the most generic (top-level). So if two extents A and B both intersected the mouse click but A contains B, then they would be returned [B, A].
clickedExtent :: (Int, Int) -> Extent n -> Bool Source #
Did the specified mouse coordinates (column, row) intersect the specified extent?
Viewport scrolling
viewportScroll :: n -> ViewportScroll n Source #
Build a viewport scroller for the viewport with the specified name.
data ViewportScroll n Source #
A viewport scrolling handle for managing the scroll state of viewports.
vScrollBy :: ViewportScroll n -> Int -> EventM n () Source #
Scroll the viewport vertically by the specified number of rows or columns depending on the orientation of the viewport.
vScrollPage :: ViewportScroll n -> Direction -> EventM n () Source #
Scroll the viewport vertically by one page in the specified direction.
vScrollToBeginning :: ViewportScroll n -> EventM n () Source #
Scroll vertically to the beginning of the viewport.
vScrollToEnd :: ViewportScroll n -> EventM n () Source #
Scroll vertically to the end of the viewport.
hScrollBy :: ViewportScroll n -> Int -> EventM n () Source #
Scroll the viewport horizontally by the specified number of rows or columns depending on the orientation of the viewport.
hScrollPage :: ViewportScroll n -> Direction -> EventM n () Source #
Scroll the viewport horizontally by one page in the specified direction.
hScrollToBeginning :: ViewportScroll n -> EventM n () Source #
Scroll horizontally to the beginning of the viewport.
hScrollToEnd :: ViewportScroll n -> EventM n () Source #
Scroll horizontally to the end of the viewport.
setLeft :: ViewportScroll n -> Int -> EventM n () Source #
Set the left column offset of the viewport.
Cursor management functions
neverShowCursor :: s -> [CursorLocation n] -> Maybe (CursorLocation n) Source #
Ignore all requested cursor positions returned by the rendering
 process. This is a convenience function useful as an
 appChooseCursor value when a simple application has no need to
 position the cursor.
showFirstCursor :: s -> [CursorLocation n] -> Maybe (CursorLocation n) Source #
Always show the first cursor, if any, returned by the rendering
 process. This is a convenience function useful as an
 appChooseCursor value when a simple program has zero or more
 widgets that advertise a cursor position.
showCursorNamed :: Eq n => n -> [CursorLocation n] -> Maybe (CursorLocation n) Source #
Show the cursor with the specified resource name, if such a cursor location has been reported.
Rendering cache management
invalidateCacheEntry :: n -> EventM n () Source #
Invalidate the rendering cache entry with the specified resource name.
invalidateCache :: EventM n () Source #
Invalidate the entire rendering cache.