glazier-0.9.0.0: Composable widgets framework

Safe HaskellNone
LanguageHaskell2010

Glazier.Widget

Synopsis

Documentation

data Widget v m r a s n c Source #

A widget is basically a tuple with Gadget and Window, but with handy instances for implant and dispatch.

Constructors

Widget 

Fields

Instances

Functor n => Functor (Widget v m r a s n) Source #

Widget Functor is lawful 1: fmap id = id (Widget w g) = Widget w (id $ g) = Widget w g 2: fmap (f . g) = fmap f . fmap g (Widget w gad) = Widget w ((f . g) $ gad) = Widget w ((fmap f . fmap g) gad)

Methods

fmap :: (a -> b) -> Widget v m r a s n a -> Widget v m r a s n b #

(<$) :: a -> Widget v m r a s n b -> Widget v m r a s n a #

(Monad m, Monad n, Monoid r) => Applicative (Widget v m r a s n) Source #

Widget Applicative is lawful Identity: pure id * v = v Widget mempty (pure id) * Widget vw vg = Widget (mempty <> vw) (pure id * vg) = Widget vw vg Composition: pure (.) * u * v * w = u * (v * w) Widget mempty (pure (.)) * Widget uw ug * Widget vw vg * Widget ww wg = = Widget (mempty <> uw <> vw <> ww) (pure (.) * ug * vg * wg = Widget (uw <> vw <> ww) (ug * (vg * wg)) = Widget (uw <> (vw <> ww)) (ug * (vg * wg)) = Widget uw ug * (Widget vw vg * Widget ww wg) Interchange: u * pure y = pure ($ y) * u Widget uw ug * Widget mempty (pure y) = Widget (uw <> mempty) (ug * pure y) = Widget (mempty <> uw) (pure ($ y) * ug) = Widget mempty (pure $y) * Widget uw ug

Methods

pure :: a -> Widget v m r a s n a #

(<*>) :: Widget v m r a s n (a -> b) -> Widget v m r a s n a -> Widget v m r a s n b #

(*>) :: Widget v m r a s n a -> Widget v m r a s n b -> Widget v m r a s n b #

(<*) :: Widget v m r a s n a -> Widget v m r a s n b -> Widget v m r a s n a #

(Monad m, Monad n, Semigroup r, Semigroup c) => Semigroup (Widget v m r a s n c) Source # 

Methods

(<>) :: Widget v m r a s n c -> Widget v m r a s n c -> Widget v m r a s n c #

sconcat :: NonEmpty (Widget v m r a s n c) -> Widget v m r a s n c #

stimes :: Integral b => b -> Widget v m r a s n c -> Widget v m r a s n c #

(Monad m, Monad n, Monoid r, Monoid c) => Monoid (Widget v m r a s n c) Source # 

Methods

mempty :: Widget v m r a s n c #

mappend :: Widget v m r a s n c -> Widget v m r a s n c -> Widget v m r a s n c #

mconcat :: [Widget v m r a s n c] -> Widget v m r a s n c #

Monad n => Dispatch (Widget v m r a s n c) (Widget v m r b s n c) a b Source # 

Methods

dispatch :: LensLike' (Dispatched (Widget v m r a s n c)) b a -> Widget v m r a s n c -> Widget v m r b s n c Source #

(Monad m, Monad n) => Implant (Widget v m r a s n c) (Widget v m r a t n c) s t Source # 

Methods

implant :: LensLike' (Implanted (Widget v m r a s n c)) t s -> Widget v m r a s n c -> Widget v m r a t n c Source #

type Dispatched (Widget v m r a s n c) Source # 
type Dispatched (Widget v m r a s n c) = Dispatched (GadgetT a s n c)
type Implanted (Widget v m r a s n c) Source # 
type Implanted (Widget v m r a s n c)

_window :: Lens (Widget v m r a s n c) (Widget v' m' r' a s n c) (WindowT s v m r) (WindowT s v' m' r') Source #

polymorphic lens to the window of a widget

_gadget :: Lens (Widget v m r a s n c) (Widget v m r a' s n' c') (GadgetT a s n c) (GadgetT a' s n' c') Source #

polymorphic lens to the gadget of a widget

_window' :: Lens' (Widget v m r a s n c) (WindowT s v m r) Source #

non polymorphic lens to the window of a widget

_gadget' :: Lens' (Widget v m r a s n c) (GadgetT a s n c) Source #

non polymorphic lens to the gadget of a widget

_Widget :: Iso (Widget v m r a s n c) (Widget v' m' r' a' s' n' c') (s -> v -> m (r, v), a -> s -> n (c, s)) (s' -> v' -> m' (r', v'), a' -> s' -> n' (c', s')) Source #

_Widget' :: Iso' (Widget v m r a s n c) (s -> v -> m (r, v), a -> s -> n (c, s)) Source #

Non polymorphic version of _Widget

_WrappingWidget :: Iso (Widget v m r a s n c) (Widget v' m' r' a' s' n' c') (WindowT s v m r, GadgetT a s n c) (WindowT s' v' m' r', GadgetT a' s' n' c') Source #

_WrappingWidget' :: Iso' (Widget v m r a s n c) (WindowT s v m r, GadgetT a s n c) Source #

Non polymorphic version of _WrappingWidget

belowWidget :: ((s -> v -> m (r, v), a -> s -> n (c, s)) -> (s' -> v' -> m' (r', v'), a' -> s' -> n' (c', s'))) -> Widget v m r a s n c -> Widget v' m' r' a' s' n' c' Source #

underWidget :: ((WindowT s v m r, GadgetT a s n c) -> (WindowT s' v' m' r', GadgetT a' s' n' c')) -> Widget v m r a s n c -> Widget v' m' r' a' s' n' c' Source #

overWidget :: (Widget v m r a s n c -> Widget v' m' r' a' s' n' c') -> (WindowT s v m r, GadgetT a s n c) -> (WindowT s' v' m' r', GadgetT a' s' n' c') Source #

aboveWidget :: (Widget v m r a s n c -> Widget v' m' r' a' s' n' c') -> (s -> v -> m (r, v), a -> s -> n (c, s)) -> (s' -> v' -> m' (r', v'), a' -> s' -> n' (c', s')) Source #

mkWidget :: (WindowT s v m r, GadgetT a s n c) -> Widget v m r a s n c Source #

mkWidget' :: (s -> v -> m (r, v), a -> s -> n (c, s)) -> Widget v m r a s n c Source #

runWidget :: Widget v m r a s n c -> (WindowT s v m r, GadgetT a s n c) Source #

runWidget' :: Widget v m r a s n c -> (s -> v -> m (r, v), a -> s -> n (c, s)) Source #

statically :: (Monad n, Monoid c) => WindowT s v m r -> Widget v m r a s n c Source #

dynamically :: (Monad m, Monoid r) => GadgetT a s n c -> Widget v m r a s n c Source #