ltk- Leksah tool kit

Safe HaskellSafe-Inferred



A simple event mechanism



class (Eq delta, Ord delta, Show delta) => EventSelector delta Source

Every event needs a selector, which should identify the type of event

class EventSelector delta => Event beta delta | beta -> delta, delta -> beta where Source

Every event needs to know its selector and its source


getSelector :: beta -> delta Source

class (Monad gamma, Event beta delta) => EventSource alpha beta gamma delta | alpha -> beta, alpha -> gamma where Source

Everything which is an event source needs this alpha is the Notifier beta is the event gamma is the monad delta is the event selector

Minimal complete definition

getHandlers, setHandlers, myUnique


getHandlers :: alpha -> gamma (Handlers beta gamma delta) Source

setHandlers :: alpha -> Handlers beta gamma delta -> gamma () Source

myUnique :: alpha -> gamma Unique Source

canTriggerEvent :: alpha -> delta -> Bool Source

Reimplement this in instances to make triggering of events possible

triggerEvent :: alpha -> beta -> gamma beta Source

Returns the event, so that you may get values back from an event Args: Notifier, Event

registerEvent :: alpha -> delta -> (beta -> gamma beta) -> gamma (Maybe Unique) Source

unregisterEvent :: alpha -> delta -> Unique -> gamma () Source

use Left to register and Right to unregister Args: Notifier, EventSelector, Unique

type Handlers beta gamma delta = Map delta [(Unique, beta -> gamma beta)] Source

This shows the implementation of the event mechnism

registerEvents :: EventSource alpha beta gamma delta => alpha -> [delta] -> (beta -> gamma beta) -> gamma [Unique] Source