def __init__(self, gridlayer): QtGui.QDialog.__init__(self) # Set up the user interface from Designer. self.ui = Ui_GridProperties() self.ui.setupUi(self) self.gridlayer = gridlayer validator = QtGui.QDoubleValidator(-10000000.0, 10000000.0, 6, None) self.ui.editOriginX.setValidator(validator) self.ui.editOriginY.setValidator(validator) self.ui.btnStyle.clicked.connect(self.chooseStyle) self.ui.btnFont.clicked.connect(self.chooseFont) self.ui.btnColour.clicked.connect(self.chooseColour) self.ui.comboLabelType.currentIndexChanged.connect(self.disableDegreeFields) self.symbol = gridlayer.symbol.clone() self.label_attributes = core.QgsLabelAttributes() # Store attributes in case the user changes font attributes but cancels the dialog box. self.label_attributes.setFamily(gridlayer.label.labelAttributes().family()) self.label_attributes.setBold(gridlayer.label.labelAttributes().bold()) self.label_attributes.setItalic(gridlayer.label.labelAttributes().italic()) self.label_attributes.setUnderline(gridlayer.label.labelAttributes().underline()) self.label_attributes.setStrikeOut(gridlayer.label.labelAttributes().strikeOut()) self.label_attributes.setSize(gridlayer.label.labelAttributes().size(), core.QgsLabelAttributes.PointUnits) self.label_attributes.setColor(gridlayer.label.labelAttributes().color()) self.ui.boxLabels.setChecked(gridlayer.draw_labels) self.ui.editOriginX.setText(str(gridlayer.origin.x())) self.ui.editOriginY.setText(str(gridlayer.origin.y())) self.ui.spinCountX.setValue(gridlayer.numCellsX) self.ui.spinCountY.setValue(gridlayer.numCellsY) self.ui.spinOffsetX.setValue(gridlayer.gridOffsetX) self.ui.spinOffsetY.setValue(gridlayer.gridOffsetY) self.ui.spinCellSizeX.setValue(gridlayer.cellSizeX) self.ui.spinCellSizeY.setValue(gridlayer.cellSizeY) self.ui.spinAngle.setValue(gridlayer.baselineAngle) self.ui.comboLabelType.setCurrentIndex(gridlayer.label_type) self.ui.spinPrecision.setValue(gridlayer.label_precision) self.ui.comboOrientation.setCurrentIndex(gridlayer.label_orientation) self.ui.comboLabelFormat.setCurrentIndex(gridlayer.label_format) self.ui.checkHemisphere.setChecked(gridlayer.label_hemisphere) self.ui.checkLeadingZeros.setChecked(gridlayer.label_leading_zeros) self.ui.checkDegreesDiff.setChecked(gridlayer.label_degrees_diff) self.ui.spinXOffsetHorizontal.setValue(gridlayer.label_xoff_horizontal) self.ui.spinXOffsetVertical.setValue(gridlayer.label_xoff_vertical) self.ui.spinYOffsetHorizontal.setValue(gridlayer.label_yoff_horizontal) self.ui.spinYOffsetVertical.setValue(gridlayer.label_yoff_vertical) self.disableDegreeFields(0)
class GridPropertiesDialog(QtGui.QDialog): def __init__(self, gridlayer): QtGui.QDialog.__init__(self) # Set up the user interface from Designer. self.ui = Ui_GridProperties() self.ui.setupUi(self) self.gridlayer = gridlayer validator = QtGui.QDoubleValidator(-10000000.0, 10000000.0, 6, None) self.ui.editOriginX.setValidator(validator) self.ui.editOriginY.setValidator(validator) self.ui.btnStyle.clicked.connect(self.chooseStyle) self.ui.btnFont.clicked.connect(self.chooseFont) self.ui.btnColour.clicked.connect(self.chooseColour) self.ui.comboLabelType.currentIndexChanged.connect(self.disableDegreeFields) self.symbol = gridlayer.symbol.clone() self.label_attributes = core.QgsLabelAttributes() # Store attributes in case the user changes font attributes but cancels the dialog box. self.label_attributes.setFamily(gridlayer.label.labelAttributes().family()) self.label_attributes.setBold(gridlayer.label.labelAttributes().bold()) self.label_attributes.setItalic(gridlayer.label.labelAttributes().italic()) self.label_attributes.setUnderline(gridlayer.label.labelAttributes().underline()) self.label_attributes.setStrikeOut(gridlayer.label.labelAttributes().strikeOut()) self.label_attributes.setSize(gridlayer.label.labelAttributes().size(), core.QgsLabelAttributes.PointUnits) self.label_attributes.setColor(gridlayer.label.labelAttributes().color()) self.ui.boxLabels.setChecked(gridlayer.draw_labels) self.ui.editOriginX.setText(str(gridlayer.origin.x())) self.ui.editOriginY.setText(str(gridlayer.origin.y())) self.ui.spinCountX.setValue(gridlayer.numCellsX) self.ui.spinCountY.setValue(gridlayer.numCellsY) self.ui.spinOffsetX.setValue(gridlayer.gridOffsetX) self.ui.spinOffsetY.setValue(gridlayer.gridOffsetY) self.ui.spinCellSizeX.setValue(gridlayer.cellSizeX) self.ui.spinCellSizeY.setValue(gridlayer.cellSizeY) self.ui.spinAngle.setValue(gridlayer.baselineAngle) self.ui.comboLabelType.setCurrentIndex(gridlayer.label_type) self.ui.spinPrecision.setValue(gridlayer.label_precision) self.ui.comboOrientation.setCurrentIndex(gridlayer.label_orientation) self.ui.comboLabelFormat.setCurrentIndex(gridlayer.label_format) self.ui.checkHemisphere.setChecked(gridlayer.label_hemisphere) self.ui.checkLeadingZeros.setChecked(gridlayer.label_leading_zeros) self.ui.checkDegreesDiff.setChecked(gridlayer.label_degrees_diff) self.ui.spinXOffsetHorizontal.setValue(gridlayer.label_xoff_horizontal) self.ui.spinXOffsetVertical.setValue(gridlayer.label_xoff_vertical) self.ui.spinYOffsetHorizontal.setValue(gridlayer.label_yoff_horizontal) self.ui.spinYOffsetVertical.setValue(gridlayer.label_yoff_vertical) self.disableDegreeFields(0) def accept(self): self.gridlayer.origin = core.QgsPoint(float(self.ui.editOriginX.text()), float(self.ui.editOriginY.text())) self.gridlayer.numCellsX = self.ui.spinCountX.value() self.gridlayer.numCellsY = self.ui.spinCountY.value() self.gridlayer.gridOffsetX = self.ui.spinOffsetX.value() self.gridlayer.gridOffsetY = self.ui.spinOffsetY.value() self.gridlayer.cellSizeX = self.ui.spinCellSizeX.value() self.gridlayer.cellSizeY = self.ui.spinCellSizeY.value() self.gridlayer.baselineAngle = self.ui.spinAngle.value() self.gridlayer.draw_labels = self.ui.boxLabels.isChecked() self.gridlayer.label_type = self.ui.comboLabelType.currentIndex() self.gridlayer.label_precision = self.ui.spinPrecision.value() self.gridlayer.label_orientation = self.ui.comboOrientation.currentIndex() self.gridlayer.symbol = self.symbol.clone() self.gridlayer.label.labelAttributes().setFamily(self.label_attributes.family()) self.gridlayer.label.labelAttributes().setBold(self.label_attributes.bold()) self.gridlayer.label.labelAttributes().setItalic(self.label_attributes.italic()) self.gridlayer.label.labelAttributes().setUnderline(self.label_attributes.underline()) self.gridlayer.label.labelAttributes().setStrikeOut(self.label_attributes.strikeOut()) self.gridlayer.label.labelAttributes().setSize(self.label_attributes.size(), core.QgsLabelAttributes.PointUnits) self.gridlayer.label.labelAttributes().setColor(self.label_attributes.color()) if self.gridlayer.label_type == 0 or self.gridlayer.label_type == 2: self.gridlayer.label.setLabelField(core.QgsLabel.Text, 2) elif self.gridlayer.label_type == 1: self.gridlayer.label.setLabelField(core.QgsLabel.Text, 0) self.gridlayer.label.setLabelField(core.QgsLabel.Angle, 1) self.gridlayer.label.setLabelField(core.QgsLabel.Alignment, 3) self.gridlayer.label.setLabelField(core.QgsLabel.XOffset, 4) self.gridlayer.label.setLabelField(core.QgsLabel.YOffset, 5) self.gridlayer.label_format = self.ui.comboLabelFormat.currentIndex() self.gridlayer.label_hemisphere = self.ui.checkHemisphere.isChecked() self.gridlayer.label_leading_zeros = self.ui.checkLeadingZeros.isChecked() self.gridlayer.label_degrees_diff = self.ui.checkDegreesDiff.isChecked() self.gridlayer.label_xoff_horizontal = self.ui.spinXOffsetHorizontal.value() self.gridlayer.label_xoff_vertical = self.ui.spinXOffsetVertical.value() self.gridlayer.label_yoff_horizontal = self.ui.spinYOffsetHorizontal.value() self.gridlayer.label_yoff_vertical = self.ui.spinYOffsetVertical.value() QtGui.QDialog.accept(self) def reject(self): QtGui.QDialog.reject(self) def chooseStyle(self): if QGis.QGIS_VERSION_INT < 10800: dlg = gui.QgsSymbolV2SelectorDialog(self.symbol, core.QgsStyleV2.defaultStyle()) else: dlg = gui.QgsSymbolV2SelectorDialog(self.symbol, core.QgsStyleV2.defaultStyle(), None) dlg.show() dlg.exec_() def chooseFont(self): dlg = QtGui.QFontDialog() dlg.show() result = dlg.exec_() if result == 1: font = dlg.selectedFont() self.label_attributes.setFamily(font.family()) self.label_attributes.setBold(font.bold()) self.label_attributes.setItalic(font.italic()) self.label_attributes.setUnderline(font.underline()) self.label_attributes.setStrikeOut(font.strikeOut()) self.label_attributes.setSize(font.pointSizeF(), core.QgsLabelAttributes.PointUnits) def chooseColour(self): dlg = QtGui.QColorDialog(self.label_attributes.color()) dlg.setOptions(QtGui.QColorDialog.ShowAlphaChannel) dlg.show() result = dlg.exec_() if result == 1: self.label_attributes.setColor(dlg.selectedColor()) def disableDegreeFields(self, index): if index == 1 or index == 2: self.ui.checkDegreesDiff.setEnabled(False) self.ui.comboLabelFormat.setEnabled(False) self.ui.spinPrecision.setEnabled(False) self.ui.checkHemisphere.setEnabled(False) self.ui.checkLeadingZeros.setEnabled(False) elif not self.gridlayer.crs().geographicFlag(): self.ui.checkDegreesDiff.setEnabled(False) self.ui.comboLabelFormat.setEnabled(False) self.ui.spinPrecision.setEnabled(True) self.ui.checkHemisphere.setEnabled(False) self.ui.checkLeadingZeros.setEnabled(False) else: self.ui.checkDegreesDiff.setEnabled(True) self.ui.comboLabelFormat.setEnabled(True) self.ui.spinPrecision.setEnabled(True) self.ui.checkHemisphere.setEnabled(True) self.ui.checkLeadingZeros.setEnabled(True)