2008/11/13 Eduardo Silva <[EMAIL PROTECTED]>: > En un treeview me es imposible hacer modificaciones con set_value()... lo > raro es que hice casos de prueba y si tengo un treeview sin filtro funciona, > si tiene filtro falla con: > tv_fail.py:19: GtkWarning: gtk_tree_store_set_value: assertion `VALID_ITER > (iter, tree_store)' failed > model.set_value (iter, 0, 'New value...') > lo raro es que el iter es totalmente valido...
Eduardo! El iter es invalido si tienes encadenados filtros entre el modelo y la vista, ya que debes convertirlo entre el modelo/filtro superior y el inferior (child_to_iter o iter_to_child depende desde donde la conversion); esto sale oscuramente en alguna de las guias de pygtk. Tambien puedes crear tus propios filtros. Mas o menos asi: f2 FILTRO2 f2_iter f1_iter = f2.iter_to_child(f2_iter) f2_iter = f2.child_to_iter(f1_iter) f1 FILTRO1 f1_iter m1_iter = f1.iter_to_child(f1_iter) f1_iter = f1.child_to_iter(m1_iter) m1 MODELO m1_iter Adjunto parche. Saludos! -- Aldrin Martoq http://aldrinvideopodcast.podshow.com/
--- tv_fail.py 2008-11-13 21:58:59.000000000 -0300 +++ tv_fail_new.py 2008-11-13 22:00:56.000000000 -0300 @@ -15,15 +15,16 @@ def _selected (self, tv, path, col): store, iter = tv.get_selection ().get_selected() + child_iter = self.filter.convert_iter_to_child_iter(iter) model = store.get_model() - model.set_value (iter, 0, 'New value...') + model.set_value (child_iter, 0, 'New value...') def init_model (self): store = gtk.TreeStore (gobject.TYPE_STRING) # self.set_model (store) store.append(None, ['Valor inicial']) - filter = store.filter_new() + self.filter = filter = store.filter_new() filter.set_visible_func(self._visible_cb) self.set_model(filter)