[pygtk] gtk.TreeView node duplication issues
Seth Mahoney
smahoney at pdx.edu
Sat Feb 3 11:03:31 WST 2007
Here's the scenario: I have two gtk.TreeViews that are essentially
handled by the same code. Attached to each are two columns, one with
toggles (which use a dict for a data store instead of a gtk.TreeStore
for a variety of reasons that I hope aren't pertinent) and the other
with text. I made the text editable, which means that whenever the text
is changed I need to change the dicts to reflect that change (I don't
think this is related to the problem, just giving some background). And
the problem: For some reason, one of the treeviews (one which functions
like a listview - there are no child nodes) behaves normally when
edited, but the other one (this one has child nodes) creates a duplicate
node whenever I edit a node (although if the node has children, it the
duplicate node will not have children). So, for example, if I click on
the first node and rename it to "test", I end up with two nodes named
"test". This happens whether or not the node I rename has children.
Right now, I'm stumped. Any suggestions?
Here's the callback that responds to the "text-edited" signal:
def text_edited_cb(self, text, path, new_text, column):
#get an iterator
my_iter = self.model.get_iter(path)
#update the dict that stores the bool values
old_text = self.model.get_value(my_iter, 0)
old_value = self.bool_list[old_text]
del self.bool_list[old_text]
self.bool_list.update({new_text : old_value})
#if there's a secondary list, update it too
if self.extra_list != None:
old_extra = self.extra_list[old_text]
self.extra_list.update({new_text : old_extra})
del self.extra_list[old_text]
if self.extra_list[new_text].get_text() == old_text:
self.extra_list[new_text].set_text(new_text)
#and, actually change the text
self.model.set_value(my_iter, 0, new_text)
More information about the pygtk
mailing list