summaryrefslogtreecommitdiffstats
path: root/python/examples
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2005-05-24 16:30:51 +0000
committerJohn (J5) Palmieri <johnp@redhat.com>2005-05-24 16:30:51 +0000
commit982e34a1ec594ae8ad8c27a651b6eba68dcae40e (patch)
tree0daec34abaa48b1d776497f4b4c72b8748ad39c3 /python/examples
parente43a353d27f1b9643c21ccff53a7759fc3dcdffe (diff)
* 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
Diffstat (limited to 'python/examples')
-rw-r--r--python/examples/example-signal-recipient.py22
1 files changed, 21 insertions, 1 deletions
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