diff options
author | Araq <rumpf_a@web.de> | 2011-12-29 07:32:51 -0800 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-12-29 07:32:51 -0800 |
commit | 0cda7d59fe36cc53acef2b769edc0c3e6e8ff93c (patch) | |
tree | 2339c3baa88ef4baee90a4bab441621572041f41 /lib | |
parent | a26433b6ece813d8e14efe4f65b4be3a893c2116 (diff) | |
parent | f449d2b7611b4d945eabe03ffb52b5235c544d80 (diff) | |
download | Nim-0cda7d59fe36cc53acef2b769edc0c3e6e8ff93c.tar.gz |
Merge pull request #83 from Amrykid/f449d2b7611b4d945eabe03ffb52b5235c544d80
events.nim updates
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/events.nim | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/lib/pure/events.nim b/lib/pure/events.nim index a3a609b20..c3c4cb0dc 100644 --- a/lib/pure/events.nim +++ b/lib/pure/events.nim @@ -12,25 +12,27 @@ ## This module implements an event system that is not dependant on external ## graphical toolkits. It was originally called ``NimEE`` because ## it was inspired by Python's PyEE module. There are two ways you can use events: one is a python-inspired way; the other is more of a C-style way. +## ## .. code-block:: Nimrod -## var ee = initEventEmitter() -## var genericargs: TEventArgs -## proc handleevent(e: TEventArgs) = -## echo("Handled!") +## var ee = initEventEmitter() +## var genericargs: TEventArgs +## proc handleevent(e: TEventArgs) = +## echo("Handled!") ## -## # Python way -## ee.on("EventName", handleevent) -## ee.emit("EventName", genericargs) +## # Python way +## ee.on("EventName", handleevent) +## ee.emit("EventName", genericargs) ## -## # C/Java way -## # Declare a type -## type -## TSomeObject = object of TObject -## SomeEvent: TEventHandler -## var myobj: TSomeObject -## myobj.SomeEvent = initEventHandler("SomeEvent") -## myobj.SomeEvent.addHandler(handleevent) -## ee.emit(myobj.SomeEvent, genericargs) +## # C/Java way +## # Declare a type +## type +## TSomeObject = object of TObject +## SomeEvent: TEventHandler +## var myobj: TSomeObject +## myobj.SomeEvent = initEventHandler("SomeEvent") +## myobj.SomeEvent.addHandler(handleevent) +## ee.emit(myobj.SomeEvent, genericargs) + type TEventArgs* = object of TObject ## Base object for event arguments that are passed to callback functions. TEventHandler* = tuple[name: string, handlers: seq[proc(e:TEventArgs)]] ## An eventhandler for an event. @@ -57,6 +59,11 @@ proc removeHandler*(handler: var TEventHandler, func: proc(e: TEventArgs)) = handler.handlers.del(i) break +proc containsHandler*(handler: var TEventHandler, func: proc(e: TEventArgs)): bool = + ## Checks if a callback is registered to this event handler. + return handler.handlers.contains(func) + + proc clearHandlers*(handler: var TEventHandler) = ## Clears all of the callbacks from the event handler. setLen(handler.handlers, 0) |