Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgnacio 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)
commit3786afce7d493ce05bfb981b28d7bf58c894670b (patch)
tree7db8cc961108882d7593f98fd1cc0428790f3f32
parent974c5575df5219240133ee1be9b902db7eb6bc5c (diff)
Permite buscar en la tab introspección.
-rw-r--r--BasePanel.py8
-rw-r--r--InfoNotebook.py76
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