Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Editor editorElement a = Editor {
- _editorTidings :: Tidings a
- _editorElement :: editorElement
- edited :: Editor el a -> Event a
- contents :: Editor el a -> Behavior a
- editorElement :: Lens (Editor el a) (Editor el' a) el el'
- newtype EditorFactory a el b = EF {}
- dimapEF :: (a' -> a) -> (b -> b') -> EditorFactory a el b -> EditorFactory a' el b'
- lmapEF :: (a' -> a) -> EditorFactory a el b -> EditorFactory a' el b
- applyEF :: (el1 -> el2 -> el) -> EditorFactory in_ el1 (a -> b) -> EditorFactory in_ el2 a -> EditorFactory in_ el b
- createEditor :: Renderable w => EditorFactory a w b -> Behavior a -> UI (Editor Element b)
- renderEditor :: Renderable w => Editor w a -> UI (Editor Element a)
- editorFactoryElement :: Setter (EditorFactory a el b) (EditorFactory a el' b) el el'
- editorFactoryInput :: Setter (EditorFactory a el b) (EditorFactory a' el b) a' a
- editorFactoryOutput :: Setter (EditorFactory a el b) (EditorFactory a el b') b b'
- (|*|) :: EditorFactory s Layout (b -> a) -> EditorFactory s Layout b -> EditorFactory s Layout a
- (|*) :: EditorFactory s Layout a -> UI Element -> EditorFactory s Layout a
- (*|) :: UI Element -> EditorFactory s Layout a -> EditorFactory s Layout a
- (-*-) :: EditorFactory s Layout (b -> a) -> EditorFactory s Layout b -> EditorFactory s Layout a
- (-*) :: EditorFactory s Layout a -> UI Element -> EditorFactory s Layout a
- (*-) :: UI Element -> EditorFactory s Layout a -> EditorFactory s Layout a
- field :: Renderable m => String -> (out -> inn) -> EditorFactory inn m a -> EditorFactory out Layout a
- fieldLayout :: (Renderable m, Renderable m') => (Layout -> m') -> String -> (out -> inn) -> EditorFactory inn m a -> EditorFactory out m' a
- edit :: (a' -> a) -> EditorFactory a el b -> EditorFactory a' el b
- pattern Horizontally :: forall a b. EditorFactory a Layout b -> EditorFactory a Horizontal b
- pattern Vertically :: forall a b. EditorFactory a Layout b -> EditorFactory a Vertical b
- editorUnit :: EditorFactory b Element b
- editorIdentity :: EditorFactory a el a -> EditorFactory (Identity a) el (Identity a)
- editorString :: EditorFactory String TextEntry String
- editorCheckBox :: EditorFactory Bool Element Bool
- editorReadShow :: (Read a, Show a) => EditorFactory (Maybe a) TextEntry (Maybe a)
- editorEnumBounded :: (Bounded a, Enum a, Ord a, Show a) => Behavior (a -> UI Element) -> EditorFactory (Maybe a) (ListBox a) (Maybe a)
- editorSelection :: Ord a => Behavior [a] -> Behavior (a -> UI Element) -> EditorFactory (Maybe a) (ListBox a) (Maybe a)
- editorSum :: (Ord tag, Show tag, Renderable el) => (Layout -> Layout -> Layout) -> [(tag, EditorFactory a el a)] -> (a -> tag) -> EditorFactory a Layout a
- editorJust :: EditorFactory (Maybe b) el (Maybe b) -> EditorFactory b el b
- withLayout :: (layout -> layout') -> EditorFactory a layout b -> EditorFactory a layout' b
- construct :: Renderable m => EditorFactory a m b -> EditorFactory a Layout b
Editors
data Editor editorElement a Source #
A widget for editing values of type a
.
Editor | |
|
editorElement :: Lens (Editor el a) (Editor el' a) el el' Source #
A lens over the editorElement
field
newtype EditorFactory a el b Source #
A function from Behavior
a
to Editor
b
All the three type arguments are functorial, but a
is contravariant.
EditorFactory
is a Biapplicative
functor on el
and b
, and
a Profunctor
on a
and b
.
Bifunctor (EditorFactory a) Source # | |
Biapplicative (EditorFactory a) Source # | |
Functor (EditorFactory a el) Source # | |
Monoid el => Applicative (EditorFactory a el) Source # | |
dimapEF :: (a' -> a) -> (b -> b') -> EditorFactory a el b -> EditorFactory a' el b' Source #
lmapEF :: (a' -> a) -> EditorFactory a el b -> EditorFactory a' el b Source #
Applies a function over the input
applyEF :: (el1 -> el2 -> el) -> EditorFactory in_ el1 (a -> b) -> EditorFactory in_ el2 a -> EditorFactory in_ el b Source #
createEditor :: Renderable w => EditorFactory a w b -> Behavior a -> UI (Editor Element b) Source #
renderEditor :: Renderable w => Editor w a -> UI (Editor Element a) Source #
editorFactoryElement :: Setter (EditorFactory a el b) (EditorFactory a el' b) el el' Source #
A Setter
over the element of the editor being built
editorFactoryInput :: Setter (EditorFactory a el b) (EditorFactory a' el b) a' a Source #
A Setter
over the input thing
editorFactoryOutput :: Setter (EditorFactory a el b) (EditorFactory a el b') b b' Source #
A Setter
over the output thing
Editor composition
(|*|) :: EditorFactory s Layout (b -> a) -> EditorFactory s Layout b -> EditorFactory s Layout a infixl 4 Source #
Left-right editor composition
(|*) :: EditorFactory s Layout a -> UI Element -> EditorFactory s Layout a infixl 5 Source #
Left-right composition of an editorElement with a editor
(*|) :: UI Element -> EditorFactory s Layout a -> EditorFactory s Layout a infixl 5 Source #
Left-right composition of an editorElement with a editor
(-*-) :: EditorFactory s Layout (b -> a) -> EditorFactory s Layout b -> EditorFactory s Layout a infixl 4 Source #
Left-right editor composition
(-*) :: EditorFactory s Layout a -> UI Element -> EditorFactory s Layout a infixl 5 Source #
Left-right composition of an editorElement with a editor
(*-) :: UI Element -> EditorFactory s Layout a -> EditorFactory s Layout a infixl 5 Source #
Left-right composition of an editorElement with a editor
field :: Renderable m => String -> (out -> inn) -> EditorFactory inn m a -> EditorFactory out Layout a Source #
A helper that arranges a label with the field name and the editor horizontally.
fieldLayout :: (Renderable m, Renderable m') => (Layout -> m') -> String -> (out -> inn) -> EditorFactory inn m a -> EditorFactory out m' a Source #
A helper that arranges a label with the field name and the editor horizontally. This version takes a Layout builder as well.
edit :: (a' -> a) -> EditorFactory a el b -> EditorFactory a' el b Source #
Focus the editor on the field retrieved by the getter. Use when composing editors via the Biapplicative interface
personEditor :: EditorFactory Person PersonEditor Person personEditor = bipure Person Person <<*>> edit education editor <<*>> edit firstName editor <<*>> edit lastName editor
pattern Horizontally :: forall a b. EditorFactory a Layout b -> EditorFactory a Horizontal b Source #
Applicative modifier for horizontal composition of editor factories. This can be used in conjunction with ApplicativeDo as:
editorPerson = horizontally $ do firstName <- Horizontally $ field "First:" firstName editor lastName <- Horizontally $ field "Last:" lastName editor age <- Horizontally $ field "Age:" age editor return Person{..}
DEPRECATED: Use the Horizontal
layout builder instead
pattern Vertically :: forall a b. EditorFactory a Layout b -> EditorFactory a Vertical b Source #
Applicative modifier for vertical composition of editor factories. This can be used in conjunction with ApplicativeDo as:
editorPerson = vertically $ do firstName <- Vertically $ field "First:" firstName editor lastName <- Vertically $ field "Last:" lastName editor age <- Vertically $ field "Age:" age editor return Person{..}
DEPRECATED: Use the Vertical
layout builder instead
Editor constructors
editorUnit :: EditorFactory b Element b Source #
editorIdentity :: EditorFactory a el a -> EditorFactory (Identity a) el (Identity a) Source #
editorReadShow :: (Read a, Show a) => EditorFactory (Maybe a) TextEntry (Maybe a) Source #
editorEnumBounded :: (Bounded a, Enum a, Ord a, Show a) => Behavior (a -> UI Element) -> EditorFactory (Maybe a) (ListBox a) (Maybe a) Source #
editorSelection :: Ord a => Behavior [a] -> Behavior (a -> UI Element) -> EditorFactory (Maybe a) (ListBox a) (Maybe a) Source #
An editor that presents a dynamic choice of values.
editorSum :: (Ord tag, Show tag, Renderable el) => (Layout -> Layout -> Layout) -> [(tag, EditorFactory a el a)] -> (a -> tag) -> EditorFactory a Layout a Source #
An editor for union types, built from editors for its constructors.
editorJust :: EditorFactory (Maybe b) el (Maybe b) -> EditorFactory b el b Source #
Editor layout
withLayout :: (layout -> layout') -> EditorFactory a layout b -> EditorFactory a layout' b Source #
Apply a layout builder.
construct :: Renderable m => EditorFactory a m b -> EditorFactory a Layout b Source #
Construct a concrete Layout
. Useful when combining heterogeneours layout builders.