[Telepathy-commits] [telepathy-python/master] Added _implement_property_{get, set} methods to add properties to a class.
Jonny Lamb
jonny.lamb at collabora.co.uk
Tue Dec 23 10:13:28 PST 2008
Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
src/server/properties.py | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/server/properties.py b/src/server/properties.py
index f2e6e7e..42d46dc 100644
--- a/src/server/properties.py
+++ b/src/server/properties.py
@@ -30,30 +30,36 @@ class DBusProperties(dbus.service.Interface):
def __init__(self):
self._interfaces.add(dbus.PROPERTIES_IFACE)
- self._get_properties = {}
- self._set_properties = {}
+ self.__getters = {}
+ self.__setters = {}
+
+ def _implement_property_get(self, iface, dict):
+ self.__getters.setdefault(iface, {}).update(dict)
+
+ def _implement_property_set(self, iface, dict):
+ self.__setters.setdefault(iface, {}).update(dict)
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v')
def Get(self, interface_name, property_name):
- if interface_name in self._get_properties \
- and property_name in self._get_properties[interface_name]:
- return self._get_properties[interface_name][property_name]()
+ if interface_name in self.__getters \
+ and property_name in self.__getters[interface_name]:
+ return self.__getters[interface_name][property_name]()
else:
raise telepathy.errors.InvalidArgument()
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ssv', out_signature='')
def Set(self, interface_name, property_name, value):
- if interface_name in self._set_properties \
- and property_name in self._set_properties[interface_name]:
- return self._set_properties[interface_name][property_name](value)
+ if interface_name in self.__setters \
+ and property_name in self.__setters[interface_name]:
+ return self.__setters[interface_name][property_name](value)
else:
raise telepathy.errors.PermissionDenied()
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}')
def GetAll(self, interface_name):
- if interface_name in self._get_properties:
+ if interface_name in self.__getters:
r = {}
- for k, v in self._get_properties[interface_name].items():
+ for k, v in self.__getters[interface_name].items():
r[k] = v()
return r
else:
--
1.5.6.5
More information about the Telepathy-commits
mailing list