chat controls created and showing up in MessageWindow

This commit is contained in:
Travis Shirk 2005-12-30 20:47:59 +00:00
parent d19a522ff8
commit a4477f88ee
3 changed files with 50 additions and 9 deletions

View File

@ -17,8 +17,10 @@ import gtk.glade
import pango
import gobject
import gtkgui_helpers
import message_window
from common import gajim
from message_window import MessageControl
from conversation_textview import ConversationTextview
from message_textview import MessageTextView
@ -31,16 +33,18 @@ APP = i18n.APP
GTKGUI_GLADE = 'gtkgui.glade'
####################
class ChatControl(MessageControl):
class ChatControl(message_window.MessageControl):
'''A MessageControl for standard 1-1 chat'''
def __init__(self, contact):
MessageControl.__init__(self, 'chat_child_vbox', contact);
self.always_compact_view = gajim.config.get('always_compact_view_chat')
self.compact_view = gajim.config.get('always_compact_view_chat')
def draw_widgets(self):
# The name banner is drawn here
MessageControl.draw_widgets(self)
# FIXME: Move this to a muc_control.py
class MultiUserChatControl(MessageControl):
class MultiUserChatControl(message_window.MessageControl):
def __init__(self, contact):
MessageControl.__init__(self, 'muc_child_vbox', contact);
self.compact_view = gajim.config.get('always_compact_view_gc')

View File

@ -66,10 +66,40 @@ class MessageWindow:
self.notebook.set_show_tabs(False)
self.notebook.set_show_border(gajim.config.get('tabs_border'))
# Connect event handling for this Window
self.window.connect('delete-event', self._on_window_delete)
self.window.connect('destroy', self._on_window_destroy)
self.window.show_all()
def new_tab(self, type, contact, acct):
pass
def _on_window_delete(self, win, event):
print "MessageWindow._on_window_delete:", win, event
def _on_window_destroy(self, win):
print "MessageWindow._on_window_destroy:", win
def new_tab(self, control):
assert(not self._controls.has_key(control.contact.jid))
self._controls[control.contact.jid] = control
# Add notebook page and connect up to the tab's close button
xml = gtk.glade.XML(GTKGUI_GLADE, 'chat_tab_ebox', APP)
tab_label_box = xml.get_widget('chat_tab_ebox')
xml.signal_connect('on_close_button_clicked', self.on_close_button_clicked,
control.contact)
self.notebook.append_page(control.widget, tab_label_box)
self.window.show_all()
def on_close_button_clicked(self, button, contact):
'''When close button is pressed: close a tab'''
self.remove_tab(contact)
def remove_tab(self, contact):
# TODO
print "MessageWindow.remove_tab"
class MessageWindowMgr:
'''A manager and factory for MessageWindow objects'''
@ -103,7 +133,8 @@ class MessageWindowMgr:
def _gtkWinToMsgWin(self, gtk_win):
for w in self._windows:
if w.window == gtk_win:
win = self._windows[w].window
if win == gtk_win:
return w
return None
@ -146,10 +177,10 @@ class MessageControl(gtk.VBox):
def __init__(self, widget_name, contact):
gtk.VBox.__init__(self)
self.widget_name = widget_name
self.contact = contact
self.compact_view = False
self.widget_name = widget_name
self.xml = gtk.glade.XML(GTKGUI_GLADE, widget_name, APP)
self.widget = self.xml.get_widget(widget_name)

View File

@ -34,6 +34,7 @@ import common.sleepy
import tabbed_chat_window
import groupchat_window
import message_window
import chat_control
import history_window
import dialogs
import vcard
@ -48,6 +49,7 @@ from common import gajim
from common import helpers
from common import i18n
from message_window import MessageWindowMgr
from chat_control import ChatControl
_ = i18n._
APP = i18n.APP
@ -89,6 +91,8 @@ class RosterWindow:
model = self.tree.get_model()
root = self.get_account_iter(account)
group_iter = model.iter_children(root)
# C_NAME column contacts the pango escaped group name
name = gtkgui_helpers.escape_for_pango_markup(name)
while group_iter:
group_name = model[group_iter][C_NAME].decode('utf-8')
if name == group_name:
@ -1648,9 +1652,11 @@ _('If "%s" accepts this request you will know his or her status.') %jid)
def new_chat(self, contact, account):
# Get target window
# FIXME: type arg
mw = self.msg_win_mgr.get_window(contact, account, None)
mw = self.msg_win_mgr.get_window(contact, account, None) # FIXME: type arg
chat_control = ChatControl(contact)
mw.new_tab(chat_control)
# REMOVE ME
chats = gajim.interface.instances[account]['chats']
if gajim.config.get('usetabbedchat'):
if not chats.has_key('tabbed'):