diff options
author | Araq <rumpf_a@web.de> | 2011-12-30 11:03:19 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-12-30 11:03:19 +0100 |
commit | f6a90c96ba420f246cd7d8ce6a9b95009aa4c660 (patch) | |
tree | 79aa97f942f389af7a0b32ef2113136182045e92 /lib | |
parent | 73919e3082e3bd7905f9a11a33fc54d641a10ac7 (diff) | |
parent | 0cda7d59fe36cc53acef2b769edc0c3e6e8ff93c (diff) | |
download | Nim-f6a90c96ba420f246cd7d8ce6a9b95009aa4c660.tar.gz |
Merge branch 'master' of github.com:Araq/Nimrod
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) |