clever \t completion in gc window
This commit is contained in:
parent
26faed1de1
commit
7817ed2651
1 changed files with 28 additions and 21 deletions
|
@ -652,44 +652,44 @@ class Groupchat_window:
|
||||||
self.tagStatus[room_jid].set_property('foreground', \
|
self.tagStatus[room_jid].set_property('foreground', \
|
||||||
self.plugin.config['statusmsgcolor'])
|
self.plugin.config['statusmsgcolor'])
|
||||||
|
|
||||||
def get_role_iter(self, room_jid, name):
|
def get_role_iter(self, room_jid, role):
|
||||||
model = self.list_treeview[room_jid].get_model()
|
model = self.list_treeview[room_jid].get_model()
|
||||||
fin = False
|
fin = False
|
||||||
iter = model.get_iter_root()
|
iter = model.get_iter_root()
|
||||||
if not iter:
|
if not iter:
|
||||||
return None
|
return None
|
||||||
while not fin:
|
while not fin:
|
||||||
account_name = model.get_value(iter, 1)
|
role_name = model.get_value(iter, 2)
|
||||||
if name == account_name:
|
if role == role_name:
|
||||||
return iter
|
return iter
|
||||||
iter = model.iter_next(iter)
|
iter = model.iter_next(iter)
|
||||||
if not iter:
|
if not iter:
|
||||||
fin = True
|
fin = True
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_user_iter(self, room_jid, jid):
|
def get_user_iter(self, room_jid, nick):
|
||||||
model = self.list_treeview[room_jid].get_model()
|
model = self.list_treeview[room_jid].get_model()
|
||||||
fin = False
|
fin = False
|
||||||
role = model.get_iter_root()
|
role_iter = model.get_iter_root()
|
||||||
if not role:
|
if not role_iter:
|
||||||
return None
|
return None
|
||||||
while not fin:
|
while not fin:
|
||||||
fin2 = False
|
fin2 = False
|
||||||
user = model.iter_children(role)
|
user_iter = model.iter_children(role_iter)
|
||||||
if not user:
|
if not user_iter:
|
||||||
fin2=True
|
fin2=True
|
||||||
while not fin2:
|
while not fin2:
|
||||||
if jid == model.get_value(user, 1):
|
if nick == model.get_value(user, 1):
|
||||||
return user
|
return user_iter
|
||||||
user = model.iter_next(user)
|
user_iter = model.iter_next(user_iter)
|
||||||
if not user:
|
if not user_iter:
|
||||||
fin2 = True
|
fin2 = True
|
||||||
role = model.iter_next(role)
|
role_iter = model.iter_next(role_iter)
|
||||||
if not role:
|
if not role_iter:
|
||||||
fin = True
|
fin = True
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_user_list(self, room_jid):
|
def get_nick_list(self, room_jid):
|
||||||
model = self.list_treeview[room_jid].get_model()
|
model = self.list_treeview[room_jid].get_model()
|
||||||
list = []
|
list = []
|
||||||
fin = False
|
fin = False
|
||||||
|
@ -729,7 +729,7 @@ class Groupchat_window:
|
||||||
role_iter = self.get_role_iter(room_jid, role)
|
role_iter = self.get_role_iter(room_jid, role)
|
||||||
if not role_iter:
|
if not role_iter:
|
||||||
role_iter = model.append(None, (self.plugin.roster.pixbufs['closed']\
|
role_iter = model.append(None, (self.plugin.roster.pixbufs['closed']\
|
||||||
, role, role))
|
, role + 's', role))
|
||||||
iter = model.append(role_iter, (img, nick, jid))
|
iter = model.append(role_iter, (img, nick, jid))
|
||||||
self.list_treeview[room_jid].expand_row((model.get_path(role_iter)), \
|
self.list_treeview[room_jid].expand_row((model.get_path(role_iter)), \
|
||||||
False)
|
False)
|
||||||
|
@ -739,7 +739,7 @@ class Groupchat_window:
|
||||||
model = self.list_treeview[room_jid].get_model()
|
model = self.list_treeview[room_jid].get_model()
|
||||||
path = model.get_path(jid_iter)[0]
|
path = model.get_path(jid_iter)[0]
|
||||||
iter = model.get_iter(path)
|
iter = model.get_iter(path)
|
||||||
return model.get_value(iter, 1)
|
return model.get_value(iter, 2)
|
||||||
|
|
||||||
def chg_user_status(self, room_jid, nick, show, status, role, affiliation, \
|
def chg_user_status(self, room_jid, nick, show, status, role, affiliation, \
|
||||||
jid, reason, actor, statusCode, account):
|
jid, reason, actor, statusCode, account):
|
||||||
|
@ -835,16 +835,23 @@ class Groupchat_window:
|
||||||
return 1
|
return 1
|
||||||
elif event.keyval == gtk.keysyms.Tab: # TAB
|
elif event.keyval == gtk.keysyms.Tab: # TAB
|
||||||
room_jid = self.get_active_jid()
|
room_jid = self.get_active_jid()
|
||||||
list_nick = self.get_user_list(room_jid)
|
list_nick = self.get_nick_list(room_jid)
|
||||||
message_buffer = widget.get_buffer()
|
message_buffer = widget.get_buffer()
|
||||||
start_iter = message_buffer.get_start_iter()
|
start_iter = message_buffer.get_start_iter()
|
||||||
cursor_position = message_buffer.get_insert()
|
cursor_position = message_buffer.get_insert()
|
||||||
end_iter = message_buffer.get_iter_at_mark(cursor_position)
|
end_iter = message_buffer.get_iter_at_mark(cursor_position)
|
||||||
txt = message_buffer.get_text(start_iter, end_iter, 0)
|
text = message_buffer.get_text(start_iter, end_iter, 0)
|
||||||
begin = txt.split()[-1]
|
if not text:
|
||||||
|
return 0
|
||||||
|
splited_text = text.split()
|
||||||
|
begin = splited_text[-1]
|
||||||
for nick in list_nick:
|
for nick in list_nick:
|
||||||
if nick.find(begin) == 0:
|
if nick.find(begin) == 0:
|
||||||
message_buffer.insert_at_cursor(nick[len(begin):] + ': ')
|
if len(splited_text) == 1:
|
||||||
|
add = ': '
|
||||||
|
else:
|
||||||
|
add = ' '
|
||||||
|
message_buffer.insert_at_cursor(nick[len(begin):] + add)
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue