chat controls created and showing up in MessageWindow
This commit is contained in:
parent
d19a522ff8
commit
a4477f88ee
3 changed files with 50 additions and 9 deletions
|
@ -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')
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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'):
|
||||
|
|
Loading…
Add table
Reference in a new issue