Show
Ignore:
Timestamp:
11/16/07 20:49:07 (13 months ago)
Author:
asterix
Message:

fix jid-multi problems (only one row with a given jid is allowed)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/gajim_0.11.2/src/dataforms_widget.py

    r8643 r8990  
    2121 
    2222import gtk 
     23import gobject 
    2324 
    2425import gtkgui_helpers 
     26import dialogs 
    2527 
    2628import common.dataforms as dataforms 
     29from common import helpers 
    2730 
    2831import itertools 
     
    357360                                commonwidget = False 
    358361 
    359                                 xml = gtkgui_helpers.get_glade('data_form_window.glade', 'item_list_table') 
     362                                xml = gtkgui_helpers.get_glade('data_form_window.glade', 
     363                                        'item_list_table') 
    360364                                widget = xml.get_widget('item_list_table') 
    361365                                treeview = xml.get_widget('item_treeview') 
     
    371375                                renderer.set_property('editable', True) 
    372376                                renderer.connect('edited', 
    373                                         self.on_jid_multi_cellrenderertext_edited, listmodel, field) 
     377                                        self.on_jid_multi_cellrenderertext_edited, treeview, listmodel, 
     378                                        field) 
    374379 
    375380                                treeview.append_column(gtk.TreeViewColumn(None, renderer, 
     
    492497                        widget.get_end_iter()) 
    493498 
    494         def on_jid_multi_cellrenderertext_edited(self, cell, path, newtext, model, field): 
    495                 old=model[path][0] 
     499        def on_jid_multi_cellrenderertext_edited(self, cell, path, newtext, treeview, 
     500        model, field): 
     501                old = model[path][0] 
     502                if old == newtext: 
     503                        return 
     504                try: 
     505                        newtext = helpers.parse_jid(newtext) 
     506                except helpers.InvalidFormat, s: 
     507                        dialogs.ErrorDialog(_('Invalid Jabber ID'), str(s)) 
     508                        return 
     509                if newtext in field.values: 
     510                        dialogs.ErrorDialog( 
     511                                _('Jabber ID already in list'), 
     512                                _('The Jabber ID you entered is already in the list. Choose another one.')) 
     513                        gobject.idle_add(treeview.set_cursor, path) 
     514                        return 
    496515                model[path][0]=newtext 
    497516 
     
    501520 
    502521        def on_jid_multi_add_button_clicked(self, widget, treeview, model, field): 
    503                 iter = model.insert(999999, ("new@jabber.id",)) 
     522                jid = 'new@jabber.id' 
     523                if jid in field.values: 
     524                        i = 1 
     525                        while 'new%d@jabber.id' % i in field.values: 
     526                                i += 1 
     527                        jid = 'new%d@jabber.id' % i 
     528                iter = model.insert(999999, (jid,)) 
    504529                treeview.set_cursor(model.get_path(iter), treeview.get_column(0), True) 
    505                 field.values = field.values + ["new@jabber.id"] 
     530                field.values = field.values + [jid] 
    506531 
    507532        def on_jid_multi_edit_button_clicked(self, widget, treeview):