From 0bec214a8edc6a52270be5168c3f5cb19882ecf4 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger <asterix@lagaule.org> Date: Sat, 5 Mar 2005 00:06:04 +0000 Subject: [PATCH] auto completion in groupchat window : we begin to write the nickname of a prson in the room and press tab to get the end --- plugins/gtkgui/gtkgui.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py index b9f6f8874..409e2d0c7 100644 --- a/plugins/gtkgui/gtkgui.py +++ b/plugins/gtkgui/gtkgui.py @@ -604,6 +604,29 @@ class gc: fin = True return None + def get_user_list(self): + model = self.tree.get_model() + list = [] + fin = False + role = model.get_iter_root() + if not role: + return list + while not fin: + fin2 = False + user = model.iter_children(role) + if not user: + fin2=True + while not fin2: + nick = model.get_value(user, 1) + list.append(nick) + user = model.iter_next(user) + if not user: + fin2 = True + role = model.iter_next(role) + if not role: + fin = True + return list + def remove_user(self, nick): """Remove a user from the roster""" model = self.tree.get_model() @@ -681,6 +704,18 @@ class gc: txt_buffer.set_text('', -1) widget.grab_focus() return 1 + elif event.keyval == gtk.keysyms.Tab: + list_nick = self.get_user_list() + txt_buffer = widget.get_buffer() + start_iter = txt_buffer.get_start_iter() + cursor_position = txt_buffer.get_insert() + end_iter = txt_buffer.get_iter_at_mark(cursor_position) + txt = txt_buffer.get_text(start_iter, end_iter, 0) + begin = txt.split()[-1] + for nick in list_nick: + if nick.find(begin) == 0: + txt_buffer.insert_at_cursor(nick[len(begin):]) + return 1 return 0 def print_conversation(self, txt, jid, contact = None, tim = None):