commit to bug test with alex

This commit is contained in:
Nikos Kouremenos 2005-03-05 01:21:46 +00:00
parent 0affca1760
commit 4e0e41dab8

View file

@ -568,7 +568,7 @@ class tabbed_chat_window:
end_iter = conversation_buffer.get_end_iter() end_iter = conversation_buffer.get_end_iter()
break break
conversation_buffer.insert(end_iter, otext[start:]) conversation_buffer.insert(end_iter, otext[end:])
#scroll to the end of the textview #scroll to the end of the textview
conversation_textview.scroll_to_mark(conversation_buffer.get_mark('end'),\ conversation_textview.scroll_to_mark(conversation_buffer.get_mark('end'),\
@ -579,15 +579,19 @@ class tabbed_chat_window:
self.redraw_tab(jid) self.redraw_tab(jid)
self.show_title() self.show_title()
class Groupchat_window: class gc:
def on_groupchat_window_destroy(self, widget): def delete_event(self, widget):
"""close window""" """close window"""
self.plugin.send('GC_STATUS', self.account, (self.nick, self.jid,\ self.plugin.send('GC_STATUS', self.account, (self.nick, self.jid,\
'offline', 'offline')) 'offline', 'offline'))
del self.plugin.windows[self.account]['gc'][self.jid] del self.plugin.windows[self.account]['gc'][self.jid]
def on_close(self, widget):
"""When Cancel button is clicked"""
widget.get_toplevel().destroy()
def get_role_iter(self, name): def get_role_iter(self, name):
model = self.list_treeview.get_model() model = self.tree.get_model()
fin = False fin = False
iter = model.get_iter_root() iter = model.get_iter_root()
if not iter: if not iter:
@ -602,7 +606,7 @@ class Groupchat_window:
return None return None
def get_user_iter(self, jid): def get_user_iter(self, jid):
model = self.list_treeview.get_model() model = self.tree.get_model()
fin = False fin = False
role = model.get_iter_root() role = model.get_iter_root()
if not role: if not role:
@ -624,7 +628,7 @@ class Groupchat_window:
return None return None
def get_user_list(self): def get_user_list(self):
model = self.list_treeview.get_model() model = self.tree.get_model()
list = [] list = []
fin = False fin = False
role = model.get_iter_root() role = model.get_iter_root()
@ -648,7 +652,7 @@ class Groupchat_window:
def remove_user(self, nick): def remove_user(self, nick):
"""Remove a user from the roster""" """Remove a user from the roster"""
model = self.list_treeview.get_model() model = self.tree.get_model()
iter = self.get_user_iter(nick) iter = self.get_user_iter(nick)
if not iter: if not iter:
return return
@ -658,18 +662,18 @@ class Groupchat_window:
model.remove(parent_iter) model.remove(parent_iter)
def add_user_to_roster(self, nick, show, role, jid): def add_user_to_roster(self, nick, show, role, jid):
model = self.list_treeview.get_model() model = self.tree.get_model()
img = self.plugin.roster.pixbufs[show] img = self.plugin.roster.pixbufs[show]
role_iter = self.get_role_iter(role) role_iter = self.get_role_iter(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, role))
iter = model.append(role_iter, (img, nick, jid)) iter = model.append(role_iter, (img, nick, jid))
self.list_treeview.expand_row((model.get_path(role_iter)), False) self.tree.expand_row((model.get_path(role_iter)), False)
return iter return iter
def get_role(self, jid_iter): def get_role(self, jid_iter):
model = self.list_treeview.get_model() model = self.tree.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, 1)
@ -677,7 +681,7 @@ class Groupchat_window:
def chg_user_status(self, nick, show, status, role, affiliation, jid, \ def chg_user_status(self, nick, show, status, role, affiliation, jid, \
reason, actor, statusCode, account): reason, actor, statusCode, account):
"""When a user change his status""" """When a user change his status"""
model = self.list_treeview.get_model() model = self.tree.get_model()
if show == 'offline' or show == 'error': if show == 'offline' or show == 'error':
if statusCode == '307': if statusCode == '307':
self.print_conversation(_('%s has been kicked by %s: %s') % (nick, \ self.print_conversation(_('%s has been kicked by %s: %s') % (nick, \
@ -699,63 +703,41 @@ class Groupchat_window:
img = self.plugin.roster.pixbufs[show] img = self.plugin.roster.pixbufs[show]
model.set_value(iter, 0, img) model.set_value(iter, 0, img)
def show_title(self):
"""redraw the window's title"""
#FIXME when multi tabs will be ok
unread = 0
# for jid in self.nb_unread:
# unread += self.nb_unread[jid]
unread = self.nb_unread
start = ""
if unread > 1:
start = "[" + str(unread) + "] "
elif unread == 1:
start = "* "
chat = 'Groupchat in ' + self.jid
# if len(self.xmls) > 1:
if 0:
chat = 'Groupchat'
self.window.set_title(start + chat + ' (' + self.account + ')')
def set_subject(self, subject): def set_subject(self, subject):
self.xml.get_widget('subject_entry').set_text(subject) self.xml.get_widget('subject_entry').set_text(subject)
def on_subject_entry_key_press_event(self, widget, event): def on_subject_entry_key_press_event(self, widget, event):
if event.keyval == gtk.keysyms.Return: if event.keyval == gtk.keysyms.Return:
subject = widget.get_text()
self.plugin.send('GC_SUBJECT', self.account, (self.jid, subject))
def on_set_button_clicked(self, widget):
subject = self.xml.get_widget('subject_entry').get_text() subject = self.xml.get_widget('subject_entry').get_text()
self.plugin.send('GC_SUBJECT', self.account, (self.jid, subject)) self.plugin.send('GC_SUBJECT', self.account, (self.jid, subject))
def on_message_textview_key_press_event(self, widget, event): def on_msg_key_press_event(self, widget, event):
"""When a key is pressed : """When a key is pressed :
if enter is pressed without the shit key, message (if not empty) is sent if enter is pressed without the shit key, message (if not empty) is sent
and printed in the conversation""" and printed in the conversation"""
if event.keyval == gtk.keysyms.Return: if event.keyval == gtk.keysyms.Return:
if (event.state & gtk.gdk.SHIFT_MASK): if (event.state & gtk.gdk.SHIFT_MASK):
return 0 return 0
message_buffer = widget.get_buffer() txt_buffer = widget.get_buffer()
start_iter = message_buffer.get_start_iter() start_iter = txt_buffer.get_start_iter()
end_iter = message_buffer.get_end_iter() end_iter = txt_buffer.get_end_iter()
txt = message_buffer.get_text(start_iter, end_iter, 0) txt = txt_buffer.get_text(start_iter, end_iter, 0)
if txt != '': if txt != '':
self.plugin.send('GC_MSG', self.account, (self.jid, txt)) self.plugin.send('GC_MSG', self.account, (self.jid, txt))
message_buffer.set_text('', -1) txt_buffer.set_text('', -1)
widget.grab_focus() widget.grab_focus()
return 1 return 1
elif event.keyval == gtk.keysyms.Tab: elif event.keyval == gtk.keysyms.Tab:
list_nick = self.get_user_list() list_nick = self.get_user_list()
message_buffer = widget.get_buffer() txt_buffer = widget.get_buffer()
start_iter = message_buffer.get_start_iter() start_iter = txt_buffer.get_start_iter()
cursor_position = message_buffer.get_insert() cursor_position = txt_buffer.get_insert()
end_iter = message_buffer.get_iter_at_mark(cursor_position) end_iter = txt_buffer.get_iter_at_mark(cursor_position)
txt = message_buffer.get_text(start_iter, end_iter, 0) txt = txt_buffer.get_text(start_iter, end_iter, 0)
begin = txt.split()[-1] begin = txt.split()[-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):] + ' ') txt_buffer.insert_at_cursor(nick[len(begin):] + ' ')
return 1 return 1
return 0 return 0
@ -763,32 +745,28 @@ class Groupchat_window:
"""Print a line in the conversation : """Print a line in the conversation :
if contact is set : it's a message from someone if contact is set : it's a message from someone
if contact is not set : it's a message from the server""" if contact is not set : it's a message from the server"""
conversation_textview = self.xml.get_widget('conversation_textview') conversation = self.xml.get_widget('conversation')
conversation_buffer = conversation_textview.get_buffer() buffer = conversation.get_buffer()
if not txt: if not txt:
txt = "" txt = ""
end_iter = conversation_buffer.get_end_iter() end_iter = buffer.get_end_iter()
if not tim: if not tim:
tim = time.localtime() tim = time.localtime()
tims = time.strftime('[%H:%M:%S]', tim) tims = time.strftime('[%H:%M:%S]', tim)
conversation_buffer.insert(end_iter, tims) buffer.insert(end_iter, tims)
if contact: if contact:
if contact == self.nick: if contact == self.nick:
conversation_buffer.insert_with_tags_by_name(end_iter, '<' + \ buffer.insert_with_tags_by_name(end_iter, '<'+contact+'> ', \
contact + '> ', 'outgoing') 'outgoing')
else: else:
conversation_buffer.insert_with_tags_by_name(end_iter, '<' + \ buffer.insert_with_tags_by_name(end_iter, '<' + contact + '> ', \
contact + '> ', 'incoming') 'incoming')
conversation_buffer.insert(end_iter, txt + '\n') buffer.insert(end_iter, txt+'\n')
else: else:
conversation_buffer.insert_with_tags_by_name(end_iter, txt + '\n', \ buffer.insert_with_tags_by_name(end_iter, txt+'\n', \
'status') 'status')
#scroll to the end of the textview #scroll to the end of the textview
conversation_textview.scroll_to_mark(conversation_buffer.get_mark('end'),\ conversation.scroll_to_mark(buffer.get_mark('end'), 0.1, 0, 0, 0)
0.1, 0, 0, 0)
if not self.window.is_active() and contact != 'status':
self.nb_unread += 1
self.show_title()
def kick(self, widget, room_jid, nick): def kick(self, widget, room_jid, nick):
"""kick a user""" """kick a user"""
@ -856,7 +834,7 @@ class Groupchat_window:
def mk_menu(self, event, iter): def mk_menu(self, event, iter):
"""Make user's popup menu""" """Make user's popup menu"""
model = self.list_treeview.get_model() model = self.tree.get_model()
nick = model.get_value(iter, 1) nick = model.get_value(iter, 1)
jid = model.get_value(iter, 2) jid = model.get_value(iter, 2)
@ -918,63 +896,57 @@ class Groupchat_window:
menu.show_all() menu.show_all()
menu.reposition() menu.reposition()
def on_groupchat_window_focus_in_event(self, widget, event): def on_focus(self, widget, event):
"""When window get focus""" """When window get focus"""
if self.nb_unread > 0:
self.nb_unread = 0
self.show_title()
self.plugin.systray.remove_jid(self.jid, self.account) self.plugin.systray.remove_jid(self.jid, self.account)
def on_list_treeview_button_press_event(self, widget, event): def on_treeview_event(self, widget, event):
"""popup user's group's or agent menu""" """popup user's group's or agent menu"""
if event.type == gtk.gdk.BUTTON_PRESS: if event.type == gtk.gdk.BUTTON_PRESS:
if event.button == 3: if event.button == 3:
try: try:
path, column, x, y = self.list_treeview.get_path_at_pos(\ path, column, x, y = self.tree.get_path_at_pos(int(event.x), \
int(event.x), int(event.y)) int(event.y))
except TypeError: except TypeError:
self.list_treeview.get_selection().unselect_all() self.tree.get_selection().unselect_all()
return False return False
model = self.list_treeview.get_model() model = self.tree.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
if len(path) == 2: if len(path) == 2:
self.mk_menu(event, iter) self.mk_menu(event, iter)
return True return True
if event.button == 1: if event.button == 1:
try: try:
path, column, x, y = self.list_treeview.get_path_at_pos(\ path, column, x, y = self.tree.get_path_at_pos(int(event.x), \
int(event.x), int(event.y)) int(event.y))
except TypeError: except TypeError:
self.list_treeview.get_selection().unselect_all() self.tree.get_selection().unselect_all()
return False
def on_list_treeview_key_release_event(self, widget, event):
if event.type == gtk.gdk.KEY_RELEASE: if event.type == gtk.gdk.KEY_RELEASE:
if event.keyval == gtk.keysyms.Escape: if event.keyval == gtk.keysyms.Escape:
self.list_treeview.get_selection().unselect_all() self.tree.get_selection().unselect_all()
return False return False
def on_list_treeview_row_activated(self, widget, path, col=0): def on_row_activated(self, widget, path, col=0):
"""When an iter is dubble clicked : """When an iter is dubble clicked :
open the chat window""" open the chat window"""
model = self.list_treeview.get_model() model = self.tree.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
if len(path) == 1: if len(path) == 1:
if (self.list_treeview.row_expanded(path)): if (self.tree.row_expanded(path)):
self.list_treeview.collapse_row(path) self.tree.collapse_row(path)
else: else:
self.list_treeview.expand_row(path, False) self.tree.expand_row(path, False)
def on_list_treeview_row_expanded(self, widget, iter, path): def on_row_expanded(self, widget, iter, path):
"""When a row is expanded : """When a row is expanded :
change the icon of the arrow""" change the icon of the arrow"""
model = self.list_treeview.get_model() model = self.tree.get_model()
model.set_value(iter, 0, self.plugin.roster.pixbufs['opened']) model.set_value(iter, 0, self.plugin.roster.pixbufs['opened'])
def on_list_treeview_row_collapsed(self, widget, iter, path): def on_row_collapsed(self, widget, iter, path):
"""When a row is collapsed : """When a row is collapsed :
change the icon of the arrow""" change the icon of the arrow"""
model = self.list_treeview.get_model() model = self.tree.get_model()
model.set_value(iter, 0, self.plugin.roster.pixbufs['closed']) model.set_value(iter, 0, self.plugin.roster.pixbufs['closed'])
def __init__(self, jid, nick, plugin, account): def __init__(self, jid, nick, plugin, account):
@ -982,10 +954,9 @@ class Groupchat_window:
self.nick = nick self.nick = nick
self.plugin = plugin self.plugin = plugin
self.account = account self.account = account
self.nb_unread = 0 self.xml = gtk.glade.XML(GTKGUI_GLADE, 'Gc', APP)
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'groupchat_window', APP) self.window = self.xml.get_widget('Gc')
self.window = self.xml.get_widget('groupchat_window') self.tree = self.xml.get_widget('list')
self.list_treeview = self.xml.get_widget('list_treeview')
#status_image, nickname, real_jid #status_image, nickname, real_jid
store = gtk.TreeStore(gtk.Image, str, str) store = gtk.TreeStore(gtk.Image, str, str)
column = gtk.TreeViewColumn('contacts') column = gtk.TreeViewColumn('contacts')
@ -996,30 +967,38 @@ class Groupchat_window:
column.pack_start(render_text, expand = True) column.pack_start(render_text, expand = True)
column.add_attribute(render_text, 'text', 1) column.add_attribute(render_text, 'text', 1)
self.list_treeview.append_column(column) self.tree.append_column(column)
self.list_treeview.set_model(store) self.tree.set_model(store)
col = gtk.TreeViewColumn() col = gtk.TreeViewColumn()
render = gtk.CellRendererPixbuf() render = gtk.CellRendererPixbuf()
col.pack_start(render, expand = False) col.pack_start(render, expand = False)
self.list_treeview.append_column(col) self.tree.append_column(col)
col.set_visible(False) col.set_visible(False)
self.list_treeview.set_expander_column(col) self.tree.set_expander_column(col)
conversation_textview = self.xml.get_widget('conversation_textview') conversation = self.xml.get_widget('conversation')
conversation_buffer = conversation_textview.get_buffer() buffer = conversation.get_buffer()
end_iter = conversation_buffer.get_end_iter() end_iter = buffer.get_end_iter()
conversation_buffer.create_mark('end', end_iter, 0) buffer.create_mark('end', end_iter, 0)
self.tagIn = conversation_buffer.create_tag('incoming') self.tagIn = buffer.create_tag('incoming')
color = self.plugin.config['inmsgcolor'] color = self.plugin.config['inmsgcolor']
self.tagIn.set_property('foreground', color) self.tagIn.set_property('foreground', color)
self.tagOut = conversation_buffer.create_tag('outgoing') self.tagOut = buffer.create_tag('outgoing')
color = self.plugin.config['outmsgcolor'] color = self.plugin.config['outmsgcolor']
self.tagOut.set_property('foreground', color) self.tagOut.set_property('foreground', color)
self.tagStatus = conversation_buffer.create_tag('status') self.tagStatus = buffer.create_tag('status')
color = self.plugin.config['statusmsgcolor'] color = self.plugin.config['statusmsgcolor']
self.tagStatus.set_property('foreground', color) self.tagStatus.set_property('foreground', color)
self.xml.signal_autoconnect(self) self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
self.xml.signal_connect('on_focus', self.on_focus)
self.xml.signal_connect('on_msg_key_press_event', \
self.on_msg_key_press_event)
self.xml.signal_connect('on_treeview_event', self.on_treeview_event)
self.xml.signal_connect('on_row_activated', self.on_row_activated)
self.xml.signal_connect('on_row_expanded', self.on_row_expanded)
self.xml.signal_connect('on_row_collapsed', self.on_row_collapsed)
self.xml.signal_connect('on_subject_entry_key_press_event', self.on_subject_entry_key_press_event)
class history_window: class history_window:
"""Class for bowser agent window : """Class for bowser agent window :