diff --git a/data/gui/gc_occupants_menu.ui b/data/gui/gc_occupants_menu.ui index b6b8688e6ecb8c5d1299c1854193241a72d28242..0c907dec77329971e120348f74f819cad55f4e22 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 f5a646558108f98473eba74eeec7c5d21298aba3..717c48c4e68e02d91b676d9bd1b6312459810682 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 4645c46b45dcecdefffe24a3c039cf7a42995857..1eed94dd58181f19a36d0f374a5c07efaf4075fd 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):