Beispiel #1
0
class Main:
    def __init__(self, iface):
        '''Construtor'''
        self.iface = iface
        self.isOpen = False

    def initGui(self):
        #CRIAR ACTIONS
        
        #INICIAR VARIÁEIS E SINAIS
        self.initVariables()
        self.initSignals()
        self.openWindow()
        self.isOpen = False
        
    def unload(self):
#        del self.toolbar
        pass
       
    def initVariables(self):
        self.msgBox = QMessageBox()
        self.canvas = self.iface.mapCanvas()
        self.auxiliar = AuxiliarDeclConv(self.iface)
        self.dockWindow = Interface(self.canvas, self.auxiliar)

    def initSignals(self):
        self.dockWindow.closeEvent = self.closeDock
    
    def initPlugin(self):
        pass
    
    def openWindow(self):
        if self.isOpen == False:
            self.iface.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockWindow)
            self.isOpen = True
            
    def closeDock(self, e):
        self.dockWindow.ativarButton.setChecked(False)
        del self.dockWindow
        self.isOpen = False

        # vertex_items = [ i for i in self.iface.mapCanvas().scene().items() if issubclass(type(i), QgsVertexMarker)]
        # for ver in vertex_items:
        #     if ver in self.iface.mapCanvas().scene().items():
        #         self.iface.mapCanvas().scene().removeItem(ver)

    
    def gerarGMS(self, ang):
        xg = format( math.modf( ang )[1], '.0f' )
        
        sign = -1 if ang < 0 else 1
        
        xm = format( sign * math.modf( math.modf( ang )[0] * 60 )[1], '.0f' )
        xs = format( sign * math.modf( math.modf( ang )[0] * 60 )[0] * 60, '.3f' )
        
        gms = str(xg) + "° " + str(xm) + u"' " + str(xs) + u'"'
        
        return gms
    
    def closeWindow(self, e):
        pass

    def showMessage(self, text):
        self.msgBox.setIcon(QMessageBox.Critical)
        self.msgBox.setWindowTitle("Erro")
        self.msgBox.setStandardButtons(QMessageBox.Ok)
        self.msgBox.setText(text)
        self.msgBox.exec_()
            
    def closeMsgBox(self, b):
        self.msgBox.close()
Beispiel #2
0
class Main:
    def __init__(self, iface):
        '''Construtor'''
        self.iface = iface
        self.initVariables()
        self.initSignals()

    def initGui(self):
        pass

    def unload(self):
        pass

    def initVariables(self):
        self.dialog = Interface()
        self.msgBox = QMessageBox()

    def initSignals(self):
        self.dialog.closeEvent = self.closeWindow
        self.msgBox.buttonClicked.connect(self.closeMsgBox)
        self.dialog.layersComboBox.layerChanged.connect(self.updateFields)
        self.dialog.convertButton.clicked.connect(self.doWork)

    def initPlugin(self):
        pass

    def executePlugin(self):
        hasVectorLayer = False
        for layer in self.iface.mapCanvas().layers():
            if layer.type() == QgsMapLayer.VectorLayer:
                hasVectorLayer = True
                break
        if hasVectorLayer:
            self.dialog.oldFieldComboBox.setLayer(
                self.dialog.layersComboBox.currentLayer())
            if (not self.dialog.oldFieldComboBox.currentField()):
                self.dialog.convertButton.setEnabled(False)
            self.dialog.oldFieldComboBox.fieldChanged.connect(
                self.doWorkButtonStatus)
            self.dialog.setEnabled(True)
            self.dialog.show()
        else:
            self.showMessage(
                u"Você precisa ter pelo menos uma camada vetorial carregada.")

    def doWorkButtonStatus(self, t):
        self.dialog.convertButton.setEnabled(True)

    def updateFields(self, l):
        layer = l
        if (l):
            self.dialog.oldFieldComboBox.setLayer(layer)
            self.dialog.convertButton.setEnabled(False)

    def closeWindow(self, e):
        #self.a.setChecked(False)
        pass

    def doWork(self, b):
        newFieldName = self.dialog.newFieldLineEdit.text()

        if (newFieldName == ''):
            self.showMessage(
                u"O nome do novo atributo não pode estar em branco.")
            return

        workingLayer = self.dialog.layersComboBox.currentLayer()
        workingField = self.dialog.oldFieldComboBox.currentField()
        fields = workingLayer.fields()
        theField = fields.field(workingField)

        if (not (theField.type() == QVariant.Double
                 or theField.type() == QVariant.LongLong)):
            self.showMessage(
                u"O atributo selecionado não é numérico. Selecione um atributo numérico para a conversão."
            )
            return

        for f in fields:
            if newFieldName == f.name():
                self.showMessage(
                    u"Já existe atributo com o nome escolhido. Defina outro nome."
                )
                return

        self.dialog.setEnabled(False)

        calculatorString = '(6400/360)*'
        newField = QgsField(newFieldName, QVariant.Double, "double", prec=5)
        workingLayer.addExpressionField(calculatorString + workingField,
                                        newField)

        msgBoxOK = QMessageBox()
        msgBoxOK.buttonClicked.connect(self.closeMsgBox)
        msgBoxOK.setWindowTitle(u"Informação")
        msgBoxOK.setIcon(QMessageBox.Information)
        msgBoxOK.setStandardButtons(QMessageBox.Ok)
        msgBoxOK.setText(u"Atributo convertido com sucesso!")
        msgBoxOK.exec_()
        self.dialog.close()

    def showMessage(self, text):
        self.msgBox.setIcon(QMessageBox.Critical)
        self.msgBox.setWindowTitle("Erro")
        self.msgBox.setStandardButtons(QMessageBox.Ok)
        self.msgBox.setText(text)
        self.msgBox.exec_()

    def closeMsgBox(self, b):
        self.msgBox.close()