Esempio n. 1
0
    def __init__(self, iface, bar):
        QDialog.__init__(self)

        self.iface = iface
        self.bar = bar

        self.setModal(True)

        #Set layout
        self.layout = QGridLayout()
        self.setLayout(self.layout)


        #Create widgets
        self.nameUI = QLineEdit()
        self.autoNameUI = QCheckBox('Auto')

        self.layerUI = LSwidgetChooseLayer(self.iface)
        self.fieldUI = LSwidgetChooseField(self.iface)
        self.functionUI = QComboBox()
        self.filterUI = QLineEdit()
        self.filterDialogUI = QPushButton('editor')
        self.selectionUI = QCheckBox()

        self.precisionUI = QSpinBox()
        self.suffixUI = QLineEdit()
        self.factorUI = QLineEdit()
        self.separatorUI = QCheckBox()

        self.acceptUI = QPushButton('OK')
        self.deleteUI = QPushButton('Delete')
        self.cloneUI = QCheckBox('Copy')


        


        #Setup widgets
        self.nameUI.setMinimumWidth(300)
        self.autoNameUI.setChecked(True)

        self.functionUI.addItems(['Sum','Mean','Min','Max','NonNull','Count','Concat','UniqueConcat'])
        self.selectionUI.setChecked(True)


        self.precisionUI.setRange(-10,10)
        self.factorUI.setValidator(QDoubleValidator())

        self.acceptUI.setDefault(True)


        #Layout widgets
        self.layout.addWidget(QLabel('Name'),0,0)
        self.layout.addWidget(self.nameUI,0,1)
        self.layout.addWidget(self.autoNameUI,0,2)

        self.layout.addWidget(QLabel('Layer'),1,0)
        self.layout.addWidget(self.layerUI,1,1,1,2)

        self.layout.addWidget(QLabel('Function'),2,0)
        self.layout.addWidget(self.functionUI,2,1,1,2)

        self.layout.addWidget(QLabel('Field'),3,0)
        self.layout.addWidget(self.fieldUI,3,1,1,2)

        self.layout.addWidget(QLabel('Filter (where)'),4,0)
        self.layout.addWidget(self.filterUI,4,1)
        self.layout.addWidget(self.filterDialogUI,4,2)

        self.layout.addWidget(QLabel('Selection only'),5,0)
        self.layout.addWidget(self.selectionUI,5,1,1,2)

        self.layout.addWidget(QLabel('Precision, suffix, factor, separator'),6,0)
        subLayout = QGridLayout()
        subLayout.addWidget(self.precisionUI,0,0)
        subLayout.addWidget(self.suffixUI,0,1)
        subLayout.addWidget(self.factorUI,0,2)
        subLayout.addWidget(self.separatorUI,0,3)
        subLayout.setColumnStretch(0,1)
        subLayout.setColumnStretch(1,1)
        subLayout.setColumnStretch(2,1)
        subLayout.setColumnStretch(3,0)
        self.layout.addLayout(subLayout,6,1,1,2)

        self.layout.addWidget(self.deleteUI,9,0)
        self.layout.addWidget(self.acceptUI,9,1)
        self.layout.addWidget(self.cloneUI,9,2)



        #Connect signals
        # These are just for autoname
        QObject.connect(self.autoNameUI,SIGNAL("stateChanged(int)"),self.toggleAutoName)
        QObject.connect(self.layerUI,SIGNAL("currentIndexChanged(int)"),self.createName)
        QObject.connect(self.fieldUI,SIGNAL("currentIndexChanged(int)"),self.createName)
        QObject.connect(self.filterUI,SIGNAL("textChanged(QString)"),self.createName)
        QObject.connect(self.functionUI,SIGNAL("currentIndexChanged(int)"),self.createName)
        QObject.connect(self.selectionUI,SIGNAL("stateChanged(int)"),self.createName)

        # This makes the fields comboBox refresh when the user chooses a different layer
        QObject.connect(self.layerUI,SIGNAL("activated(int)"),self.choosedLayerChanged)

        # This opens the filter builder
        QObject.connect(self.filterDialogUI,SIGNAL("pressed()"),self.displayFilterBuilder)

        # Confirm or delete
        QObject.connect(self.acceptUI,SIGNAL("pressed()"),self.accept)

        QObject.connect(self.deleteUI,SIGNAL("pressed()"),self.delete)
Esempio n. 2
0
class LSeditor(QDialog):

    def __init__(self, iface, bar):
        QDialog.__init__(self)

        self.iface = iface
        self.bar = bar

        self.setModal(True)

        #Set layout
        self.layout = QGridLayout()
        self.setLayout(self.layout)


        #Create widgets
        self.nameUI = QLineEdit()
        self.autoNameUI = QCheckBox('Auto')

        self.layerUI = LSwidgetChooseLayer(self.iface)
        self.fieldUI = LSwidgetChooseField(self.iface)
        self.functionUI = QComboBox()
        self.filterUI = QLineEdit()
        self.filterDialogUI = QPushButton('editor')
        self.selectionUI = QCheckBox()

        self.precisionUI = QSpinBox()
        self.suffixUI = QLineEdit()
        self.factorUI = QLineEdit()
        self.separatorUI = QCheckBox()

        self.acceptUI = QPushButton('OK')
        self.deleteUI = QPushButton('Delete')
        self.cloneUI = QCheckBox('Copy')


        


        #Setup widgets
        self.nameUI.setMinimumWidth(300)
        self.autoNameUI.setChecked(True)

        self.functionUI.addItems(['Sum','Mean','Min','Max','NonNull','Count','Concat','UniqueConcat'])
        self.selectionUI.setChecked(True)


        self.precisionUI.setRange(-10,10)
        self.factorUI.setValidator(QDoubleValidator())

        self.acceptUI.setDefault(True)


        #Layout widgets
        self.layout.addWidget(QLabel('Name'),0,0)
        self.layout.addWidget(self.nameUI,0,1)
        self.layout.addWidget(self.autoNameUI,0,2)

        self.layout.addWidget(QLabel('Layer'),1,0)
        self.layout.addWidget(self.layerUI,1,1,1,2)

        self.layout.addWidget(QLabel('Function'),2,0)
        self.layout.addWidget(self.functionUI,2,1,1,2)

        self.layout.addWidget(QLabel('Field'),3,0)
        self.layout.addWidget(self.fieldUI,3,1,1,2)

        self.layout.addWidget(QLabel('Filter (where)'),4,0)
        self.layout.addWidget(self.filterUI,4,1)
        self.layout.addWidget(self.filterDialogUI,4,2)

        self.layout.addWidget(QLabel('Selection only'),5,0)
        self.layout.addWidget(self.selectionUI,5,1,1,2)

        self.layout.addWidget(QLabel('Precision, suffix, factor, separator'),6,0)
        subLayout = QGridLayout()
        subLayout.addWidget(self.precisionUI,0,0)
        subLayout.addWidget(self.suffixUI,0,1)
        subLayout.addWidget(self.factorUI,0,2)
        subLayout.addWidget(self.separatorUI,0,3)
        subLayout.setColumnStretch(0,1)
        subLayout.setColumnStretch(1,1)
        subLayout.setColumnStretch(2,1)
        subLayout.setColumnStretch(3,0)
        self.layout.addLayout(subLayout,6,1,1,2)

        self.layout.addWidget(self.deleteUI,9,0)
        self.layout.addWidget(self.acceptUI,9,1)
        self.layout.addWidget(self.cloneUI,9,2)



        #Connect signals
        # These are just for autoname
        QObject.connect(self.autoNameUI,SIGNAL("stateChanged(int)"),self.toggleAutoName)
        QObject.connect(self.layerUI,SIGNAL("currentIndexChanged(int)"),self.createName)
        QObject.connect(self.fieldUI,SIGNAL("currentIndexChanged(int)"),self.createName)
        QObject.connect(self.filterUI,SIGNAL("textChanged(QString)"),self.createName)
        QObject.connect(self.functionUI,SIGNAL("currentIndexChanged(int)"),self.createName)
        QObject.connect(self.selectionUI,SIGNAL("stateChanged(int)"),self.createName)

        # This makes the fields comboBox refresh when the user chooses a different layer
        QObject.connect(self.layerUI,SIGNAL("activated(int)"),self.choosedLayerChanged)

        # This opens the filter builder
        QObject.connect(self.filterDialogUI,SIGNAL("pressed()"),self.displayFilterBuilder)

        # Confirm or delete
        QObject.connect(self.acceptUI,SIGNAL("pressed()"),self.accept)

        QObject.connect(self.deleteUI,SIGNAL("pressed()"),self.delete)


    def show(self, bar):

        self.setWindowTitle( bar.name )

        self.nameUI.setText( bar.name )
        self.autoNameUI.setCheckState( bar.autoName )
        self.layerUI.rebuild( bar.layer )
        self.fieldUI.rebuild( bar.layer, bar.fieldName )
        self.filterUI.setText( bar.filter )
        self.functionUI.setCurrentIndex( max(0,self.functionUI.findText(bar.functionName)) )
        self.selectionUI.setCheckState( bar.selectedOnly )
        self.precisionUI.setValue( bar.precision )
        self.suffixUI.setText( bar.suffix )
        self.factorUI.setText( bar.factor )
        self.separatorUI.setCheckState( bar.separator )

        self.cloneUI.setCheckState( False )

        self.createName(0)

        QDialog.show(self)
        self.nameUI.setFocus()
        self.nameUI.selectAll()

    def choosedLayerChanged(self, index):
        currentLayer = self.layerUI.currentLayer()
        if currentLayer is None:
            currentLayer = self.iface.activeLayer()
        self.fieldUI.rebuild( currentLayer, None )

    def toggleAutoName(self, index):
        if not self.autoNameUI.checkState():
            self.nameUI.setEnabled(True)
        else:
            self.nameUI.setEnabled(False)
            self.createName(0)

    def displayFilterBuilder(self):
        expDlg = QgsSearchQueryBuilder( self.layerUI.currentLayer() )
        expDlg.setSearchString(  self.filterUI.text() )
        if expDlg.exec_():
            self.filterUI.setText(expDlg.searchString())


    def createName(self, index):
        if self.autoNameUI.checkState():
            func = self.functionUI.currentText()
            field = self.fieldUI.currentText()
            layer = self.layerUI.currentText()
            filt = self.filterUI.text()

            if self.selectionUI.checkState():
                sel = "'s selection"
            else:
                sel = ''
            if filt != '':
                filt = ' ('+filt+')'

            name = func + ' of ' + field + ' in ' + layer + sel + filt

            self.nameUI.setText(name)

    def delete(self):
        deleteDialog = QMessageBox()
        deleteDialog.setText('Are you sure you want to delete this LiveStat ?')
        deleteDialog.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
        deleteDialog.setModal(True)
        
        if deleteDialog.exec_() == QMessageBox.Ok:
            self.reject()
            self.bar.dialogDelete()