reflex-vty-0.5.2.0: Reflex FRP host and widgets for VTY applications
Safe HaskellNone
LanguageHaskell2010

Reflex.Vty.Widget

Description

 
Synopsis

Running a vty application

mainWidgetWithHandle :: Vty -> (forall t m. (MonadVtyApp t m, HasImageWriter t m, MonadNodeId m, HasDisplayRegion t m, HasFocusReader t m, HasInput t m, HasTheme t m) => m (Event t ())) -> IO () Source #

Sets up the top-level context for a vty widget and runs it with that context

data VtyWidgetOut t Source #

The output of a vty widget

Constructors

VtyWidgetOut 

mainWidget :: (forall t m. (MonadVtyApp t m, HasImageWriter t m, MonadNodeId m, HasDisplayRegion t m, HasFocusReader t m, HasTheme t m, HasInput t m) => m (Event t ())) -> IO () Source #

Like mainWidgetWithHandle, but uses a default vty configuration

Input Events

class HasInput t m | m -> t where Source #

A class for things that can receive vty events as input

Minimal complete definition

Nothing

Methods

input :: m (Event t VtyEvent) Source #

default input :: (f m' ~ m, Monad m', MonadTrans f, HasInput t m') => m (Event t VtyEvent) Source #

localInput :: (Event t VtyEvent -> Event t VtyEvent) -> m a -> m a Source #

User input events that the widget's parent chooses to share. These will generally be filtered for relevance.

default localInput :: (f m' ~ m, Monad m', MFunctor f, HasInput t m') => (Event t VtyEvent -> Event t VtyEvent) -> m a -> m a Source #

Instances

Instances details
(Reflex t, Monad m) => HasInput (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

input :: Input t m (Event t VtyEvent) Source #

localInput :: (Event t VtyEvent -> Event t VtyEvent) -> Input t m a -> Input t m a Source #

(HasInput t m, HasDisplayRegion t m, MonadFix m, Reflex t) => HasInput (t :: Type) (Layout t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

input :: Layout t m (Event t VtyEvent) Source #

localInput :: (Event t VtyEvent -> Event t VtyEvent) -> Layout t m a -> Layout t m a Source #

(Reflex t, MonadFix m, HasInput t m) => HasInput (t :: Type) (Focus t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

input :: Focus t m (Event t VtyEvent) Source #

localInput :: (Event t VtyEvent -> Event t VtyEvent) -> Focus t m a -> Focus t m a Source #

newtype Input t m a Source #

A widget that can receive input events. See Event

Constructors

Input 

Fields

Instances

Instances details
MonadSample t m => MonadSample (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

sample :: Behavior t a -> Input t m a #

MonadHold t m => MonadHold (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hold :: a -> Event t a -> Input t m (Behavior t a) #

holdDyn :: a -> Event t a -> Input t m (Dynamic t a) #

holdIncremental :: Patch p => PatchTarget p -> Event t p -> Input t m (Incremental t p) #

buildDynamic :: PushM t a -> Event t a -> Input t m (Dynamic t a) #

headE :: Event t a -> Input t m (Event t a) #

now :: Input t m (Event t ()) #

HasTheme t m => HasTheme (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

theme :: Input t m (Behavior t Attr) Source #

localTheme :: (Behavior t Attr -> Behavior t Attr) -> Input t m a -> Input t m a Source #

HasImageWriter t m => HasImageWriter (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> Input t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> Input t m a -> Input t m a Source #

HasFocusReader t m => HasFocusReader (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

focus :: Input t m (Dynamic t Bool) Source #

localFocus :: (Dynamic t Bool -> Dynamic t Bool) -> Input t m a -> Input t m a Source #

HasDisplayRegion t m => HasDisplayRegion (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

askRegion :: Input t m (Dynamic t Region) Source #

localRegion :: (Dynamic t Region -> Dynamic t Region) -> Input t m a -> Input t m a Source #

(Reflex t, Monad m) => HasInput (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

input :: Input t m (Event t VtyEvent) Source #

localInput :: (Event t VtyEvent -> Event t VtyEvent) -> Input t m a -> Input t m a Source #

NotReady t m => NotReady t (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

notReadyUntil :: Event t a -> Input t m () #

notReady :: Input t m () #

PerformEvent t m => PerformEvent t (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Performable (Input t m) :: Type -> Type #

Methods

performEvent :: Event t (Performable (Input t m) a) -> Input t m (Event t a) #

performEvent_ :: Event t (Performable (Input t m) ()) -> Input t m () #

TriggerEvent t m => TriggerEvent t (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newTriggerEvent :: Input t m (Event t a, a -> IO ()) #

newTriggerEventWithOnComplete :: Input t m (Event t a, a -> IO () -> IO ()) #

newEventWithLazyTriggerWithOnComplete :: ((a -> IO () -> IO ()) -> IO (IO ())) -> Input t m (Event t a) #

PostBuild t m => PostBuild t (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

getPostBuild :: Input t m (Event t ()) #

MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newEventWithTrigger :: (EventTrigger t a -> IO (IO ())) -> Input t m (Event t a) #

newFanEventWithTrigger :: GCompare k => (forall a. k a -> EventTrigger t a -> IO (IO ())) -> Input t m (EventSelector t k) #

(Adjustable t m, MonadHold t m, Reflex t) => Adjustable t (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

runWithReplace :: Input t m a -> Event t (Input t m b) -> Input t m (a, Event t b) #

traverseIntMapWithKeyWithAdjust :: (Key -> v -> Input t m v') -> IntMap v -> Event t (PatchIntMap v) -> Input t m (IntMap v', Event t (PatchIntMap v')) #

traverseDMapWithKeyWithAdjust :: GCompare k => (forall a. k a -> v a -> Input t m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> Input t m (DMap k v', Event t (PatchDMap k v')) #

traverseDMapWithKeyWithAdjustWithMove :: GCompare k => (forall a. k a -> v a -> Input t m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> Input t m (DMap k v', Event t (PatchDMapWithMove k v')) #

MFunctor (Input t :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hoist :: forall m n (b :: k). Monad m => (forall a. m a -> n a) -> Input t m b -> Input t n b #

MonadTrans (Input t) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

lift :: Monad m => m a -> Input t m a #

Monad m => Monad (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

(>>=) :: Input t m a -> (a -> Input t m b) -> Input t m b #

(>>) :: Input t m a -> Input t m b -> Input t m b #

return :: a -> Input t m a #

Functor m => Functor (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

fmap :: (a -> b) -> Input t m a -> Input t m b #

(<$) :: a -> Input t m b -> Input t m a #

MonadFix m => MonadFix (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mfix :: (a -> Input t m a) -> Input t m a #

Applicative m => Applicative (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

pure :: a -> Input t m a #

(<*>) :: Input t m (a -> b) -> Input t m a -> Input t m b #

liftA2 :: (a -> b -> c) -> Input t m a -> Input t m b -> Input t m c #

(*>) :: Input t m a -> Input t m b -> Input t m b #

(<*) :: Input t m a -> Input t m b -> Input t m a #

MonadIO m => MonadIO (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

liftIO :: IO a -> Input t m a #

MonadThrow m => MonadThrow (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

throwM :: Exception e => e -> Input t m a #

MonadCatch m => MonadCatch (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

catch :: Exception e => Input t m a -> (e -> Input t m a) -> Input t m a #

MonadMask m => MonadMask (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mask :: ((forall a. Input t m a -> Input t m a) -> Input t m b) -> Input t m b #

uninterruptibleMask :: ((forall a. Input t m a -> Input t m a) -> Input t m b) -> Input t m b #

generalBracket :: Input t m a -> (a -> ExitCase b -> Input t m c) -> (a -> Input t m b) -> Input t m (b, c) #

MonadRef m => MonadRef (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Ref (Input t m) :: Type -> Type #

Methods

newRef :: a -> Input t m (Ref (Input t m) a) #

readRef :: Ref (Input t m) a -> Input t m a #

writeRef :: Ref (Input t m) a -> a -> Input t m () #

modifyRef :: Ref (Input t m) a -> (a -> a) -> Input t m () #

modifyRef' :: Ref (Input t m) a -> (a -> a) -> Input t m () #

MonadNodeId m => MonadNodeId (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (Input t m) = Ref (ReaderT (Event t VtyEvent) m)
type Performable (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

runInput :: Reflex t => Event t VtyEvent -> Input t m a -> m a Source #

Runs an Input with a given context

Filtering input

type KeyCombo = (Key, [Modifier]) Source #

Type synonym for a key and modifier combination

key :: (Monad m, Reflex t, HasInput t m) => Key -> m (Event t KeyCombo) Source #

Emits an event that fires on a particular key press (without modifiers)

keys :: (Monad m, Reflex t, HasInput t m) => [Key] -> m (Event t KeyCombo) Source #

Emits an event that fires on particular key presses (without modifiers)

keyCombo :: (Reflex t, Monad m, HasInput t m) => KeyCombo -> m (Event t KeyCombo) Source #

Emit an event that fires whenever the provided key combination occurs

keyCombos :: (Reflex t, Monad m, HasInput t m) => Set KeyCombo -> m (Event t KeyCombo) Source #

Emit an event that fires whenever any of the provided key combinations occur

filterKeys :: (Reflex t, HasInput t m) => (KeyCombo -> Bool) -> m a -> m a Source #

Filter the keyboard input that a child widget may receive

mouseInRegion :: Region -> VtyEvent -> Maybe VtyEvent Source #

Filter mouse input events based on whether they target a particular region and translate them to the internal coordinate system of that region.

NB: Non-mouse events are passed through unfiltered and unchanged

data MouseTrackingState Source #

  • Tracking state means actively tracking the current stream of mouse events
  • NotTracking state means not tracking the current stream of mouse events
  • WaitingForInput means state will be set on next EvMouseDown event

inputInFocusedRegion :: forall t m. (MonadFix m, MonadHold t m, HasDisplayRegion t m, HasFocusReader t m, HasInput t m) => m (Event t VtyEvent) Source #

Filter mouse input outside the current display region keyboard input is reported only if the region is focused scroll wheel input is reported only if the region is focused mouse input is reported if the mouse is in the region EXCEPT mouse drag sequences that start OFF the region are NOT reported AND mouse drag sequences that start ON the region and drag off ARE reported

Getting and setting the display region

data Region Source #

A chunk of the display area

Instances

Instances details
Eq Region Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

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

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

Ord Region Source # 
Instance details

Defined in Reflex.Vty.Widget

Read Region Source # 
Instance details

Defined in Reflex.Vty.Widget

Show Region Source # 
Instance details

Defined in Reflex.Vty.Widget

nilRegion :: Region Source #

A region that occupies no space.

regionSize :: Region -> (Int, Int) Source #

The width and height of a Region

withinRegion Source #

Arguments

:: Region 
-> Int

x-coordinate

-> Int

y-coordinate

-> Bool 

Check whether the x,y coordinates are within the specified region

regionBlankImage :: Attr -> Region -> Image Source #

Produces an Image that fills a region with space characters

class (Reflex t, Monad m) => HasDisplayRegion t m | m -> t where Source #

A class for things that know their own display size dimensions

Minimal complete definition

Nothing

Methods

askRegion :: m (Dynamic t Region) Source #

Retrieve the display region

default askRegion :: (f m' ~ m, MonadTrans f, HasDisplayRegion t m') => m (Dynamic t Region) Source #

localRegion :: (Dynamic t Region -> Dynamic t Region) -> m a -> m a Source #

Run an action in a local region, by applying a transformation to the region

default localRegion :: (f m' ~ m, Monad m', MFunctor f, HasDisplayRegion t m') => (Dynamic t Region -> Dynamic t Region) -> m a -> m a Source #

Instances

Instances details
HasDisplayRegion t m => HasDisplayRegion (t :: k) (NodeIdT m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasDisplayRegion t m => HasDisplayRegion (t :: k) (ReaderT x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasDisplayRegion t m => HasDisplayRegion (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

askRegion :: Input t m (Dynamic t Region) Source #

localRegion :: (Dynamic t Region -> Dynamic t Region) -> Input t m a -> Input t m a Source #

(Monad m, Reflex t) => HasDisplayRegion (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasDisplayRegion t m => HasDisplayRegion (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasDisplayRegion t m => HasDisplayRegion (t :: Type) (Layout t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

askRegion :: Layout t m (Dynamic t Region) Source #

localRegion :: (Dynamic t Region -> Dynamic t Region) -> Layout t m a -> Layout t m a Source #

HasDisplayRegion t m => HasDisplayRegion (t :: Type) (Focus t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

askRegion :: Focus t m (Dynamic t Region) Source #

localRegion :: (Dynamic t Region -> Dynamic t Region) -> Focus t m a -> Focus t m a Source #

HasDisplayRegion t m => HasDisplayRegion (t :: Type) (EventWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasDisplayRegion t m => HasDisplayRegion (t :: Type) (DynamicWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasDisplayRegion t m => HasDisplayRegion (t :: Type) (BehaviorWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

displayWidth :: HasDisplayRegion t m => m (Dynamic t Int) Source #

Retrieve the display width

displayHeight :: HasDisplayRegion t m => m (Dynamic t Int) Source #

Retrieve the display height

newtype DisplayRegion t m a Source #

A widget that has access to a particular region of the vty display

Constructors

DisplayRegion 

Instances

Instances details
MonadSample t m => MonadSample (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

sample :: Behavior t a -> DisplayRegion t m a #

MonadHold t m => MonadHold (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hold :: a -> Event t a -> DisplayRegion t m (Behavior t a) #

holdDyn :: a -> Event t a -> DisplayRegion t m (Dynamic t a) #

holdIncremental :: Patch p => PatchTarget p -> Event t p -> DisplayRegion t m (Incremental t p) #

buildDynamic :: PushM t a -> Event t a -> DisplayRegion t m (Dynamic t a) #

headE :: Event t a -> DisplayRegion t m (Event t a) #

now :: DisplayRegion t m (Event t ()) #

HasTheme t m => HasTheme (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasImageWriter t m => HasImageWriter (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasFocusReader t m => HasFocusReader (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

(Monad m, Reflex t) => HasDisplayRegion (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

NotReady t m => NotReady t (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

notReadyUntil :: Event t a -> DisplayRegion t m () #

notReady :: DisplayRegion t m () #

PerformEvent t m => PerformEvent t (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Performable (DisplayRegion t m) :: Type -> Type #

TriggerEvent t m => TriggerEvent t (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newTriggerEvent :: DisplayRegion t m (Event t a, a -> IO ()) #

newTriggerEventWithOnComplete :: DisplayRegion t m (Event t a, a -> IO () -> IO ()) #

newEventWithLazyTriggerWithOnComplete :: ((a -> IO () -> IO ()) -> IO (IO ())) -> DisplayRegion t m (Event t a) #

PostBuild t m => PostBuild t (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

getPostBuild :: DisplayRegion t m (Event t ()) #

MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newEventWithTrigger :: (EventTrigger t a -> IO (IO ())) -> DisplayRegion t m (Event t a) #

newFanEventWithTrigger :: GCompare k => (forall a. k a -> EventTrigger t a -> IO (IO ())) -> DisplayRegion t m (EventSelector t k) #

(Adjustable t m, MonadFix m, MonadHold t m) => Adjustable t (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

runWithReplace :: DisplayRegion t m a -> Event t (DisplayRegion t m b) -> DisplayRegion t m (a, Event t b) #

traverseIntMapWithKeyWithAdjust :: (Key -> v -> DisplayRegion t m v') -> IntMap v -> Event t (PatchIntMap v) -> DisplayRegion t m (IntMap v', Event t (PatchIntMap v')) #

traverseDMapWithKeyWithAdjust :: GCompare k => (forall a. k a -> v a -> DisplayRegion t m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> DisplayRegion t m (DMap k v', Event t (PatchDMap k v')) #

traverseDMapWithKeyWithAdjustWithMove :: GCompare k => (forall a. k a -> v a -> DisplayRegion t m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> DisplayRegion t m (DMap k v', Event t (PatchDMapWithMove k v')) #

MFunctor (DisplayRegion t :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hoist :: forall m n (b :: k). Monad m => (forall a. m a -> n a) -> DisplayRegion t m b -> DisplayRegion t n b #

MonadTrans (DisplayRegion t) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

lift :: Monad m => m a -> DisplayRegion t m a #

Monad m => Monad (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

(>>=) :: DisplayRegion t m a -> (a -> DisplayRegion t m b) -> DisplayRegion t m b #

(>>) :: DisplayRegion t m a -> DisplayRegion t m b -> DisplayRegion t m b #

return :: a -> DisplayRegion t m a #

Functor m => Functor (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

fmap :: (a -> b) -> DisplayRegion t m a -> DisplayRegion t m b #

(<$) :: a -> DisplayRegion t m b -> DisplayRegion t m a #

MonadFix m => MonadFix (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mfix :: (a -> DisplayRegion t m a) -> DisplayRegion t m a #

Applicative m => Applicative (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

pure :: a -> DisplayRegion t m a #

(<*>) :: DisplayRegion t m (a -> b) -> DisplayRegion t m a -> DisplayRegion t m b #

liftA2 :: (a -> b -> c) -> DisplayRegion t m a -> DisplayRegion t m b -> DisplayRegion t m c #

(*>) :: DisplayRegion t m a -> DisplayRegion t m b -> DisplayRegion t m b #

(<*) :: DisplayRegion t m a -> DisplayRegion t m b -> DisplayRegion t m a #

MonadIO m => MonadIO (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

liftIO :: IO a -> DisplayRegion t m a #

MonadThrow m => MonadThrow (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

throwM :: Exception e => e -> DisplayRegion t m a #

MonadCatch m => MonadCatch (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

catch :: Exception e => DisplayRegion t m a -> (e -> DisplayRegion t m a) -> DisplayRegion t m a #

MonadMask m => MonadMask (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mask :: ((forall a. DisplayRegion t m a -> DisplayRegion t m a) -> DisplayRegion t m b) -> DisplayRegion t m b #

uninterruptibleMask :: ((forall a. DisplayRegion t m a -> DisplayRegion t m a) -> DisplayRegion t m b) -> DisplayRegion t m b #

generalBracket :: DisplayRegion t m a -> (a -> ExitCase b -> DisplayRegion t m c) -> (a -> DisplayRegion t m b) -> DisplayRegion t m (b, c) #

MonadRef m => MonadRef (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Ref (DisplayRegion t m) :: Type -> Type #

Methods

newRef :: a -> DisplayRegion t m (Ref (DisplayRegion t m) a) #

readRef :: Ref (DisplayRegion t m) a -> DisplayRegion t m a #

writeRef :: Ref (DisplayRegion t m) a -> a -> DisplayRegion t m () #

modifyRef :: Ref (DisplayRegion t m) a -> (a -> a) -> DisplayRegion t m () #

modifyRef' :: Ref (DisplayRegion t m) a -> (a -> a) -> DisplayRegion t m () #

MonadNodeId m => MonadNodeId (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (DisplayRegion t m) = Ref (ReaderT (Dynamic t Region) m)
type Performable (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

runDisplayRegion :: (Reflex t, Monad m) => Dynamic t Region -> DisplayRegion t m a -> m a Source #

Run a DisplayRegion action with a given Region

Getting focus state

class (Reflex t, Monad m) => HasFocusReader t m | m -> t where Source #

A class for things that can dynamically gain and lose focus

Minimal complete definition

Nothing

Methods

focus :: m (Dynamic t Bool) Source #

default focus :: (f m' ~ m, Monad m', MonadTrans f, HasFocusReader t m') => m (Dynamic t Bool) Source #

localFocus :: (Dynamic t Bool -> Dynamic t Bool) -> m a -> m a Source #

default localFocus :: (f m' ~ m, Monad m', MFunctor f, HasFocusReader t m') => (Dynamic t Bool -> Dynamic t Bool) -> m a -> m a Source #

Instances

Instances details
HasFocusReader t m => HasFocusReader (t :: k) (NodeIdT m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasFocusReader t m => HasFocusReader (t :: k) (ReaderT x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

focus :: ReaderT x m (Dynamic t Bool) Source #

localFocus :: (Dynamic t Bool -> Dynamic t Bool) -> ReaderT x m a -> ReaderT x m a Source #

HasFocusReader t m => HasFocusReader (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasFocusReader t m => HasFocusReader (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

focus :: Input t m (Dynamic t Bool) Source #

localFocus :: (Dynamic t Bool -> Dynamic t Bool) -> Input t m a -> Input t m a Source #

(Monad m, Reflex t) => HasFocusReader (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasFocusReader t m => HasFocusReader (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

(HasFocusReader t m, Monad m) => HasFocusReader (t :: Type) (Layout t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

focus :: Layout t m (Dynamic t Bool) Source #

localFocus :: (Dynamic t Bool -> Dynamic t Bool) -> Layout t m a -> Layout t m a Source #

(HasFocusReader t m, Monad m) => HasFocusReader (t :: Type) (Focus t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

focus :: Focus t m (Dynamic t Bool) Source #

localFocus :: (Dynamic t Bool -> Dynamic t Bool) -> Focus t m a -> Focus t m a Source #

HasFocusReader t m => HasFocusReader (t :: Type) (EventWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

focus :: EventWriterT t x m (Dynamic t Bool) Source #

localFocus :: (Dynamic t Bool -> Dynamic t Bool) -> EventWriterT t x m a -> EventWriterT t x m a Source #

HasFocusReader t m => HasFocusReader (t :: Type) (DynamicWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasFocusReader t m => HasFocusReader (t :: Type) (BehaviorWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

newtype FocusReader t m a Source #

A widget that has access to information about whether it is focused

Constructors

FocusReader 

Fields

Instances

Instances details
MonadSample t m => MonadSample (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

sample :: Behavior t a -> FocusReader t m a #

MonadHold t m => MonadHold (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hold :: a -> Event t a -> FocusReader t m (Behavior t a) #

holdDyn :: a -> Event t a -> FocusReader t m (Dynamic t a) #

holdIncremental :: Patch p => PatchTarget p -> Event t p -> FocusReader t m (Incremental t p) #

buildDynamic :: PushM t a -> Event t a -> FocusReader t m (Dynamic t a) #

headE :: Event t a -> FocusReader t m (Event t a) #

now :: FocusReader t m (Event t ()) #

HasTheme t m => HasTheme (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasImageWriter t m => HasImageWriter (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> FocusReader t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> FocusReader t m a -> FocusReader t m a Source #

(Monad m, Reflex t) => HasFocusReader (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

NotReady t m => NotReady t (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

notReadyUntil :: Event t a -> FocusReader t m () #

notReady :: FocusReader t m () #

PerformEvent t m => PerformEvent t (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Performable (FocusReader t m) :: Type -> Type #

Methods

performEvent :: Event t (Performable (FocusReader t m) a) -> FocusReader t m (Event t a) #

performEvent_ :: Event t (Performable (FocusReader t m) ()) -> FocusReader t m () #

TriggerEvent t m => TriggerEvent t (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newTriggerEvent :: FocusReader t m (Event t a, a -> IO ()) #

newTriggerEventWithOnComplete :: FocusReader t m (Event t a, a -> IO () -> IO ()) #

newEventWithLazyTriggerWithOnComplete :: ((a -> IO () -> IO ()) -> IO (IO ())) -> FocusReader t m (Event t a) #

PostBuild t m => PostBuild t (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

getPostBuild :: FocusReader t m (Event t ()) #

MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newEventWithTrigger :: (EventTrigger t a -> IO (IO ())) -> FocusReader t m (Event t a) #

newFanEventWithTrigger :: GCompare k => (forall a. k a -> EventTrigger t a -> IO (IO ())) -> FocusReader t m (EventSelector t k) #

(Adjustable t m, MonadFix m, MonadHold t m) => Adjustable t (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

runWithReplace :: FocusReader t m a -> Event t (FocusReader t m b) -> FocusReader t m (a, Event t b) #

traverseIntMapWithKeyWithAdjust :: (Key -> v -> FocusReader t m v') -> IntMap v -> Event t (PatchIntMap v) -> FocusReader t m (IntMap v', Event t (PatchIntMap v')) #

traverseDMapWithKeyWithAdjust :: GCompare k => (forall a. k a -> v a -> FocusReader t m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> FocusReader t m (DMap k v', Event t (PatchDMap k v')) #

traverseDMapWithKeyWithAdjustWithMove :: GCompare k => (forall a. k a -> v a -> FocusReader t m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> FocusReader t m (DMap k v', Event t (PatchDMapWithMove k v')) #

MFunctor (FocusReader t :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hoist :: forall m n (b :: k). Monad m => (forall a. m a -> n a) -> FocusReader t m b -> FocusReader t n b #

MonadTrans (FocusReader t) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

lift :: Monad m => m a -> FocusReader t m a #

Monad m => Monad (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

(>>=) :: FocusReader t m a -> (a -> FocusReader t m b) -> FocusReader t m b #

(>>) :: FocusReader t m a -> FocusReader t m b -> FocusReader t m b #

return :: a -> FocusReader t m a #

Functor m => Functor (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

fmap :: (a -> b) -> FocusReader t m a -> FocusReader t m b #

(<$) :: a -> FocusReader t m b -> FocusReader t m a #

MonadFix m => MonadFix (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mfix :: (a -> FocusReader t m a) -> FocusReader t m a #

Applicative m => Applicative (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

pure :: a -> FocusReader t m a #

(<*>) :: FocusReader t m (a -> b) -> FocusReader t m a -> FocusReader t m b #

liftA2 :: (a -> b -> c) -> FocusReader t m a -> FocusReader t m b -> FocusReader t m c #

(*>) :: FocusReader t m a -> FocusReader t m b -> FocusReader t m b #

(<*) :: FocusReader t m a -> FocusReader t m b -> FocusReader t m a #

MonadIO m => MonadIO (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

liftIO :: IO a -> FocusReader t m a #

MonadThrow m => MonadThrow (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

throwM :: Exception e => e -> FocusReader t m a #

MonadCatch m => MonadCatch (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

catch :: Exception e => FocusReader t m a -> (e -> FocusReader t m a) -> FocusReader t m a #

MonadMask m => MonadMask (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mask :: ((forall a. FocusReader t m a -> FocusReader t m a) -> FocusReader t m b) -> FocusReader t m b #

uninterruptibleMask :: ((forall a. FocusReader t m a -> FocusReader t m a) -> FocusReader t m b) -> FocusReader t m b #

generalBracket :: FocusReader t m a -> (a -> ExitCase b -> FocusReader t m c) -> (a -> FocusReader t m b) -> FocusReader t m (b, c) #

MonadRef m => MonadRef (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Ref (FocusReader t m) :: Type -> Type #

Methods

newRef :: a -> FocusReader t m (Ref (FocusReader t m) a) #

readRef :: Ref (FocusReader t m) a -> FocusReader t m a #

writeRef :: Ref (FocusReader t m) a -> a -> FocusReader t m () #

modifyRef :: Ref (FocusReader t m) a -> (a -> a) -> FocusReader t m () #

modifyRef' :: Ref (FocusReader t m) a -> (a -> a) -> FocusReader t m () #

MonadNodeId m => MonadNodeId (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (FocusReader t m) = Ref (ReaderT (Dynamic t Bool) m)
type Performable (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

runFocusReader :: (Reflex t, Monad m) => Dynamic t Bool -> FocusReader t m a -> m a Source #

Run a FocusReader action with the given focus value

Image output

class (Reflex t, Monad m) => HasImageWriter t m | m -> t where Source #

A class for widgets that can produce images to draw to the display

Minimal complete definition

Nothing

Methods

tellImages :: Behavior t [Image] -> m () Source #

Send images upstream for rendering

default tellImages :: (f m' ~ m, Monad m', MonadTrans f, HasImageWriter t m') => Behavior t [Image] -> m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> m a -> m a Source #

Apply a transformation to the images produced by the child actions

default mapImages :: (f m' ~ m, Monad m', MFunctor f, HasImageWriter t m') => (Behavior t [Image] -> Behavior t [Image]) -> m a -> m a Source #

Instances

Instances details
HasImageWriter t m => HasImageWriter (t :: k) (NodeIdT m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> NodeIdT m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> NodeIdT m a -> NodeIdT m a Source #

HasImageWriter t m => HasImageWriter (t :: k) (ReaderT x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> ReaderT x m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> ReaderT x m a -> ReaderT x m a Source #

HasImageWriter t m => HasImageWriter (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> FocusReader t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> FocusReader t m a -> FocusReader t m a Source #

HasImageWriter t m => HasImageWriter (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasImageWriter t m => HasImageWriter (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> Input t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> Input t m a -> Input t m a Source #

HasImageWriter t m => HasImageWriter (t :: k) (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> ThemeReader t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> ThemeReader t m a -> ThemeReader t m a Source #

(Monad m, Reflex t) => HasImageWriter (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> ImageWriter t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> ImageWriter t m a -> ImageWriter t m a Source #

(HasDisplayRegion t m, HasImageWriter t m, MonadFix m) => HasImageWriter (t :: Type) (Layout t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

tellImages :: Behavior t [Image] -> Layout t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> Layout t m a -> Layout t m a Source #

(HasImageWriter t m, MonadFix m) => HasImageWriter (t :: Type) (Focus t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

tellImages :: Behavior t [Image] -> Focus t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> Focus t m a -> Focus t m a Source #

HasImageWriter t m => HasImageWriter (t :: Type) (EventWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> EventWriterT t x m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> EventWriterT t x m a -> EventWriterT t x m a Source #

HasImageWriter t m => HasImageWriter (t :: Type) (DynamicWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> DynamicWriterT t x m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> DynamicWriterT t x m a -> DynamicWriterT t x m a Source #

HasImageWriter t m => HasImageWriter (t :: Type) (BehaviorWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

newtype ImageWriter t m a Source #

A widget that can produce images to draw onto the display

Constructors

ImageWriter 

Instances

Instances details
NotReady t m => NotReady t (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

notReadyUntil :: Event t a -> ImageWriter t m () #

notReady :: ImageWriter t m () #

PerformEvent t m => PerformEvent t (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Performable (ImageWriter t m) :: Type -> Type #

Methods

performEvent :: Event t (Performable (ImageWriter t m) a) -> ImageWriter t m (Event t a) #

performEvent_ :: Event t (Performable (ImageWriter t m) ()) -> ImageWriter t m () #

TriggerEvent t m => TriggerEvent t (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newTriggerEvent :: ImageWriter t m (Event t a, a -> IO ()) #

newTriggerEventWithOnComplete :: ImageWriter t m (Event t a, a -> IO () -> IO ()) #

newEventWithLazyTriggerWithOnComplete :: ((a -> IO () -> IO ()) -> IO (IO ())) -> ImageWriter t m (Event t a) #

PostBuild t m => PostBuild t (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

getPostBuild :: ImageWriter t m (Event t ()) #

MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newEventWithTrigger :: (EventTrigger t a -> IO (IO ())) -> ImageWriter t m (Event t a) #

newFanEventWithTrigger :: GCompare k => (forall a. k a -> EventTrigger t a -> IO (IO ())) -> ImageWriter t m (EventSelector t k) #

(Adjustable t m, MonadFix m, MonadHold t m) => Adjustable t (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

runWithReplace :: ImageWriter t m a -> Event t (ImageWriter t m b) -> ImageWriter t m (a, Event t b) #

traverseIntMapWithKeyWithAdjust :: (Key -> v -> ImageWriter t m v') -> IntMap v -> Event t (PatchIntMap v) -> ImageWriter t m (IntMap v', Event t (PatchIntMap v')) #

traverseDMapWithKeyWithAdjust :: GCompare k => (forall a. k a -> v a -> ImageWriter t m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> ImageWriter t m (DMap k v', Event t (PatchDMap k v')) #

traverseDMapWithKeyWithAdjustWithMove :: GCompare k => (forall a. k a -> v a -> ImageWriter t m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> ImageWriter t m (DMap k v', Event t (PatchDMapWithMove k v')) #

MonadTrans (ImageWriter t) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

lift :: Monad m => m a -> ImageWriter t m a #

MonadSample t m => MonadSample (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

sample :: Behavior t a -> ImageWriter t m a #

MonadHold t m => MonadHold (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hold :: a -> Event t a -> ImageWriter t m (Behavior t a) #

holdDyn :: a -> Event t a -> ImageWriter t m (Dynamic t a) #

holdIncremental :: Patch p => PatchTarget p -> Event t p -> ImageWriter t m (Incremental t p) #

buildDynamic :: PushM t a -> Event t a -> ImageWriter t m (Dynamic t a) #

headE :: Event t a -> ImageWriter t m (Event t a) #

now :: ImageWriter t m (Event t ()) #

HasTheme t m => HasTheme (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

(Monad m, Reflex t) => HasImageWriter (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> ImageWriter t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> ImageWriter t m a -> ImageWriter t m a Source #

HasFocusReader t m => HasFocusReader (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasDisplayRegion t m => HasDisplayRegion (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

MFunctor (ImageWriter t :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hoist :: forall m n (b :: k). Monad m => (forall a. m a -> n a) -> ImageWriter t m b -> ImageWriter t n b #

Monad m => Monad (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

(>>=) :: ImageWriter t m a -> (a -> ImageWriter t m b) -> ImageWriter t m b #

(>>) :: ImageWriter t m a -> ImageWriter t m b -> ImageWriter t m b #

return :: a -> ImageWriter t m a #

Functor m => Functor (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

fmap :: (a -> b) -> ImageWriter t m a -> ImageWriter t m b #

(<$) :: a -> ImageWriter t m b -> ImageWriter t m a #

MonadFix m => MonadFix (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mfix :: (a -> ImageWriter t m a) -> ImageWriter t m a #

Monad m => Applicative (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

pure :: a -> ImageWriter t m a #

(<*>) :: ImageWriter t m (a -> b) -> ImageWriter t m a -> ImageWriter t m b #

liftA2 :: (a -> b -> c) -> ImageWriter t m a -> ImageWriter t m b -> ImageWriter t m c #

(*>) :: ImageWriter t m a -> ImageWriter t m b -> ImageWriter t m b #

(<*) :: ImageWriter t m a -> ImageWriter t m b -> ImageWriter t m a #

MonadIO m => MonadIO (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

liftIO :: IO a -> ImageWriter t m a #

MonadThrow m => MonadThrow (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

throwM :: Exception e => e -> ImageWriter t m a #

MonadCatch m => MonadCatch (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

catch :: Exception e => ImageWriter t m a -> (e -> ImageWriter t m a) -> ImageWriter t m a #

MonadMask m => MonadMask (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mask :: ((forall a. ImageWriter t m a -> ImageWriter t m a) -> ImageWriter t m b) -> ImageWriter t m b #

uninterruptibleMask :: ((forall a. ImageWriter t m a -> ImageWriter t m a) -> ImageWriter t m b) -> ImageWriter t m b #

generalBracket :: ImageWriter t m a -> (a -> ExitCase b -> ImageWriter t m c) -> (a -> ImageWriter t m b) -> ImageWriter t m (b, c) #

MonadRef m => MonadRef (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Ref (ImageWriter t m) :: Type -> Type #

Methods

newRef :: a -> ImageWriter t m (Ref (ImageWriter t m) a) #

readRef :: Ref (ImageWriter t m) a -> ImageWriter t m a #

writeRef :: Ref (ImageWriter t m) a -> a -> ImageWriter t m () #

modifyRef :: Ref (ImageWriter t m) a -> (a -> a) -> ImageWriter t m () #

modifyRef' :: Ref (ImageWriter t m) a -> (a -> a) -> ImageWriter t m () #

type Ref (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (ImageWriter t m) = Ref (BehaviorWriterT t [Image] m)
type Performable (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

runImageWriter :: (Reflex t, Monad m) => ImageWriter t m a -> m (a, Behavior t [Image]) Source #

Run a widget that can produce images

Theming

class (Reflex t, Monad m) => HasTheme t m | m -> t where Source #

A class for things that can be visually styled

Minimal complete definition

Nothing

Methods

theme :: m (Behavior t Attr) Source #

default theme :: (f m' ~ m, Monad m', MonadTrans f, HasTheme t m') => m (Behavior t Attr) Source #

localTheme :: (Behavior t Attr -> Behavior t Attr) -> m a -> m a Source #

default localTheme :: (f m' ~ m, Monad m', MFunctor f, HasTheme t m') => (Behavior t Attr -> Behavior t Attr) -> m a -> m a Source #

Instances

Instances details
HasTheme t m => HasTheme (t :: k) (NodeIdT m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasTheme t m => HasTheme (t :: k) (ReaderT x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

theme :: ReaderT x m (Behavior t Attr) Source #

localTheme :: (Behavior t Attr -> Behavior t Attr) -> ReaderT x m a -> ReaderT x m a Source #

HasTheme t m => HasTheme (t :: k) (FocusReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasTheme t m => HasTheme (t :: k) (DisplayRegion t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasTheme t m => HasTheme (t :: k) (Input t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

theme :: Input t m (Behavior t Attr) Source #

localTheme :: (Behavior t Attr -> Behavior t Attr) -> Input t m a -> Input t m a Source #

(Monad m, Reflex t) => HasTheme (t :: k) (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasTheme t m => HasTheme (t :: Type) (ImageWriter t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

(HasTheme t m, Monad m) => HasTheme (t :: Type) (Layout t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

theme :: Layout t m (Behavior t Attr) Source #

localTheme :: (Behavior t Attr -> Behavior t Attr) -> Layout t m a -> Layout t m a Source #

(HasTheme t m, Monad m) => HasTheme (t :: Type) (Focus t m) Source # 
Instance details

Defined in Reflex.Vty.Widget.Layout

Methods

theme :: Focus t m (Behavior t Attr) Source #

localTheme :: (Behavior t Attr -> Behavior t Attr) -> Focus t m a -> Focus t m a Source #

HasTheme t m => HasTheme (t :: Type) (EventWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasTheme t m => HasTheme (t :: Type) (DynamicWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasTheme t m => HasTheme (t :: Type) (BehaviorWriterT t x m) Source # 
Instance details

Defined in Reflex.Vty.Widget

newtype ThemeReader t m a Source #

A widget that has access to theme information

Constructors

ThemeReader 

Fields

Instances

Instances details
MonadSample t m => MonadSample (t :: k) (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

sample :: Behavior t a -> ThemeReader t m a #

MonadHold t m => MonadHold (t :: k) (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hold :: a -> Event t a -> ThemeReader t m (Behavior t a) #

holdDyn :: a -> Event t a -> ThemeReader t m (Dynamic t a) #

holdIncremental :: Patch p => PatchTarget p -> Event t p -> ThemeReader t m (Incremental t p) #

buildDynamic :: PushM t a -> Event t a -> ThemeReader t m (Dynamic t a) #

headE :: Event t a -> ThemeReader t m (Event t a) #

now :: ThemeReader t m (Event t ()) #

(Monad m, Reflex t) => HasTheme (t :: k) (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

HasImageWriter t m => HasImageWriter (t :: k) (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

tellImages :: Behavior t [Image] -> ThemeReader t m () Source #

mapImages :: (Behavior t [Image] -> Behavior t [Image]) -> ThemeReader t m a -> ThemeReader t m a Source #

NotReady t m => NotReady t (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

notReadyUntil :: Event t a -> ThemeReader t m () #

notReady :: ThemeReader t m () #

PerformEvent t m => PerformEvent t (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Performable (ThemeReader t m) :: Type -> Type #

Methods

performEvent :: Event t (Performable (ThemeReader t m) a) -> ThemeReader t m (Event t a) #

performEvent_ :: Event t (Performable (ThemeReader t m) ()) -> ThemeReader t m () #

TriggerEvent t m => TriggerEvent t (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newTriggerEvent :: ThemeReader t m (Event t a, a -> IO ()) #

newTriggerEventWithOnComplete :: ThemeReader t m (Event t a, a -> IO () -> IO ()) #

newEventWithLazyTriggerWithOnComplete :: ((a -> IO () -> IO ()) -> IO (IO ())) -> ThemeReader t m (Event t a) #

PostBuild t m => PostBuild t (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

getPostBuild :: ThemeReader t m (Event t ()) #

MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

newEventWithTrigger :: (EventTrigger t a -> IO (IO ())) -> ThemeReader t m (Event t a) #

newFanEventWithTrigger :: GCompare k => (forall a. k a -> EventTrigger t a -> IO (IO ())) -> ThemeReader t m (EventSelector t k) #

(Adjustable t m, MonadFix m, MonadHold t m) => Adjustable t (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

runWithReplace :: ThemeReader t m a -> Event t (ThemeReader t m b) -> ThemeReader t m (a, Event t b) #

traverseIntMapWithKeyWithAdjust :: (Key -> v -> ThemeReader t m v') -> IntMap v -> Event t (PatchIntMap v) -> ThemeReader t m (IntMap v', Event t (PatchIntMap v')) #

traverseDMapWithKeyWithAdjust :: GCompare k => (forall a. k a -> v a -> ThemeReader t m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> ThemeReader t m (DMap k v', Event t (PatchDMap k v')) #

traverseDMapWithKeyWithAdjustWithMove :: GCompare k => (forall a. k a -> v a -> ThemeReader t m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> ThemeReader t m (DMap k v', Event t (PatchDMapWithMove k v')) #

MFunctor (ThemeReader t :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

hoist :: forall m n (b :: k). Monad m => (forall a. m a -> n a) -> ThemeReader t m b -> ThemeReader t n b #

MonadTrans (ThemeReader t) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

lift :: Monad m => m a -> ThemeReader t m a #

Monad m => Monad (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

(>>=) :: ThemeReader t m a -> (a -> ThemeReader t m b) -> ThemeReader t m b #

(>>) :: ThemeReader t m a -> ThemeReader t m b -> ThemeReader t m b #

return :: a -> ThemeReader t m a #

Functor m => Functor (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

fmap :: (a -> b) -> ThemeReader t m a -> ThemeReader t m b #

(<$) :: a -> ThemeReader t m b -> ThemeReader t m a #

MonadFix m => MonadFix (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mfix :: (a -> ThemeReader t m a) -> ThemeReader t m a #

Applicative m => Applicative (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

pure :: a -> ThemeReader t m a #

(<*>) :: ThemeReader t m (a -> b) -> ThemeReader t m a -> ThemeReader t m b #

liftA2 :: (a -> b -> c) -> ThemeReader t m a -> ThemeReader t m b -> ThemeReader t m c #

(*>) :: ThemeReader t m a -> ThemeReader t m b -> ThemeReader t m b #

(<*) :: ThemeReader t m a -> ThemeReader t m b -> ThemeReader t m a #

MonadIO m => MonadIO (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

liftIO :: IO a -> ThemeReader t m a #

MonadThrow m => MonadThrow (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

throwM :: Exception e => e -> ThemeReader t m a #

MonadCatch m => MonadCatch (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

catch :: Exception e => ThemeReader t m a -> (e -> ThemeReader t m a) -> ThemeReader t m a #

MonadMask m => MonadMask (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Methods

mask :: ((forall a. ThemeReader t m a -> ThemeReader t m a) -> ThemeReader t m b) -> ThemeReader t m b #

uninterruptibleMask :: ((forall a. ThemeReader t m a -> ThemeReader t m a) -> ThemeReader t m b) -> ThemeReader t m b #

generalBracket :: ThemeReader t m a -> (a -> ExitCase b -> ThemeReader t m c) -> (a -> ThemeReader t m b) -> ThemeReader t m (b, c) #

MonadRef m => MonadRef (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

Associated Types

type Ref (ThemeReader t m) :: Type -> Type #

Methods

newRef :: a -> ThemeReader t m (Ref (ThemeReader t m) a) #

readRef :: Ref (ThemeReader t m) a -> ThemeReader t m a #

writeRef :: Ref (ThemeReader t m) a -> a -> ThemeReader t m () #

modifyRef :: Ref (ThemeReader t m) a -> (a -> a) -> ThemeReader t m () #

modifyRef' :: Ref (ThemeReader t m) a -> (a -> a) -> ThemeReader t m () #

MonadNodeId m => MonadNodeId (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

type Ref (ThemeReader t m) = Ref (ReaderT (Behavior t Attr) m)
type Performable (ThemeReader t m) Source # 
Instance details

Defined in Reflex.Vty.Widget

runThemeReader :: (Reflex t, Monad m) => Behavior t Attr -> ThemeReader t m a -> m a Source #

Run a ThemeReader action with the given focus value

Manipulating images

withinImage :: Region -> Image -> Image Source #

Translates and crops an Image so that it is contained by the given Region.

imagesInRegion :: Reflex t => Behavior t Region -> Behavior t [Image] -> Behavior t [Image] Source #

Crop a behavior of images to a behavior of regions. See withinImage.

Running sub-widgets

pane Source #

Arguments

:: (MonadFix m, MonadHold t m, HasInput t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m) 
=> Dynamic t Region 
-> Dynamic t Bool

Whether the widget should be focused when the parent is.

-> m a 
-> m a 

Low-level widget combinator that runs a child widget within a given region and context. This widget filters and modifies the input that the child widget receives such that: * unfocused widgets receive no key events * mouse inputs inside the region have their coordinates translated such that (0,0) is the top-left corner of the region * mouse drag sequences that start OFF the region are ignored * mouse drag sequences that start ON the region and drag off are NOT ignored

Misc

blank :: Monad m => m () Source #

A widget that draws nothing