Merge branch 'master' of github.com:Araq/Nimrod
This commit is contained in:
commit
f6a90c96ba
1 changed files with 24 additions and 17 deletions
|
|
@ -12,25 +12,27 @@
|
||||||
## This module implements an event system that is not dependant on external
|
## This module implements an event system that is not dependant on external
|
||||||
## graphical toolkits. It was originally called ``NimEE`` because
|
## 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.
|
## 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
|
## .. code-block:: Nimrod
|
||||||
## ee.on("EventName", handleevent)
|
## var ee = initEventEmitter()
|
||||||
## ee.emit("EventName", genericargs)
|
## var genericargs: TEventArgs
|
||||||
|
## proc handleevent(e: TEventArgs) =
|
||||||
|
## echo("Handled!")
|
||||||
|
##
|
||||||
|
## # Python way
|
||||||
|
## ee.on("EventName", handleevent)
|
||||||
|
## ee.emit("EventName", genericargs)
|
||||||
##
|
##
|
||||||
## # C/Java way
|
## # C/Java way
|
||||||
## # Declare a type
|
## # Declare a type
|
||||||
## type
|
## type
|
||||||
## TSomeObject = object of TObject
|
## TSomeObject = object of TObject
|
||||||
## SomeEvent: TEventHandler
|
## SomeEvent: TEventHandler
|
||||||
## var myobj: TSomeObject
|
## var myobj: TSomeObject
|
||||||
## myobj.SomeEvent = initEventHandler("SomeEvent")
|
## myobj.SomeEvent = initEventHandler("SomeEvent")
|
||||||
## myobj.SomeEvent.addHandler(handleevent)
|
## myobj.SomeEvent.addHandler(handleevent)
|
||||||
## ee.emit(myobj.SomeEvent, genericargs)
|
## ee.emit(myobj.SomeEvent, genericargs)
|
||||||
|
|
||||||
type
|
type
|
||||||
TEventArgs* = object of TObject ## Base object for event arguments that are passed to callback functions.
|
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.
|
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)
|
handler.handlers.del(i)
|
||||||
break
|
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) =
|
proc clearHandlers*(handler: var TEventHandler) =
|
||||||
## Clears all of the callbacks from the event handler.
|
## Clears all of the callbacks from the event handler.
|
||||||
setLen(handler.handlers, 0)
|
setLen(handler.handlers, 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue