diff options
Diffstat (limited to 'Widgets.py')
-rw-r--r-- | Widgets.py | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -811,3 +811,80 @@ class ToolbarArchivo(Gtk.Toolbar): self.insert(self.detener, -1) self.show_all() + +class BuscadorTreeViews(Gtk.Box): + """ + Busca en los treeviews el texto + ingresado en un entry. + """ + + def __init__(self, introspeccion): + + Gtk.Box.__init__(self, orientation=Gtk.Orientation.HORIZONTAL) + + self.treeview_intro = introspeccion + self.intro_model = self.treeview_intro.get_model() + self.iters_introspeccion = {} + self.posibles = [] + + self.actual = 0 + + self.anterior = get_boton(Gtk.STOCK_GO_BACK, "Buscar anterior") + #self.anterior.connect("clicked", self.__buscar, False) + + self.buscador = Gtk.Entry() + self.buscador.connect("activate", self.seleccionar_iter) + + self.siguiente = get_boton(Gtk.STOCK_GO_FORWARD, "Buscar siguiente") + #self.siguiente.connect("clicked", self.__buscar, True) + + self.pack_start(self.anterior, False, False, 0) + self.pack_start(self.buscador, True, True, 0) + self.pack_start(self.siguiente, False, False, 0) + + self.actualizar_iters() + self.show_all() + + def actualizar_iters(self): + + self.iters_introspeccion = {} + iter = self.intro_model.get_iter_first() + if not iter: return + first_text = self.intro_model.get_value(iter, 0) + + self.iters_introspeccion[first_text] = iter + + while iter: + iter = self.intro_model.iter_next(iter) + if not iter: return + valor_iter = self.intro_model.get_value(iter, 0) + self.iters_introspeccion[valor_iter] = iter + + def seleccionar_iter(self, widget, event=None): + + self.actual = 0 + texto = widget.get_text() + self.actualizar_iters() + self.posibles = [] + + for posible in self.iters_introspeccion: + if texto in posible: + self.posibles.append(self.iters_introspeccion[posible]) + + if self.posibles != []: + self.treeview_intro.get_selection().select_iter(self.posibles[0]) + + def __buscar(self, widget, siguiente): + if siguiente: + self.actual += 1 + try: + self.treeview_intro.get_selection().select_iter(self.posibles[self.actual]) + except: + self.actual = 0 + else: + self.actual -= 1 + try: + self.treeview_intro.get_selection().select_iter(self.posibles[self.actual]) + except: + self.actual = len(self.posibles) - 11 +
\ No newline at end of file |