This module is the core of this library; it provides infrastructure for creating new types of widgets and extending their functionality. This module provides various bits of infrastructure, including:
- modeling user interface widgets
- managing changes in focus between widgets
- managing widget state
This module does not provide any concrete widget types. For in-depth discussion on this module's API and widget implementation in particular, see the Vty-ui User's Manual.
- data WidgetImpl a = WidgetImpl {
- state :: a
- render_ :: Widget a -> DisplayRegion -> RenderContext -> IO Image
- growHorizontal_ :: a -> IO Bool
- growVertical_ :: a -> IO Bool
- currentSize :: DisplayRegion
- currentPosition :: DisplayRegion
- normalAttribute :: Attr
- focusAttribute :: Attr
- setCurrentPosition_ :: Widget a -> DisplayRegion -> IO ()
- keyEventHandler :: Widget a -> Key -> [Modifier] -> IO Bool
- gainFocusHandlers :: Handlers (Widget a)
- loseFocusHandlers :: Handlers (Widget a)
- focused :: Bool
- getCursorPosition_ :: Widget a -> IO (Maybe DisplayRegion)
- type Widget a = IORef (WidgetImpl a)
- getNormalAttr :: RenderContext -> Attr
- defaultContext :: RenderContext
- updateWidget :: MonadIO m => Widget a -> (WidgetImpl a -> WidgetImpl a) -> m ()
- updateWidgetState :: MonadIO m => Widget a -> (a -> a) -> m ()
- newWidget :: MonadIO m => (WidgetImpl a -> WidgetImpl a) -> m (Widget a)
- getState :: MonadIO m => Widget a -> m a
- getCurrentSize :: MonadIO m => Widget a -> m DisplayRegion
- setCurrentPosition :: MonadIO m => Widget a -> DisplayRegion -> m ()
- getCurrentPosition :: (MonadIO m, Functor m) => Widget a -> m DisplayRegion
- growVertical :: MonadIO m => Widget a -> m Bool
- growHorizontal :: MonadIO m => Widget a -> m Bool
- getCursorPosition :: MonadIO m => Widget a -> m (Maybe DisplayRegion)
- showWidget :: (Functor m, MonadIO m, Show a) => Widget a -> m String
- (<~) :: MonadIO m => (a -> b) -> IORef a -> m b
- (<~~) :: MonadIO m => (a -> b) -> Widget a -> m b
- data RenderContext = RenderContext {
- normalAttr :: Attr
- focusAttr :: Attr
- overrideAttr :: Attr
- skin :: Skin
- data RenderError = ImageTooBig String DisplayRegion DisplayRegion
- render :: (MonadIO m, Show a) => Widget a -> DisplayRegion -> RenderContext -> m Image
- renderAndPosition :: (MonadIO m, Show a) => Widget a -> DisplayRegion -> DisplayRegion -> RenderContext -> m Image
- class HasNormalAttr w where
- setNormalAttribute :: MonadIO m => w -> Attr -> m ()
- class HasFocusAttr w where
- setFocusAttribute :: MonadIO m => w -> Attr -> m ()
- withNormalAttribute :: (HasNormalAttr w, MonadIO m) => Attr -> w -> m w
- withFocusAttribute :: (HasFocusAttr w, MonadIO m) => Attr -> w -> m w
- handleKeyEvent :: MonadIO m => Widget a -> Key -> [Modifier] -> m Bool
- onKeyPressed :: MonadIO m => Widget a -> (Widget a -> Key -> [Modifier] -> IO Bool) -> m ()
- onGainFocus :: MonadIO m => Widget a -> (Widget a -> IO ()) -> m ()
- onLoseFocus :: MonadIO m => Widget a -> (Widget a -> IO ()) -> m ()
- relayKeyEvents :: MonadIO m => Widget a -> Widget b -> m ()
- relayFocusEvents :: MonadIO m => Widget a -> Widget b -> m ()
- data FocusGroup
- data FocusGroupError
- newFocusGroup :: MonadIO m => m (Widget FocusGroup)
- mergeFocusGroups :: MonadIO m => Widget FocusGroup -> Widget FocusGroup -> m (Widget FocusGroup)
- resetFocusGroup :: MonadIO m => Widget FocusGroup -> m ()
- addToFocusGroup :: (MonadIO m, Show a) => Widget FocusGroup -> Widget a -> m (Widget FocusEntry)
- focusNext :: MonadIO m => Widget FocusGroup -> m ()
- focusPrevious :: MonadIO m => Widget FocusGroup -> m ()
- setFocusGroupNextKey :: MonadIO m => Widget FocusGroup -> Key -> [Modifier] -> m ()
- setFocusGroupPrevKey :: MonadIO m => Widget FocusGroup -> Key -> [Modifier] -> m ()
- focus :: MonadIO m => Widget a -> m ()
- unfocus :: MonadIO m => Widget a -> m ()
Widget Infrastructure
data WidgetImpl a Source
WidgetImpl | |
|
Show a => Show (WidgetImpl a) | |
HasFocusAttr (Widget a) | |
HasNormalAttr (Widget a) | |
HasBorderAttr (Widget (Bordered a)) | |
HasBorderAttr (Widget VBorder) | |
HasBorderAttr (Widget HBorder) | |
HasBorderAttr (Widget Table) | |
Show a => RowLike (Widget a) |
type Widget a = IORef (WidgetImpl a)Source
updateWidget :: MonadIO m => Widget a -> (WidgetImpl a -> WidgetImpl a) -> m ()Source
updateWidgetState :: MonadIO m => Widget a -> (a -> a) -> m ()Source
newWidget :: MonadIO m => (WidgetImpl a -> WidgetImpl a) -> m (Widget a)Source
getCurrentSize :: MonadIO m => Widget a -> m DisplayRegionSource
setCurrentPosition :: MonadIO m => Widget a -> DisplayRegion -> m ()Source
getCurrentPosition :: (MonadIO m, Functor m) => Widget a -> m DisplayRegionSource
growVertical :: MonadIO m => Widget a -> m BoolSource
growHorizontal :: MonadIO m => Widget a -> m BoolSource
getCursorPosition :: MonadIO m => Widget a -> m (Maybe DisplayRegion)Source
Rendering
data RenderContext Source
RenderContext | |
|
data RenderError Source
render :: (MonadIO m, Show a) => Widget a -> DisplayRegion -> RenderContext -> m ImageSource
renderAndPosition :: (MonadIO m, Show a) => Widget a -> DisplayRegion -> DisplayRegion -> RenderContext -> m ImageSource
Miscellaneous
class HasNormalAttr w whereSource
setNormalAttribute :: MonadIO m => w -> Attr -> m ()Source
class HasFocusAttr w whereSource
setFocusAttribute :: MonadIO m => w -> Attr -> m ()Source
withNormalAttribute :: (HasNormalAttr w, MonadIO m) => Attr -> w -> m wSource
withFocusAttribute :: (HasFocusAttr w, MonadIO m) => Attr -> w -> m wSource
Events
Focus management
data FocusGroup Source
data FocusGroupError Source
newFocusGroup :: MonadIO m => m (Widget FocusGroup)Source
mergeFocusGroups :: MonadIO m => Widget FocusGroup -> Widget FocusGroup -> m (Widget FocusGroup)Source
resetFocusGroup :: MonadIO m => Widget FocusGroup -> m ()Source
addToFocusGroup :: (MonadIO m, Show a) => Widget FocusGroup -> Widget a -> m (Widget FocusEntry)Source
focusPrevious :: MonadIO m => Widget FocusGroup -> m ()Source
setFocusGroupNextKey :: MonadIO m => Widget FocusGroup -> Key -> [Modifier] -> m ()Source
setFocusGroupPrevKey :: MonadIO m => Widget FocusGroup -> Key -> [Modifier] -> m ()Source