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 pango
|
||||||
import gobject
|
import gobject
|
||||||
import gtkgui_helpers
|
import gtkgui_helpers
|
||||||
|
import message_window
|
||||||
|
|
||||||
from common import gajim
|
from common import gajim
|
||||||
|
from message_window import MessageControl
|
||||||
from conversation_textview import ConversationTextview
|
from conversation_textview import ConversationTextview
|
||||||
from message_textview import MessageTextView
|
from message_textview import MessageTextView
|
||||||
|
|
||||||
|
@ -31,16 +33,18 @@ APP = i18n.APP
|
||||||
GTKGUI_GLADE = 'gtkgui.glade'
|
GTKGUI_GLADE = 'gtkgui.glade'
|
||||||
####################
|
####################
|
||||||
|
|
||||||
class ChatControl(MessageControl):
|
class ChatControl(message_window.MessageControl):
|
||||||
'''A MessageControl for standard 1-1 chat'''
|
'''A MessageControl for standard 1-1 chat'''
|
||||||
def __init__(self, contact):
|
def __init__(self, contact):
|
||||||
MessageControl.__init__(self, 'chat_child_vbox', 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):
|
def draw_widgets(self):
|
||||||
|
# The name banner is drawn here
|
||||||
MessageControl.draw_widgets(self)
|
MessageControl.draw_widgets(self)
|
||||||
|
|
||||||
# FIXME: Move this to a muc_control.py
|
# FIXME: Move this to a muc_control.py
|
||||||
class MultiUserChatControl(MessageControl):
|
class MultiUserChatControl(message_window.MessageControl):
|
||||||
def __init__(self, contact):
|
def __init__(self, contact):
|
||||||
MessageControl.__init__(self, 'muc_child_vbox', 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_tabs(False)
|
||||||
self.notebook.set_show_border(gajim.config.get('tabs_border'))
|
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()
|
self.window.show_all()
|
||||||
|
|
||||||
def new_tab(self, type, contact, acct):
|
def _on_window_delete(self, win, event):
|
||||||
pass
|
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:
|
class MessageWindowMgr:
|
||||||
'''A manager and factory for MessageWindow objects'''
|
'''A manager and factory for MessageWindow objects'''
|
||||||
|
@ -103,7 +133,8 @@ class MessageWindowMgr:
|
||||||
|
|
||||||
def _gtkWinToMsgWin(self, gtk_win):
|
def _gtkWinToMsgWin(self, gtk_win):
|
||||||
for w in self._windows:
|
for w in self._windows:
|
||||||
if w.window == gtk_win:
|
win = self._windows[w].window
|
||||||
|
if win == gtk_win:
|
||||||
return w
|
return w
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -146,10 +177,10 @@ class MessageControl(gtk.VBox):
|
||||||
def __init__(self, widget_name, contact):
|
def __init__(self, widget_name, contact):
|
||||||
gtk.VBox.__init__(self)
|
gtk.VBox.__init__(self)
|
||||||
|
|
||||||
|
self.widget_name = widget_name
|
||||||
self.contact = contact
|
self.contact = contact
|
||||||
self.compact_view = False
|
self.compact_view = False
|
||||||
|
|
||||||
self.widget_name = widget_name
|
|
||||||
self.xml = gtk.glade.XML(GTKGUI_GLADE, widget_name, APP)
|
self.xml = gtk.glade.XML(GTKGUI_GLADE, widget_name, APP)
|
||||||
self.widget = self.xml.get_widget(widget_name)
|
self.widget = self.xml.get_widget(widget_name)
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ import common.sleepy
|
||||||
import tabbed_chat_window
|
import tabbed_chat_window
|
||||||
import groupchat_window
|
import groupchat_window
|
||||||
import message_window
|
import message_window
|
||||||
|
import chat_control
|
||||||
import history_window
|
import history_window
|
||||||
import dialogs
|
import dialogs
|
||||||
import vcard
|
import vcard
|
||||||
|
@ -48,6 +49,7 @@ from common import gajim
|
||||||
from common import helpers
|
from common import helpers
|
||||||
from common import i18n
|
from common import i18n
|
||||||
from message_window import MessageWindowMgr
|
from message_window import MessageWindowMgr
|
||||||
|
from chat_control import ChatControl
|
||||||
|
|
||||||
_ = i18n._
|
_ = i18n._
|
||||||
APP = i18n.APP
|
APP = i18n.APP
|
||||||
|
@ -89,6 +91,8 @@ class RosterWindow:
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
root = self.get_account_iter(account)
|
root = self.get_account_iter(account)
|
||||||
group_iter = model.iter_children(root)
|
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:
|
while group_iter:
|
||||||
group_name = model[group_iter][C_NAME].decode('utf-8')
|
group_name = model[group_iter][C_NAME].decode('utf-8')
|
||||||
if name == group_name:
|
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):
|
def new_chat(self, contact, account):
|
||||||
# Get target window
|
# Get target window
|
||||||
# FIXME: type arg
|
mw = self.msg_win_mgr.get_window(contact, account, None) # FIXME: type arg
|
||||||
mw = self.msg_win_mgr.get_window(contact, account, None)
|
chat_control = ChatControl(contact)
|
||||||
|
mw.new_tab(chat_control)
|
||||||
|
|
||||||
|
# REMOVE ME
|
||||||
chats = gajim.interface.instances[account]['chats']
|
chats = gajim.interface.instances[account]['chats']
|
||||||
if gajim.config.get('usetabbedchat'):
|
if gajim.config.get('usetabbedchat'):
|
||||||
if not chats.has_key('tabbed'):
|
if not chats.has_key('tabbed'):
|
||||||
|
|
Loading…
Add table
Reference in a new issue