mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 20:17:42 +00:00
Merge pull request #83 from Amrykid/f449d2b7611b4d945eabe03ffb52b5235c544d80
events.nim updates
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user