From eb836807860caa6bb724f907e0591d77f9b51bc1 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger <asterix@lagaule.org> Date: Wed, 30 Mar 2011 15:23:10 +0200 Subject: [PATCH] ability to invite a room occupant to another room if we know his real JID directly from the groupchat contact menu. Fixes #4443 --- data/gui/gc_occupants_menu.ui | 13 +++++++++++++ src/groupchat_control.py | 10 ++++++++++ src/gui_menu_builder.py | 4 +++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/data/gui/gc_occupants_menu.ui b/data/gui/gc_occupants_menu.ui index b6b8688e6e..0c907dec77 100644 --- a/data/gui/gc_occupants_menu.ui +++ b/data/gui/gc_occupants_menu.ui @@ -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> diff --git a/src/groupchat_control.py b/src/groupchat_control.py index f5a6465581..717c48c4e6 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -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 diff --git a/src/gui_menu_builder.py b/src/gui_menu_builder.py index 4645c46b45..1eed94dd58 100644 --- a/src/gui_menu_builder.py +++ b/src/gui_menu_builder.py @@ -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): -- GitLab