1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
# BaseObject usage example.
from ocempgui.object import BaseObject
from ocempgui.events import EventManager
# Callbacks, which should be invoked for the object.
def ping_callback (obj, additional_data):
print "The object is: %s" % obj.name
print "Passed data is: %s" % additional_data
def pong_callback ():
print "Another callback with no arguments."
# Object implementation, which can listen to specific events.
class OwnObject (BaseObject):
def __init__ (self, name):
BaseObject.__init__ (self)
self.name = name
# The object should be able to listen to 'ping' and 'pong'
# events.
self._signals["ping"] = []
self._signals["pong"] = []
def notify (self, event):
# This simple notify method will not be used in this
# example. Instead, the signals are invoked directly.
if event.signal == "ping":
self.run_signal_handlers ("ping")
elif event.signal == "pong":
self.run_signal_handlers ("pong")
manager = EventManager ()
# Create an object and connect callbacks to its both events.
my_obj = OwnObject ("First object")
ev1 = my_obj.connect_signal ("ping", ping_callback, my_obj, "data")
ev2 = my_obj.connect_signal ("pong", pong_callback)
# Connect it to the event manager
my_obj.manager = manager
# Invoke the connected signals handlers for a specific event.
manager.emit ("ping", None)
manager.emit ("pong", None)
# After disconnecting a callback, it will not be invoked anymore.
my_obj.disconnect_signal (ev1)
my_obj.disconnect_signal (ev2)
manager.emit ("ping", None)
manager.emit ("pong", None)
|