diff options
author | Ignacio Rodríguez <ignaciorodriguez@sugarlabs.org> | 2013-05-25 23:43:13 (GMT) |
---|---|---|
committer | Ignacio Rodríguez <ignaciorodriguez@sugarlabs.org> | 2013-05-25 23:45:10 (GMT) |
commit | 3786afce7d493ce05bfb981b28d7bf58c894670b (patch) | |
tree | 7db8cc961108882d7593f98fd1cc0428790f3f32 | |
parent | 974c5575df5219240133ee1be9b902db7eb6bc5c (diff) |
Permite buscar en la tab introspección.
-rw-r--r-- | BasePanel.py | 8 | ||||
-rw-r--r-- | InfoNotebook.py | 76 |
2 files changed, 81 insertions, 3 deletions
diff --git a/BasePanel.py b/BasePanel.py index 855adb5..beca800 100644 --- a/BasePanel.py +++ b/BasePanel.py @@ -31,6 +31,7 @@ from InfoNotebook import InfoNotebook from WorkPanel import WorkPanel from Widgets import ToolbarProyecto from Widgets import ToolbarArchivo +from InfoNotebook import BuscadorTreeViews class BasePanel(Gtk.Paned): @@ -42,13 +43,14 @@ class BasePanel(Gtk.Paned): self.infonotebook = InfoNotebook() self.toolbarproyecto = ToolbarProyecto() self.toolbararchivo = ToolbarArchivo() + self.busca_treeview = BuscadorTreeViews(self.infonotebook.introspeccion) self.infonotebook_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.infonotebook_box.pack_start(self.toolbarproyecto, False, True, 0) - self.infonotebook_box.pack_end(self.infonotebook, True, True, 0) + self.infonotebook_box.pack_start(self.infonotebook, True, True, 0) + self.infonotebook_box.pack_end(self.busca_treeview, False, False, 0) - x = 40*7 - self.infonotebook_box.set_size_request(x, -1) + self.infonotebook_box.set_size_request(280, -1) self.workpanel_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.workpanel_box.pack_start(self.toolbararchivo, False, False, 0) diff --git a/InfoNotebook.py b/InfoNotebook.py index 5b9eff1..b8d0d9f 100644 --- a/InfoNotebook.py +++ b/InfoNotebook.py @@ -27,6 +27,7 @@ import gi from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GObject +from Widgets import get_boton class InfoNotebook(Gtk.Notebook): """ @@ -460,3 +461,78 @@ class Estructura_Proyecto(Gtk.TreeView): return False +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 |