From 982e34a1ec594ae8ad8c27a651b6eba68dcae40e Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Tue, 24 May 2005 16:30:51 +0000 Subject: * python/decorators.py: add explicitly_pass_message decorator for passing in the dbus message as keyword for edge case signal handling * python/matchrules.py (SignalMatchRule.__repr__): fix output to conform with what dbus expects for match rules (SignalMatchRule.execute): add the dbus message as a keyword if the signal handler has requested it * python/examples/example/signal-recipient.py: added some more examples on how to hook up to signals * python/proxies.py: minor formatting changes --- python/examples/example-signal-recipient.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'python/examples') diff --git a/python/examples/example-signal-recipient.py b/python/examples/example-signal-recipient.py index 2f932a9b..681dd7c2 100644 --- a/python/examples/example-signal-recipient.py +++ b/python/examples/example-signal-recipient.py @@ -20,10 +20,30 @@ bus = dbus.SessionBus() object = bus.get_object("org.designfu.TestService","/org/designfu/TestService/object") def hello_signal_handler(hello_string): - print ("Received signal and it says: " + hello_string) + print ("Received signal and it says: " + hello_string) + +@dbus.explicitly_pass_message +def catchall_signal_handler(*args, **keywords): + #The dbus.handler directive passes in the special __dbus_message__ variable + dbus_message = keywords["dbus_message"] + print "Caught signal " + dbus_message.get_member() + for arg in args: + print " " + str(arg) + +def catchall_hello_signals_handler(hello_string): + print ("Received a hello signal and it says ") + hello_string + +@dbus.explicitly_pass_message +def catchall_testservice_interface_handler(hello_string, dbus_message): + print "org.designfu.TestService interface says " + hello_string + " when it sent signal " + dbus_message.get_member() object.connect_to_signal("HelloSignal", hello_signal_handler, dbus_interface="org.designfu.TestService") +#lets make a catchall +bus.add_signal_receiver(catchall_signal_handler) +bus.add_signal_receiver(catchall_hello_signals_handler, dbus_interface = "org.designfu.TestService", signal_name = "HelloSignal") +bus.add_signal_receiver(catchall_testservice_interface_handler, dbus_interface = "org.designfu.TestService") + gobject.timeout_add(2000, emit_signal) # Tell the remote object to emit the signal -- cgit