def __init__(self): # <Elementos de la ventana> ------------------------------------ self.principal = mainGlade.get_widget("principal") self.lst_categorias = Lst_categoria(mainGlade, db) self.tre_busquedas = Tre_busquedas(mainGlade, db) self.lst_busquedas = Lst_busquedas(mainGlade, db) self.lst_resultados = Lst_resultados(mainGlade, db) self.buscar = Buscar(mainGlade) self.acerca_de = mainGlade.get_widget("acerca_de") self.btn_acerca_de = mainGlade.get_widget("boton_cerrar_acerca_de") self.animacion = mainGlade.get_widget("animacion") self.animacion.set_from_file("hontza_espera.gif") self.animacion.show() self.principal.connect("delete_event", gtk.main_quit) self.lst_categorias.lista.connect("cursor-changed", self.lst_categorias_cambio) self.tre_busquedas.arbol.connect("cursor-changed", self.tre_busquedas_cambio) self.lst_busquedas.lista.connect("cursor-changed", self.lst_busquedas_cambio) self.buscar.btn_buscar.connect("clicked", self.on_btn_buscar) self.buscar.txt_buscar.connect("activate", self.on_btn_buscar) self.buscar.ventana_btn_buscar.connect("clicked", self.on_ventana_btn_buscar) self.buscar.ventana_txt_buscar.connect("activate", self.on_ventana_btn_buscar) self.lst_busquedas.lista.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, [("mover", 0, 0)], gtk.gdk.ACTION_MOVE) self.tre_busquedas.arbol.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, [("ordenar", 0, 1)], gtk.gdk.ACTION_MOVE) self.tre_busquedas.arbol.enable_model_drag_dest([("mover", 0, 0), ("ordenar", 0, 1)], gtk.gdk.ACTION_MOVE) self.tre_busquedas.arbol.connect("drag_data_received", self.on_dragdata_received) # </Elementos de la ventana> ----------------------------------- # <Menús> ------------------------------------------------------ self.mnu_archivo_importar = mainGlade.get_widget("importar") self.mnu_archivo_exportar = mainGlade.get_widget("exportar") self.mnu_archivo_crear_copia = mainGlade.get_widget("crear_copia") self.mnu_archivo_restaurar_copia = mainGlade.get_widget("restaurar_copia") self.mnu_archivo_salir = mainGlade.get_widget("mnu_archivo_salir") self.mnu_categorias_seleccionar_fuentes = mainGlade.get_widget("mnu_categorias_seleccionar_fuentes") self.mnu_busquedas_nueva_busqueda = mainGlade.get_widget("mnu_busquedas_nueva_busqueda") self.mnu_busquedas_navegar = mainGlade.get_widget("mnu_busquedas_navegar") self.mnu_busquedas_guardar_pagina = mainGlade.get_widget("guarda_pagina_como") self.mnu_busquedas_duplicar = mainGlade.get_widget("mnu_busquedas_duplicar") self.mnu_busquedas_actualizar = mainGlade.get_widget("mnu_busquedas_actualizar") self.mnu_busquedas_analizar_vinculos = mainGlade.get_widget("mnu_busquedas_analizar_vinculos") self.mnu_herramientas_configuracion = mainGlade.get_widget("mnu_herramientas_configuracion") self.mnu_ayuda_acerca_de = mainGlade.get_widget("mnu_ayuda_acerca_de") self.mnu_archivo_importar.connect("activate", self.abrir_importar) self.mnu_archivo_exportar.connect("activate", self.abrir_exportar) self.mnu_archivo_crear_copia.connect("activate", self.crear_copia) self.mnu_archivo_restaurar_copia.connect("activate", self.restaurar_copia) self.mnu_archivo_salir.connect("activate", gtk.main_quit) self.mnu_categorias_seleccionar_fuentes.connect("activate", self.mnu_herramientas_fuentes_abrir) self.mnu_busquedas_nueva_busqueda.connect("activate", self.abrir_ventana_buscar) self.mnu_busquedas_navegar.connect("activate", self.lst_busquedas.on_navegar, "tmp.html") self.mnu_busquedas_guardar_pagina.connect("activate", self.lst_busquedas.abrir_guardar_pagina) self.mnu_busquedas_duplicar.connect("activate", self.duplicar) self.mnu_busquedas_actualizar.connect("activate", self.actualizar_resultados) self.mnu_busquedas_analizar_vinculos.connect("activate", self.analizar) self.mnu_herramientas_configuracion.connect("activate", self.mnu_herramientas_configuracion_abrir) self.mnu_ayuda_acerca_de.connect("activate", self.acerca) # </Menús> ----------------------------------------------------- # <Barra de herramientas> -------------------------------------- self.her_importar = mainGlade.get_widget("her_importar") self.her_exportar = mainGlade.get_widget("her_exportar") self.her_seleccionar_fuentes = mainGlade.get_widget("her_seleccionar_fuentes") self.her_nueva_busqueda = mainGlade.get_widget("her_nueva_busqueda") self.her_navegar = mainGlade.get_widget("her_navegar") self.her_actualizar = mainGlade.get_widget("her_actualizar") self.her_analizar = mainGlade.get_widget("her_analizar") self.her_acerca_de = mainGlade.get_widget("her_acerca_de") self.her_importar.connect("clicked", self.abrir_importar) self.her_exportar.connect("clicked", self.abrir_exportar) self.her_seleccionar_fuentes.connect("clicked", self.mnu_herramientas_fuentes_abrir) self.her_nueva_busqueda.connect("clicked", self.abrir_ventana_buscar) self.her_navegar.connect("clicked", self.lst_busquedas.on_navegar, "tmp.html") self.her_actualizar.connect("clicked", self.actualizar_resultados) self.her_analizar.connect("clicked", self.analizar) self.her_acerca_de.connect("clicked", self.acerca) # </Barra de herramientas> ------------------------------------- # <Elementos externos> ----------------------------------------- self.guardar = mainGlade.get_widget("busqueda_guardar") self.abrir = mainGlade.get_widget("abrir") self.lst_categorias.seleccionar_fuentes.connect("activate", self.mnu_herramientas_fuentes_abrir) self.lst_busquedas.borrar.connect("activate", self.borrar_busqueda) self.lst_resultados.borrar.connect("activate", self.borrar_resultados) self.lst_busquedas.actualizar.connect("activate", self.actualizar_resultados) self.lst_busquedas.analizar.connect("activate", self.analizar) self.lst_busquedas.duplicar.connect("activate", self.duplicar) self.lst_busquedas.nueva.connect("activate", self.abrir_ventana_buscar) self.btn_acerca_de.connect("clicked", self.acerca_de_cerrar) #combo de la ventana nuevas busquedas self.buscar.ventana_combo.set_model(self.lst_categorias.modelo) self.buscar.ventana_combo.set_text_column(1) self.lst_busquedas.ventana_buscar.connect("delete_event", self.no_cerrar) self.buscar.ventana_combo.connect("changed", self.combo_cambio) # </Elementos externos> ---------------------------------------- # <Ayudas> ----------------------------------------------------- self.btn_configuracion_ayuda = mainGlade.get_widget("btn_configuracion_ayuda") self.mnu_ayuda_ayuda = mainGlade.get_widget("mnu_ayuda_ayuda") self.mnu_carpeta_ayuda = mainGlade.get_widget("mnu_carpeta_ayuda") self.mnu_busqueda_ayuda = mainGlade.get_widget("mnu_busqueda_ayuda") self.mnu_resultados_ayuda = mainGlade.get_widget("mnu_resultados_ayuda") self.mnu_categoria_ayuda = mainGlade.get_widget("mnu_categoria_ayuda") self.btn_configuracion_ayuda.connect("clicked", self.ayuda, "configuracion.html") self.mnu_ayuda_ayuda.connect("activate", self.ayuda) self.mnu_carpeta_ayuda.connect("activate", self.ayuda, "carpetas.html") self.mnu_busqueda_ayuda.connect("activate", self.ayuda, "busquedas.html") self.mnu_resultados_ayuda.connect("activate", self.ayuda, "resultados.html") self.mnu_categoria_ayuda.connect("activate", self.ayuda, "categorias.html") # </Ayudas> ---------------------------------------------------- return
class Principal: def __init__(self): # <Elementos de la ventana> ------------------------------------ self.principal = mainGlade.get_widget("principal") self.lst_categorias = Lst_categoria(mainGlade, db) self.tre_busquedas = Tre_busquedas(mainGlade, db) self.lst_busquedas = Lst_busquedas(mainGlade, db) self.lst_resultados = Lst_resultados(mainGlade, db) self.buscar = Buscar(mainGlade) self.acerca_de = mainGlade.get_widget("acerca_de") self.btn_acerca_de = mainGlade.get_widget("boton_cerrar_acerca_de") self.animacion = mainGlade.get_widget("animacion") self.animacion.set_from_file("hontza_espera.gif") self.animacion.show() self.principal.connect("delete_event", gtk.main_quit) self.lst_categorias.lista.connect("cursor-changed", self.lst_categorias_cambio) self.tre_busquedas.arbol.connect("cursor-changed", self.tre_busquedas_cambio) self.lst_busquedas.lista.connect("cursor-changed", self.lst_busquedas_cambio) self.buscar.btn_buscar.connect("clicked", self.on_btn_buscar) self.buscar.txt_buscar.connect("activate", self.on_btn_buscar) self.buscar.ventana_btn_buscar.connect("clicked", self.on_ventana_btn_buscar) self.buscar.ventana_txt_buscar.connect("activate", self.on_ventana_btn_buscar) self.lst_busquedas.lista.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, [("mover", 0, 0)], gtk.gdk.ACTION_MOVE) self.tre_busquedas.arbol.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, [("ordenar", 0, 1)], gtk.gdk.ACTION_MOVE) self.tre_busquedas.arbol.enable_model_drag_dest([("mover", 0, 0), ("ordenar", 0, 1)], gtk.gdk.ACTION_MOVE) self.tre_busquedas.arbol.connect("drag_data_received", self.on_dragdata_received) # </Elementos de la ventana> ----------------------------------- # <Menús> ------------------------------------------------------ self.mnu_archivo_importar = mainGlade.get_widget("importar") self.mnu_archivo_exportar = mainGlade.get_widget("exportar") self.mnu_archivo_crear_copia = mainGlade.get_widget("crear_copia") self.mnu_archivo_restaurar_copia = mainGlade.get_widget("restaurar_copia") self.mnu_archivo_salir = mainGlade.get_widget("mnu_archivo_salir") self.mnu_categorias_seleccionar_fuentes = mainGlade.get_widget("mnu_categorias_seleccionar_fuentes") self.mnu_busquedas_nueva_busqueda = mainGlade.get_widget("mnu_busquedas_nueva_busqueda") self.mnu_busquedas_navegar = mainGlade.get_widget("mnu_busquedas_navegar") self.mnu_busquedas_guardar_pagina = mainGlade.get_widget("guarda_pagina_como") self.mnu_busquedas_duplicar = mainGlade.get_widget("mnu_busquedas_duplicar") self.mnu_busquedas_actualizar = mainGlade.get_widget("mnu_busquedas_actualizar") self.mnu_busquedas_analizar_vinculos = mainGlade.get_widget("mnu_busquedas_analizar_vinculos") self.mnu_herramientas_configuracion = mainGlade.get_widget("mnu_herramientas_configuracion") self.mnu_ayuda_acerca_de = mainGlade.get_widget("mnu_ayuda_acerca_de") self.mnu_archivo_importar.connect("activate", self.abrir_importar) self.mnu_archivo_exportar.connect("activate", self.abrir_exportar) self.mnu_archivo_crear_copia.connect("activate", self.crear_copia) self.mnu_archivo_restaurar_copia.connect("activate", self.restaurar_copia) self.mnu_archivo_salir.connect("activate", gtk.main_quit) self.mnu_categorias_seleccionar_fuentes.connect("activate", self.mnu_herramientas_fuentes_abrir) self.mnu_busquedas_nueva_busqueda.connect("activate", self.abrir_ventana_buscar) self.mnu_busquedas_navegar.connect("activate", self.lst_busquedas.on_navegar, "tmp.html") self.mnu_busquedas_guardar_pagina.connect("activate", self.lst_busquedas.abrir_guardar_pagina) self.mnu_busquedas_duplicar.connect("activate", self.duplicar) self.mnu_busquedas_actualizar.connect("activate", self.actualizar_resultados) self.mnu_busquedas_analizar_vinculos.connect("activate", self.analizar) self.mnu_herramientas_configuracion.connect("activate", self.mnu_herramientas_configuracion_abrir) self.mnu_ayuda_acerca_de.connect("activate", self.acerca) # </Menús> ----------------------------------------------------- # <Barra de herramientas> -------------------------------------- self.her_importar = mainGlade.get_widget("her_importar") self.her_exportar = mainGlade.get_widget("her_exportar") self.her_seleccionar_fuentes = mainGlade.get_widget("her_seleccionar_fuentes") self.her_nueva_busqueda = mainGlade.get_widget("her_nueva_busqueda") self.her_navegar = mainGlade.get_widget("her_navegar") self.her_actualizar = mainGlade.get_widget("her_actualizar") self.her_analizar = mainGlade.get_widget("her_analizar") self.her_acerca_de = mainGlade.get_widget("her_acerca_de") self.her_importar.connect("clicked", self.abrir_importar) self.her_exportar.connect("clicked", self.abrir_exportar) self.her_seleccionar_fuentes.connect("clicked", self.mnu_herramientas_fuentes_abrir) self.her_nueva_busqueda.connect("clicked", self.abrir_ventana_buscar) self.her_navegar.connect("clicked", self.lst_busquedas.on_navegar, "tmp.html") self.her_actualizar.connect("clicked", self.actualizar_resultados) self.her_analizar.connect("clicked", self.analizar) self.her_acerca_de.connect("clicked", self.acerca) # </Barra de herramientas> ------------------------------------- # <Elementos externos> ----------------------------------------- self.guardar = mainGlade.get_widget("busqueda_guardar") self.abrir = mainGlade.get_widget("abrir") self.lst_categorias.seleccionar_fuentes.connect("activate", self.mnu_herramientas_fuentes_abrir) self.lst_busquedas.borrar.connect("activate", self.borrar_busqueda) self.lst_resultados.borrar.connect("activate", self.borrar_resultados) self.lst_busquedas.actualizar.connect("activate", self.actualizar_resultados) self.lst_busquedas.analizar.connect("activate", self.analizar) self.lst_busquedas.duplicar.connect("activate", self.duplicar) self.lst_busquedas.nueva.connect("activate", self.abrir_ventana_buscar) self.btn_acerca_de.connect("clicked", self.acerca_de_cerrar) #combo de la ventana nuevas busquedas self.buscar.ventana_combo.set_model(self.lst_categorias.modelo) self.buscar.ventana_combo.set_text_column(1) self.lst_busquedas.ventana_buscar.connect("delete_event", self.no_cerrar) self.buscar.ventana_combo.connect("changed", self.combo_cambio) # </Elementos externos> ---------------------------------------- # <Ayudas> ----------------------------------------------------- self.btn_configuracion_ayuda = mainGlade.get_widget("btn_configuracion_ayuda") self.mnu_ayuda_ayuda = mainGlade.get_widget("mnu_ayuda_ayuda") self.mnu_carpeta_ayuda = mainGlade.get_widget("mnu_carpeta_ayuda") self.mnu_busqueda_ayuda = mainGlade.get_widget("mnu_busqueda_ayuda") self.mnu_resultados_ayuda = mainGlade.get_widget("mnu_resultados_ayuda") self.mnu_categoria_ayuda = mainGlade.get_widget("mnu_categoria_ayuda") self.btn_configuracion_ayuda.connect("clicked", self.ayuda, "configuracion.html") self.mnu_ayuda_ayuda.connect("activate", self.ayuda) self.mnu_carpeta_ayuda.connect("activate", self.ayuda, "carpetas.html") self.mnu_busqueda_ayuda.connect("activate", self.ayuda, "busquedas.html") self.mnu_resultados_ayuda.connect("activate", self.ayuda, "resultados.html") self.mnu_categoria_ayuda.connect("activate", self.ayuda, "categorias.html") # </Ayudas> ---------------------------------------------------- return def mostrar(self): self.lst_categorias.mostrar() self.tre_busquedas.mostrar() self.tre_busquedas.set_seleccion() self.lst_busquedas.mostrar(self.tre_busquedas.get_seleccion()) self.lst_resultados.mostrar(self.lst_busquedas.get_seleccion()) self.principal.show() return def lst_categorias_cambio(self, widget): db.sql("UPDATE categorias SET seleccion = 0") db.sql("UPDATE categorias SET seleccion = 1 WHERE id = %d" % self.lst_categorias.get_seleccion()) id_categoria = self.lst_categorias.get_seleccion() op_fe = db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND op_fe = 1 AND seleccion = 1" % id_categoria)[0] == db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND seleccion = 1" % id_categoria)[0] and db.sql_una("SELECT count(*) FROM fuentes WHERE id_categoria = %d" % id_categoria)[0] != 0 op_and = db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND op_and = 1 AND seleccion = 1" % id_categoria)[0] == db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND seleccion = 1" % id_categoria)[0] and db.sql_una("SELECT count(*) FROM fuentes WHERE id_categoria = %d" % id_categoria)[0] != 0 op_or = db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND op_or = 1 AND seleccion = 1" % id_categoria)[0] == db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND seleccion = 1" % id_categoria)[0] and db.sql_una("SELECT count(*) FROM fuentes WHERE id_categoria = %d" % id_categoria)[0] != 0 if db.sql_una("SELECT COUNT(*) FROM fuentes WHERE seleccion = 1 AND activa = 1 AND id_categoria = %d" % id_categoria)[0] == 0: self.buscar.txt_buscar.set_property("sensitive", False) self.buscar.btn_buscar.set_property("sensitive", False) self.buscar.mostrar_tipo_busqueda(False, False, False) else: self.buscar.txt_buscar.set_property("sensitive", True) self.buscar.btn_buscar.set_property("sensitive", True) self.buscar.mostrar_tipo_busqueda(op_fe, op_and, op_or) return def tre_busquedas_cambio(self, widget): self.lst_busquedas.mostrar(self.tre_busquedas.get_seleccion()) self.lst_resultados.mostrar(self.lst_busquedas.get_seleccion()) return def lst_busquedas_cambio(self, widget): self.lst_resultados.mostrar(self.lst_busquedas.get_seleccion()) return def mnu_herramientas_configuracion_abrir(self, widget): status.mostrar(u"Configuración de la aplicación.") configuracion.mostrar() while configuracion.abierta: gtk.main_iteration() status.mostrar("Listo.") return def mnu_herramientas_fuentes_abrir(self, widget): status.mostrar(u"Seleccione las fuentes sobre las que se realizarán las búsquedas.") fuentes.mostrar() while fuentes.abierta: gtk.main_iteration() self.lst_categorias.lista.emit("cursor-changed") status.mostrar("Listo.") return def on_btn_buscar(self, widget): if self.buscar.txt_buscar.get_text() == "" or self.buscar.txt_buscar.get_text().isspace(): self.buscar.txt_buscar.set_text("") return self.mostrar_animacion(1) status.mostrar("Buscando...") f = db.sql("SELECT id FROM fuentes WHERE seleccion = 1 AND id_categoria = %d" % self.lst_categorias.get_seleccion()) fu = [] for elemento in f: fu.append(str(elemento[0])) fuentes = ",".join(fu) resultados = conexion.lanzarBusqueda(self.buscar.txt_buscar.get_text(), self.buscar.tipo_busqueda, fuentes) op_fe = self.buscar.tipo_busqueda == "fe" op_and = self.buscar.tipo_busqueda == "and" op_or = self.buscar.tipo_busqueda == "or" db.sql("INSERT INTO busquedas (texto, op_fe, op_and, op_or, id_categoria, num_resultados, fecha, id_carpeta, fuentes) VALUES ('%s', %d, %d, %d, %d, %d, '%s', %d, '%s')" % (self.buscar.txt_buscar.get_text(), op_fe, op_and, op_or, self.lst_categorias.get_seleccion(), len(resultados), time.strftime("%d/%m/%Y %H:%M:%S"), self.tre_busquedas.get_seleccion(), fuentes)) id_busqueda = db.sql_una("SELECT id FROM busquedas ORDER BY id DESC")[0] self.lst_busquedas.mostrar(self.tre_busquedas.get_seleccion()) self.lst_busquedas.set_seleccion(id_busqueda) self.lst_busquedas.lista.scroll_to_cell((len(self.lst_busquedas.modelo) - 1,)) self.lst_resultados.add_elemento(id_busqueda, resultados, self.lst_busquedas.get_seleccion()) self.buscar.txt_buscar.set_text("") self.mostrar_animacion(0) status.mostrar("Listo.") return def on_ventana_btn_buscar(self, widget): if self.buscar.ventana_txt_buscar.get_text() == "" or self.buscar.ventana_txt_buscar.get_text().isspace(): self.buscar.ventana_txt_buscar.set_text("") return self.mostrar_animacion(1) status.mostrar("Buscando...") activa = self.buscar.ventana_combo.get_active() id_categoria = self.lst_categorias.modelo[activa][0] f = db.sql("SELECT id FROM fuentes WHERE seleccion = 1 AND id_categoria = %d" % id_categoria) fu = [] for elemento in f: fu.append(str(elemento[0])) fuentes = ",".join(fu) resultados = conexion.lanzarBusqueda(self.buscar.ventana_txt_buscar.get_text(), self.buscar.tipo_busqueda, fuentes) op_fe = self.buscar.tipo_busqueda == "fe" op_and = self.buscar.tipo_busqueda == "and" op_or = self.buscar.tipo_busqueda == "or" db.sql("INSERT INTO busquedas (texto, op_fe, op_and, op_or, id_categoria, num_resultados, fecha, id_carpeta, fuentes) VALUES ('%s', %d, %d, %d, %d, %d, '%s', %d, '%s')" % (self.buscar.ventana_txt_buscar.get_text(), op_fe, op_and, op_or, id_categoria, len(resultados), time.strftime("%d/%m/%Y %H:%M:%S"), self.tre_busquedas.get_seleccion(), fuentes)) id_busqueda = db.sql_una("SELECT id FROM busquedas ORDER BY id DESC")[0] self.lst_busquedas.mostrar(self.tre_busquedas.get_seleccion()) self.lst_busquedas.set_seleccion(id_busqueda) self.lst_busquedas.lista.scroll_to_cell((len(self.lst_busquedas.modelo) - 1,)) self.lst_resultados.add_elemento(id_busqueda, resultados, self.lst_busquedas.get_seleccion()) self.buscar.ventana_txt_buscar.set_text("") self.lst_busquedas.ventana_buscar.hide() self.mostrar_animacion(0) status.mostrar("Listo.") return def duplicar(self, widget): texto_busqueda = db.sql_una("SELECT texto FROM busquedas WHERE id = %d" % self.lst_busquedas.get_seleccion())[0] categoria = db.sql_una("SELECT id_categoria FROM busquedas WHERE id = %d" % self.lst_busquedas.get_seleccion())[0] indice = 0 while 1: self.buscar.ventana_combo.set_active(indice) activa = self.buscar.ventana_combo.get_active() if self.lst_categorias.modelo[activa][0] == categoria: break indice += 1 self.lst_busquedas.ventana_buscar.show() self.buscar.ventana_combo.emit("changed") self.buscar.ventana_txt_buscar.set_text(texto_busqueda) return def abrir_ventana_buscar(self, widget): self.buscar.ventana_txt_buscar.set_text("") self.buscar.ventana_combo.set_active(0) self.lst_busquedas.ventana_buscar.show() return def no_cerrar(self, widget, data): self.lst_busquedas.ventana_buscar.hide() return True def combo_cambio(self, widget): id_categoria = self.lst_categorias.modelo[self.buscar.ventana_combo.get_active()][0] op_fe = db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND op_fe = 1 AND seleccion = 1" % id_categoria)[0] == db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND seleccion = 1" % id_categoria)[0] and db.sql_una("SELECT count(*) FROM fuentes WHERE id_categoria = %d" % id_categoria)[0] != 0 op_and = db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND op_and = 1 AND seleccion = 1" % id_categoria)[0] == db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND seleccion = 1" % id_categoria)[0] and db.sql_una("SELECT count(*) FROM fuentes WHERE id_categoria = %d" % id_categoria)[0] != 0 op_or = db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND op_or = 1 AND seleccion = 1" % id_categoria)[0] == db.sql_una("SELECT COUNT(*) FROM fuentes WHERE id_categoria = %d AND seleccion = 1" % id_categoria)[0] and db.sql_una("SELECT count(*) FROM fuentes WHERE id_categoria = %d" % id_categoria)[0] != 0 if db.sql_una("SELECT COUNT(*) FROM fuentes WHERE seleccion = 1 AND id_categoria = %d" % id_categoria)[0] == 0: self.buscar.ventana_txt_buscar.set_property("sensitive", False) self.buscar.ventana_btn_buscar.set_property("sensitive", False) self.buscar.mostrar_tipo_busqueda_ventana(False, False, False) else: self.buscar.ventana_txt_buscar.set_property("sensitive", True) self.buscar.ventana_btn_buscar.set_property("sensitive", True) self.buscar.mostrar_tipo_busqueda_ventana(op_fe, op_and, op_or) return def on_dragdata_received(self, treeview, drag_context, x, y, selection, info, eventtime): if info == 0: model, iter_to_move = treeview.get_selection().get_selected() temp = treeview.get_dest_row_at_pos(x, y) if temp != None: sel = self.tre_busquedas.get_seleccion() path, pos = temp db.sql("UPDATE busquedas SET id_carpeta = %d WHERE id = %d" % (model[path][0], self.lst_busquedas.get_seleccion())) self.lst_busquedas.mostrar(sel) self.lst_resultados.mostrar() drag_context.finish(True, True, eventtime) self.tre_busquedas.set_seleccion(sel) else: drag_context.finish(False, False, eventtime) return else: model, iter_to_move = treeview.get_selection().get_selected() temp = treeview.get_dest_row_at_pos(x, y) if temp != None: sel = self.tre_busquedas.get_seleccion() path, pos = temp if model[path][0] != self.tre_busquedas.get_seleccion() and self.tre_busquedas.get_seleccion() != 1: if self.es_padre(model, path, self.tre_busquedas.get_seleccion()): drag_context.finish(False, False, eventtime) return db.sql("UPDATE carpetas SET pertenece = %d WHERE id = %d" % (model[path][0], self.tre_busquedas.get_seleccion())) drag_context.finish(True, True, eventtime) self.tre_busquedas.mostrar() self.tre_busquedas.set_seleccion(sel) else: drag_context.finish(False, False, eventtime) return def es_padre(self, model, path, origen): if db.sql_una("SELECT pertenece FROM carpetas where id = %d" % model[path][0])[0] == origen: return True if model[path].parent != None and model[path].parent[0] != origen: return self.es_padre(model[path].parent.model, model[path].parent.path, origen) return False def borrar_busqueda(self, widget): db.sql("DELETE FROM resultados WHERE id_busqueda = %d" % self.lst_busquedas.get_seleccion()) db.sql("DELETE FROM busquedas WHERE id = %d" % self.lst_busquedas.get_seleccion()) self.lst_busquedas.mostrar(self.tre_busquedas.get_seleccion()) self.lst_resultados.mostrar() return def borrar_resultados(self, widget): db.sql("DELETE FROM resultados WHERE id = %d" % self.lst_resultados.get_seleccion()) self.lst_resultados.mostrar(self.lst_busquedas.get_seleccion()) return def actualizar_resultados(self, widget): self.mostrar_animacion(1) status.mostrar("Actualizando resultados...") resultado = db.sql_una("SELECT id, texto, op_and, op_or, op_fe, id_categoria, id_carpeta FROM busquedas WHERE id = %d" % self.lst_busquedas.get_seleccion()) db.sql("DELETE FROM resultados WHERE id_busqueda = %d" % resultado[0]) if resultado[2]: tipo_busqueda = "and" elif resultado[3]: tipo_busqueda = "or" else: tipo_busqueda = "fe" f = db.sql("SELECT id FROM fuentes WHERE seleccion = 1 AND id_categoria = %d" % resultado[5]) fu = [] for elemento in f: fu.append(str(elemento[0])) fuentes = ",".join(fu) resultados = conexion.lanzarBusqueda(resultado[1], tipo_busqueda, fuentes) op_fe = tipo_busqueda == "fe" op_and = tipo_busqueda == "and" op_or = tipo_busqueda == "or" id_busqueda = resultado[0] db.sql("DELETE FROM resultados WHERE id_busqueda = %d" % id_busqueda) self.lst_busquedas.mostrar(self.tre_busquedas.get_seleccion()) self.lst_busquedas.set_seleccion(id_busqueda) self.lst_busquedas.lista.scroll_to_cell((len(self.lst_busquedas.modelo) - 1,)) self.lst_resultados.add_elemento(id_busqueda, resultados, id_busqueda) self.mostrar_animacion(0) status.mostrar("Listo.") return def analizar(self, widget): self.mostrar_animacion(2) status.mostrar(u"Analizando vínculos...") sel = self.lst_busquedas.get_seleccion() datos = db.sql_una("SELECT texto, op_fe, op_and, op_or, fuentes FROM busquedas WHERE id = %d" % sel) if datos[1]: operador = "fe" elif datos[2]: operador ="and" else: operador = "or" nuevos = conexion.lanzarBusqueda(datos[0], operador, datos[4]) self.lst_resultados.actualizar(sel, nuevos) self.mostrar_animacion(0) status.mostrar("Listo.") return def exportar(self, widget, nombre): status.mostrar(u"Exportando búsquedas...") fichero = codecs.open(nombre, encoding = "iso-8859-15", mode = "w") fichero.write("#c#%s\n" % db.sql_una("SELECT nombre FROM carpetas WHERE id = %d" % self.tre_busquedas.get_seleccion())[0]) busquedas = db.sql("SELECT id, texto, op_and, op_or, op_fe, num_resultados, fecha FROM busquedas WHERE id_carpeta = %d" % self.tre_busquedas.get_seleccion()) for busqueda in busquedas: fichero.write("#b#%s|%d|%d|%d|%d|%s\n" % (busqueda[1], busqueda[2], busqueda[3], busqueda[4], busqueda[5], busqueda[6])) resultados = db.sql("SELECT titulo, texto, enlace, id_fuente, idioma, fecha, nota FROM resultados WHERE id_busqueda = %d" % busqueda[0]) for resultado in resultados: fichero.write("#r#%s|%s|%s|%s|%s|%s|%s\n" % (resultado[0], resultado[1], resultado[2], resultado[3], resultado[4], resultado[5], resultado[6])) fichero.close() status.mostrar("Listo.") return def importar(self, widget, nombre): status.mostrar(u"Importando búsquedas...") fichero = codecs.open(nombre, encoding = "iso-8859-15", mode = "r") datos = fichero.readlines() fichero.close() carpeta = 0 busqueda = 0 for linea in datos: if linea[:3] == "#c#": linea = linea.replace("#c#", "") linea = linea.replace("\n", "") db.sql("INSERT INTO carpetas (nombre, pertenece, abierta) VALUES ('%s', 1, 1)" % linea) carpeta = db.sql_una("SELECT id FROM carpetas ORDER BY id DESC")[0] if linea[:3] == "#b#": linea = linea.replace("#b#", "") linea = linea.replace("\n", "") dato = linea.split("|") db.sql("INSERT INTO busquedas (texto, op_and, op_or, op_fe, num_resultados, fecha, id_carpeta) VALUES ('%s', %s, %s, %s, %s, '%s', %s)" % (dato[0], dato[1], dato[2], dato[3], dato[4], dato[5], carpeta)) busqueda = db.sql_una("SELECT id FROM busquedas ORDER BY id DESC")[0] if linea[:3] == "#r#": linea = linea.replace("#r#", "") linea = linea.replace("\n", "") dato = linea.split("|") db.sql("INSERT INTO resultados (titulo, texto, enlace, id_fuente, idioma, fecha, nota, id_busqueda) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', %s)" % (dato[0], dato[1], dato[2], dato[3], dato[4], dato[5], dato[6], busqueda)) self.tre_busquedas.mostrar() status.mostrar("Listo.") return def abrir_exportar(self, widget): self.guardar.set_default_response(gtk.RESPONSE_OK) response = self.guardar.run() if response == gtk.RESPONSE_OK: if self.guardar.get_filename() != "": if self.guardar.get_filename()[-4:] != ".hon": nombre = self.guardar.get_filename()+".hon" else: nombre = self.guardar.get_filename() self.exportar(self, nombre) self.guardar.hide() return def abrir_importar(self, widget): self.abrir.set_default_response(gtk.RESPONSE_OK) response = self.abrir.run() if response == gtk.RESPONSE_OK: if self.abrir.get_filename() != "": nombre = self.abrir.get_filename() self.importar(self, nombre) self.abrir.hide() return def crear_copia(self, widget): status.mostrar("Creando copia de seguridad...") self.guardar.set_default_response(gtk.RESPONSE_OK) self.guardar.set_current_name("hontza.db") response = self.guardar.run() if response == gtk.RESPONSE_OK: fe = open("hontza.db", "rb") fs = open(self.guardar.get_filename(), "wb") fs.write(fe.read()) fs.close() fe.close() self.guardar.hide() status.mostrar("Listo.") return def restaurar_copia(self, widget): status.mostrar("Restaurando copia de seguridad...") self.abrir.set_default_response(gtk.RESPONSE_OK) response = self.abrir.run() if response == gtk.RESPONSE_OK: if os.path.isfile("hontza.db"): fe = open("hontza.db", "rb") fs = open("hontza.db.bak", "wb") fs.write(fe.read()) fs.close() fe.close() fe = open(self.abrir.get_filename(), "rb") fs = open("hontza.db", "wb") fs.write(fe.read()) fs.close() fe.close() self.abrir.hide() self.tre_busquedas.mostrar() self.lst_categorias.mostrar() status.mostrar("Listo.") return def acerca(self, widget): self.acerca_de.show() return def acerca_de_cerrar(self, widget): self.acerca_de.hide() return def ayuda(self, widget, pagina = "index.html"): webbrowser.open(os.path.abspath("ayuda/%s" % pagina)) return def mostrar_animacion(self, tipo = 0): if tipo == 0: self.animacion.set_from_file("hontza_espera.gif") elif tipo == 1: self.animacion.set_from_file("hontza_busca.gif") elif tipo == 2: self.animacion.set_from_file("hontza_analiza.gif") self.animacion.show() return