dbus/python/examples example-signal-recipient.py,1.5,1.6

John Palmieri johnp at freedesktop.org
Tue May 24 09:30:53 PDT 2005


Update of /cvs/dbus/dbus/python/examples
In directory gabe:/tmp/cvs-serv19043/python/examples

Modified Files:
	example-signal-recipient.py 
Log Message:
* 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


Index: example-signal-recipient.py
===================================================================
RCS file: /cvs/dbus/dbus/python/examples/example-signal-recipient.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- example-signal-recipient.py	24 May 2005 00:21:07 -0000	1.5
+++ example-signal-recipient.py	24 May 2005 16:30:51 -0000	1.6
@@ -20,10 +20,30 @@
 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)
+
+ at 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
+    
+ at 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



More information about the dbus-commit mailing list