diff options
Diffstat (limited to 'sugar/presence/Service.py')
-rw-r--r-- | sugar/presence/Service.py | 186 |
1 files changed, 93 insertions, 93 deletions
diff --git a/sugar/presence/Service.py b/sugar/presence/Service.py index a1ef98a..22b436f 100644 --- a/sugar/presence/Service.py +++ b/sugar/presence/Service.py @@ -20,101 +20,101 @@ import dbus def _one_dict_differs(dict1, dict2): - diff_keys = [] - for key, value in dict1.items(): - if not dict2.has_key(key) or dict2[key] != value: - diff_keys.append(key) - return diff_keys + diff_keys = [] + for key, value in dict1.items(): + if not dict2.has_key(key) or dict2[key] != value: + diff_keys.append(key) + return diff_keys def _dicts_differ(dict1, dict2): - diff_keys = [] - diff1 = _one_dict_differs(dict1, dict2) - diff2 = _one_dict_differs(dict2, dict1) - for key in diff2: - if key not in diff1: - diff_keys.append(key) - diff_keys += diff1 - return diff_keys + diff_keys = [] + diff1 = _one_dict_differs(dict1, dict2) + diff2 = _one_dict_differs(dict2, dict1) + for key in diff2: + if key not in diff1: + diff_keys.append(key) + diff_keys += diff1 + return diff_keys class Service(gobject.GObject): - _PRESENCE_SERVICE = "org.laptop.Presence" - _SERVICE_DBUS_INTERFACE = "org.laptop.Presence.Service" - - __gsignals__ = { - 'published-value-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])) - } - - def __init__(self, bus, new_obj_cb, del_obj_cb, object_path): - gobject.GObject.__init__(self) - self._object_path = object_path - self._ps_new_object = new_obj_cb - self._ps_del_object = del_obj_cb - sobj = bus.get_object(self._PRESENCE_SERVICE, object_path) - self._service = dbus.Interface(sobj, self._SERVICE_DBUS_INTERFACE) - self._service.connect_to_signal('PropertyChanged', self.__property_changed_cb) - self._service.connect_to_signal('PublishedValueChanged', - self.__published_value_changed_cb) - self._props = self._service.getProperties() - self._pubvals = self._service.getPublishedValues() - - def object_path(self): - return self._object_path - - def __property_changed_cb(self, prop_list): - self._props = self._service.getProperties() - - def get_published_value(self, key): - return self._pubvals[key] - - def get_published_values(self): - self._pubvals = self._service.getPublishedValues() - return self._pubvals - - def set_published_value(self, key, value): - if self._pubvals.has_key(key): - if self._pubvals[key] == value: - return - self._pubvals[key] = value - self._service.setPublishedValue(key, value) - - def set_published_values(self, vals): - self._service.setPublishedValues(vals) - self._pubvals = vals - - def __published_value_changed_cb(self, keys): - oldvals = self._pubvals - self.get_published_values() - diff_keys = _dicts_differ(oldvals, self._pubvals) - if len(diff_keys) > 0: - self.emit('published-value-changed', diff_keys) - - def get_name(self): - return self._props['name'] - - def get_type(self): - return self._props['type'] - - def get_domain(self): - return self._props['domain'] - - def get_address(self): - if self._props.has_key('address'): - return self._props['address'] - return None - - def get_activity_id(self): - if self._props.has_key('activityId'): - return self._props['activityId'] - return None - - def get_port(self): - if self._props.has_key('port'): - return self._props['port'] - return None - - def get_source_address(self): - if self._props.has_key('sourceAddress'): - return self._props['sourceAddress'] - return None + _PRESENCE_SERVICE = "org.laptop.Presence" + _SERVICE_DBUS_INTERFACE = "org.laptop.Presence.Service" + + __gsignals__ = { + 'published-value-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + ([gobject.TYPE_PYOBJECT])) + } + + def __init__(self, bus, new_obj_cb, del_obj_cb, object_path): + gobject.GObject.__init__(self) + self._object_path = object_path + self._ps_new_object = new_obj_cb + self._ps_del_object = del_obj_cb + sobj = bus.get_object(self._PRESENCE_SERVICE, object_path) + self._service = dbus.Interface(sobj, self._SERVICE_DBUS_INTERFACE) + self._service.connect_to_signal('PropertyChanged', self.__property_changed_cb) + self._service.connect_to_signal('PublishedValueChanged', + self.__published_value_changed_cb) + self._props = self._service.getProperties() + self._pubvals = self._service.getPublishedValues() + + def object_path(self): + return self._object_path + + def __property_changed_cb(self, prop_list): + self._props = self._service.getProperties() + + def get_published_value(self, key): + return self._pubvals[key] + + def get_published_values(self): + self._pubvals = self._service.getPublishedValues() + return self._pubvals + + def set_published_value(self, key, value): + if self._pubvals.has_key(key): + if self._pubvals[key] == value: + return + self._pubvals[key] = value + self._service.setPublishedValue(key, value) + + def set_published_values(self, vals): + self._service.setPublishedValues(vals) + self._pubvals = vals + + def __published_value_changed_cb(self, keys): + oldvals = self._pubvals + self.get_published_values() + diff_keys = _dicts_differ(oldvals, self._pubvals) + if len(diff_keys) > 0: + self.emit('published-value-changed', diff_keys) + + def get_name(self): + return self._props['name'] + + def get_type(self): + return self._props['type'] + + def get_domain(self): + return self._props['domain'] + + def get_address(self): + if self._props.has_key('address'): + return self._props['address'] + return None + + def get_activity_id(self): + if self._props.has_key('activityId'): + return self._props['activityId'] + return None + + def get_port(self): + if self._props.has_key('port'): + return self._props['port'] + return None + + def get_source_address(self): + if self._props.has_key('sourceAddress'): + return self._props['sourceAddress'] + return None |