示例#1
0
 def __init__(self, parent = None, name = None):
     """Inicializacion, llama a la funcion que define las conexiones"""
     QtGui.QDialog.__init__(self, parent)
     self.ui=Ui_DialogoBuscar()
     self.ui.setupUi(self)
     self.__conexiones()
示例#2
0
class DBuscar(QtGui.QDialog):
    """Dialogo de busqueda 
    Busca cadenas de texto introducidas por el usuario en la tabla que este activa """

    def __init__(self, parent = None, name = None):
        """Inicializacion, llama a la funcion que define las conexiones"""
        QtGui.QDialog.__init__(self, parent)
        self.ui=Ui_DialogoBuscar()
        self.ui.setupUi(self)
        self.__conexiones()

    #FUNCIONES PRIVADAS

    def __buscar(self):
        """ Funcion busca la cadena de texto introducida por el usuario en la tabla que este activa, seleccionando el primer registro válido que encuentre"""
        if not self.ui.lineEdit1.text():
            return
        if self.parent().grid.currentPageIndex() == 0: 
            tablaactual = self.parent().grid.table1
        else: 
            tablaactual = self.parent().grid.table2
        fila = tablaactual.currentRow()
        columna = tablaactual.currentColumn()
        textoabuscar = self.ui.lineEdit1.text()
        LOG.debug("Busqueda de " + textoabuscar)
        resultado = self.__buscarinterno(tablaactual, textoabuscar, fila, columna)
        if resultado:
            LOG.debug("Resultado encontrado en la primera columna")
            tablaactual.clearSelection()
            tablaactual.setCurrentCell(resultado[0], resultado[1])
            self.accept()
            return
        codigoretorno = QMessageBox.warning(self, 'Atencion', 'No he encontrado nada', '¿Continuar desde el principio?', 'Salir', '', 0, 1)
        if codigoretorno == 1:
            self.reject()
            return
        resultado = self.__buscarinterno(tablaactual, textoabuscar)
        if resultado:
            tablaactual.clearSelection()
            tablaactual.setCurrentCell(resultado[0], resultado[1])
            self.accept()
            return
        codigoretorno = QMessageBox.warning(self, 'Atencion', 'No he encontrado nada', 'Otra busqueda', 'Salir', '', 0, 1)
        if codigoretorno == 1:
            self.reject()
        else:
            self.ui.lineEdit1.clear()
        return

    def __buscarinterno(self, tabla, texto, iniciox = 0, inicioy = 0):
        """Procedimiento interno que hace la busqueda efectiva"""
        n_fil = tabla.numRows()
        n_col = tabla.numCols()
        #Primera columna 
        for i in range(iniciox,n_fil):
            if (cmp(tabla.text(i,inicioy), texto) == 0):
                return [i, inicioy]
        #Resto de columnas
        for j in range (inicioy+1, n_col):
            for i in range(n_fil):
                if (cmp(tabla.text(i,j), texto) == 0):
                    return [i, j]
        return False


    def __conexiones(self):
        """Función que define las conexiones entre elementos de la interfaz y sus SLOTS"""
        from PyQt4.QtCore import SIGNAL
        self.connect(self.ui.pushButton1,SIGNAL("clicked()"),self.__buscar)
        self.connect(self.ui.pushButton2,SIGNAL("clicked()"),self.reject)