| | 1778 | |
| | 1779 | # Invite to |
| | 1780 | invite_to_submenu = gtk.Menu() |
| | 1781 | invite_menuitem.set_submenu(invite_to_submenu) |
| | 1782 | invite_to_new_room_menuitem = gtk.ImageMenuItem(_('_New group chat')) |
| | 1783 | icon = gtk.image_new_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_MENU) |
| | 1784 | invite_to_new_room_menuitem.set_image(icon) |
| | 1785 | contact_transport = gajim.get_transport_name_from_jid(contact.jid) |
| | 1786 | t = contact_transport or 'jabber' # transform None in 'jabber' |
| | 1787 | if not gajim.connections[account].muc_jid.has_key(t): |
| | 1788 | invite_to_new_room_menuitem.set_sensitive(False) |
| | 1789 | invite_to_submenu.append(invite_to_new_room_menuitem) |
| | 1790 | rooms = [] # a list of (room_jid, account) tuple |
| | 1791 | for gc_control in gajim.interface.msg_win_mgr.get_controls( |
| | 1792 | message_control.TYPE_GC): |
| | 1793 | acct = gc_control.account |
| | 1794 | room_jid = gc_control.room_jid |
| | 1795 | if gajim.gc_connected[acct].has_key(room_jid) and \ |
| | 1796 | gajim.gc_connected[acct][room_jid] and \ |
| | 1797 | contact_transport == gajim.get_transport_name_from_jid(room_jid): |
| | 1798 | rooms.append((room_jid, acct)) |
| | 1799 | if len(rooms): |
| | 1800 | item = gtk.SeparatorMenuItem() # separator |
| | 1801 | invite_to_submenu.append(item) |
| | 1802 | |
| 1796 | | item.connect('activate', action, c, account, |
| 1797 | | c.resource) |
| | 1822 | if action == self.on_invite_to_room: |
| | 1823 | item.connect('activate', action, [(c, account)], |
| | 1824 | room_jid, room_account, c.resource) |
| | 1825 | elif action == self.on_invite_to_new_room: |
| | 1826 | item.connect('activate', action, [(c, account)], c.resource) |
| | 1827 | else: # start_chat, execute_command |
| | 1828 | item.connect('activate', action, c, account, c.resource) |
| | 1856 | our_jid_other_resource = None |
| | 1857 | if our_jid: |
| | 1858 | # It's another resource of us, be sure to send invite to her |
| | 1859 | our_jid_other_resource = contact.resource |
| | 1860 | # Else this var is useless but harmless in next connect calls |
| | 1861 | |
| | 1862 | invite_to_new_room_menuitem.connect('activate', |
| | 1863 | self.on_invite_to_new_room, [(contact, account)], |
| | 1864 | our_jid_other_resource) |
| | 1865 | for (room_jid, room_account) in rooms: |
| | 1866 | menuitem = gtk.MenuItem(room_jid.split('@')[0]) |
| | 1867 | menuitem.connect('activate', self.on_invite_to_room, |
| | 1868 | [(contact, account)], room_jid, room_account, |
| | 1869 | our_jid_other_resource) |
| | 1870 | invite_to_submenu.append(menuitem) |
| | 1871 | |
| 1828 | | submenu = gtk.Menu() |
| 1829 | | invite_menuitem.set_submenu(submenu) |
| 1830 | | menuitem = gtk.ImageMenuItem(_('_New group chat')) |
| 1831 | | icon = gtk.image_new_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_MENU) |
| 1832 | | menuitem.set_image(icon) |
| 1833 | | menuitem.connect('activate', self.on_invite_to_new_room, [(contact, |
| 1834 | | account)]) |
| 1835 | | contact_transport = gajim.get_transport_name_from_jid(contact.jid) |
| 1836 | | t = contact_transport or 'jabber' # transform None in 'jabber' |
| 1837 | | if not gajim.connections[account].muc_jid.has_key(t): |
| 1838 | | menuitem.set_sensitive(False) |
| 1839 | | submenu.append(menuitem) |
| 1840 | | rooms = [] # a list of (room_jid, account) tuple |
| 1841 | | for gc_control in gajim.interface.msg_win_mgr.get_controls( |
| 1842 | | message_control.TYPE_GC): |
| 1843 | | acct = gc_control.account |
| 1844 | | room_jid = gc_control.room_jid |
| 1845 | | if gajim.gc_connected[acct].has_key(room_jid) and \ |
| 1846 | | gajim.gc_connected[acct][room_jid] and \ |
| 1847 | | contact_transport == gajim.get_transport_name_from_jid(room_jid): |
| 1848 | | rooms.append((room_jid, acct)) |
| 1849 | | if len(rooms): |
| 1850 | | item = gtk.SeparatorMenuItem() # separator |
| 1851 | | submenu.append(item) |
| 1852 | | for (room_jid, acct) in rooms: |
| 1853 | | menuitem = gtk.MenuItem(room_jid.split('@')[0]) |
| 1854 | | menuitem.connect('activate', self.on_invite_to_room, |
| 1855 | | [(contact, account)], room_jid, acct) |
| 1856 | | submenu.append(menuitem) |