Show
Ignore:
Timestamp:
01/15/07 19:51:27 (23 months ago)
Author:
asterix
Message:

merge usefull diff from trunk

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/gajim_0.11/src/roster_window.py

    r7829 r7841  
    16431643 
    16441644                        contacts = gajim.contacts.get_contact(account, jid) 
    1645                         if len(contacts) > 1: # sevral resources 
     1645                        if len(contacts) > 1: # several resources 
    16461646                                sub_menu = gtk.Menu() 
    16471647                                start_chat_menuitem.set_submenu(sub_menu) 
     
    17761776 
    17771777                contacts = gajim.contacts.get_contact(account, jid) 
     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 
    17781803                if len(contacts) > 1: # several resources 
    1779                         def resources_submenu(action): 
    1780                                 """ Build a submenu with contact's resources. """ 
     1804                        def resources_submenu(action, room_jid = None, room_account = None): 
     1805                                ''' Build a submenu with contact's resources.  
     1806                                room_jid and room_account are for action self.on_invite_to_room ''' 
    17811807                                sub_menu = gtk.Menu() 
    17821808 
     
    17941820                                        item.set_image(icon) 
    17951821                                        sub_menu.append(item) 
    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) 
    17981829                                return sub_menu 
    17991830 
     
    18021833                        execute_command_menuitem.set_submenu(resources_submenu( 
    18031834                                self.on_execute_command)) 
     1835                        invite_to_new_room_menuitem.set_submenu(resources_submenu( 
     1836                                self.on_invite_to_new_room)) 
     1837                        for (room_jid, room_account) in rooms: 
     1838                                menuitem = gtk.MenuItem(room_jid.split('@')[0]) 
     1839                                menuitem.set_submenu(resources_submenu(self.on_invite_to_room,  
     1840                                        room_jid, room_account)) 
     1841                                invite_to_submenu.append(menuitem) 
    18041842 
    18051843                else: # one resource 
     
    18161854                                execute_command_menuitem.set_no_show_all(True) 
    18171855 
     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 
    18181872                if contact.resource: 
    18191873                        send_file_menuitem.connect('activate', 
     
    18261880                        self.on_send_single_message_menuitem_activate, account, contact) 
    18271881 
    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) 
    18571882                rename_menuitem.connect('activate', self.on_rename, iter, tree_path) 
    18581883                remove_from_roster_menuitem.connect('activate', self.on_req_usub, 
     
    19341959                        event.time) 
    19351960 
    1936         def on_invite_to_new_room(self, widget, list_): 
     1961        def on_invite_to_new_room(self, widget, list_, resource = None): 
     1962                ''' resource parameter MUST NOT be used if more than one contact in  
     1963                list ''' 
    19371964                account_list = [] 
    19381965                jid_list = [] 
    19391966                for (contact, account) in list_: 
    19401967                        if contact.jid not in jid_list: 
    1941                                 jid_list.append(contact.jid) 
     1968                                if resource: # we MUST have one contact only in list_ 
     1969                                        fjid = contact.jid + '/' + resource 
     1970                                        jid_list.append(fjid) 
     1971                                else: 
     1972                                        jid_list.append(contact.jid) 
    19421973                        if account not in account_list: 
    19431974                                account_list.append(account) 
     
    19581989                                break 
    19591990 
    1960         def on_invite_to_room(self, widget, list_, room_jid, account): 
     1991        def on_invite_to_room(self, widget, list_, room_jid, room_account,  
     1992                resource = None): 
     1993                ''' resource parameter MUST NOT be used if more than one contact in  
     1994                list ''' 
    19611995                for (contact, acct) in list_: 
    1962                         gajim.connections[account].send_invite(room_jid, contact.jid) 
     1996                        contact_jid = contact.jid 
     1997                        if resource: # we MUST have one contact only in list_ 
     1998                                contact_jid += '/' + resource 
     1999                        gajim.connections[room_account].send_invite(room_jid, contact_jid) 
    19632000                 
    19642001