comparison frontends/src/bridge/DBus.py @ 1265:e3a9ea76de35 frontends_multi_profiles

quick_frontend, primitivus: multi-profiles refactoring part 1 (big commit, sorry :p): This refactoring allow primitivus to manage correctly several profiles at once, with various other improvments: - profile_manager can now plug several profiles at once, requesting password when needed. No more profile plug specific method is used anymore in backend, instead a "validated" key is used in actions - Primitivus widget are now based on a common "PrimitivusWidget" classe which mainly manage the decoration so far - all widgets are treated in the same way (contactList, Chat, Progress, etc), no more chat_wins specific behaviour - widgets are created in a dedicated manager, with facilities to react on new widget creation or other events - quick_frontend introduce a new QuickWidget class, which aims to be as generic and flexible as possible. It can manage several targets (jids or something else), and several profiles - each widget class return a Hash according to its target. For example if given a target jid and a profile, a widget class return a hash like (target.bare, profile), the same widget will be used for all resources of the same jid - better management of CHAT_GROUP mode for Chat widgets - some code moved from Primitivus to QuickFrontend, the final goal is to have most non backend code in QuickFrontend, and just graphic code in subclasses - no more (un)escapePrivate/PRIVATE_PREFIX - contactList improved a lot: entities not in roster and special entities (private MUC conversations) are better managed - resources can be displayed in Primitivus, and their status messages - profiles are managed in QuickFrontend with dedicated managers This is work in progress, other frontends are broken. Urwid SàText need to be updated. Most of features of Primitivus should work as before (or in a better way ;))
author Goffi <goffi@goffi.org>
date Wed, 10 Dec 2014 19:00:09 +0100
parents c1e916594e09
children faa1129559b8
comparison
equal deleted inserted replaced
1264:60dfa2f5d61f 1265:e3a9ea76de35
142 return unicode(self.db_core_iface.asyncGetParamA(name, category, attribute, security_limit, profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler)) 142 return unicode(self.db_core_iface.asyncGetParamA(name, category, attribute, security_limit, profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler))
143 143
144 def confirmationAnswer(self, id, accepted, data, profile): 144 def confirmationAnswer(self, id, accepted, data, profile):
145 return self.db_core_iface.confirmationAnswer(id, accepted, data, profile) 145 return self.db_core_iface.confirmationAnswer(id, accepted, data, profile)
146 146
147 def delContact(self, entity_jid, profile_key="@DEFAULT@"): 147 def delContact(self, entity_jid, profile_key="@DEFAULT@", callback=None, errback=None):
148 return self.db_core_iface.delContact(entity_jid, profile_key) 148 error_handler = None if callback is None else lambda err:errback(dbus_to_bridge_exception(err))
149 return self.db_core_iface.delContact(entity_jid, profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler)
149 150
150 def discoInfos(self, entity_jid, profile_key, callback=None, errback=None): 151 def discoInfos(self, entity_jid, profile_key, callback=None, errback=None):
151 error_handler = None if callback is None else lambda err:errback(dbus_to_bridge_exception(err)) 152 error_handler = None if callback is None else lambda err:errback(dbus_to_bridge_exception(err))
152 return self.db_core_iface.discoInfos(entity_jid, profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler) 153 return self.db_core_iface.discoInfos(entity_jid, profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler)
153 154
159 return self.db_core_iface.disconnect(profile_key) 160 return self.db_core_iface.disconnect(profile_key)
160 161
161 def getConfig(self, section, name): 162 def getConfig(self, section, name):
162 return unicode(self.db_core_iface.getConfig(section, name)) 163 return unicode(self.db_core_iface.getConfig(section, name))
163 164
164 def getContacts(self, profile_key="@DEFAULT@"): 165 def getContacts(self, profile_key="@DEFAULT@", callback=None, errback=None):
165 return self.db_core_iface.getContacts(profile_key) 166 error_handler = None if callback is None else lambda err:errback(dbus_to_bridge_exception(err))
167 return self.db_core_iface.getContacts(profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler)
166 168
167 def getContactsFromGroup(self, group, profile_key="@DEFAULT@"): 169 def getContactsFromGroup(self, group, profile_key="@DEFAULT@"):
168 return self.db_core_iface.getContactsFromGroup(group, profile_key) 170 return self.db_core_iface.getContactsFromGroup(group, profile_key)
169 171
170 def getEntityData(self, jid, keys, profile): 172 def getEntityData(self, jid, keys, profile):
253 return self.db_core_iface.setPresence(to_jid, show, statuses, profile_key) 255 return self.db_core_iface.setPresence(to_jid, show, statuses, profile_key)
254 256
255 def subscription(self, sub_type, entity, profile_key="@DEFAULT@"): 257 def subscription(self, sub_type, entity, profile_key="@DEFAULT@"):
256 return self.db_core_iface.subscription(sub_type, entity, profile_key) 258 return self.db_core_iface.subscription(sub_type, entity, profile_key)
257 259
258 def updateContact(self, entity_jid, name, groups, profile_key="@DEFAULT@"): 260 def updateContact(self, entity_jid, name, groups, profile_key="@DEFAULT@", callback=None, errback=None):
259 return self.db_core_iface.updateContact(entity_jid, name, groups, profile_key) 261 error_handler = None if callback is None else lambda err:errback(dbus_to_bridge_exception(err))
262 return self.db_core_iface.updateContact(entity_jid, name, groups, profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler)