コード例 #1
0
    def __init__(self, parent, dato, config,gestorpaquetes):
        """Inicialización"""
        QtGui.QDialog.__init__(self, parent)
        self.ui=Ui_DialogoCrevar()
        self.ui.setupUi(self)
        #VARIABLES PRIVADAS
        self.__gestorpaquetes = gestorpaquetes
        self.__config = config
        self.__idu = dato
        self.ui.checkBox2.setDisabled(True)

        self.__init_lista_tipos()
        self.__conexiones()
コード例 #2
0
class DCrevar(QtGui.QDialog):
    """Dialogo de creación de variables, permite obtener nuevas variables a partir de las ya existentes"""

    def __init__(self, parent, dato, config,gestorpaquetes):
        """Inicialización"""
        QtGui.QDialog.__init__(self, parent)
        self.ui=Ui_DialogoCrevar()
        self.ui.setupUi(self)
        #VARIABLES PRIVADAS
        self.__gestorpaquetes = gestorpaquetes
        self.__config = config
        self.__idu = dato
        self.ui.checkBox2.setDisabled(True)

        self.__init_lista_tipos()
        self.__conexiones()
    #FUNCIONES PUBLICAS        

    def showEvent(self, ev):
        """Redefinición del showevent de qt"""
        self.__actualizar_cajas()
        QtGui.QDialog.showEvent(self, ev)
    
    def accept(self):
        """Función de aceptación del dialogo. 
        Avisa al usuario si los datos han sido introducidos incorrectamente, y genera"""
        if self.ui.lineEdit1.text():
            from Driza.excepciones import VariableExisteException
            sobreescritura = self.ui.checkBox1.isChecked()
            solofiltrado = False
            if sobreescritura:
                if self.ui.checkBox2.isChecked():
                    solofiltrado = True
            try:
                self.__idu.ana_var_expresion(self.ui.lineEdit1.text(), self.ui.comboBox1.currentText(), \
                        "NA", self.ui.lineEdit2.text(),self.ui.textEdit1.toPlainText(), \
                        permitirsobreescritura=sobreescritura, solofiltrados=solofiltrado)
            except (SyntaxError,NameError):
                #La expresión no es correcta, mostramos un mensaje de error
                LOG.exception("Excepción al añadir la variable con la expresión")
                QErrorMessage(self, "error").message(u"La expresión no es correcta")
                self.__idu.borrar_var(self.ui.lineEdit1.text().latin1()) #Borrar la variable que está a medias
            except (ZeroDivisionError,OverflowError):
                QErrorMessage(self, "error").message(u"La expresión genera un desbordamiento")
            except VariableExisteException:
                QMessageBox.warning(self, u"atención", u"La variable ya existe")
            except TypeError:
                QErrorMessage(self, "error").message(u"El tipo de variable no coincide con el existente")
                LOG.exception("Excepción al añadir la variable con la expresión")
            else:
                QtGui.QDialog.accept(self)
                self.parent().grid.myUpdate()
        else:
            returncode = QtGui.QMessageBox.warning(self, 'Atencion', \
                    'No has rellenado todos los campos', \
                    'Volver al dialogo', 'Salir', '', 0, 1 )
            if returncode == 1:
                self.reject()


    #FUNCIONES PRIVADAS
    def __conexiones(self):
        """Bloque de conexiones"""
        from PyQt4.QtCore import SIGNAL
        self.connect(self.ui.pushButton1,SIGNAL("clicked()"), self.accept)
        self.connect(self.ui.pushButton2,SIGNAL("clicked()"), self.reject)
        self.connect(self.ui.pushButton3,SIGNAL("clicked()"), self.__insertar_funcion_seleccionada)
        self.connect(self.ui.pushButton4,SIGNAL("clicked()"), self.__insertar_variable_seleccion)
        self.connect(self.ui.comboBox1,SIGNAL("activated(int)"),self.__actualizar_cajas)
        self.connect(self.ui.listWidget_2,SIGNAL("itemSelectionChanged()"), self.__actualizar_lista_funciones)
        self.connect(self.ui.pushButton5, SIGNAL("clicked()"), self.__insertar_simbolo_mas)
        self.connect(self.ui.pushButton6, SIGNAL("clicked()"), self.__insertar_simbolo_menos)
        self.connect(self.ui.pushButton7, SIGNAL("clicked()"), self.__insertar_simbolo_asterisco)
        self.connect(self.ui.pushButton8, SIGNAL("clicked()"), self.__insertar_simbolo_barra)
        self.connect(self.ui.pushButton9, SIGNAL("clicked()"), self.__insertar_simbolo_2_asteriscos)
        self.connect(self.ui.checkBox1, SIGNAL("clicked()"), self.__activar_checkbox2)

    def __actualizar_cajas(self):
        """Actualiza todas las cajas"""
        self.__actualizar_caja_vars()
        self.__actualizar_tipo_funciones()


    def __actualizar_caja_vars(self):
        """Actualiza la caja de variables disponibles"""
        self.ui.listWidget.clear()
        j=0
        for var in self.__idu.lista_tit():
            if cmp(self.ui.comboBox1.currentText(), self.__idu.var(j).tipo)==0:
                self.ui.listWidget.addItem(var)
            j+=1
    
    def __init_lista_tipos(self):
        """Rellena en el comboBox1 la lista de tipos de variables"""
        self.ui.comboBox1.clear()
        from Driza.listas import SL
        for tipo in SL.nombrevariables:
            self.ui.comboBox1.addItem(tipo)

    def __actualizar_tipo_funciones(self):
        """Actualiza la lista de tipo de funciones en funcion del tipo destino"""
        self.ui.listWidget_2.clear()
        for paquete in self.__gestorpaquetes.iterkeys():
            self.ui.listWidget_2.addItem(paquete)
    
    def __insertar_variable_seleccion(self): 
        """Coge el valor seleccionado y lo añade en la caja de texto"""
        if self.ui.listWidget.currentItem() != -1:
            texto = self.ui.listWidget.currentItem().text()
            self.ui.textEdit1.insertPlainText(texto)

    def __insertar_funcion_seleccionada(self):
        """Inserta la funcion seleccionada en la caja de texto"""
        if self.ui.listWidget_3.currentItem():
            texto = self.ui.listWidget_3.currentItem().text()
            self.ui.textEdit1.insertPlainText(texto)

    def __actualizar_lista_funciones(self):
        """Actualiza la lista de funciones en función del paquete seleccionado"""
        self.ui.listWidget_3.clear()
        if cmp(self.ui.listWidget_2.currentItem().text(), u"Aritméticas") == 0:
            #Estamos con las aritmeticas
            self.ui.listWidget_3.insertItem("+")
            self.listBox3.insertItem("-")
            self.listBox3.insertItem("*")
            self.listBox3.insertItem("/")
        elif cmp(self.ui.listWidget_2.currentItem().text(), u"Lógicas") == 0:
            self.listBox3.insertItem("and")
            self.listBox3.insertItem("or")
        else:
            lista = self.__gestorpaquetes[str(self.ui.listWidget_2.currentItem().text())].values()
            for funcion in lista:
                self.ui.listWidget_3.addItem(funcion.nombre)

    def __insertar_simbolo_mas(self): 
        """Inserta el simbolo de adición"""
        self.ui.textEdit1.insertPlainText("+")
    def __insertar_simbolo_menos(self): 
        """Inserta el simbolo de sustracción"""
        self.ui.textEdit1.insertPlainText("-")
    def __insertar_simbolo_asterisco(self): 
        """Inserta el simbolo de multiplicación"""
        self.ui.textEdit1.insertPlainText("*")
    def __insertar_simbolo_barra(self): 
        """Inserta el simbolo de división"""
        self.ui.textEdit1.insertPlainText("/")
    def __insertar_simbolo_2_asteriscos(self): 
        """Inserta el simbolo de potencia"""
        self.ui.textEdit1.insertPlainText("**")

    def __activar_checkbox2(self):
        """Determina si debe estar activo el segundo checkbox, y actualiza su estado"""
        if self.ui.checkBox1.isChecked(): 
            self.ui.checkBox2.setEnabled(True)
        else: 
            self.ui.checkBox2.setDisabled(True)