glazier-0.10.0.0: Composable widgets framework

Safe HaskellNone
LanguageHaskell2010

Glazier.Widget

Synopsis

Documentation

data Widget m v 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 m v 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 m v a s n a -> Widget m v a s n b #

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

(Applicative m, Monad n, Monoid v) => Applicative (Widget m v 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 m v a s n a #

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

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

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

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

Methods

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

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

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

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

Methods

mempty :: Widget m v a s n c #

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

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

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

Methods

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

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

Methods

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

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

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

polymorphic lens to the window of a widget

_gadget :: Lens (Widget m v a s n c) (Widget m v 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 m v a s n c) (WindowT s m v) Source #

non polymorphic lens to the window of a widget

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

non polymorphic lens to the gadget of a widget

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

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

Non polymorphic version of _Widget

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

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

Non polymorphic version of _WrappingWidget

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

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

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

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

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

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

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

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

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

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