On Sun, 5 Dec 2004 17:13:17 -0500 Thomas Mills Hinkle
<[EMAIL PROTECTED]> wrote:
> John -- I'd meant to cc this to the list initially. I still haven't
> succeeded in replicating the behavior in a smaller example, but I have
> confirmed that this is unique to pygtk 2.5 (I have another box with
> pygtk 2.4 where the problem does not occur). I'll post some decent
> example code as soon as I can replicate the behavior.
And here it is -- I finally tracked it down. The slowdown in appending
to a list store only occurs when the liststore is attached to a ComboBox
with set_wrap_width() set to something other than one. And it only
occurs with pygtk 2.5. Here's a bit of code to demonstrate the bug.
Tom
import gtk, time
def debug (msg):
print "DEBUG: ",msg," (",time.time(),")"
class SampleApp (gtk.Dialog):
def __init__ (self):
gtk.Dialog.__init__(self)
self.key_model = gtk.ListStore(str)
self.connect('destroy',lambda *args: gtk.mainquit())
self.setup_boxes()
self.button = gtk.Button('Add 1000 items')
self.button.connect('clicked', self.add_1000_to_model)
self.showbug = gtk.Button('set_wrap_width (showoff bugginess)')
self.showbug.connect('clicked',self.set_wrap_width)
self.action_area.add(self.showbug)
self.action_area.add(self.button)
self.show_all()
self.n = 0
def set_wrap_width (self,*args):
self.e.set_wrap_width(3)
def setup_boxes (self):
self.e = gtk.ComboBoxEntry()
self.e.set_model(self.key_model)
self.e.set_text_column(0)
comp = gtk.EntryCompletion()
comp.set_model(self.key_model.filter_new())
comp.set_text_column(0)
entry = self.e.get_children()[0]
entry.set_completion(comp)
hb = gtk.HBox()
hb.add(gtk.Label('Key'))
hb.add(self.e)
self.vbox.add(hb)
def add_1000_to_model (self,*args):
for n in range(self.n, self.n+1000):
self.add_to_model("key%s"%n)
self.n += 1000
def add_to_model (self, str1):
debug('looking in key_model')
if not [str1] in self.key_model:
debug('adding key')
self.key_model.append([str1])
debug('done with key!')
if __name__ == '__main__':
sa = SampleApp()
sa.run()
gtk.main()
_______________________________________________
pygtk mailing list [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/