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)
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())
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())