Module for the basiscs of composing GUIs from editors
- type Getter alpha beta = alpha -> beta
- type Setter alpha beta = beta -> alpha -> alpha
- type Injector beta = beta -> IO ()
- type Extractor beta = IO (Maybe beta)
- type Applicator beta gamma = beta -> gamma ()
- type Editor alpha = Parameters -> Notifier -> IO (Widget, Injector alpha, Extractor alpha)
- getStandardRegFunction :: GUIEventSelector -> GtkRegFunc
- emptyNotifier :: IO Notifier
- data GUIEvent = GUIEvent {}
- data GUIEventSelector
- = FocusOut
- | FocusIn
- | ButtonPressed
- | KeyPressed
- | Clicked
- | MayHaveChanged
- | ValidationError
- type GtkRegFunc = forall o. GObjectClass o => o -> GtkHandler -> IO Connection
- newtype Notifier = Noti (IORef (Handlers GUIEvent IO GUIEventSelector, Map GUIEventSelector GUIEventReg))
- type GtkHandler = Event -> IO Bool
- data Connection = forall alpha . GObjectClass alpha => ConnectC (ConnectId alpha)
- type Connections = [Connection]
- activateEvent :: GObjectClass o => o -> Notifier -> Maybe (o -> GtkHandler -> IO Connection) -> GUIEventSelector -> IO ()
- propagateEvent :: Notifier -> [Notifier] -> GUIEventSelector -> IO ()
- allGUIEvents :: [GUIEventSelector]
- genericGUIEvents :: [GUIEventSelector]
- propagateAsChanged :: EventSource alpha GUIEvent m GUIEventSelector => alpha -> [GUIEventSelector] -> m ()
Types
type Applicator beta gamma = beta -> gamma ()Source
A type for the application of a value to be reflected in the GUI
type Editor alpha = Parameters -> Notifier -> IO (Widget, Injector alpha, Extractor alpha)Source
A type to describe an editor. alpha is the type of the individual field of the record
getStandardRegFunction :: GUIEventSelector -> GtkRegFuncSource
A convinence method for not repeating this over and over again
A type for an event in the GUI
data GUIEventSelector Source
FocusOut | generic, the widget looses the focus |
FocusIn | generic, the widget gets the focus |
ButtonPressed | generic, a mouse key has been pressed and released, while the widget has the focus |
KeyPressed | generic, a keyboard key has been pressed and released, while the widget has the focus |
Clicked | button specific, the button has been pressed |
MayHaveChanged | generic, no gui event, the contents of the widget may have changed |
ValidationError | validation of a contents has failed |
type GtkRegFunc = forall o. GObjectClass o => o -> GtkHandler -> IO ConnectionSource
A type for a function to register a gtk event |
The event source in the gtk editor context If the second argument is Left Handler the handler gets registered If the second argument is Right Unique the handler will be removed The returned unique value must be used for unregistering an event
Noti (IORef (Handlers GUIEvent IO GUIEventSelector, Map GUIEventSelector GUIEventReg)) |
type GtkHandler = Event -> IO BoolSource
data Connection Source
Signal handlers for the different pane types
forall alpha . GObjectClass alpha => ConnectC (ConnectId alpha) |
type Connections = [Connection]Source
activateEvent :: GObjectClass o => o -> Notifier -> Maybe (o -> GtkHandler -> IO Connection) -> GUIEventSelector -> IO ()Source
Activate the event after the event has been declared and the widget has been constructed
propagateEvent :: Notifier -> [Notifier] -> GUIEventSelector -> IO ()Source
Propagate the event with the selector from notifier to eventSource
propagateAsChanged :: EventSource alpha GUIEvent m GUIEventSelector => alpha -> [GUIEventSelector] -> m ()Source