def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdalinfo") # we don't need load to canvas functionality self.base.loadCheckBox.hide() # make window large self.base.resize(400, 360) self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.suppressGCPCheck, "stateChanged"), (self.suppressMDCheck, "stateChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) # helper actions for copying info output self.copyLine = QAction(self.tr("Copy"), self) self.copyLine.triggered.connect(self.doCopyLine) self.copyAll = QAction(self.tr("Copy all"), self) self.copyAll.triggered.connect(self.doCopyAll)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_rasterize") self.outSelector.setType(self.outSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.widthSpin.setValue(3000) self.heightSpin.setValue(3000) self.horizresSpin.setValue(1) self.vertresSpin.setValue(1) self.lastEncoding = Utils.getLastUsedEncoding() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.attributeComboBox, "currentIndexChanged"), ([self.widthSpin, self.heightSpin], "valueChanged"), ([self.horizresSpin, self.vertresSpin], "valueChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.inSelector.layerChanged.connect(self.fillFieldsCombo) self.radioSetSize.toggled.connect(self.someValueChanged) self.radioSetResolution.toggled.connect(self.someValueChanged)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "gdal_fillnodata.py") self.inSelector.setType(self.inSelector.FILE_LAYER) self.outSelector.setType(self.outSelector.FILE) self.maskSelector.setType(self.maskSelector.FILE) self.progressBar.setValue(0) self.progressBar.hide() self.formatLabel.hide() self.formatCombo.hide() self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.maskSelector, "filenameChanged", self.maskCheck), (self.distanceSpin, "valueChanged", self.distanceCheck), (self.smoothSpin, "valueChanged", self.smoothCheck), (self.bandSpin, "valueChanged", self.bandCheck), (self.nomaskCheck, "stateChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFile) self.outSelector.selectClicked.connect(self.fillOutputFile) self.maskSelector.selectClicked.connect(self.fillMaskFile) self.batchCheck.stateChanged.connect(self.switchToolMode) # add raster filters to combo self.formatCombo.addItems(Utils.FileFilter.allRastersFilter().split(";;"))
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_contour") gdalVersion = Utils.GdalConfig.versionNum() self.useDirAsOutput = gdalVersion < 1700 if self.useDirAsOutput: self.label_2.setText(QApplication.translate("GdalToolsWidget", "&Output directory for contour lines (shapefile)")) self.outSelector.setType(self.outSelector.FILE) self.outputFormat = Utils.fillVectorOutputFormat() # set the default QSpinBoxes value self.intervalDSpinBox.setValue(10.0) self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.intervalDSpinBox, "valueChanged"), (self.attributeEdit, "textChanged", self.attributeCheck) ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "pct2rgb.py") # we use one widget for two tools self.base.setWindowTitle(self.tr("Convert paletted image to RGB")) self.outSelector.setType(self.outSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.bandSpin.setValue(1) self.progressBar.setValue(0) self.progressBar.hide() self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.colorsSpin, "valueChanged", self.colorsCheck, "-1"), # hide this option (self.bandSpin, "valueChanged", self.bandCheck) ]) self.inSelector.selectClicked.connect(self.fillInputFile) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.batchCheck.stateChanged.connect(self.switchToolMode)
def __init__(self): QWidget.__init__(self) self.setWindowTitle(self.tr('Qdraw - Settings')) self.setFixedSize(320, 100) self.center() # default color self.color = QColor(60, 151, 255, 255) self.sld_opacity = QSlider(Qt.Horizontal, self) self.sld_opacity.setRange(0, 255) self.sld_opacity.setValue(255) self.sld_opacity.tracking = True self.sld_opacity.valueChanged.connect(self.handler_opacitySliderValue) self.lbl_opacity = QLabel(self.tr('Opacity') + ': 100%', self) self.dlg_color = QColorDialog(self) btn_chColor = QPushButton(self.tr('Change the drawing color'), self) btn_chColor.clicked.connect(self.handler_chColor) vbox = QVBoxLayout() vbox.addWidget(self.lbl_opacity) vbox.addWidget(self.sld_opacity) vbox.addWidget(btn_chColor) self.setLayout(vbox)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_merge.py") self.inSelector.setType(self.inSelector.FILE) self.outSelector.setType(self.outSelector.FILE) self.recurseCheck.hide() # use this for approx. previous UI #self.creationOptionsWidget.setType(QgsRasterFormatSaveOptionsWidget.Table) self.outputFormat = Utils.fillRasterOutputFormat() self.extent = None self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.noDataSpin, "valueChanged", self.noDataCheck), (self.inputDirCheck, "stateChanged"), (self.recurseCheck, "stateChanged", self.inputDirCheck), (self.separateCheck, "stateChanged"), (self.pctCheck, "stateChanged"), (self.intersectCheck, "stateChanged"), (self.creationOptionsWidget, "optionsChanged"), (self.creationOptionsGroupBox, "toggled") ]) self.inSelector.selectClicked.connect(self.fillInputFilesEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.intersectCheck.toggled.connect(self.refreshExtent) self.inputDirCheck.stateChanged.connect(self.switchToolMode) self.inSelector.filenameChanged.connect(self.refreshExtent)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.resampling_method = ('nearest', 'average', 'gauss', 'cubic', 'average_mp', 'average_magphase', 'mode') self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "gdaladdo") # set the default QSpinBoxes and QProgressBar value self.progressBar.setValue(0) self.progressBar.hide() # we don't need load to canvas functionality self.base.loadCheckBox.hide() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.cleanCheck, "stateChanged", None, 1700), (self.mPyramidOptionsWidget, "overviewListChanged"), (self.mPyramidOptionsWidget, "someValueChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFile) self.batchCheck.stateChanged.connect(self.switchToolMode) self.init = False # workaround bug that pyramid options widgets are not initialized at first
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.resolutions = ("highest", "average", "lowest") self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdalbuildvrt") self.inSelector.setType(self.inSelector.FILE) self.outSelector.setType(self.outSelector.FILE) self.recurseCheck.hide() self.visibleRasterLayers = [] self.setParamsStatus( [ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.resolutionComboBox, "currentIndexChanged", self.resolutionCheck), (self.noDataEdit, "textChanged", self.srcNoDataCheck, 1700), (self.inputDirCheck, "stateChanged"), (self.separateCheck, "stateChanged", None, 1700), (self.targetSRSEdit, "textChanged", self.targetSRSCheck), (self.allowProjDiffCheck, "stateChanged", None, 1700), (self.recurseCheck, "stateChanged", self.inputDirCheck), (self.inputSelLayersCheck, "stateChanged") ] ) self.inSelector.selectClicked.connect(self.fillInputFilesEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.inputDirCheck.stateChanged.connect(self.switchToolMode) self.inputSelLayersCheck.stateChanged.connect(self.switchLayerMode) self.iface.mapCanvas().layersChanged.connect(self.switchLayerMode) self.selectTargetSRSButton.clicked.connect(self.fillTargetSRSEdit)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "rgb2pct.py") self.outSelector.setType(self.outSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.colorsSpin.setValue(2) self.progressBar.setValue(0) self.progressBar.hide() self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.colorsSpin, "valueChanged", self.colorsCheck), (self.bandSpin, "valueChanged", self.bandCheck, "-1") # hide this option ]) self.inSelector.selectClicked.connect(self.fillInputFile) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.batchCheck.stateChanged.connect(self.switchToolMode)
def __init__(self, layer, geometry): QWidget.__init__(self) self.geomType = layer.geometryType() self.layer = layer self.initialGeom = QgsGeometry(geometry) layer.editingStopped.connect(self.layerEditable) layer.editingStarted.connect(self.layerEditable)
def __init__(self, parent=None): """Constructor. :param parent: parent - widget to use as parent. :type parent: safe.gui.tools.wizard.wizard_dialog.WizardDialog """ QWidget.__init__(self, parent) self.parent = parent self.setupUi(self) self.keyword_io = KeywordIO()
def __init__(self, parent=None): QWidget.__init__(self, parent) self.setupUi(self) self.table.cellChanged.connect(self.cellValueChanged) self.table.itemSelectionChanged.connect(self.enableDeleteButton) self.btnAdd.clicked.connect(self.addNewRow) self.btnDel.clicked.connect(self.deleteRow) self.btnDel.setEnabled(False)
def __init__(self): QWidget.__init__(self) layout = QVBoxLayout() labelName = QLabel("Name") labelGroup = QLabel("Group") self.txtName = QLineEdit() self.txtGroup = QLineEdit() layout.addWidget(labelName) layout.addWidget(self.txtName) layout.addWidget(labelGroup) layout.addWidget(self.txtGroup) layout.addStretch() self.setLayout(layout)
def __init__(self, parent=None): """Constructor :param parent: parent - widget to use as parent. :type parent: QWidget """ QWidget.__init__(self, parent) self.parent = parent self.setupUi(self) self.wizard_step = None self.next_button_state = False self.back_button_state = False
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.canvas = self.iface.mapCanvas() self.expand_method = ("gray", "rgb", "rgba") self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "gdal_translate") self.outSelector.setType(self.outSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.outsizeSpin.setValue(25) self.progressBar.setValue(0) self.progressBar.hide() self.formatLabel.hide() self.formatCombo.hide() if Utils.GdalConfig.versionNum() < 1700: index = self.expandCombo.findText("gray", Qt.MatchFixedString) if index >= 0: self.expandCombo.removeItem(index) self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus( [ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.targetSRSEdit, "textChanged", self.targetSRSCheck), (self.selectTargetSRSButton, None, self.targetSRSCheck), (self.creationOptionsWidget, "optionsChanged"), (self.outsizeSpin, "valueChanged", self.outsizeCheck), (self.nodataSpin, "valueChanged", self.nodataCheck), (self.expandCombo, "currentIndexChanged", self.expandCheck, 1600), (self.sdsCheck, "stateChanged"), (self.srcwinEdit, "textChanged", self.srcwinCheck), (self.prjwinEdit, "textChanged", self.prjwinCheck), ] ) # self.canvas.layersChanged.connect(self.fillInputLayerCombo) self.inSelector.layerChanged.connect(self.fillTargetSRSEditDefault) self.inSelector.selectClicked.connect(self.fillInputFile) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.selectTargetSRSButton.clicked.connect(self.fillTargetSRSEdit) self.batchCheck.stateChanged.connect(self.switchToolMode) # add raster filters to combo self.formatCombo.addItems(Utils.FileFilter.allRastersFilter().split(";;"))
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.modes = ("hillshade", "slope", "aspect", "color-relief", "TRI", "TPI", "roughness") self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdaldem") self.outSelector.setType(self.outSelector.FILE) self.configSelector.setType(self.configSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.bandSpin.setValue(1) self.hillshadeZFactorSpin.setValue(1) self.hillshadeScaleSpin.setValue(1) self.hillshadeAltitudeSpin.setValue(45.0) self.hillshadeAzimuthSpin.setValue(315.0) self.slopeScaleSpin.setValue(1) # set the default color configuration file to terrain import os.path colorConfigFile = os.path.join(os.path.dirname(__file__), "terrain.txt") self.configSelector.setFilename(colorConfigFile) self.outputFormat = Utils.fillRasterOutputFormat() self.creationOptionsWidget.setFormat(self.outputFormat) self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.computeEdgesCheck, "stateChanged", None, 1800), (self.bandSpin, "valueChanged", self.bandCheck), (self.algorithmCheck, "stateChanged", None, 1800), (self.creationOptionsWidget, "optionsChanged"), (self.creationOptionsGroupBox, "toggled"), (self.modeCombo, "currentIndexChanged"), ([self.hillshadeZFactorSpin, self.hillshadeScaleSpin, self.hillshadeAltitudeSpin, self.hillshadeAzimuthSpin], "valueChanged"), (self.slopeScaleSpin, "valueChanged"), (self.slopePercentCheck, "stateChanged"), ([self.aspectTrigonometricCheck, self.aspectZeroForFlatCheck], "stateChanged"), (self.configSelector, "filenameChanged"), ([self.colorExactRadio, self.colorNearestRadio], "toggled", self.colorMatchGroupBox), (self.colorAlphaCheck, "stateChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.configSelector.selectClicked.connect(self.fillColorConfigFileEdit) self.modeCombo.currentIndexChanged.connect(self.showModeParams)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.canvas = None self.tool = None self.previousMapTool = None self.isStarted = False self.setupUi(self) self.x1CoordEdit.textChanged.connect(self.coordsChanged) self.x2CoordEdit.textChanged.connect(self.coordsChanged) self.y1CoordEdit.textChanged.connect(self.coordsChanged) self.y2CoordEdit.textChanged.connect(self.coordsChanged) self.btnEnable.clicked.connect(self.start)
def __init__(self, iface, dockwidget, olLayerTypeRegistry): QWidget.__init__(self) Ui_Form.__init__(self) self.setupUi(self) self.__canvas = iface.mapCanvas() self.__dockwidget = dockwidget self.__olLayerTypeRegistry = olLayerTypeRegistry self.__initLayerOL = False self.__fileNameImg = '' self.__srsOL = QgsCoordinateReferenceSystem( 3857, QgsCoordinateReferenceSystem.EpsgCrsId) self.__marker = MarkerCursor(self.__canvas, self.__srsOL) self.__manager = None # Need persist for PROXY bindogr.initOgr() self.__init()
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.canvas = self.iface.mapCanvas() self.algorithm = ('invdist', 'average', 'nearest', 'datametrics') self.datametrics = ('minimum', 'maximum', 'range') self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_grid") self.outSelector.setType(self.outSelector.FILE) self.extentSelector.setCanvas(self.canvas) #self.extentSelector.stop() # set the default QSpinBoxes and QProgressBar value self.widthSpin.setValue(3000) self.heightSpin.setValue(3000) self.invdistPowerSpin.setValue(2.0) self.outputFormat = Utils.fillRasterOutputFormat() self.lastEncoding = Utils.getLastUsedEncoding() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.zfieldCombo, "currentIndexChanged", self.zfieldCheck), (self.algorithmCombo, "currentIndexChanged", self.algorithmCheck), (self.stackedWidget, None, self.algorithmCheck), ([self.invdistPowerSpin, self.invdistSmothingSpin, self.invdistRadius1Spin, self.invdistRadius2Spin, self.invdistAngleSpin, self.invdistNoDataSpin], "valueChanged"), ([self.invdistMaxPointsSpin, self.invdistMinPointsSpin], "valueChanged"), ([self.averageRadius1Spin, self.averageRadius2Spin, self.averageAngleSpin, self.averageNoDataSpin], "valueChanged"), (self.averageMinPointsSpin, "valueChanged"), ([self.nearestRadius1Spin, self.nearestRadius2Spin, self.nearestAngleSpin, self.nearestNoDataSpin], "valueChanged"), (self.datametricsCombo, "currentIndexChanged"), ([self.datametricsRadius1Spin, self.datametricsRadius2Spin, self.datametricsAngleSpin, self.datametricsNoDataSpin], "valueChanged"), (self.datametricsMinPointsSpin, "valueChanged"), (self.extentSelector, ["selectionStarted", "newExtentDefined"], self.extentGroup), ([self.widthSpin, self.heightSpin], "valueChanged", self.resizeGroupBox) ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.inSelector.layerChanged.connect(self.fillFieldsCombo) self.extentGroup.toggled.connect(self.onExtentCheckedChanged)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_sieve.py") self.outSelector.setType(self.outSelector.FILE) self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.thresholdSpin, "valueChanged", self.thresholdCheck), (self.connectionsCombo, "currentIndexChanged", self.connectionsCheck) ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit)
def __init__(self, parent=None, type=None): QWidget.__init__(self, parent) self.setupUi(self) self.setFocusPolicy(Qt.StrongFocus) self.combo.setInsertPolicy(QComboBox.NoInsert) self.clear() self.typ = None if type is None: self.resetType() else: self.setType(type) self.selectBtn.clicked.connect(self.selectClicked) self.fileEdit.textChanged.connect(self.textChanged) self.combo.editTextChanged.connect(self.textChanged) self.combo.currentIndexChanged.connect(self.indexChanged)
def __init__(self, parent=None): QWidget.__init__(self, parent) # create gui self.btnSelect = QToolButton() self.btnSelect.setText('…') self.lineEdit = QLineEdit() self.hbl = QHBoxLayout() self.hbl.setMargin(0) self.hbl.setSpacing(0) self.hbl.addWidget(self.lineEdit) self.hbl.addWidget(self.btnSelect) self.setLayout(self.hbl) self.canFocusOut = False self.setFocusPolicy(Qt.StrongFocus) self.btnSelect.clicked.connect(self.select)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.resampling_method = ("near", "bilinear", "cubic", "cubicspline", "lanczos") self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "gdalwarp") self.outSelector.setType(self.outSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.widthSpin.setValue(3000) self.heightSpin.setValue(3000) self.progressBar.setValue(0) self.progressBar.hide() self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus( [ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.sourceSRSEdit, "textChanged", self.sourceSRSCheck), (self.selectSourceSRSButton, None, self.sourceSRSCheck), (self.targetSRSEdit, "textChanged", self.targetSRSCheck), (self.selectTargetSRSButton, None, self.targetSRSCheck), (self.resamplingCombo, "currentIndexChanged", self.resamplingCheck), (self.cacheSpin, "valueChanged", self.cacheCheck), ([self.widthSpin, self.heightSpin], "valueChanged", self.resizeGroupBox), (self.multithreadCheck, "stateChanged"), (self.noDataEdit, "textChanged", self.noDataCheck), (self.maskSelector, "filenameChanged", self.maskCheck, 1600), ] ) self.inSelector.layerChanged.connect(self.fillSourceSRSEditDefault) self.inSelector.selectClicked.connect(self.fillInputFile) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.selectSourceSRSButton.clicked.connect(self.fillSourceSRSEdit) self.selectTargetSRSButton.clicked.connect(self.fillTargetSRSEdit) self.maskSelector.selectClicked.connect(self.fillMaskFile) self.batchCheck.stateChanged.connect(self.switchToolMode)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.setupUi(self) self.legendCheck.hide() self.smoothCheck.hide() self.refreshScaleButton.setIcon( QIcon( ":/pstimeseries_plugin/icons/refresh" ) ) # limits group #self.connect(self.minDateEdit, SIGNAL("dateChanged(const QDate &)"), self.updateLimits) #self.connect(self.maxDateEdit, SIGNAL("dateChanged(const QDate &)"), self.updateLimits) #self.connect(self.minYEdit, SIGNAL("valueChanged(const QString &)"), self.updateLimits) #self.connect(self.minYEdit, SIGNAL("valueChanged(const QString &)"), self.updateLimits) self.refreshScaleButton.clicked.connect(self.updateLimits) # replica group self.replicaUpCheck.toggled.connect(self.updateReplicas) self.replicaDownCheck.toggled.connect(self.updateReplicas) self.replicaDistEdit.textChanged.connect(self.updateReplicas) # labels group self.xLabelEdit.textChanged.connect(self.updateLabels) self.yLabelEdit.textChanged.connect(self.updateLabels) # title group for i in range(3): edit = getattr(self, "titleParam%dEdit" % i) edit.textChanged.connect(self.updateTitle) combo = getattr(self, "titleParam%dCombo" % i) combo.currentIndexChanged.connect(self.updateTitle) # options group self.hGridCheck.toggled.connect(self.updateGrids) self.vGridCheck.toggled.connect(self.updateGrids) self.labelsCheck.toggled.connect(self.updateLabels) self.linesCheck.toggled.connect(self.updateOptions) self.linRegrCheck.toggled.connect(self.updateOptions) self.polyRegrCheck.toggled.connect(self.updateOptions) self.detrendingCheck.toggled.connect(self.updateOptions) self.smoothCheck.toggled.connect(self.updateOptions) self.legendCheck.toggled.connect(self.updateOptions)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdaltindex") self.inSelector.setType(self.inSelector.FILE) self.outSelector.setType(self.outSelector.FILE) self.setParamsStatus([ (self.inSelector, "filenameChanged"), #( self.recurseCheck, "stateChanged" ), (self.outSelector, "filenameChanged"), (self.indexFieldEdit, "textChanged", self.indexFieldCheck), (self.skipDifferentProjCheck, "stateChanged", None, 1500) ]) self.inSelector.selectClicked.connect(self.fillInputDirEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit)
def __init__(self, parent=None, selectFile=False): QWidget.__init__(self, parent) # create gui self.btnSelect = QToolButton() self.btnSelect.setText('…') self.lineEdit = QLineEdit() self.hbl = QHBoxLayout() self.hbl.setMargin(0) self.hbl.setSpacing(0) self.hbl.addWidget(self.lineEdit) self.hbl.addWidget(self.btnSelect) self.setLayout(self.hbl) self.canFocusOut = False self.selectFile = selectFile self.setFocusPolicy(Qt.StrongFocus) self.btnSelect.clicked.connect(self.select)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.canvas = QMatplotlibCanvas() self.ax = self.canvas.ax self.figure = self.canvas.figure self.toolBar = NavigationToolbar2QT(self.canvas, self) bgColor = self.palette().color(QPalette.Background).name() self.figure.set_facecolor(bgColor) self.layout = QVBoxLayout() self.layout.setSpacing(2) self.layout.setMargin(0) self.layout.addWidget(self.toolBar) self.layout.addWidget(self.canvas) self.setLayout(self.layout) self._setupToolbar()
def __init__(self, parent=None): QWidget.__init__(self, parent) self.setupUi(self) self.legendCheck.hide() self.smoothCheck.hide() self.refreshScaleButton.setIcon( QIcon(":/pstimeseries_plugin/icons/refresh")) # limits group #self.connect(self.minDateEdit, SIGNAL("dateChanged(const QDate &)"), self.updateLimits) #self.connect(self.maxDateEdit, SIGNAL("dateChanged(const QDate &)"), self.updateLimits) #self.connect(self.minYEdit, SIGNAL("valueChanged(const QString &)"), self.updateLimits) #self.connect(self.minYEdit, SIGNAL("valueChanged(const QString &)"), self.updateLimits) self.refreshScaleButton.clicked.connect(self.updateLimits) # replica group self.replicaUpCheck.toggled.connect(self.updateReplicas) self.replicaDownCheck.toggled.connect(self.updateReplicas) self.replicaDistEdit.textChanged.connect(self.updateReplicas) # labels group self.xLabelEdit.textChanged.connect(self.updateLabels) self.yLabelEdit.textChanged.connect(self.updateLabels) # title group for i in range(3): edit = getattr(self, "titleParam%dEdit" % i) edit.textChanged.connect(self.updateTitle) combo = getattr(self, "titleParam%dCombo" % i) combo.currentIndexChanged.connect(self.updateTitle) # options group self.hGridCheck.toggled.connect(self.updateGrids) self.vGridCheck.toggled.connect(self.updateGrids) self.labelsCheck.toggled.connect(self.updateLabels) self.linesCheck.toggled.connect(self.updateOptions) self.linRegrCheck.toggled.connect(self.updateOptions) self.polyRegrCheck.toggled.connect(self.updateOptions) self.detrendingCheck.toggled.connect(self.updateOptions) self.smoothCheck.toggled.connect(self.updateOptions) self.legendCheck.toggled.connect(self.updateOptions)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.resampling_method = ('near', 'bilinear', 'cubic', 'cubicspline', 'lanczos') self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "gdalwarp") self.outSelector.setType(self.outSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.widthSpin.setValue(3000) self.heightSpin.setValue(3000) self.progressBar.setValue(0) self.progressBar.hide() self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.sourceSRSEdit, "textChanged", self.sourceSRSCheck), (self.selectSourceSRSButton, None, self.sourceSRSCheck), (self.targetSRSEdit, "textChanged", self.targetSRSCheck), (self.selectTargetSRSButton, None, self.targetSRSCheck), (self.resamplingCombo, "currentIndexChanged", self.resamplingCheck), (self.cacheSpin, "valueChanged", self.cacheCheck), ([self.widthSpin, self.heightSpin], "valueChanged", self.resizeGroupBox), (self.multithreadCheck, "stateChanged"), (self.noDataEdit, "textChanged", self.noDataCheck), (self.maskSelector, "filenameChanged", self.maskCheck, 1600), ]) self.inSelector.layerChanged.connect(self.fillSourceSRSEditDefault) self.inSelector.selectClicked.connect(self.fillInputFile) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.selectSourceSRSButton.clicked.connect(self.fillSourceSRSEdit) self.selectTargetSRSButton.clicked.connect(self.fillTargetSRSEdit) self.maskSelector.selectClicked.connect(self.fillMaskFile) self.batchCheck.stateChanged.connect(self.switchToolMode)
def __init__(self, dialog, server, user, repo, graph, layer=None, initialSimplify=False): self.graph = graph self.dialog = dialog self.server = server self.user = user self.repo = repo self.layer = layer self.afterLayer = None self.beforeLayer = None self.extraLayers = [] # layers for the "Map" tab QWidget.__init__(self, iface.mainWindow()) self.setWindowFlags(Qt.Window) self.simplifyLog = initialSimplify self.initGui() self.tabWidget.setVisible(False) self.setLabelText("Select a commit to show its content") self.label.setVisible(False) if self.graph.commits: self.history.setCurrentItem(self.history.topLevelItem(0)) self.itemChanged(self.history.topLevelItem(0), None) self.history.currentItemChanged.connect(self.itemChanged)
def __init__(self, history): QWidget.__init__(self) self.history = history self.history.historyChanged.connect(self.historyChanged) self.graph = history.graph hlayout = QHBoxLayout() self.searchBox = QgsFilterLineEdit() self.searchBox.setPlaceholderText("Enter text or date to filter") self.searchBox.textChanged.connect(self.filterCommits) hlayout.addWidget(self.searchBox) self.simplifyLog = False self.simplifyButton = QPushButton("Show Simplified History") self.simplifyButton.clicked.connect(self.simplifyButtonClicked) hlayout.addWidget(self.simplifyButton) layout = QVBoxLayout() layout.setMargin(0) layout.addLayout(hlayout) layout.addWidget(history) self.setLayout(layout)
def __init__(self, title, data, parent=None): QWidget.__init__(self, parent) self.setWindowTitle("Geology log viewer") formLayout = QFormLayout() # id titleW = QLineEdit(title, self) titleW.setReadOnly(True) formLayout.addRow("Description", titleW) # the plot layout = QVBoxLayout() self.plot = PlotView(self) layout.addLayout(formLayout) layout.addWidget(self.plot) self.setLayout(layout) self.plot.setData(data) self.resize(800, 600)
def __init__(self, composer_wrapper, frame_item, parent=None): QWidget.__init__(self, parent) self.setupUi(self) self._composer_wrapper = composer_wrapper if isinstance(frame_item, QgsComposerFrame): self._composer_table_item = frame_item.multiFrame() else: self._composer_table_item = frame_item self._notif_bar = NotificationBar(self.vl_notification) # Load fields if the data source has been specified ds_name = self._composer_wrapper.selectedDataSource() self.ref_table.load_data_source_fields(ds_name) # Load source tables self.ref_table.load_link_tables() # Connect signals self._composer_wrapper.dataSourceSelected.connect(self.ref_table.on_data_source_changed)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_proximity.py") self.outSelector.setType(self.outSelector.FILE) self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus( [(self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.valuesEdit, "textChanged", self.valuesCheck), (self.distUnitsCombo, "currentIndexChanged", self.distUnitsCheck), (self.maxDistSpin, "valueChanged", self.maxDistCheck), (self.noDataSpin, "valueChanged", self.noDataCheck), (self.fixedBufValSpin, "valueChanged", self.fixedBufValCheck)]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "nearblack") self.outSelector.setType(self.outSelector.FILE) # set the default QSpinBoxes value self.nearSpin.setValue(15) self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.nearSpin, "valueChanged", self.nearCheck), (self.whiteCheckBox, "stateChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.resolutions = ("highest", "average", "lowest") self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_polygonize.py") self.outSelector.setType(self.outSelector.FILE) self.outputFormat = Utils.fillVectorOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.maskSelector, "filenameChanged", self.maskCheck), (self.fieldEdit, "textChanged", self.fieldCheck) ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.maskSelector.selectClicked.connect(self.fillMaskFileEdit)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "gdal_translate") self.inSelector.setType(self.inSelector.FILE) # set the default QSpinBoxes and QProgressBar value self.progressBar.setValue(0) self.progressBar.hide() self.recurseCheck.hide() self.setParamsStatus([(self.inSelector, "filenameChanged"), (self.desiredSRSEdit, "textChanged")]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.selectDesiredSRSButton.clicked.connect(self.fillDesiredSRSEdit) self.batchCheck.stateChanged.connect(self.switchToolMode) self.recurseCheck.stateChanged.connect(self.enableRecurse)
def __init__(self, parent=None, State=VIEW): QWidget.__init__(self, parent) self.setupUi(self) self.btnRemove.setIcon(GuiUtils.get_icon('remove.png')) self.btnClear.setIcon(GuiUtils.get_icon('reset.png')) self.btnAdd.setIcon(GuiUtils.get_icon('add.png')) self._defaultEditTriggers = self.tvAdminUnits.editTriggers() self._state = State self._onStateChange() self._notifBar = NotificationBar(self.vlNotification) # Configure validating line edit controls # invalidMsg = "{} already exists." # self.txtUnitCode.setModelAttr(AdminSpatialUnitSet,"Code") # self.txtUnitCode.setInvalidMessage(invalidMsg) # self.txtUnitCode.setNotificationBar(self._notifBar) ''' Initialize formatter for the rendering the admin unit nodes and insert the root node into the tree view model. ''' self._adminUnitNodeFormatter = AdminUnitFormatter( self.tvAdminUnits, self) self._rtNode = self._adminUnitNodeFormatter.rootNode self._adminUnitTreeModel = STRTreeViewModel( self._adminUnitNodeFormatter.root(), view=self.tvAdminUnits) self.tvAdminUnits.setModel(self._adminUnitTreeModel) self.tvAdminUnits.hideColumn(2) self.tvAdminUnits.setColumnWidth(0, 220) self.tvAdminUnits.expandAll() # Connects slots self.btnAdd.clicked.connect(self.onCreateAdminUnit) self.btnClear.clicked.connect(self.onClearSelection) self.btnRemove.clicked.connect(self.onDeleteSelection) self._adminUnitTreeModel.dataChanged.connect(self.onModelDataChanged)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_proximity.py") self.outSelector.setType(self.outSelector.FILE) self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.valuesEdit, "textChanged", self.valuesCheck), (self.distUnitsCombo, "currentIndexChanged", self.distUnitsCheck), (self.maxDistSpin, "valueChanged", self.maxDistCheck), (self.noDataSpin, "valueChanged", self.noDataCheck), (self.fixedBufValSpin, "valueChanged", self.fixedBufValCheck) ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) self._vboxLayout = QVBoxLayout(self) self._vboxLayout.setMargin(0) self._cboItem = QComboBox(self) self._cboItem.setMinimumSize(QSize(0, 30)) self._vboxLayout.addWidget(self._cboItem) self._txtOther = QLineEdit(self) self._txtOther.setMinimumSize(QSize(0, 30)) self._txtOther.setVisible(False) self._vboxLayout.addWidget(self._txtOther) # We are using random text here so that the custom line edit is not shown on selecting a blank item in the list. self._activatorText = QApplication.translate("ComboBoxWithOther", "Other") # Connect signals self._cboItem.currentIndexChanged[str].connect( self.onComboIndexChanged)
def __init__(self, plugIn, parent, size, transparency, windowFlags=Qt.Widget): self.plugIn = plugIn self.size = size self.transparency = transparency QWidget.__init__(self, parent, windowFlags) self.edit1 = QTextEdit(self) self.edit1.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.edit1.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.edit1.insertPlainText("12.3456") self.edit1.setReadOnly(True) self.edit2 = QTextEdit(self) self.edit2.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.edit2.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.edit2.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.edit2.insertPlainText("78.9012") self.edit2.setReadOnly(True)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdalinfo") # we don't need load to canvas functionality self.base.loadCheckBox.hide() # make window large self.base.resize(400, 360) self.setParamsStatus([(self.inSelector, "filenameChanged"), (self.suppressGCPCheck, "stateChanged"), (self.suppressMDCheck, "stateChanged")]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) # helper actions for copying info output self.copyLine = QAction(self.tr("Copy"), self) self.copyLine.triggered.connect(self.doCopyLine) self.copyAll = QAction(self.tr("Copy all"), self) self.copyAll.triggered.connect(self.doCopyAll)
def __init__(self, entity_supporting_document, supporting_doc_model_cls, parent=None): """ Class constructor. :param entity_supporting_document: Object containing information pertaining to document types, parent entity etc. :type entity_supporting_document: EntitySupportingDocument :param supporting_doc_model_cls: Class representing the data model corresponding to the entity supporting document object. :type supporting_doc_model_cls: object :param parent: Parent container widget. :type parent: QWidget """ QWidget.__init__(self, parent) self._init_gui() self._entity_supporting_doc = entity_supporting_document # Container for document type widgets based on lookup id self._doc_type_widgets = {} # Init document manager self.source_document_manager = SourceDocumentManager( self._entity_supporting_doc, supporting_doc_model_cls, self) self._load_document_types() # Connect signals self._btn_add_document.clicked.connect( self._on_add_supporting_document) self._cbo_doc_type.currentIndexChanged.connect( self.on_doc_type_changed) self._doc_tab_container.currentChanged.connect( self.on_tab_doc_type_changed)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.canvas = self.iface.mapCanvas() self.setupUi(self) BasePluginWidget.__init__(self, self.iface, "gdal_translate") self.outSelector.setType(self.outSelector.FILE) self.extentSelector.setCanvas(self.canvas) self.outputFormat = Utils.fillRasterOutputFormat() # set the default QDoubleSpinBoxes self.xRes.setValue(12.5) self.yRes.setValue(12.5) self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.noDataSpin, "valueChanged", self.noDataCheck, 1700), (self.maskSelector, "filenameChanged", self.maskModeRadio, 1600), (self.alphaBandCheck, "stateChanged"), (self.cropToCutlineCheck, "stateChanged"), ([self.xRes, self.yRes], "valueChanged", self.setResolutionRadio), (self.extentSelector, ["selectionStarted", "newExtentDefined"], self.extentModeRadio), (self.modeStackedWidget, "currentChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFileEdit) self.outSelector.selectClicked.connect(self.fillOutputFileEdit) self.maskSelector.selectClicked.connect(self.fillMaskFileEdit) self.extentSelector.newExtentDefined.connect(self.extentChanged) self.extentSelector.selectionStarted.connect(self.checkRun) self.extentModeRadio.toggled.connect(self.switchClippingMode) self.keepResolutionRadio.toggled.connect(self.switchResolutionMode)
def __init__( self, document_model=None, fileManager=None, mode=UPLOAD_MODE, parent=None, canRemove=True, view_manager=None ): QWidget.__init__(self, parent) self.setupUi(self) self.lblClose.setPixmap(GuiUtils.get_icon_pixmap('close.png')) self.initGui() self.fileInfo = None self.fileUUID = None self.document_model = document_model self.fileManager = fileManager self._mode = mode self._displayName = "" self._docSize = 0 self._srcDoc = None self._fileName = "" self._canRemove = canRemove self._view_manager = view_manager self.curr_profile = current_profile() self.removed_doc = [] self.lblClose.installEventFilter(self) self.lblName.installEventFilter(self) self._source_entity = "" self._doc_type = "" self._doc_type_id = None # Set defaults self.fileNameColor = "#5555ff" self.fileMetaColor = "#8f8f8f"
def __init__(self, parent=None, value_field='', def_color='#2564e1', legend_name=''): QWidget.__init__(self, parent) self._value_field = value_field # Insert controls for editing fill color and legend names self.lbl_fill_color = QLabel(self) self.lbl_fill_color.setText( QApplication.translate("ValueConfigWidget", "Fill color")) self.fill_color_btn = QgsColorButton( self, QApplication.translate("ValueConfigWidget", "Select bar fill color")) self.fill_color_btn.setMaximumHeight(30) self.fill_color_btn.setMinimumHeight(30) self.fill_color_btn.setMinimumWidth(100) if QColor.isValidColor(def_color): default_color = QColor(def_color) self.fill_color_btn.setColor(default_color) self.lbl_legend_name = QLabel(self) self.lbl_legend_name.setText( QApplication.translate("ValueConfigWidget", "Legend name")) self.txt_legend_name = QLineEdit(self) self.txt_legend_name.setMaxLength(50) self.txt_legend_name.setMinimumHeight(30) self.txt_legend_name.setText(legend_name) self.layout = QGridLayout(self) self.layout.addWidget(self.lbl_fill_color, 0, 0, 1, 1) self.layout.addWidget(self.fill_color_btn, 0, 1, 1, 1) self.layout.addWidget(self.lbl_legend_name, 1, 0, 1, 1) self.layout.addWidget(self.txt_legend_name, 1, 1, 1, 1)
def __init__(self, spColumnName, composerWrapper, parent=None): QWidget.__init__(self, parent) self.setupUi(self) self._composerWrapper = composerWrapper self._spColumnName = spColumnName self._symbol_editor = None self._zoom_out_level = 16 self._zoom_fixed_scale = 1000 self.sb_zoom.setValue(self._zoom_out_level) self.sb_fixed_zoom.setValue(self._zoom_fixed_scale) self._srid = -1 self._geomType = "" # Load fields if the data source has been specified self._dsName = self._composerWrapper.selectedDataSource() self._loadFields() # Connect signals self._composerWrapper.dataSourceSelected.connect( self.onDataSourceChanged) self.sb_zoom.valueChanged.connect(self.on_zoom_level_changed) self.sb_fixed_zoom.valueChanged.connect( self.on_zoom_fixed_scale_changed) self.rb_relative_zoom.toggled.connect(self.on_relative_zoom_checked) # Set relative zoom level as the default selected option for the radio buttons self.rb_relative_zoom.setChecked(True)
def __init__(self, iface): QWidget.__init__(self) self.iface = iface self.setupUi(self) BaseBatchWidget.__init__(self, self.iface, "gdal_fillnodata.py") self.inSelector.setType(self.inSelector.FILE_LAYER) self.outSelector.setType(self.outSelector.FILE) self.maskSelector.setType(self.maskSelector.FILE) self.progressBar.setValue(0) self.progressBar.hide() self.formatLabel.hide() self.formatCombo.hide() self.outputFormat = Utils.fillRasterOutputFormat() self.setParamsStatus([ (self.inSelector, "filenameChanged"), (self.outSelector, "filenameChanged"), (self.maskSelector, "filenameChanged", self.maskCheck), (self.distanceSpin, "valueChanged", self.distanceCheck), (self.smoothSpin, "valueChanged", self.smoothCheck), (self.bandSpin, "valueChanged", self.bandCheck), (self.nomaskCheck, "stateChanged") ]) self.inSelector.selectClicked.connect(self.fillInputFile) self.outSelector.selectClicked.connect(self.fillOutputFile) self.maskSelector.selectClicked.connect(self.fillMaskFile) self.batchCheck.stateChanged.connect(self.switchToolMode) # add raster filters to combo self.formatCombo.addItems( Utils.FileFilter.allRastersFilter().split(";;"))
def __init__(self, parent, network_analyzer: QgepGraphManager, url: str = None): QWidget.__init__(self, parent) self.webView = QWebView() self.webView.setPage(QgepWebPage(self.webView)) self.networkAnalyzer = network_analyzer settings = QSettings() layout = QVBoxLayout(self) if url is None: # Starting with QGIS 3.4, QWebView requires paths with / even on windows. default_url = plugin_root_path().replace( '\\', '/') + '/svgprofile/index.html' url = settings.value("/QGEP/SvgProfilePath", default_url) url = 'file:///' + url developer_mode = settings.value("/QGEP/DeveloperMode", False, type=bool) if developer_mode is True: self.webView.page().settings().setAttribute( QWebSettings.DeveloperExtrasEnabled, True) else: self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.load(QUrl(url)) self.frame = self.webView.page().mainFrame() self.frame.javaScriptWindowObjectCleared.connect(self.initJs) layout.addWidget(self.webView)
def __init__(self, plugIn, color, parent=None, windowFlags=Qt.Widget): self.plugIn = plugIn self.color = color self.size = 0 QWidget.__init__(self, parent, windowFlags)
def __init__(self, iface, db, parent=None): QWidget.__init__(self, parent) self.mainWindow = parent self.iface = iface self.db = db self.dbType = db.connection().typeNameString() self.connectionName = db.connection().connectionName() self.filter = "" self.modelAsync = None self.allowMultiColumnPk = isinstance(db, PGDatabase) # at the moment only PostgreSQL allows a primary key to span multiple columns, SpatiaLite doesn't self.aliasSubQuery = isinstance(db, PGDatabase) # only PostgreSQL requires subqueries to be aliases self.setupUi(self) self.setWindowTitle( self.tr(u"{0} - {1} [{2}]").format(self.windowTitle(), self.connectionName, self.dbType)) self.defaultLayerName = self.tr('QueryLayer') if self.allowMultiColumnPk: self.uniqueColumnCheck.setText(self.tr("Column(s) with unique values")) else: self.uniqueColumnCheck.setText(self.tr("Column with unique values")) self.editSql.setFocus() self.editSql.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.editSql.setMarginVisible(True) self.initCompleter() settings = QgsSettings() self.history = settings.value('DB_Manager/queryHistory/' + self.dbType, {self.connectionName: []}) if self.connectionName not in self.history: self.history[self.connectionName] = [] self.queryHistoryWidget.setVisible(False) self.queryHistoryTableWidget.verticalHeader().hide() self.queryHistoryTableWidget.doubleClicked.connect(self.insertQueryInEditor) self.populateQueryHistory() self.btnQueryHistory.toggled.connect(self.showHideQueryHistory) self.btnCancel.setEnabled(False) self.btnCancel.clicked.connect(self.executeSqlCanceled) self.btnCancel.setShortcut(QKeySequence.Cancel) self.progressBar.setEnabled(False) self.progressBar.setRange(0, 100) self.progressBar.setValue(0) self.progressBar.setFormat("") self.progressBar.setAlignment(Qt.AlignCenter) # allow copying results copyAction = QAction("copy", self) self.viewResult.addAction(copyAction) copyAction.setShortcuts(QKeySequence.Copy) copyAction.triggered.connect(self.copySelectedResults) self.btnExecute.clicked.connect(self.executeSql) self.btnSetFilter.clicked.connect(self.setFilter) self.btnClear.clicked.connect(self.clearSql) self.presetStore.clicked.connect(self.storePreset) self.presetSaveAsFile.clicked.connect(self.saveAsFilePreset) self.presetLoadFile.clicked.connect(self.loadFilePreset) self.presetDelete.clicked.connect(self.deletePreset) self.presetCombo.activated[str].connect(self.loadPreset) self.presetCombo.activated[str].connect(self.presetName.setText) self.updatePresetsCombobox() self.geomCombo.setEditable(True) self.geomCombo.lineEdit().setReadOnly(True) self.uniqueCombo.setEditable(True) self.uniqueCombo.lineEdit().setReadOnly(True) self.uniqueModel = QStandardItemModel(self.uniqueCombo) self.uniqueCombo.setModel(self.uniqueModel) if self.allowMultiColumnPk: self.uniqueCombo.setItemDelegate(QStyledItemDelegate()) self.uniqueModel.itemChanged.connect(self.uniqueChanged) # react to the (un)checking of an item self.uniqueCombo.lineEdit().textChanged.connect(self.uniqueTextChanged) # there are other events that change the displayed text and some of them can not be caught directly # hide the load query as layer if feature is not supported self._loadAsLayerAvailable = self.db.connector.hasCustomQuerySupport() self.loadAsLayerGroup.setVisible(self._loadAsLayerAvailable) if self._loadAsLayerAvailable: self.layerTypeWidget.hide() # show if load as raster is supported self.loadLayerBtn.clicked.connect(self.loadSqlLayer) self.getColumnsBtn.clicked.connect(self.fillColumnCombos) self.loadAsLayerGroup.toggled.connect(self.loadAsLayerToggled) self.loadAsLayerToggled(False) self._createViewAvailable = self.db.connector.hasCreateSpatialViewSupport() self.btnCreateView.setVisible(self._createViewAvailable) if self._createViewAvailable: self.btnCreateView.clicked.connect(self.createView) self.queryBuilderFirst = True self.queryBuilderBtn.setIcon(QIcon(":/db_manager/icons/sql.gif")) self.queryBuilderBtn.clicked.connect(self.displayQueryBuilder) self.presetName.textChanged.connect(self.nameChanged)
def __init__(self, iface, layer, parent=None): QWidget.__init__(self, parent) self.iface = iface self.layer = layer uri = QgsDataSourceUri(layer.source()) dbplugin = None db = None if layer.dataProvider().name() == 'postgres': dbplugin = createDbPlugin('postgis', 'postgres') elif layer.dataProvider().name() == 'spatialite': dbplugin = createDbPlugin('spatialite', 'spatialite') elif layer.dataProvider().name() == 'oracle': dbplugin = createDbPlugin('oracle', 'oracle') elif layer.dataProvider().name() == 'virtual': dbplugin = createDbPlugin('vlayers', 'virtual') elif layer.dataProvider().name() == 'ogr': dbplugin = createDbPlugin('gpkg', 'gpkg') if dbplugin: dbplugin.connectToUri(uri) db = dbplugin.db self.dbplugin = dbplugin self.db = db self.filter = "" self.allowMultiColumnPk = isinstance( db, PGDatabase ) # at the moment only PostgreSQL allows a primary key to span multiple columns, SpatiaLite doesn't self.aliasSubQuery = isinstance( db, PGDatabase) # only PostgreSQL requires subqueries to be aliases self.setupUi(self) self.setWindowTitle( u"%s - %s [%s]" % (self.windowTitle(), db.connection().connectionName(), db.connection().typeNameString())) self.defaultLayerName = 'QueryLayer' if self.allowMultiColumnPk: self.uniqueColumnCheck.setText( self.tr("Column(s) with unique values")) else: self.uniqueColumnCheck.setText( self.tr("Column with unique values")) self.editSql.setFocus() self.editSql.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.editSql.setMarginVisible(True) self.initCompleter() # allow copying results copyAction = QAction("copy", self) self.viewResult.addAction(copyAction) copyAction.setShortcuts(QKeySequence.Copy) copyAction.triggered.connect(self.copySelectedResults) self.btnExecute.clicked.connect(self.executeSql) self.btnSetFilter.clicked.connect(self.setFilter) self.btnClear.clicked.connect(self.clearSql) self.presetStore.clicked.connect(self.storePreset) self.presetDelete.clicked.connect(self.deletePreset) self.presetCombo.activated[str].connect(self.loadPreset) self.presetCombo.activated[str].connect(self.presetName.setText) self.editSql.textChanged.connect(self.updatePresetButtonsState) self.presetName.textChanged.connect(self.updatePresetButtonsState) self.presetCombo.currentIndexChanged.connect( self.updatePresetButtonsState) self.updatePresetsCombobox() self.geomCombo.setEditable(True) self.geomCombo.lineEdit().setReadOnly(True) self.uniqueCombo.setEditable(True) self.uniqueCombo.lineEdit().setReadOnly(True) self.uniqueModel = QStandardItemModel(self.uniqueCombo) self.uniqueCombo.setModel(self.uniqueModel) if self.allowMultiColumnPk: self.uniqueCombo.setItemDelegate(QStyledItemDelegate()) self.uniqueModel.itemChanged.connect( self.uniqueChanged) # react to the (un)checking of an item self.uniqueCombo.lineEdit().textChanged.connect( self.uniqueTextChanged ) # there are other events that change the displayed text and some of them can not be caught directly self.layerTypeWidget.hide() # show if load as raster is supported # self.loadLayerBtn.clicked.connect(self.loadSqlLayer) self.updateLayerBtn.clicked.connect(self.updateSqlLayer) self.getColumnsBtn.clicked.connect(self.fillColumnCombos) self.queryBuilderFirst = True self.queryBuilderBtn.setIcon(QIcon(":/db_manager/icons/sql.gif")) self.queryBuilderBtn.clicked.connect(self.displayQueryBuilder) self.presetName.textChanged.connect(self.nameChanged) # Update from layer # First the SQL from QgsDataSourceUri table sql = uri.table() if uri.keyColumn() == '_uid_': match = re.search( r'^\(SELECT .+ AS _uid_,\* FROM \((.*)\) AS _subq_.+_\s*\)$', sql, re.S | re.X) if match: sql = match.group(1) else: match = re.search(r'^\((SELECT .+ FROM .+)\)$', sql, re.S | re.X) if match: sql = match.group(1) # Need to check on table() since the parentheses were removed by the regexp if not uri.table().startswith('(') and not uri.table().endswith(')'): schema = uri.schema() if schema and schema.upper() != 'PUBLIC': sql = 'SELECT * FROM {0}.{1}'.format( self.db.connector.quoteId(schema), self.db.connector.quoteId(sql)) else: sql = 'SELECT * FROM {0}'.format( self.db.connector.quoteId(sql)) self.editSql.setText(sql) self.executeSql() # Then the columns self.geomCombo.setCurrentIndex( self.geomCombo.findText(uri.geometryColumn(), Qt.MatchExactly)) if uri.keyColumn() != '_uid_': self.uniqueColumnCheck.setCheckState(Qt.Checked) if self.allowMultiColumnPk: itemsData = uri.keyColumn().split(',') for item in self.uniqueModel.findItems("*", Qt.MatchWildcard): if item.data() in itemsData: item.setCheckState(Qt.Checked) else: keyColumn = uri.keyColumn() for item in self.uniqueModel.findItems("*", Qt.MatchWildcard): if item.data() == keyColumn: self.uniqueCombo.setCurrentIndex( self.uniqueModel.indexFromItem(item).row()) # Finally layer name, filter and selectAtId self.layerNameEdit.setText(layer.name()) self.filter = uri.sql() if uri.selectAtIdDisabled(): self.avoidSelectById.setCheckState(Qt.Checked)
def __init__(self, title=None, image_dir=None, parent=None): QWidget.__init__(self, parent) self.__toolbar = QToolBar() self.__scene = MyScene(0, 0, 600, 400) self.__view = TimeSeriesGraphicsView(self.__scene) self.__view.setAlignment(Qt.AlignLeft | Qt.AlignTop) self.__scene.sceneRectChanged.connect(self.on_rect_changed) if image_dir is None: image_dir = os.path.join(os.path.dirname(__file__), "img") self.__action_move_row_up = QAction( QIcon(os.path.join(image_dir, "up.svg")), "Move the row up", self.__toolbar) self.__action_move_row_up.triggered.connect(self.on_move_row_up) self.__action_move_row_down = QAction( QIcon(os.path.join(image_dir, "down.svg")), "Move the row down", self.__toolbar) self.__action_move_row_down.triggered.connect(self.on_move_row_down) self.__action_edit_style = QAction( QIcon(os.path.join(image_dir, "symbology.svg")), "Edit row style", self.__toolbar) self.__action_edit_style.triggered.connect(self.on_edit_style) self.__action_add_row = QAction( QIcon(os.path.join(image_dir, "add.svg")), "Add a data row", self.__toolbar) self.__action_add_row.triggered.connect(self.on_add_row) self.__action_remove_row = QAction( QIcon(os.path.join(image_dir, "remove.svg")), "Remove the row", self.__toolbar) self.__action_remove_row.triggered.connect(self.on_remove_row) self.__toolbar.addAction(self.__action_move_row_up) self.__toolbar.addAction(self.__action_move_row_down) self.__toolbar.addAction(self.__action_edit_style) self.__toolbar.addAction(self.__action_add_row) self.__toolbar.addAction(self.__action_remove_row) self.__title_label = QLabel() if title is not None: self.set_title(title) self.__status_bar = QStatusBar() vbox = QVBoxLayout() vbox.addWidget(self.__title_label) vbox.addWidget(self.__toolbar) vbox.addWidget(self.__view) vbox.addWidget(self.__status_bar) self.setLayout(vbox) self.__station_id = None # (log_item, legend_item) for each row self.__rows = [] # { layer : (log_item, legend_item) } self.__data2logitems = {} self.__row_heights = [] self._min_x = None self._max_x = None self.__allow_mouse_translation = True self.__translation_orig = None self.__style_dir = os.path.join(os.path.dirname(__file__), 'styles') self.select_row(-1) self._update_row_depths()
def __init__(self, ): QWidget.__init__(self) self.setupUi(self) self.logger = Logger() self.app = AppInterface() self.validators = Validators() self.restore_settings() self.btn_browse_file_predio_bloqueo.clicked.connect( make_file_selector( self.txt_file_path_predio_bloqueo, QCoreApplication.translate( "SNCDataSourceWidget", "Select the predio sanción .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_predio.clicked.connect( make_file_selector( self.txt_file_path_predio, QCoreApplication.translate( "SNCDataSourceWidget", "Select the predio .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_direccion.clicked.connect( make_file_selector( self.txt_file_path_direccion, QCoreApplication.translate( "SNCDataSourceWidget", "Select the dirección .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_uni.clicked.connect( make_file_selector( self.txt_file_path_uni, QCoreApplication.translate( "SNCDataSourceWidget", "Select the unidad construcción .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_uni_comp.clicked.connect( make_file_selector( self.txt_file_path_uni_comp, QCoreApplication.translate( "SNCDataSourceWidget", "Select the unidad construcción comp .csv file with SNC data " ), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_persona.clicked.connect( make_file_selector( self.txt_file_path_persona, QCoreApplication.translate( "SNCDataSourceWidget", "Select the persona .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_persona_predio.clicked.connect( make_file_selector( self.txt_file_path_persona_predio, QCoreApplication.translate( "SNCDataSourceWidget", "Select the persona predio .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_ficha_m.clicked.connect( make_file_selector( self.txt_file_path_ficha_m, QCoreApplication.translate( "SNCDataSourceWidget", "Select the ficha matriz .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_ficha_m_predio.clicked.connect( make_file_selector( self.txt_file_path_ficha_m_predio, QCoreApplication.translate( "SNCDataSourceWidget", "Select the ficha matriz predio .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_ficha_m_torre.clicked.connect( make_file_selector( self.txt_file_path_ficha_m_torre, QCoreApplication.translate( "SNCDataSourceWidget", "Select the ficha matriz torre .csv file with SNC data "), QCoreApplication.translate("SNCDataSourceWidget", 'CSV File (*.csv)'), setting_property="snc_files_path")) self.btn_browse_file_gdb.clicked.connect( make_folder_selector(self.txt_file_path_gdb, QCoreApplication.translate( "SNCDataSourceWidget", "Open GDB folder"), None, setting_property="snc_files_path")) file_validator_optional = FileValidator(pattern='*.csv', allow_empty=True) file_validator_csv = FileValidator(pattern='*.csv', allow_non_existing=False) dir_validator_gdb = DirValidator(pattern='*.gdb', allow_non_existing=False) self.txt_file_path_predio_bloqueo.setValidator(file_validator_optional) self.txt_file_path_predio.setValidator(file_validator_csv) self.txt_file_path_direccion.setValidator(file_validator_csv) self.txt_file_path_uni.setValidator(file_validator_csv) self.txt_file_path_uni_comp.setValidator(file_validator_csv) self.txt_file_path_persona.setValidator(file_validator_csv) self.txt_file_path_persona_predio.setValidator(file_validator_csv) self.txt_file_path_ficha_m.setValidator(file_validator_optional) self.txt_file_path_ficha_m_predio.setValidator(file_validator_optional) self.txt_file_path_ficha_m_torre.setValidator(file_validator_optional) self.txt_file_path_gdb.setValidator(dir_validator_gdb) self.txt_file_path_predio_bloqueo.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_predio.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_direccion.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_uni.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_uni_comp.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_persona.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_persona_predio.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_ficha_m.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_ficha_m_predio.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_ficha_m_torre.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_gdb.textChanged.connect( self.validators.validate_line_edits) self.txt_file_path_predio_bloqueo.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_predio.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_direccion.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_uni.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_uni_comp.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_persona.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_persona_predio.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_ficha_m.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_ficha_m_predio.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_ficha_m_torre.textChanged.connect( self.emit_input_data_changed) self.txt_file_path_gdb.textChanged.connect( self.emit_input_data_changed) # Trigger validations right now self.txt_file_path_predio_bloqueo.textChanged.emit( self.txt_file_path_predio_bloqueo.text()) self.txt_file_path_predio.textChanged.emit( self.txt_file_path_predio.text()) self.txt_file_path_direccion.textChanged.emit( self.txt_file_path_direccion.text()) self.txt_file_path_uni.textChanged.emit(self.txt_file_path_uni.text()) self.txt_file_path_uni_comp.textChanged.emit( self.txt_file_path_uni_comp.text()) self.txt_file_path_persona.textChanged.emit( self.txt_file_path_persona.text()) self.txt_file_path_persona_predio.textChanged.emit( self.txt_file_path_persona_predio.text()) self.txt_file_path_ficha_m.textChanged.emit( self.txt_file_path_ficha_m.text()) self.txt_file_path_ficha_m_predio.textChanged.emit( self.txt_file_path_ficha_m_predio.text()) self.txt_file_path_ficha_m_torre.textChanged.emit( self.txt_file_path_ficha_m_torre.text()) self.txt_file_path_gdb.textChanged.emit(self.txt_file_path_gdb.text())
def __init__(self, parent=None): QWidget.__init__(self, parent) self.ticks = 12 self.counter = 0 self.timer = None self.setMinimumSize(16, 16)
def __init__(self, parameter, parent=None): """Constructor. :param parameter: A GroupSelectParameter object. :type parameter: GroupSelectParameter """ QWidget.__init__(self, parent) self._parameter = parameter # Store spin box self.spin_boxes = {} # Create elements # Label (name) self.label = QLabel(self._parameter.name) # Layouts self.main_layout = QVBoxLayout() self.input_layout = QVBoxLayout() # _inner_input_layout must be filled with widget in the child class self.inner_input_layout = QVBoxLayout() self.radio_button_layout = QGridLayout() # Create radio button group self.input_button_group = QButtonGroup() # List widget self.list_widget = QListWidget() self.list_widget.setSelectionMode(QAbstractItemView.ExtendedSelection) self.list_widget.setDragDropMode(QAbstractItemView.DragDrop) self.list_widget.setDefaultDropAction(Qt.MoveAction) self.list_widget.setEnabled(False) self.list_widget.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) for i, key in enumerate(self._parameter.options): value = self._parameter.options[key] radio_button = QRadioButton(value.get('label')) self.radio_button_layout.addWidget(radio_button, i, 0) if value.get('type') == SINGLE_DYNAMIC: percentage_spin_box = PercentageSpinBox(self) self.radio_button_layout.addWidget(percentage_spin_box, i, 1) percentage_spin_box.setValue(value.get('value', 0)) step = percentage_spin_box.singleStep() if step > 1: precision = 0 else: precision = len(str(step).split('.')[1]) if precision > 3: precision = 3 percentage_spin_box.setDecimals(precision) self.spin_boxes[key] = percentage_spin_box # Enable spin box depends on the selected option if self._parameter.selected == key: percentage_spin_box.setEnabled(True) else: percentage_spin_box.setEnabled(False) elif value.get('type') == STATIC: static_value = value.get('value', 0) if static_value is not None: self.radio_button_layout.addWidget( QLabel(str(static_value * 100) + ' %'), i, 1) elif value.get('type') == MULTIPLE_DYNAMIC: if self._parameter.selected == key: self.list_widget.setEnabled(True) else: self.list_widget.setEnabled(False) self.input_button_group.addButton(radio_button, i) if self._parameter.selected == key: radio_button.setChecked(True) # Help text self.help_label = QLabel(self._parameter.help_text) self.help_label.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) self.help_label.setWordWrap(True) self.help_label.setAlignment(Qt.AlignTop) self.inner_input_layout.addLayout(self.radio_button_layout) self.inner_input_layout.addWidget(self.list_widget) # Put elements into layouts self.input_layout.addWidget(self.label) self.input_layout.addLayout(self.inner_input_layout) self.help_layout = QVBoxLayout() self.help_layout.addWidget(self.help_label) self.main_layout.addLayout(self.input_layout) self.main_layout.addLayout(self.help_layout) self.setLayout(self.main_layout) self.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) # Update list widget self.update_list_widget() # Connect signal # noinspection PyUnresolvedReferences self.input_button_group.buttonClicked.connect( self.radio_buttons_clicked)