ability to invite a room occupant to another room if we know his real JID directly from the groupchat contact menu. Fixes #4443

This commit is contained in:
Yann Leboulanger 2011-03-30 15:23:10 +02:00
parent 6601411498
commit eb83680786
3 changed files with 26 additions and 1 deletions

View File

@ -94,6 +94,15 @@
</child>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="invite_menuitem">
<property name="label" translatable="yes">In_vite to</property>
<property name="visible">True</property>
<property name="use_underline">True</property>
<property name="image">image7</property>
<property name="use_stock">False</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separator6">
<property name="visible">True</property>
@ -185,4 +194,8 @@
<property name="stock">gtk-justify-fill</property>
<property name="icon-size">1</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="stock">gtk-missing-image</property>
</object>
</interface>

View File

@ -2336,6 +2336,16 @@ class GroupchatControl(ChatControlBase):
jid)
self.handlers[id_] = item
item = xml.get_object('invite_menuitem')
muc_icon = gtkgui_helpers.load_icon('muc_active')
if muc_icon:
item.set_image(muc_icon)
if c.jid and c.name != self.nick:
gui_menu_builder.build_invite_submenu(item, ((c, self.account),),
ignore_rooms=[self.room_jid])
else:
item.set_sensitive(False)
item = xml.get_object('information_menuitem')
id_ = item.connect('activate', self.on_info, nick)
self.handlers[id_] = item

View File

@ -62,7 +62,7 @@ def build_resources_submenu(contacts, account, action, room_jid=None,
return sub_menu
def build_invite_submenu(invite_menuitem, list_):
def build_invite_submenu(invite_menuitem, list_, ignore_rooms=[]):
"""
list_ in a list of (contact, account)
"""
@ -126,6 +126,8 @@ def build_invite_submenu(invite_menuitem, list_):
message_control.TYPE_GC) + minimized_controls:
acct = gc_control.account
room_jid = gc_control.room_jid
if room_jid in ignore_rooms:
continue
if room_jid in gajim.gc_connected[acct] and \
gajim.gc_connected[acct][room_jid] and \
contacts_transport == gajim.get_transport_name_from_jid(room_jid):