glazier-0.9.0.0: Composable widgets framework

Safe HaskellNone
LanguageHaskell2010

Glazier.Class

Synopsis

Documentation

type family Implanted m :: * -> * Source #

Modify the state given a lens, prism or traversal. NB. This is Zoom for Notify.

Instances

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

class Implant m n s t | m -> s, n -> t, m t -> n, n s -> m where Source #

Minimal complete definition

implant

Methods

implant :: LensLike' (Implanted m) t s -> m -> n Source #

Instances

Monad m => Implant (GadgetT a s m c) (GadgetT a t m c) s t Source # 

Methods

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

Monad m => Implant (WindowT s v m r) (WindowT t v m r) s t Source # 

Methods

implant :: LensLike' (Implanted (WindowT s v m r)) t s -> WindowT s v m r -> WindowT t v m r 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 family Dispatched m :: * -> * Source #

Instances

type Dispatched (GadgetT a s m c) Source # 
type Dispatched (GadgetT a s m c) = Magnified (GadgetT a s m) c
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)

class Dispatch m n b a | m -> b, n -> a, m a -> n, n b -> m where Source #

Changes the action type given a lens, prism or traversal

Minimal complete definition

dispatch

Methods

dispatch :: LensLike' (Dispatched m) a b -> m -> n Source #

Instances

Monad m => Dispatch (GadgetT a s m c) (GadgetT b s m c) a b Source # 

Methods

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

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 #