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-15 23:33:32 (GMT)
committer Ignacio Rodríguez <ignaciorodriguez@sugarlabs.org>2013-05-15 23:33:32 (GMT)
commit5f5e931428df14ddb2021c67fbb4c6e996be5943 (patch)
tree8edd21fa51bed05dc292801fe1f5c36ceab62502
parent57c68689e578ba0c06f773a796cac2063351387e (diff)
Ahora autocompleta todo.
Signed-off-by: Ignacio Rodríguez <ignacio@ignacio-laptop.(none)>
-rw-r--r--WorkPanel.py82
1 files changed, 62 insertions, 20 deletions
diff --git a/WorkPanel.py b/WorkPanel.py
index 9179230..0be1117 100644
--- a/WorkPanel.py
+++ b/WorkPanel.py
@@ -265,10 +265,29 @@ class AutoCompletado(GObject.Object, GtkSource.CompletionProvider):
self.modulo = None
self.nombre_modulo = None
+ self.ultimo_seleccionado = None
+ self.mods_gi = self.__get_modulos_gi()
self.priority = 1
self.buffer = buffer
-
+
+ def do_activate_proposal(self, dato1, dato2):
+ """
+ Cuando se selecciona y clickea
+ una posible solución
+ """
+
+ nombre = dato1.get_text()
+ if not self.modulo:
+ return
+ try:
+ self.ultimo_seleccionado = self.modulo.__getattribute__(nombre)
+ except:
+ try:
+ self.ultimo_seleccionado = self.modulo.__getattr__(nombre)
+ except:
+ print "Error al obtener el objeto clickeado."
+
def do_get_name(self):
"""
Devuelve el nombre del último
@@ -286,7 +305,7 @@ class AutoCompletado(GObject.Object, GtkSource.CompletionProvider):
"""
self.modulo = None
-
+
tema = Gtk.IconTheme.get_default()
icono = tema.load_icon(Gtk.STOCK_DIALOG_INFO, 16, 0)
@@ -294,45 +313,52 @@ class AutoCompletado(GObject.Object, GtkSource.CompletionProvider):
ingresado = self.buffer.get_iter_at_mark(self.buffer.get_insert())
texto = self.buffer.get_text(inicio, ingresado, True)
lineas = texto.splitlines()
-
+
+ tipo = str(type(self.ultimo_seleccionado))
+
+ if "class" in tipo or "module" in tipo or "function" in tipo:
+ self.resultados = []
+ for Resultado in dir(self.ultimo_seleccionado):
+ self.resultados.append(
+ GtkSource.CompletionItem.new(
+ Resultado,
+ Resultado,
+ icono,
+ "Descripción - PygiHack"))
+ context.add_proposals(self, self.resultados, True)
+ return
+
if lineas:
linea = lineas[-1]
-
else:
linea = ''
if ' ' in linea:
modulo = linea.split(' ')[-1]
-
else:
modulo = linea
-
if modulo and modulo[-1] == '.':
-
mod = ''
+
for x in modulo[:-1]:
mod += x
-
+
modulo = mod
+ self.nombre_modulo = modulo
- try:
+ if modulo in self.mods_gi:
mod = __import__("gi.repository.%s" % modulo)
self.modulo = mod.importer.modules.get(modulo)
-
+ try:
+ if modulo != 'gtk' and modulo != 'gobject':
+ self.modulo = __import__(modulo)
except:
- try:
- if modulo != 'gtk' and modulo != 'gobject':
- self.modulo = __import__(modulo)
-
- except:
- pass
-
+ pass
+
self.resultados = []
-
+
if self.modulo:
-
for Resultado in dir(self.modulo):
-
self.resultados.append(
GtkSource.CompletionItem.new(
Resultado,
@@ -341,3 +367,19 @@ class AutoCompletado(GObject.Object, GtkSource.CompletionProvider):
"Descripción - PygiHack"))
context.add_proposals(self, self.resultados, True)
+
+ def __get_modulos_gi(self):
+ """
+ Devuelve una lista de modulos
+ de Gobject Introspection [Gi]
+ """
+
+ path_gi = "/usr/lib/girepository-1.0"
+ modulos_nuevos = []
+ if os.path.exists(path_gi):
+ modulos = os.listdir(path_gi)
+ for modulo in modulos:
+ modulo = modulo.replace(".typelib", "")
+ modulo = modulo.rpartition("-")
+ modulos_nuevos.append(modulo[0])
+ return modulos_nuevos \ No newline at end of file