A gc control and a chat control in the same window is realized.

This commit is contained in:
Travis Shirk 2006-01-03 07:34:18 +00:00
parent 311288907a
commit 5464701cda
4 changed files with 44 additions and 14 deletions

View File

@ -24,6 +24,24 @@ from chat_control import ChatControl
from chat_control import ChatControlBase
from conversation_textview import ConversationTextview
from message_textview import MessageTextView
from gettext import ngettext
from common import i18n
_ = i18n._
Q_ = i18n.Q_
APP = i18n.APP
gtk.glade.bindtextdomain(APP, i18n.DIR)
gtk.glade.textdomain(APP)
GTKGUI_GLADE = 'gtkgui.glade'
#(status_image, type, nick, shown_nick)
(
C_IMG, # image to show state (online, new message etc)
C_TYPE, # type of the row ('contact' or 'group')
C_NICK, # contact nickame or group name
C_TEXT, # text shown in the cellrenderer
) = range(4)
class PrivateChatControl(ChatControl):
TYPE_ID = message_control.TYPE_PM
@ -40,6 +58,9 @@ class GroupchatControl(ChatControlBase):
ChatControlBase.__init__(self, self.TYPE_ID, parent_win,
'muc_child_vbox', _('Group Chat'), contact, acct);
self.compact_view_always = gajim.config.get('always_compact_view_gc')
# alphanum sorted
self.muc_cmds = ['ban', 'chat', 'query', 'clear', 'close', 'compact', 'help', 'invite',
'join', 'kick', 'leave', 'me', 'msg', 'nick', 'part', 'say', 'topic']
# muc attention states (when we are mentioned in a muc)
# if the room jid is in the list, the room has mentioned us
self.muc_attentions = []
@ -57,7 +78,7 @@ class GroupchatControl(ChatControlBase):
num_unread = self.nb_unread
has_focus = self.parent_win.get_property('has-toplevel-focus')
has_focus = self.parent_win.window.get_property('has-toplevel-focus')
current_tab = self.parent_win.get_active_control() == self
color = None
theme = gajim.config.get('roster_theme')

View File

@ -19769,7 +19769,7 @@ Status message</property>
<signal name="button_press_event" handler="on_banner_eventbox_button_press_event" last_modification_time="Mon, 08 Aug 2005 15:32:39 GMT"/>
<child>
<widget class="GtkLabel" id="label375">
<widget class="GtkLabel" id="banner_name_label">
<property name="visible">True</property>
<property name="label">&lt;span weight=&quot;heavy&quot; size=&quot;large&quot;&gt;room jid&lt;/span&gt;
topic</property>
@ -19820,7 +19820,7 @@ topic</property>
<property name="spacing">6</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow46">
<widget class="GtkScrolledWindow" id="conversation_scrolledwindow">
<property name="width_request">200</property>
<property name="height_request">60</property>
<property name="visible">True</property>
@ -19842,7 +19842,7 @@ topic</property>
</child>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow47">
<widget class="GtkScrolledWindow" id="message_scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property>

View File

@ -267,14 +267,20 @@ class MessageWindow:
num_unread = ctl.nb_unread
# Set tab image (always 16x16); unread messages show the 'message' image
img_16 = gajim.interface.roster.get_appropriate_state_images(contact.jid)
if num_unread and gajim.config.get('show_unread_tab_icon'):
tab_img = img_16['message']
else:
tab_img = img_16[contact.show]
if tab_img.get_storage_type() == gtk.IMAGE_ANIMATION:
status_img.set_from_animation(tab_img.get_animation())
else:
status_img.set_from_pixbuf(tab_img.get_pixbuf())
tab_img = None
if ctl.type_id == message_control.TYPE_CHAT:
if num_unread and gajim.config.get('show_unread_tab_icon'):
tab_img = img_16['message']
else:
tab_img = img_16[contact.show]
elif ctl.type_id == message_control.TYPE_GC:
# FIXME: muc_active muc_inactive
pass
if tab_img:
if tab_img.get_storage_type() == gtk.IMAGE_ANIMATION:
status_img.set_from_animation(tab_img.get_animation())
else:
status_img.set_from_pixbuf(tab_img.get_pixbuf())
def repaint_themed_widgets(self):
'''Repaint controls in the window with theme color'''

View File

@ -46,6 +46,7 @@ from common import i18n
from message_window import MessageWindowMgr
from chat_control import ChatControl
from groupchat_control import GroupchatControl
from groupchat_control import PrivateChatControl
_ = i18n._
APP = i18n.APP
@ -1697,14 +1698,16 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
mw.set_active_tab(jid)
mw.window.present()
def new_room(self, jid, nick, account):
def new_room(self, room_jid, nick, account):
print "new_room"
# FIXME: Not contact. Use jid and nick
# Get target window, create a control, and associate it with the window
contact = gajim.contacts.create_contact(jid = room_jid)
mw = gajim.interface.msg_win_mgr.get_window(contact.jid)
if not mw:
mw = gajim.interface.msg_win_mgr.create_window(contact, account,
GroupchatControl.TYPE_ID)
gc_control = ChatControl(mw, contact, account)
gc_control = GroupchatControl(mw, contact, account)
mw.new_tab(gc_control)
def on_message(self, jid, msg, tim, account, encrypted = False,