def on_scale_changed():
    print(scale_widget.scale(), QgsScaleWidget.toString(scale_widget.scale()))
    print(scale_widget.scaleString(),
          QgsScaleWidget.toDouble(scale_widget.scaleString()))
    print(scale_widget.showCurrentScaleButton())
    print("Scale changed")
    iface.mapCanvas().zoomScale(1 / scale_widget.scale())
예제 #2
0
 def __init__(self, gtomain, parent=None):
     super(GtoWidgetScale, self).__init__(parent)
     # QWidgetAction.__init__(self,parent)
     self.iface = gtomain.iface
     self.info = gtomain.info
     self.debug = gtomain.debug
     self.block = False
     try:
         self.canvas = self.iface.mapCanvas()
         # ui
         lay = QHBoxLayout(self)
         # -----
         self.lblLayer = QLabel("Maßstab:")
         lay.addWidget(self.lblLayer)
         self.wid = QgsScaleWidget(self)
         self.wid.setMinimumWidth(120)
         lay.addWidget(self.wid)
         # -----
         self.setLayout(lay)
         # signals
         self.canvas.scaleChanged.connect(self.scale_changed)
         self.wid.scaleChanged.connect(self.set_mapscale)
         # start
         self.scale_changed(self.canvas.scale())
     except Exception as e:
         self.info.err(e)
def on_scale_changed():
    print(scale_widget.scale(),
          QgsScaleWidget.toString(scale_widget.scale()))
    print(scale_widget.scaleString(),
          QgsScaleWidget.toDouble(scale_widget.scaleString()))
    print(scale_widget.showCurrentScaleButton())
    print("Scale changed")
    iface.mapCanvas().zoomScale(1 / scale_widget.scale())
예제 #4
0
class GtoWidgetScale(QWidget):
    def __init__(self, gtomain, parent=None):
        super(GtoWidgetScale, self).__init__(parent)
        # QWidgetAction.__init__(self,parent)
        self.iface = gtomain.iface
        self.info = gtomain.info
        self.debug = gtomain.debug
        self.block = False
        try:
            self.canvas = self.iface.mapCanvas()
            # ui
            lay = QHBoxLayout(self)
            # -----
            self.lblLayer = QLabel("Maßstab:")
            lay.addWidget(self.lblLayer)
            self.wid = QgsScaleWidget(self)
            self.wid.setMinimumWidth(120)
            lay.addWidget(self.wid)
            # -----
            self.setLayout(lay)
            # signals
            self.canvas.scaleChanged.connect(self.scale_changed)
            self.wid.scaleChanged.connect(self.set_mapscale)
            # start
            self.scale_changed(self.canvas.scale())
        except Exception as e:
            self.info.err(e)

    def scale_changed(self, scale):
        try:
            # if self.debug: self.info.log("scale_changed", scale)
            # self.blockSignals(True)
            if not self.block:
                self.block = True
                self.wid.setScale(round(scale, 0))
                self.block = False
            # self.blockSignals(False)
        except Exception as e:
            self.info.err(e)

    def set_mapscale(self, scale):
        try:
            # if self.debug: self.info.log("set_mapscale", scale)
            # self.blockSignals(True)
            if not self.block:
                self.block = True
                self.canvas.zoomScale(scale)
                self.block = False
            # self.blockSignals(False)
        except Exception as e:
            self.info.err(e)
예제 #5
0
    def testNull(self):
        w = QgsScaleWidget()

        w.setScale(50)
        self.assertFalse(w.allowNull())
        w.setNull() # no effect
        self.assertEqual(w.scale(), 50.0)
        self.assertFalse(w.isNull())

        spy = QSignalSpy(w.scaleChanged)
        w.setAllowNull(True)
        self.assertTrue(w.allowNull())

        w.setScaleString('')
        self.assertEqual(len(spy), 1)
        self.assertTrue(math.isnan(w.scale()))
        self.assertTrue(math.isnan(spy[-1][0]))
        self.assertTrue(w.isNull())
        w.setScaleString("    ")
        self.assertTrue(math.isnan(w.scale()))
        self.assertTrue(w.isNull())

        w.setScaleString('0.02')
        self.assertEqual(w.scale(), 50.0)
        self.assertEqual(len(spy), 2)
        self.assertEqual(spy[-1][0], 50.0)
        self.assertFalse(w.isNull())

        w.setScaleString('')
        self.assertTrue(math.isnan(w.scale()))
        self.assertEqual(len(spy), 3)
        self.assertTrue(math.isnan(spy[-1][0]))
        self.assertTrue(w.isNull())

        w.setScaleString('0.02')
        self.assertEqual(w.scale(), 50.0)
        self.assertEqual(len(spy), 4)
        self.assertEqual(spy[-1][0], 50.0)
        self.assertFalse(w.isNull())
        w.setNull()
        self.assertTrue(math.isnan(w.scale()))
        self.assertEqual(len(spy), 5)
        self.assertTrue(math.isnan(spy[-1][0]))
        self.assertTrue(w.isNull())

        w.setAllowNull(False)
        self.assertFalse(w.allowNull())
예제 #6
0
    def testBasic(self):
        w = QgsScaleWidget()
        spy = QSignalSpy(w.scaleChanged)
        w.setScaleString('1:2345')
        self.assertEqual(w.scaleString(), '1:2,345')
        self.assertEqual(w.scale(), 2345)
        self.assertEqual(len(spy), 1)
        self.assertEqual(spy[-1][0], 2345)

        w.setScaleString('0.02')
        self.assertEqual(w.scaleString(), '1:50')
        self.assertEqual(w.scale(), 50)
        self.assertEqual(len(spy), 2)
        self.assertEqual(spy[-1][0], 50)

        w.setScaleString('1:4,000')
        self.assertEqual(w.scaleString(), '1:4,000')
        self.assertEqual(w.scale(), 4000)
        self.assertEqual(len(spy), 3)
        self.assertEqual(spy[-1][0], 4000)
예제 #7
0
    def testNull(self):
        w = QgsScaleWidget()

        w.setScale(50)
        self.assertFalse(w.allowNull())
        w.setNull()  # no effect
        self.assertEqual(w.scale(), 50.0)
        self.assertFalse(w.isNull())

        spy = QSignalSpy(w.scaleChanged)
        w.setAllowNull(True)
        self.assertTrue(w.allowNull())

        w.setScaleString('')
        self.assertEqual(len(spy), 1)
        self.assertTrue(math.isnan(w.scale()))
        self.assertTrue(math.isnan(spy[-1][0]))
        self.assertTrue(w.isNull())
        w.setScaleString("    ")
        self.assertTrue(math.isnan(w.scale()))
        self.assertTrue(w.isNull())

        w.setScaleString('0.02')
        self.assertEqual(w.scale(), 50.0)
        self.assertEqual(len(spy), 2)
        self.assertEqual(spy[-1][0], 50.0)
        self.assertFalse(w.isNull())

        w.setScaleString('')
        self.assertTrue(math.isnan(w.scale()))
        self.assertEqual(len(spy), 3)
        self.assertTrue(math.isnan(spy[-1][0]))
        self.assertTrue(w.isNull())

        w.setScaleString('0.02')
        self.assertEqual(w.scale(), 50.0)
        self.assertEqual(len(spy), 4)
        self.assertEqual(spy[-1][0], 50.0)
        self.assertFalse(w.isNull())
        w.setNull()
        self.assertTrue(math.isnan(w.scale()))
        self.assertEqual(len(spy), 5)
        self.assertTrue(math.isnan(spy[-1][0]))
        self.assertTrue(w.isNull())

        w.setAllowNull(False)
        self.assertFalse(w.allowNull())
예제 #8
0
    def testBasic(self):
        w = QgsScaleWidget()
        spy = QSignalSpy(w.scaleChanged)
        w.setScaleString('1:2345')
        self.assertEqual(w.scaleString(), '1:2,345')
        self.assertEqual(w.scale(), 2345)
        self.assertEqual(len(spy), 1)
        self.assertEqual(spy[-1][0], 2345)

        w.setScaleString('0.02')
        self.assertEqual(w.scaleString(), '1:50')
        self.assertEqual(w.scale(), 50)
        self.assertEqual(len(spy), 2)
        self.assertEqual(spy[-1][0], 50)

        w.setScaleString('1:4,000')
        self.assertEqual(w.scaleString(), '1:4,000')
        self.assertEqual(w.scale(), 4000)
        self.assertEqual(len(spy), 3)
        self.assertEqual(spy[-1][0], 4000)
# coding: utf-8
from PyQt4.QtGui import QDialog
from qgis.gui import QgsScaleWidget
from qgis.utils import iface

new_dialog = QDialog()
new_dialog.resize(150, 50)

scale_widget = QgsScaleWidget(new_dialog)


def on_scale_changed():
    print(scale_widget.scale(),
          QgsScaleWidget.toString(scale_widget.scale()))
    print(scale_widget.scaleString(),
          QgsScaleWidget.toDouble(scale_widget.scaleString()))
    print(scale_widget.showCurrentScaleButton())
    print("Scale changed")
    iface.mapCanvas().zoomScale(1 / scale_widget.scale())

scale_widget.scaleChanged.connect(on_scale_changed)

new_dialog.show()

scale_widget.updateScales([u'1:1\xa0000\xa0000', u'1:100\xa0000'])
# coding: utf-8
from PyQt4.QtGui import QDialog
from qgis.gui import QgsScaleWidget
from qgis.utils import iface

new_dialog = QDialog()
new_dialog.resize(150, 50)

scale_widget = QgsScaleWidget(new_dialog)


def on_scale_changed():
    print(scale_widget.scale(), QgsScaleWidget.toString(scale_widget.scale()))
    print(scale_widget.scaleString(),
          QgsScaleWidget.toDouble(scale_widget.scaleString()))
    print(scale_widget.showCurrentScaleButton())
    print("Scale changed")
    iface.mapCanvas().zoomScale(1 / scale_widget.scale())


scale_widget.scaleChanged.connect(on_scale_changed)

new_dialog.show()

scale_widget.updateScales([u'1:1\xa0000\xa0000', u'1:100\xa0000'])
예제 #11
0
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(858, 36)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.Preferred,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())
        Form.setSizePolicy(sizePolicy)
        Form.setMinimumSize(QtCore.QSize(0, 20))
        Form.setMaximumSize(QtCore.QSize(900, 50))
        Form.setToolTip("")
        self.gridLayout = QtWidgets.QGridLayout(Form)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName("gridLayout")
        self.splitter = QtWidgets.QSplitter(Form)
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
        self.splitter.setObjectName("splitter")
        self.mMapLayerComboBox = QgsMapLayerComboBox(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mMapLayerComboBox.sizePolicy().hasHeightForWidth())
        self.mMapLayerComboBox.setSizePolicy(sizePolicy)
        self.mMapLayerComboBox.setMinimumSize(QtCore.QSize(0, 20))
        self.mMapLayerComboBox.setMaximumSize(QtCore.QSize(16777215, 32))
        self.mMapLayerComboBox.setFilters(
            core.QgsMapLayerProxyModel.HasGeometry
            | core.QgsMapLayerProxyModel.LineLayer
            | core.QgsMapLayerProxyModel.NoGeometry
            | core.QgsMapLayerProxyModel.PluginLayer
            | core.QgsMapLayerProxyModel.PointLayer
            | core.QgsMapLayerProxyModel.PolygonLayer
            | core.QgsMapLayerProxyModel.VectorLayer)
        self.mMapLayerComboBox.setObjectName("mMapLayerComboBox")
        self.refreshPushButton = QtWidgets.QPushButton(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.refreshPushButton.sizePolicy().hasHeightForWidth())
        self.refreshPushButton.setSizePolicy(sizePolicy)
        self.refreshPushButton.setMinimumSize(QtCore.QSize(24, 24))
        self.refreshPushButton.setMaximumSize(QtCore.QSize(24, 24))
        self.refreshPushButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/plugins/DsgTools/icons/reload.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.refreshPushButton.setIcon(icon)
        self.refreshPushButton.setIconSize(QtCore.QSize(16, 16))
        self.refreshPushButton.setObjectName("refreshPushButton")
        self.zoomPercentageSpinBox = QgsDoubleSpinBox(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.zoomPercentageSpinBox.sizePolicy().hasHeightForWidth())
        self.zoomPercentageSpinBox.setSizePolicy(sizePolicy)
        self.zoomPercentageSpinBox.setMinimumSize(QtCore.QSize(0, 20))
        self.zoomPercentageSpinBox.setMaximumSize(
            QtCore.QSize(16777215, 16777215))
        self.zoomPercentageSpinBox.setObjectName("zoomPercentageSpinBox")
        self.mScaleWidget = QgsScaleWidget(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mScaleWidget.sizePolicy().hasHeightForWidth())
        self.mScaleWidget.setSizePolicy(sizePolicy)
        self.mScaleWidget.setMinimumSize(QtCore.QSize(0, 20))
        self.mScaleWidget.setMaximumSize(QtCore.QSize(16194919, 32))
        self.mScaleWidget.setShowCurrentScaleButton(True)
        self.mScaleWidget.setObjectName("mScaleWidget")
        self.idSpinBox = QtWidgets.QSpinBox(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.idSpinBox.sizePolicy().hasHeightForWidth())
        self.idSpinBox.setSizePolicy(sizePolicy)
        self.idSpinBox.setMinimumSize(QtCore.QSize(40, 20))
        self.idSpinBox.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.idSpinBox.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
        self.idSpinBox.setSuffix("")
        self.idSpinBox.setObjectName("idSpinBox")
        self.backInspectButton = QtWidgets.QPushButton(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.backInspectButton.sizePolicy().hasHeightForWidth())
        self.backInspectButton.setSizePolicy(sizePolicy)
        self.backInspectButton.setMinimumSize(QtCore.QSize(24, 24))
        self.backInspectButton.setMaximumSize(QtCore.QSize(24, 24))
        self.backInspectButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(
            QtGui.QPixmap(":/plugins/DsgTools/icons/backInspect.png"),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.backInspectButton.setIcon(icon)
        self.backInspectButton.setIconSize(QtCore.QSize(16, 16))
        self.backInspectButton.setObjectName("backInspectButton")
        self.nextInspectButton = QtWidgets.QPushButton(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.nextInspectButton.sizePolicy().hasHeightForWidth())
        self.nextInspectButton.setSizePolicy(sizePolicy)
        self.nextInspectButton.setMinimumSize(QtCore.QSize(24, 24))
        self.nextInspectButton.setMaximumSize(QtCore.QSize(24, 24))
        self.nextInspectButton.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(
            QtGui.QPixmap(":/plugins/DsgTools/icons/nextInspect.png"),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.nextInspectButton.setIcon(icon1)
        self.nextInspectButton.setIconSize(QtCore.QSize(16, 16))
        self.nextInspectButton.setObjectName("nextInspectButton")
        self.mFieldExpressionWidget = QgsFieldExpressionWidget(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mFieldExpressionWidget.sizePolicy().hasHeightForWidth())
        self.mFieldExpressionWidget.setSizePolicy(sizePolicy)
        self.mFieldExpressionWidget.setMinimumSize(QtCore.QSize(0, 20))
        self.mFieldExpressionWidget.setObjectName("mFieldExpressionWidget")
        self.gridLayout.addWidget(self.splitter, 0, 2, 1, 1)
        self.inspectPushButton = QtWidgets.QPushButton(Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.inspectPushButton.sizePolicy().hasHeightForWidth())
        self.inspectPushButton.setSizePolicy(sizePolicy)
        self.inspectPushButton.setMinimumSize(QtCore.QSize(24, 24))
        self.inspectPushButton.setMaximumSize(QtCore.QSize(24, 24))
        self.inspectPushButton.setText("")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(
            QtGui.QPixmap(":/plugins/DsgTools/icons/inspectFeatures.png"),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.inspectPushButton.setIcon(icon2)
        self.inspectPushButton.setIconSize(QtCore.QSize(16, 16))
        self.inspectPushButton.setCheckable(True)
        self.inspectPushButton.setObjectName("inspectPushButton")
        self.gridLayout.addWidget(self.inspectPushButton, 0, 0, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)