Mercurial > libervia-backend
diff frontends/src/primitivus/primitivus @ 1971:9421e721d5e2
primitivus (chat): fixed nick completion. Completion is now managed per widget, if completion method exists
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 27 Jun 2016 21:45:13 +0200 |
parents | 200cd707a46d |
children | 02d21a589be2 |
line wrap: on
line diff
--- a/frontends/src/primitivus/primitivus Mon Jun 27 21:45:11 2016 +0200 +++ b/frontends/src/primitivus/primitivus Mon Jun 27 21:45:13 2016 +0200 @@ -64,36 +64,16 @@ def _text_completion(self, text, completion_data, mode): if mode == C.MODE_INSERTION: - return self._nick_completion(text, completion_data) + if self.host.selected_widget is not None: + try: + completion = self.host.selected_widget.completion + except AttributeError: + return text + else: + return completion(text, completion_data) else: return text - def _nick_completion(self, text, completion_data): - """Completion method which complete pseudo in group chat - for params, see AdvancedEdit""" - nicks = [] - for profile, clist in self.host.contact_lists.iteritems(): - for contact in clist.selected: - chat = self.host.widgets.getWidget(quick_chat.QuickChat, contact, profile) - if chat.type != C.CHAT_GROUP: - continue - space = text.rfind(" ") - start = text[space + 1:] - nicks.extend(list(chat.occupants)) - if nicks: - nicks.sort() - try: - start_idx = nicks.index(completion_data['last_nick']) + 1 - if start_idx == len(nicks): - start_idx = 0 - except (KeyError, ValueError): - start_idx = 0 - for idx in range(start_idx, len(nicks)) + range(0, start_idx): - if nicks[idx].lower().startswith(start.lower()): - completion_data['last_nick'] = nicks[idx] - return text[:space + 1] + nicks[idx] + (': ' if space < 0 else '') - return text - def onTextEntered(self, editBar): """Called when text is entered in the main edit bar""" if self.mode == C.MODE_INSERTION: