groupchat window is now also a subclass of chat class

This commit is contained in:
Yann Leboulanger 2005-03-12 21:30:50 +00:00
parent c1a075785b
commit 3967d11750
4 changed files with 72 additions and 316 deletions

View File

@ -37,8 +37,6 @@ gtk.glade.textdomain(APP)
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
#the child of the tab must be called tab_vbox
class chat:
"""Class for tabbed chat window"""
def __init__(self, plugin, account, widget_name):
@ -56,6 +54,7 @@ class chat:
self.last_message_time = {}
self.print_time_timeout_id = {}
self.names = {} # what is printed in the tab : user.name for example
self.childs = {}
self.window = self.xml.get_widget(widget_name)
def update_tags(self):
@ -102,7 +101,7 @@ class chat:
start = "[" + str(self.nb_unread[jid]) + "] "
elif self.nb_unread[jid] == 1:
start = "* "
child = self.xmls[jid].get_widget('tab_vbox')
child = self.childs[jid]
tab_label = self.notebook.get_tab_label(child).get_children()[0]
tab_label.set_text(start + self.names[jid])
@ -120,8 +119,7 @@ class chat:
self.notebook.get_current_page())
active_jid = ''
for jid in self.xmls:
child = self.xmls[jid].get_widget('tab_vbox')
if child == active_child:
if self.childs[jid] == active_child:
active_jid = jid
break
return active_jid
@ -152,8 +150,7 @@ class chat:
new_child = notebook.get_nth_page(page_num)
new_jid = ''
for jid in self.xmls:
child = self.xmls[jid].get_widget('tab_vbox')
if child == new_child:
if self.childs[jid] == new_child:
new_jid = jid
break
conversation_textview = self.xmls[new_jid].\
@ -171,9 +168,8 @@ class chat:
self.plugin.systray.remove_jid(new_jid, self.account)
def active_tab(self, jid):
child = self.xmls[jid].get_widget('tab_vbox')
self.notebook.set_current_page(\
self.notebook.page_num(child))
self.notebook.page_num(self.childs[jid]))
def remove_tab(self, jid, kind): #kind is 'chats' or 'gc'
if len(self.xmls) == 1:
@ -182,9 +178,8 @@ class chat:
if self.print_time_timeout_id.has_key(jid):
gobject.source_remove(self.print_time_timeout_id[jid])
del self.print_time_timeout_id[jid]
child = self.xmls[jid].get_widget('tab_vbox')
self.notebook.remove_page(\
self.notebook.page_num(child))
self.notebook.page_num(self.childs[jid]))
del self.plugin.windows[self.account][kind][jid]
del self.nb_unread[jid]
del self.last_message_time[jid]
@ -199,7 +194,6 @@ class chat:
def new_tab(self, jid):
self.nb_unread[jid] = 0
self.last_message_time[jid] = 0
self.xmls[jid] = gtk.glade.XML(GTKGUI_GLADE, 'tab_vbox', APP)
conversation_textview = \
self.xmls[jid].get_widget('conversation_textview')
@ -246,14 +240,20 @@ class chat:
conversation_scrolledwindow.get_vadjustment().connect('value-changed', \
self.on_conversation_vadjustment_value_changed)
child = self.xmls[jid].get_widget('tab_vbox')
child = self.childs[jid]
self.notebook.append_page(child)
if len(self.xmls) > 1:
self.notebook.set_show_tabs(True)
xm = gtk.glade.XML(GTKGUI_GLADE, 'tab_hbox', APP)
tab_hbox = xm.get_widget('tab_hbox')
xm.signal_connect('on_close_button_clicked', \
self.on_close_button_clicked, jid)
self.notebook.set_tab_label(child, tab_hbox)
self.show_title()
def on_chat_window_key_press_event(self, widget, event):
def on_chat_notebook_key_press_event(self, widget, event):
st = '1234567890' # zero is here cause humans count from 1, pc from 0 :P
jid = self.get_active_jid()
if event.keyval == gtk.keysyms.Escape: # ESCAPE
@ -301,7 +301,6 @@ class chat:
# we pressed a control key or ctrl+sth : we don't block the event
# in order to let ctrl+c do its work
pass
#FIXME: will not work with gc
else: # it's a normal key press make sure message_textview has focus
message_textview = self.xmls[jid].get_widget('message_textview')
if not message_textview.is_focus():

View File

@ -26,6 +26,8 @@ import time
import sre #usefull later
from dialogs import *
from chat import *
from gtkgui import ImageCellRenderer
from common import i18n
@ -36,7 +38,27 @@ gtk.glade.textdomain(APP)
GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
class Groupchat_window:
class Groupchat_window(chat):
def __init__(self, room_jid, nick, plugin, account):
chat.__init__(self, plugin, account, 'groupchat_window')
self.nicks = {}
self.list_treeview = {}
self.subjects = {}
self.new_group(room_jid, nick)
self.show_title()
self.xml.signal_connect('on_groupchat_window_destroy', \
self.on_groupchat_window_destroy)
self.xml.signal_connect('on_groupchat_window_delete_event', \
self.on_groupchat_window_delete_event)
self.xml.signal_connect('on_groupchat_window_focus_in_event', \
self.on_groupchat_window_focus_in_event)
self.xml.signal_connect('on_chat_notebook_key_press_event', \
self.on_chat_notebook_key_press_event)
self.xml.signal_connect('on_chat_notebook_switch_page', \
self.on_chat_notebook_switch_page)
self.xml.signal_connect('on_set_button_clicked', \
self.on_set_button_clicked)
def on_groupchat_window_delete_event(self, widget, event):
"""close window"""
for room_jid in self.xmls:
@ -50,20 +72,14 @@ class Groupchat_window:
for room_jid in self.xmls:
self.plugin.send('GC_STATUS', self.account, (self.nicks[room_jid], \
room_jid, 'offline', 'offline'))
del self.plugin.windows[self.account]['gc'][room_jid]
if self.plugin.windows[self.account]['gc'].has_key('tabbed'):
del self.plugin.windows[self.account]['gc']['tabbed']
chat.on_window_destroy(self, widget, 'gc')
def update_tags(self):
for room_jid in self.tagIn:
self.tagIn[room_jid].set_property('foreground', \
self.plugin.config['inmsgcolor'])
self.tagInBold[room_jid].set_property('foreground', \
self.plugin.config['inmsgcolor'])
self.tagOut[room_jid].set_property('foreground', \
self.plugin.config['outmsgcolor'])
self.tagStatus[room_jid].set_property('foreground', \
self.plugin.config['statusmsgcolor'])
def on_groupchat_window_focus_in_event(self, widget, event):
"""When window get focus"""
chat.on_chat_window_focus_in_event(self, widget, event)
def on_chat_notebook_key_press_event(self, widget, event):
chat.on_chat_notebook_key_press_event(self, widget, event)
def get_role_iter(self, room_jid, role):
model = self.list_treeview[room_jid].get_model()
@ -179,43 +195,6 @@ class Groupchat_window:
img = self.plugin.roster.pixbufs[show]
model.set_value(iter, 0, img)
def show_title(self):
"""redraw the window's title"""
unread = 0
for room_jid in self.nb_unread:
unread += self.nb_unread[room_jid]
start = ""
if unread > 1:
start = "[" + str(unread) + "] "
elif unread == 1:
start = "* "
chat = 'Groupchat in ' + room_jid
if len(self.xmls) > 1:
chat = 'Groupchat'
self.window.set_title(start + chat + ' (' + self.account + ')')
def redraw_tab(self, room_jid):
"""redraw the label of the tab"""
start = ''
if self.nb_unread[room_jid] > 1:
start = "[" + str(self.nb_unread[room_jid]) + "] "
elif self.nb_unread[room_jid] == 1:
start = "* "
room = room_jid.split('@')[0]
child = self.xmls[room_jid].get_widget('group_vbox')
self.chat_notebook.set_tab_label_text(child, start + room)
def get_active_jid(self):
active_child = self.chat_notebook.get_nth_page(\
self.chat_notebook.get_current_page())
active_jid = ''
for room_jid in self.xmls:
child = self.xmls[room_jid].get_widget('group_vbox')
if child == active_child:
active_jid = room_jid
break
return active_jid
def set_subject(self, room_jid, subject):
self.subjects[room_jid] = subject
self.xml.get_widget('subject_entry').set_text(subject)
@ -225,10 +204,6 @@ class Groupchat_window:
subject = self.xml.get_widget('subject_entry').get_text()
self.plugin.send('GC_SUBJECT', self.account, (room_jid, subject))
def on_close_button_clicked(self, button):
room_jid = self.get_active_jid()
self.remove_tab(room_jid)
def on_message_textview_key_press_event(self, widget, event):
"""When a key is pressed:
if enter is pressed without the shit key, message (if not empty) is sent
@ -268,59 +243,6 @@ class Groupchat_window:
return 1
return 0
def on_groupchat_window_key_press_event(self, widget, event):
st = "1234567890" # humans count from 1, pc from 0 :P
room_jid = self.get_active_jid()
if event.keyval == gtk.keysyms.Escape: #ESCAPE
self.remove_tab(room_jid)
elif event.string and event.string in st \
and (event.state & gtk.gdk.MOD1_MASK): # alt + 1,2,3 ...
self.chat_notebook.set_current_page(st.index(event.string))
elif event.keyval == gtk.keysyms.Page_Down: # PAGEDOWN
if event.state & gtk.gdk.CONTROL_MASK:
current = self.chat_notebook.get_current_page()
if current > 0:
self.chat_notebook.set_current_page(current-1)
# else:
# self.chat_notebook.set_current_page(\
# self.chat_notebook.get_n_pages()-1)
elif event.state & gtk.gdk.SHIFT_MASK:
conversation_textview = self.xmls[room_jid].\
get_widget('conversation_textview')
rect = conversation_textview.get_visible_rect()
iter = conversation_textview.get_iter_at_location(rect.x,\
rect.y + rect.height)
conversation_textview.scroll_to_iter(iter, 0.1, True, 0, 0)
elif event.keyval == gtk.keysyms.Page_Up: # PAGEUP
if event.state & gtk.gdk.CONTROL_MASK:
current = self.chat_notebook.get_current_page()
if current < (self.chat_notebook.get_n_pages()-1):
self.chat_notebook.set_current_page(current+1)
# else:
# self.chat_notebook.set_current_page(0)
elif event.state & gtk.gdk.SHIFT_MASK:
conversation_textview = self.xmls[room_jid].\
get_widget('conversation_textview')
rect = conversation_textview.get_visible_rect()
iter = conversation_textview.get_iter_at_location(rect.x, rect.y)
conversation_textview.scroll_to_iter(iter, 0.1, True, 0, 1)
elif event.keyval == gtk.keysyms.Tab and \
(event.state & gtk.gdk.CONTROL_MASK): # CTRL+TAB
current = self.chat_notebook.get_current_page()
if current < (self.chat_notebook.get_n_pages()-1):
self.chat_notebook.set_current_page(current+1)
else:
self.chat_notebook.set_current_page(0)
'''FIXME:
NOT GOOD steals focus from Subject entry and I cannot find a way to prevent this
else: # it's a normal key press make sure message_textview has focus
message_textview = self.xmls[room_jid].get_widget('message_textview')
if not message_textview.is_focus():
message_textview.grab_focus()
'''
def print_conversation(self, text, room_jid, contact = '', tim = None):
"""Print a line in the conversation :
if contact is set : it's a message from someone
@ -343,10 +265,7 @@ class Groupchat_window:
if contact == self.nicks[room_jid]:
tag = 'outgoing'
else:
if self.nicks[room_jid].lower() in text.lower().split():
tag = 'incoming_bold'
else:
tag = 'incoming'
tag = 'incoming'
self.last_message_time[room_jid] = time.time()
if text.startswith('/me'):
@ -358,7 +277,12 @@ class Groupchat_window:
tag = 'status'
ttext = text + '\n'
conversation_buffer.insert_with_tags_by_name(end_iter, ttext, tag)
if tag == 'incoming' and self.nicks[room_jid].lower() in\
text.lower().split():
conversation_buffer.insert_with_tags_by_name(end_iter, ttext, tag,\
'bold')
else:
conversation_buffer.insert_with_tags_by_name(end_iter, ttext, tag)
#TODO: emoticons, url grabber
conversation_buffer.insert(end_iter, otext)
#scroll to the end of the textview
@ -498,70 +422,31 @@ class Groupchat_window:
menu.show_all()
menu.reposition()
def on_groupchat_window_focus_in_event(self, widget, event):
"""When window get focus"""
room_jid = self.get_active_jid()
if self.nb_unread[room_jid] > 0:
self.nb_unread[room_jid] = 0
self.redraw_tab(room_jid)
self.show_title()
self.plugin.systray.remove_jid(room_jid, self.account)
def on_chat_notebook_switch_page(self, notebook, page, page_num):
new_child = notebook.get_nth_page(page_num)
new_jid = ''
for room_jid in self.xmls:
child = self.xmls[room_jid].get_widget('group_vbox')
if child == new_child:
new_jid = room_jid
break
self.xml.get_widget('subject_entry').set_text(self.subjects[new_jid])
if self.nb_unread[new_jid] > 0:
self.nb_unread[new_jid] = 0
self.redraw_tab(new_jid)
self.show_title()
self.plugin.systray.remove_jid(new_jid, self.account)
def active_tab(self, room_jid):
child = self.xmls[room_jid].get_widget('group_vbox')
self.chat_notebook.set_current_page(self.chat_notebook.page_num(child))
self.xmls[room_jid].get_widget('message_textview').grab_focus()
def remove_tab(self, room_jid):
if time.time() - self.last_message_time[room_jid] < 2:
dialog = Confirmation_dialog(_('You received a message in the room %s in the last two seconds.\nDo you still want to close this tab ?') % \
room_jid.split('@')[0])
if dialog.get_response() != gtk.RESPONSE_YES:
return
if len(self.xmls) == 1:
self.window.destroy()
else:
chat.remove_tab(self, jid, 'gc')
if len(self.xmls) > 0:
self.plugin.send('GC_STATUS', self.account, (self.nicks[room_jid], \
room_jid, 'offline', 'offline'))
self.chat_notebook.remove_page(self.chat_notebook.get_current_page())
del self.plugin.windows[self.account]['gc'][room_jid]
del self.nicks[room_jid]
del self.nb_unread[room_jid]
del self.last_message_time[room_jid]
del self.xmls[room_jid]
del self.tagIn[room_jid]
del self.tagInBold[room_jid]
del self.tagOut[room_jid]
del self.tagStatus[room_jid]
del self.list_treeview[room_jid]
del self.subjects[room_jid]
if len(self.xmls) == 1:
self.chat_notebook.set_show_tabs(False)
self.show_title()
def new_group(self, room_jid, nick):
self.nb_unread[room_jid] = 0
self.last_message_time[room_jid] = 0
self.names[room_jid] = room_jid.split('@')[0]
self.xmls[room_jid] = gtk.glade.XML(GTKGUI_GLADE, 'gc_vbox', APP)
self.childs[room_jid] = self.xmls[room_jid].get_widget('gc_vbox')
chat.new_tab(self, room_jid)
self.nicks[room_jid] = nick
self.subjects[room_jid] = ''
self.xmls[room_jid] = gtk.glade.XML(GTKGUI_GLADE, 'group_vbox', APP)
self.list_treeview[room_jid] = self.xmls[room_jid].\
get_widget('list_treeview')
print self.list_treeview[room_jid]
#status_image, nickname, real_jid
store = gtk.TreeStore(gtk.Image, str, str)
@ -583,32 +468,6 @@ class Groupchat_window:
column.set_visible(False)
self.list_treeview[room_jid].set_expander_column(column)
conversation_textview = self.xmls[room_jid].\
get_widget('conversation_textview')
conversation_buffer = conversation_textview.get_buffer()
end_iter = conversation_buffer.get_end_iter()
conversation_buffer.create_mark('end', end_iter, 0)
self.tagIn[room_jid] = conversation_buffer.create_tag('incoming')
# (nk) what is this?
self.tagInBold[room_jid] = conversation_buffer.create_tag('incoming_bold')
color = self.plugin.config['inmsgcolor']
self.tagIn[room_jid].set_property('foreground', color)
self.tagInBold[room_jid].set_property('foreground', color)
self.tagInBold[room_jid].set_property('weight', 700)
self.tagOut[room_jid] = conversation_buffer.create_tag('outgoing')
color = self.plugin.config['outmsgcolor']
self.tagOut[room_jid].set_property('foreground', color)
self.tagStatus[room_jid] = conversation_buffer.create_tag('status')
color = self.plugin.config['statusmsgcolor']
self.tagStatus[room_jid].set_property('foreground', color)
self.xmls[room_jid].signal_autoconnect(self)
self.chat_notebook.append_page(self.xmls[room_jid].\
get_widget('group_vbox'))
if len(self.xmls) > 1:
self.chat_notebook.set_show_tabs(True)
self.redraw_tab(room_jid)
self.show_title()
@ -664,35 +523,3 @@ class Groupchat_window:
change the icon of the arrow"""
model = widget.get_model()
model.set_value(iter, 0, self.plugin.roster.pixbufs['closed'])
def __init__(self, room_jid, nick, plugin, account):
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'groupchat_window', APP)
self.chat_notebook = self.xml.get_widget('chat_notebook')
self.chat_notebook.remove_page(0)
self.plugin = plugin
self.account = account
self.xmls = {}
self.tagIn = {}
self.tagInBold = {}
self.tagOut = {}
self.tagStatus = {}
self.nicks = {}
self.nb_unread = {}
self.last_message_time = {}
self.list_treeview = {}
self.subjects = {}
self.window = self.xml.get_widget('groupchat_window')
self.new_group(room_jid, nick)
self.show_title()
self.xml.signal_connect('on_groupchat_window_destroy', \
self.on_groupchat_window_destroy)
self.xml.signal_connect('on_groupchat_window_delete_event', \
self.on_groupchat_window_delete_event)
self.xml.signal_connect('on_groupchat_window_focus_in_event', \
self.on_groupchat_window_focus_in_event)
self.xml.signal_connect('on_groupchat_window_key_press_event', \
self.on_groupchat_window_key_press_event)
self.xml.signal_connect('on_chat_notebook_switch_page', \
self.on_chat_notebook_switch_page)
self.xml.signal_connect('on_set_button_clicked', \
self.on_set_button_clicked)

View File

@ -6971,7 +6971,6 @@ Custom</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<signal name="focus_in_event" handler="on_groupchat_window_focus_in_event" last_modification_time="Sat, 05 Mar 2005 00:34:51 GMT"/>
<signal name="key_press_event" handler="on_groupchat_window_key_press_event" last_modification_time="Sat, 05 Mar 2005 10:57:33 GMT"/>
<signal name="delete_event" handler="on_groupchat_window_delete_event" last_modification_time="Mon, 07 Mar 2005 11:19:05 GMT"/>
<signal name="destroy" handler="on_groupchat_window_destroy" last_modification_time="Mon, 07 Mar 2005 16:46:37 GMT"/>
@ -7062,73 +7061,13 @@ Custom</property>
<property name="scrollable">True</property>
<property name="enable_popup">False</property>
<signal name="switch_page" handler="on_chat_notebook_switch_page" last_modification_time="Sat, 05 Mar 2005 10:57:01 GMT"/>
<signal name="key_press_event" handler="on_chat_notebook_key_press_event" last_modification_time="Sat, 12 Mar 2005 21:19:23 GMT"/>
<child>
<widget class="GtkVBox" id="group_vbox">
<property name="border_width">4</property>
<widget class="GtkVBox" id="gc_vbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">4</property>
<child>
<widget class="GtkHBox" id="hbox2929">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">4</property>
<child>
<widget class="GtkLabel" id="jid_label">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="close_button">
<property name="visible">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_close_button_clicked" last_modification_time="Sat, 05 Mar 2005 10:52:53 GMT"/>
<child>
<widget class="GtkImage" id="image432">
<property name="visible">True</property>
<property name="stock">gtk-close</property>
<property name="icon_size">1</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<property name="spacing">0</property>
<child>
<widget class="GtkVPaned" id="vpaned4">
@ -7171,7 +7110,7 @@ Custom</property>
</child>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow18">
<widget class="GtkScrolledWindow" id="conversation_scrolledwindow">
<property name="visible">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
@ -8067,7 +8006,6 @@ Custom</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<signal name="focus_in_event" handler="on_tabbed_chat_window_focus_in_event" last_modification_time="Wed, 02 Mar 2005 17:57:33 GMT"/>
<signal name="key_press_event" handler="on_tabbed_chat_window_key_press_event" last_modification_time="Wed, 02 Mar 2005 17:59:50 GMT"/>
<signal name="delete_event" handler="on_tabbed_chat_window_delete_event" last_modification_time="Mon, 07 Mar 2005 11:06:00 GMT"/>
<signal name="destroy" handler="on_tabbed_chat_window_destroy" last_modification_time="Mon, 07 Mar 2005 16:35:25 GMT"/>
@ -8080,9 +8018,10 @@ Custom</property>
<property name="scrollable">False</property>
<property name="enable_popup">False</property>
<signal name="switch_page" handler="on_chat_notebook_switch_page" last_modification_time="Wed, 02 Mar 2005 18:00:21 GMT"/>
<signal name="key_press_event" handler="on_chat_notebook_key_press_event" last_modification_time="Sat, 12 Mar 2005 21:18:17 GMT"/>
<child>
<widget class="GtkVBox" id="tab_vbox">
<widget class="GtkVBox" id="chats_vbox">
<property name="border_width">5</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>

View File

@ -51,8 +51,8 @@ class tabbed_chat_window(chat):
self.on_tabbed_chat_window_delete_event)
self.xml.signal_connect('on_tabbed_chat_window_focus_in_event', \
self.on_tabbed_chat_window_focus_in_event)
self.xml.signal_connect('on_tabbed_chat_window_key_press_event', \
self.on_tabbed_chat_window_key_press_event)
self.xml.signal_connect('on_chat_notebook_key_press_event', \
self.on_chat_notebook_key_press_event)
self.xml.signal_connect('on_chat_notebook_switch_page', \
self.on_chat_notebook_switch_page)
@ -83,7 +83,7 @@ class tabbed_chat_window(chat):
"""close window"""
for jid in self.users:
if time.time() - self.last_message_time[jid] < 2: # 2 seconds
dialog = Confirmation_dialog(_('You received a message from %s in the last two seconds.\nDo you still want to close this window?') % jid)
dialog = Confirmation_dialog(_('You received a message from %s in the last two seconds.\nDo you still want to close this window ?') % jid)
if dialog.get_response() != gtk.RESPONSE_YES:
return True #stop the propagation of the event
@ -94,8 +94,8 @@ class tabbed_chat_window(chat):
def on_tabbed_chat_window_focus_in_event(self, widget, event):
chat.on_chat_window_focus_in_event(self, widget, event)
def on_tabbed_chat_window_key_press_event(self, widget, event):
chat.on_chat_window_key_press_event(self, widget, event)
def on_chat_notebook_key_press_event(self, widget, event):
chat.on_chat_notebook_key_press_event(self, widget, event)
def on_clear_button_clicked(self, widget):
"""When clear button is pressed :
@ -124,20 +124,11 @@ class tabbed_chat_window(chat):
def new_user(self, user):
self.names[user.jid] = user.name
self.xmls[user.jid] = gtk.glade.XML(GTKGUI_GLADE, 'chats_vbox', APP)
self.childs[user.jid] = self.xmls[user.jid].get_widget('chats_vbox')
chat.new_tab(self, user.jid)
self.users[user.jid] = user
conversation_textview = \
self.xmls[user.jid].get_widget('conversation_textview')
conversation_buffer = conversation_textview.get_buffer()
child = self.xmls[user.jid].get_widget('tab_vbox')
xm = gtk.glade.XML(GTKGUI_GLADE, 'tab_hbox', APP)
tab_hbox = xm.get_widget('tab_hbox')
xm.signal_connect('on_close_button_clicked', \
self.on_close_button_clicked, user.jid)
self.notebook.set_tab_label(child, tab_hbox)
self.redraw_tab(user.jid)
self.draw_widgets(user)