Changeset 8535

Show
Ignore:
Timestamp:
08/22/07 01:13:03 (16 months ago)
Author:
asterix
Message:

[roidelapluie, elghinn, msieurhappy, xbright and me] chat to muc convertion. see #2095 and #1408. TODO: DND

Location:
trunk
Files:
1 added
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/data/glade/chat_control_popup_menu.glade

    r8314 r8535  
    1 <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> 
    2 <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> 
    3  
     1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
     2<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> 
     3<!--*- mode: xml -*--> 
    44<glade-interface> 
    5  
    6 <widget class="GtkMenu" id="chat_control_popup_menu"> 
    7  
    8   <child> 
    9     <widget class="GtkImageMenuItem" id="history_menuitem"> 
    10       <property name="visible">True</property> 
    11       <property name="tooltip" translatable="yes">Click to see past conversations with this contact</property> 
    12       <property name="label" translatable="yes">_History</property> 
    13       <property name="use_underline">True</property> 
    14  
    15       <child internal-child="image"> 
    16         <widget class="GtkImage" id="image1370"> 
    17           <property name="visible">True</property> 
    18           <property name="stock">gtk-justify-fill</property> 
    19           <property name="icon_size">1</property> 
    20           <property name="xalign">0.5</property> 
    21           <property name="yalign">0.5</property> 
    22           <property name="xpad">0</property> 
    23           <property name="ypad">0</property> 
    24         </widget> 
    25       </child> 
    26     </widget> 
    27   </child> 
    28  
    29   <child> 
    30     <widget class="GtkImageMenuItem" id="information_menuitem"> 
    31       <property name="visible">True</property> 
    32       <property name="label">gtk-info</property> 
    33       <property name="use_stock">True</property> 
    34     </widget> 
    35   </child> 
    36  
    37   <child> 
    38     <widget class="GtkImageMenuItem" id="send_file_menuitem"> 
    39       <property name="visible">True</property> 
    40       <property name="label" translatable="yes">Send _File</property> 
    41       <property name="use_underline">True</property> 
    42       <signal name="activate" handler="_on_send_file_menuitem_activate" last_modification_time="Tue, 03 Jan 2006 04:26:55 GMT"/> 
    43  
    44       <child internal-child="image"> 
    45         <widget class="GtkImage" id="image1371"> 
    46           <property name="visible">True</property> 
    47           <property name="stock">gtk-file</property> 
    48           <property name="icon_size">1</property> 
    49           <property name="xalign">0.5</property> 
    50           <property name="yalign">0.5</property> 
    51           <property name="xpad">0</property> 
    52           <property name="ypad">0</property> 
    53         </widget> 
    54       </child> 
    55     </widget> 
    56   </child> 
    57  
    58   <child> 
    59     <widget class="GtkCheckMenuItem" id="toggle_gpg_menuitem"> 
    60       <property name="visible">True</property> 
    61       <property name="label" translatable="yes">Toggle Open_PGP Encryption</property> 
    62       <property name="use_underline">True</property> 
    63       <property name="active">False</property> 
    64       <signal name="activate" handler="_on_toggle_gpg_menuitem_activate" last_modification_time="Tue, 03 Jan 2006 04:26:46 GMT"/> 
    65     </widget> 
    66   </child> 
    67  
    68   <child> 
    69     <widget class="GtkImageMenuItem" id="add_to_roster_menuitem"> 
    70       <property name="visible">True</property> 
    71       <property name="label" translatable="yes">_Add to Roster</property> 
    72       <property name="use_underline">True</property> 
    73       <signal name="activate" handler="_on_add_to_roster_menuitem_activate" last_modification_time="Tue, 03 Jan 2006 04:26:37 GMT"/> 
    74  
    75       <child internal-child="image"> 
    76         <widget class="GtkImage" id="image1372"> 
    77           <property name="visible">True</property> 
    78           <property name="stock">gtk-add</property> 
    79           <property name="icon_size">1</property> 
    80           <property name="xalign">0.5</property> 
    81           <property name="yalign">0.5</property> 
    82           <property name="xpad">0</property> 
    83           <property name="ypad">0</property> 
    84         </widget> 
    85       </child> 
    86     </widget> 
    87   </child> 
    88 </widget> 
    89  
     5  <widget class="GtkMenu" id="chat_control_popup_menu"> 
     6    <child> 
     7      <widget class="GtkImageMenuItem" id="history_menuitem"> 
     8        <property name="visible">True</property> 
     9        <property name="tooltip" translatable="yes">Click to see past conversations with this contact</property> 
     10        <property name="label" translatable="yes">_History</property> 
     11        <property name="use_underline">True</property> 
     12        <child internal-child="image"> 
     13          <widget class="GtkImage" id="image1370"> 
     14            <property name="visible">True</property> 
     15            <property name="stock">gtk-justify-fill</property> 
     16            <property name="icon_size">1</property> 
     17          </widget> 
     18        </child> 
     19      </widget> 
     20    </child> 
     21    <child> 
     22      <widget class="GtkImageMenuItem" id="information_menuitem"> 
     23        <property name="visible">True</property> 
     24        <property name="label">gtk-info</property> 
     25        <property name="use_underline">True</property> 
     26        <property name="use_stock">True</property> 
     27      </widget> 
     28    </child> 
     29    <child> 
     30      <widget class="GtkImageMenuItem" id="send_file_menuitem"> 
     31        <property name="visible">True</property> 
     32        <property name="label" translatable="yes">Send _File</property> 
     33        <property name="use_underline">True</property> 
     34        <signal name="activate" handler="_on_send_file_menuitem_activate"/> 
     35        <child internal-child="image"> 
     36          <widget class="GtkImage" id="image1371"> 
     37            <property name="visible">True</property> 
     38            <property name="stock">gtk-missing-image</property> 
     39            <property name="icon_size">1</property> 
     40          </widget> 
     41        </child> 
     42      </widget> 
     43    </child> 
     44    <child> 
     45      <widget class="GtkCheckMenuItem" id="toggle_gpg_menuitem"> 
     46        <property name="visible">True</property> 
     47        <property name="label" translatable="yes">Toggle Open_PGP Encryption</property> 
     48        <property name="use_underline">True</property> 
     49        <signal name="activate" handler="_on_toggle_gpg_menuitem_activate"/> 
     50      </widget> 
     51    </child> 
     52    <child> 
     53      <widget class="GtkImageMenuItem" id="add_to_roster_menuitem"> 
     54        <property name="visible">True</property> 
     55        <property name="label" translatable="yes">_Add to Roster</property> 
     56        <property name="use_underline">True</property> 
     57        <signal name="activate" handler="_on_add_to_roster_menuitem_activate"/> 
     58        <child internal-child="image"> 
     59          <widget class="GtkImage" id="image1372"> 
     60            <property name="visible">True</property> 
     61            <property name="stock">gtk-add</property> 
     62            <property name="icon_size">1</property> 
     63          </widget> 
     64        </child> 
     65      </widget> 
     66    </child> 
     67    <child> 
     68      <widget class="GtkMenuItem" id="convert_to_groupchat"> 
     69        <property name="visible">True</property> 
     70        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
     71        <property name="label" translatable="yes">Invite _Friends</property> 
     72        <property name="use_underline">True</property> 
     73      </widget> 
     74    </child> 
     75  </widget> 
    9076</glade-interface> 
  • trunk/src/chat_control.py

    r8454 r8535  
    15371537                send_file_menuitem = xml.get_widget('send_file_menuitem') 
    15381538                information_menuitem = xml.get_widget('information_menuitem') 
     1539                convert_to_gc_menuitem = xml.get_widget('convert_to_groupchat') 
    15391540                 
    15401541                contact = self.parent_win.get_active_contact() 
     
    15511552                toggle_gpg_menuitem.set_active(isactive) 
    15521553                toggle_gpg_menuitem.set_property('sensitive', is_sensitive) 
    1553                  
     1554 
    15541555                # If we don't have resource, we can't do file transfer 
    15551556                # in transports, contact holds our info we need to disable it too 
     
    15611562                else: 
    15621563                        send_file_menuitem.set_sensitive(False) 
    1563                  
     1564 
     1565                # compact_view_menuitem 
     1566                compact_view_menuitem.set_active(self.hide_chat_buttons_current) 
     1567 
     1568                # check if it's possible to convert to groupchat 
     1569                if gajim.get_transport_name_from_jid(jid): 
     1570                        convert_to_gc_menuitem.set_sensitive(False) 
     1571 
    15641572                # add_to_roster_menuitem 
    15651573                if _('Not in Roster') in contact.groups: 
     
    15691577                        add_to_roster_menuitem.hide() 
    15701578                        add_to_roster_menuitem.set_no_show_all(True) 
    1571                  
    1572                  
     1579 
    15731580                # connect signals 
    15741581                id = history_menuitem.connect('activate',  
     
    15871594                        self._on_contact_information_menuitem_activate) 
    15881595                self.handlers[id] = information_menuitem 
     1596                id = convert_to_gc_menuitem.connect('activate', 
     1597                        self._on_convert_to_gc_menuitem_activate) 
     1598                self.handlers[id] = convert_to_gc_menuitem 
    15891599                menu.connect('selection-done', lambda w:w.destroy())     
    15901600                return menu 
     
    20002010                tb = self.xml.get_widget('gpg_togglebutton') 
    20012011                tb.set_active(not tb.get_active()) 
     2012         
     2013        def _on_convert_to_gc_menuitem_activate(self, widget): 
     2014                '''user want to invite some friends to chat''' 
     2015                dialogs.TransformChatToMUC(self.account, [self.contact.jid]) 
     2016 
    20022017 
    20032018        def got_connected(self): 
  • trunk/src/common/connection_handlers.py

    r8505 r8535  
    14841484                        if xtag.getNamespace() == common.xmpp.NS_CONFERENCE and not invite: 
    14851485                                room_jid = xtag.getAttr('jid') 
    1486                                 self.dispatch('GC_INVITATION', (room_jid, frm, '', None)) 
     1486                                is_continued = False 
     1487                                if xtag.getTag('continue'): 
     1488                                        is_continued = True 
     1489                                self.dispatch('GC_INVITATION', (room_jid, frm, '', None, 
     1490                                        is_continued)) 
    14871491                                return 
    14881492                # chatstates - look for chatstate tags in a message if not delayed 
     
    15751579                                item = invite.getTag('password') 
    15761580                                password = invite.getTagData('password') 
    1577                                 self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) 
     1581                                is_continued = False 
     1582                                if invite.getTag('invite').getTag('continue'): 
     1583                                        is_continued = True 
     1584                                self.dispatch('GC_INVITATION',(frm, jid_from, reason, password, 
     1585                                        is_continued)) 
    15781586                                return 
    15791587                        if self.name not in no_log_for and jid not in no_log_for and msgtxt: 
  • trunk/src/common/connection.py

    r8513 r8535  
    12021202                self.connection.send(p) 
    12031203 
     1204        def check_unique_room_id_support(self, server, instance): 
     1205                if not self.connection: 
     1206                        return 
     1207                iq = common.xmpp.Iq(typ = 'get', to = server) 
     1208                iq.setAttr('id', 'unique1') 
     1209                iq.addChild('unique', namespace=common.xmpp.NS_MUC_UNIQUE) 
     1210                def _on_response(resp): 
     1211                        if not common.xmpp.isResultNode(resp): 
     1212                                self.dispatch('UNIQUE_ROOM_ID_UNSUPPORTED', (server, instance)) 
     1213                                return 
     1214                        print resp.getTag('unique').getData() 
     1215                        self.dispatch('UNIQUE_ROOM_ID_SUPPORTED', (server, instance, 
     1216                                resp.getTag('unique').getData())) 
     1217                self.connection.SendAndCallForResponse(iq, _on_response) 
     1218 
    12041219        def join_gc(self, nick, room_jid, password): 
    12051220                # FIXME: This room JID needs to be normalized; see #1364 
     
    13881403                        _on_unregister_account_connect(self.connection) 
    13891404 
    1390         def send_invite(self, room, to, reason=''): 
     1405        def send_invite(self, room, to, reason='', continue_tag=False): 
    13911406                '''sends invitation''' 
    13921407                message=common.xmpp.Message(to = room) 
    13931408                c = message.addChild(name = 'x', namespace = common.xmpp.NS_MUC_USER) 
    13941409                c = c.addChild(name = 'invite', attrs={'to' : to}) 
     1410                if continue_tag: 
     1411                        c.addChild(name = 'continue') 
    13951412                if reason != '': 
    13961413                        c.setTagData('reason', reason) 
  • trunk/src/common/xmpp/protocol.py

    r8410 r8535  
    6363NS_MUC_ADMIN    =NS_MUC+'#admin' 
    6464NS_MUC_OWNER    =NS_MUC+'#owner' 
     65NS_MUC_UNIQUE   =NS_MUC+'#unique' 
    6566NS_NICK         ='http://jabber.org/protocol/nick'                      # XEP-0172 
    6667NS_OFFLINE      ='http://www.jabber.org/jeps/jep-0030.html'             # XEP-0013 
  • trunk/src/dialogs.py

    r8517 r8535  
    2929import conversation_textview 
    3030import message_control 
     31 
     32from random import randrange 
    3133 
    3234try: 
     
    402404                self.countdown_enabled = False 
    403405                if event.keyval == gtk.keysyms.Return or \ 
    404                 event.keyval == gtk.keysyms.KP_Enter:  # catch CTRL+ENTER 
     406                event.keyval == gtk.keysyms.KP_Enter: # catch CTRL+ENTER 
    405407                        if (event.state & gtk.gdk.CONTROL_MASK): 
    406408                                self.window.response(gtk.RESPONSE_OK) 
     
    15331535                for jid in keys: 
    15341536                        contact = self.completion_dict[jid] 
    1535                         img =  gajim.interface.roster.jabber_state_images['16'][contact.show] 
     1537                        img = gajim.interface.roster.jabber_state_images['16'][contact.show] 
    15361538                        liststore.append((img.get_pixbuf(), jid)) 
    15371539 
     
    25782580class InvitationReceivedDialog: 
    25792581        def __init__(self, account, room_jid, contact_jid, password = None, 
    2580         comment = None): 
     2582        comment = None, is_continued = False): 
    25812583 
    25822584                self.room_jid = room_jid 
    25832585                self.account = account 
    25842586                self.password = password 
     2587                self.is_continued = is_continued 
    25852588                xml = gtkgui_helpers.get_glade('invitation_received_dialog.glade') 
    25862589                self.dialog = xml.get_widget('invitation_received_dialog') 
    25872590 
    25882591                #Don't translate $Contact 
    2589                 pritext = _('$Contact has invited you to group chat %(room_jid)s')\ 
    2590                         % {'room_jid': room_jid} 
     2592                if is_continued: 
     2593                        pritext = _('$Contact has invited you to join a discussion') 
     2594                else: 
     2595                        pritext = _('$Contact has invited you to group chat %(room_jid)s')\ 
     2596                                % {'room_jid': room_jid} 
    25912597                contact = gajim.contacts.get_first_contact_from_jid(account, contact_jid) 
    25922598                if contact and contact.name: 
     
    26162622                self.dialog.destroy() 
    26172623                try: 
    2618                         JoinGroupchatWindow(self.account, self.room_jid, 
    2619                                 password=self.password) 
     2624                        if self.is_continued: 
     2625                                gajim.interface.roster.join_gc_room(self.account, self.room_jid, 
     2626                                        gajim.nicks[self.account], None, is_continued=True) 
     2627                        else: 
     2628                                JoinGroupchatWindow(self.account, self.room_jid) 
    26202629                except GajimGeneralException: 
    26212630                        pass 
     
    32843293        def on_close_window(self, widget): 
    32853294                self.window.destroy() 
     3295 
     3296class TransformChatToMUC: 
     3297        def __init__(self, account, jids): 
     3298                '''This window is used to trasform a one-to-one chat to a MUC. 
     3299                We do 2 things: first select the server and then make a guests list.''' 
     3300 
     3301                self.account = account 
     3302                self.auto_jids = jids 
     3303 
     3304                self.xml = gtkgui_helpers.get_glade('chat_to_muc_window.glade') 
     3305                self.window = self.xml.get_widget('chat_to_muc_window') 
     3306                self.window.connect('key_press_event', self._on_keypress_event) 
     3307 
     3308                for widget_to_add in ('invite_button', 'cancel_button', 
     3309                'server_list_comboboxentry', 'guests_treeview', 
     3310                'server_and_guests_hseparator', 'server_select_label'): 
     3311                        self.__dict__[widget_to_add] = self.xml.get_widget(widget_to_add) 
     3312                self.window.connect('key_press_event', self._on_keypress_event) 
     3313 
     3314                # set a list of servers which support it 
     3315                self.servers_support = {} 
     3316 
     3317                # set comboboxentry 
     3318                renderer_servers = gtk.CellRendererText() 
     3319 
     3320                server_list = [] 
     3321                self.servers = gtk.ListStore(str) 
     3322                self.server_list_comboboxentry.set_model(self.servers) 
     3323 
     3324                self.server_list_comboboxentry.set_text_column(0) 
     3325 
     3326                # get the muc server of our server 
     3327                if 'jabber' in gajim.connections[account].muc_jid: 
     3328                        server_list.append(gajim.connections[account].muc_jid['jabber']) 
     3329                # add servers or recently joined groupchats 
     3330                recently_groupchat = gajim.config.get('recently_groupchat').split() 
     3331                for g in recently_groupchat: 
     3332                        server = gajim.get_server_from_jid(g) 
     3333                        if server not in server_list: 
     3334                                server_list.append(gajim.get_server_from_jid(g)) 
     3335                # add a default server 
     3336                if not server_list: 
     3337                        server_list.append('conference.jabber.org') 
     3338 
     3339                for s in server_list: 
     3340                        self.servers.append([s]) 
     3341 
     3342                self.server_list_comboboxentry.set_active(0) 
     3343 
     3344                # set treeview 
     3345                # name, jid 
     3346                self.store = gtk.ListStore(str, str) 
     3347                self.guests_treeview.set_model(self.store) 
     3348 
     3349                renderer1 = gtk.CellRendererText() 
     3350                column = gtk.TreeViewColumn('Name', renderer1, text=0) 
     3351                self.guests_treeview.append_column(column) 
     3352 
     3353                self.guests_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE) 
     3354 
     3355                # set jabber id and pseudos 
     3356                for jid in gajim.contacts.get_jid_list(self.account): 
     3357                        contact = \ 
     3358                                gajim.contacts.get_contact_with_highest_priority(self.account, jid) 
     3359                        if contact.jid not in self.auto_jids: 
     3360                                if contact.show not in ('offline', 'error'): 
     3361                                        name = contact.name 
     3362                                        if name == '': 
     3363                                                name = jid.split('@')[0] 
     3364                                        self.store.append([name, jid]) 
     3365 
     3366                # show all but... 
     3367                self.window.show_all() 
     3368 
     3369                # ...hide this 
     3370                self.server_selection_visible = True 
     3371                self.toggle_server_selection_visible() 
     3372 
     3373                self.xml.signal_autoconnect(self) 
     3374 
     3375        def toggle_server_selection_visible(self): 
     3376                if self.server_selection_visible: 
     3377                        self.server_selection_visible = False 
     3378                        self.server_and_guests_hseparator.hide() 
     3379                        self.server_list_comboboxentry.hide() 
     3380                        self.server_select_label.hide() 
     3381                else: 
     3382                        self.server_selection_visible = True 
     3383                        self.server_and_guests_hseparator.show() 
     3384                        self.server_list_comboboxentry.show() 
     3385                        self.server_select_label.show() 
     3386 
     3387        def _on_keypress_event(self, widget, event): 
     3388                if (event.state & gtk.gdk.MOD1_MASK) and (event.keyval == gtk.keysyms.c \ 
     3389                or event.keyval == gtk.keysyms.C): 
     3390                                self.toggle_server_selection_visible() 
     3391                                return True 
     3392 
     3393        def on_invite_button_clicked(self, widget): 
     3394                server = self.server_list_comboboxentry.get_active_text() 
     3395                if server == '': 
     3396                        return 
     3397                room_id = gajim.nicks[self.account] + str(randrange(9999999)) 
     3398#               if self.servers_support.has_key(server): 
     3399#                       self.unique_room_id_supported(server, self.servers_support[server]) 
     3400#                       return 
     3401#               gajim.connections[self.account].check_unique_room_id_support(server, self) 
     3402 
     3403#       def unique_room_id_supported(self, server, room_id): 
     3404#               if not self.servers_support.has_key(server): 
     3405#                       self.servers_support[server] = room_id 
     3406                guest_list = [] 
     3407                guests = self.guests_treeview.get_selection().get_selected_rows() 
     3408                for guest in guests[1]: 
     3409                        iter = self.store.get_iter(guest) 
     3410                        guest_list.append(self.store[iter][1].decode('utf-8')) 
     3411                for guest in self.auto_jids: 
     3412                        guest_list.append(guest) 
     3413                room_jid = room_id + '@' + server 
     3414                gajim.automatic_rooms[self.account][room_jid] = {} 
     3415                gajim.automatic_rooms[self.account][room_jid]['invities'] = guest_list  
     3416                gajim.automatic_rooms[self.account][room_jid]['continue_tag'] = True 
     3417                gajim.interface.roster.join_gc_room(self.account, room_jid, 
     3418                        gajim.nicks[self.account], None, is_continued=True) 
     3419                self.window.destroy() 
     3420 
     3421        def on_cancel_button_clicked(self, widget): 
     3422                self.window.destroy() 
     3423 
     3424        def unique_room_id_error(self, server): 
     3425                self.unique_room_id_supported(server, 
     3426                        gajim.nicks[self.account] + str(randrange(9999999))) 
  • trunk/src/gajim.py

    r8476 r8535  
    12111211                        gajim.connections[account].send_gc_config(room_jid, array[1]) 
    12121212                        # invite contacts 
     1213                        # check if it is necessary to add <continue /> 
     1214                        continue_tag = False 
     1215                        if gajim.automatic_rooms[account][room_jid].has_key('continue_tag'): 
     1216                                continue_tag = True 
    12131217                        if gajim.automatic_rooms[account][room_jid].has_key('invities'): 
    12141218                                for jid in gajim.automatic_rooms[account][room_jid]['invities']: 
    1215                                         gajim.connections[account].send_invite(room_jid, jid) 
     1219                                        gajim.connections[account].send_invite(room_jid, jid, 
     1220                                                continue_tag=continue_tag) 
    12161221                        del gajim.automatic_rooms[account][room_jid] 
    12171222                elif not self.instances[account]['gc_config'].has_key(room_jid): 
     
    12901295 
    12911296        def handle_event_gc_invitation(self, account, array): 
    1292                 #('GC_INVITATION', (room_jid, jid_from, reason, password)) 
     1297                #('GC_INVITATION', (room_jid, jid_from, reason, password, is_continued)) 
    12931298                jid = gajim.get_jid_without_resource(array[1]) 
    12941299                room_jid = array[0] 
    12951300                if helpers.allow_popup_window(account) or not self.systray_enabled: 
    12961301                        dialogs.InvitationReceivedDialog(account, room_jid, jid, array[3], 
    1297                                 array[2]) 
     1302                                array[2], is_continued=array[4]) 
    12981303                        return 
    12991304 
    13001305                self.add_event(account, jid, 'gc-invitation', (room_jid, array[2], 
    1301                         array[3])) 
     1306                        array[3], array[4])) 
    13021307 
    13031308                if helpers.allow_showing_notification(account): 
     
    18671872                        _('You are already connected to this account with the same resource. Please type a new one'), input_str = gajim.connections[account].server_resource, 
    18681873                        is_modal = False, ok_handler = on_ok) 
     1874 
     1875        def handle_event_unique_room_id_supported(self, account, data): 
     1876                '''Receive confirmation that unique_room_id are supported''' 
     1877                # ('UNIQUE_ROOM_ID_SUPPORTED', server, instance, room_id) 
     1878                instance = data[1] 
     1879                instance.unique_room_id_supported(data[0], data[2]) 
     1880 
     1881        def handle_event_unique_room_id_unsupported(self, account, data): 
     1882                # ('UNIQUE_ROOM_ID_UNSUPPORTED', server, instance) 
     1883                instance = data[1] 
     1884                instance.unique_room_id_error(data[0]) 
    18691885 
    18701886        def read_sleepy(self): 
     
    21962212                        'SEARCH_RESULT': self.handle_event_search_result, 
    21972213                        'RESOURCE_CONFLICT': self.handle_event_resource_conflict, 
     2214                        'UNIQUE_ROOM_ID_UNSUPPORTED': \ 
     2215                                self.handle_event_unique_room_id_unsupported, 
     2216                        'UNIQUE_ROOM_ID_SUPPORTED': self.handle_event_unique_room_id_supported, 
    21982217                } 
    21992218                gajim.handlers = self.handlers 
     
    22882307                        data = event.parameters 
    22892308                        dialogs.InvitationReceivedDialog(account, data[0], jid, data[2], 
    2290                                 data[1]) 
     2309                                data[1], data[3]) 
    22912310                        gajim.events.remove_events(account, jid, event) 
    22922311                        self.roster.draw_contact(jid, account) 
  • trunk/src/groupchat_control.py

    r8505 r8535  
    154154                'part', 'names', 'say', 'topic'] 
    155155