Callbacks system
- Events are registered/de-registered “as needed”, no wasted function calls from the API
- Callbacks can be deferred and the callback condensed when rapidly fired
- Callbacks can be prioritized
- Undo handling for events that could cause an invalid undo queue state (Undo/Redo events)
import mlib.core.callbacks as callbacks
Getting events:
print '\n'.join(callbacks.getEvents())
Adding a callback:
#Define some callback function
def test():
print 'Event fired!'
#Register it to the event "SelectionChanged"
callbacks.addCallback('SelectionChanged', 'test', test)
Removing a callback:
callbacks.removeCallback('SelectionChanged', 'test')
Registering a new event type:
#Either define a set of register/deregister functions or
#use the helper function to generate some for you
rfunc, dfunc = make_user_event_funcs('myEvent')
callbacks.addEvent('myEvent', rfunc, dfunc)
#Add a test callback for the new event type
callbacks.addCallback('myEvent', 'test', test)
#Post the event to test it out
callbacks.postEvent('myEvent')
Get a list of event names that are supported
Returns: | Event names |
---|---|
Return type: | list |
Add a callback to an event
Parameters: |
|
---|
Remove a callback from an event
Parameters: |
|
---|
Returns a list of all callbacks, sorted by priority
Parameters: | event (str or None) – (Optional) event name to filter to |
---|---|
Returns: | callbacks |
Return type: | list |
Post an event if possible. Arguments are forwarded to postUserEvent/event_handler
Parameters: | event (str) – Event to post |
---|
Define a new event for the system.
Parameters: |
|
---|
Parameters: |
|
---|
Generate a set of register/deregister functions for a MUserEventMessage with the given name. This is intended to make simple user events easier to implement.
Parameters: | event – Event name to generate functions for |
---|---|
Returns: | Register Function, Deregister Function |
Return type: | (rfunc, dfunc) |
Callback(event, owner, function, priority, immediate)
Event(name, register_func, deregister_func, disable_undo, allow_deferred, deferred_low_priority, builtin)