Merge pull request #83 from Amrykid/f449d2b7611b4d945eabe03ffb52b5235c544d80

events.nim updates
This commit is contained in:
Araq
2011-12-29 07:32:51 -08:00

View File

@@ -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!")
##
## # Python way
## ee.on("EventName", handleevent)
## ee.emit("EventName", genericargs)
## .. code-block:: Nimrod
## var ee = initEventEmitter()
## var genericargs: TEventArgs
## proc handleevent(e: TEventArgs) =
## echo("Handled!")
##
## # 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)