summaryrefslogtreecommitdiffstats
path: root/python/proxies.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/proxies.py')
-rw-r--r--python/proxies.py82
1 files changed, 42 insertions, 40 deletions
diff --git a/python/proxies.py b/python/proxies.py
index cbd49200..688dd8ab 100644
--- a/python/proxies.py
+++ b/python/proxies.py
@@ -1,45 +1,5 @@
import dbus_bindings
-class ProxyObject:
- """A proxy to the remote Object.
-
- A ProxyObject is provided by the Bus. ProxyObjects
- have member functions, and can be called like normal Python objects.
- """
- def __init__(self, bus, named_service, object_path):
- self._bus = bus
- self._named_service = named_service
- self._object_path = object_path
-
- def connect_to_signal(self, signal_name, handler_function, dbus_interface=None):
- self._bus.add_signal_receiver(handler_function,
- signal_name=signal_name,
- dbus_interface=dbus_interface,
- named_service=self._named_service,
- path=self._object_path)
-
-
-
- def __getattr__(self, member, **keywords):
- if member == '__call__':
- return object.__call__
- elif member.startswith('__') and member.endswith('__'):
- raise AttributeError(member)
- else:
- iface = None
- if (keywords.has_key('dbus_interface')):
- iface = keywords['dbus_interface']
-
- return ProxyMethod(self._bus.get_connection(),
- self._named_service,
- self._object_path, iface, member)
-
- def __repr__(self):
- return '<ProxyObject wrapping %s %s %s at %x>'%(
- self._bus, self._named_service, self._object_path , id(self))
- __str__ = __repr__
-
-
class ProxyMethod:
"""A proxy Method.
@@ -95,3 +55,45 @@ class ProxyMethod:
else:
return args_tuple
+
+class ProxyObject:
+ """A proxy to the remote Object.
+
+ A ProxyObject is provided by the Bus. ProxyObjects
+ have member functions, and can be called like normal Python objects.
+ """
+ ProxyMethodClass = ProxyMethod
+
+ def __init__(self, bus, named_service, object_path):
+ self._bus = bus
+ self._named_service = named_service
+ self._object_path = object_path
+
+ def connect_to_signal(self, signal_name, handler_function, dbus_interface=None):
+ self._bus.add_signal_receiver(handler_function,
+ signal_name=signal_name,
+ dbus_interface=dbus_interface,
+ named_service=self._named_service,
+ path=self._object_path)
+
+
+
+ def __getattr__(self, member, **keywords):
+ if member == '__call__':
+ return object.__call__
+ elif member.startswith('__') and member.endswith('__'):
+ raise AttributeError(member)
+ else:
+ iface = None
+ if (keywords.has_key('dbus_interface')):
+ iface = keywords['dbus_interface']
+
+ return self.ProxyMethodClass(self._bus.get_connection(),
+ self._named_service,
+ self._object_path, iface, member)
+
+ def __repr__(self):
+ return '<ProxyObject wrapping %s %s %s at %x>'%(
+ self._bus, self._named_service, self._object_path , id(self))
+ __str__ = __repr__
+