|
12 | 12 | import time
|
13 | 13 |
|
14 | 14 | import qgis # NOQA
|
15 |
| -from qgis.PyQt.QtCore import QDate, QDateTime, QDir, QTime |
| 15 | +from qgis.PyQt.QtCore import QDate, QDateTime, QDir, QTime, Qt |
16 | 16 | from qgis.PyQt.QtXml import QDomDocument
|
17 | 17 | from qgis.core import (
|
18 | 18 | QgsAnnotationLayer,
|
|
36 | 36 | QgsSingleSymbolRenderer,
|
37 | 37 | QgsTemporalController,
|
38 | 38 | QgsTemporalNavigationObject,
|
39 |
| - QgsVectorLayer, |
| 39 | + QgsVectorLayer |
40 | 40 | )
|
41 |
| -from qgis.gui import QgsMapCanvas |
| 41 | +from qgis.gui import QgsMapCanvas, QgsMapToolPan, QgsMapToolZoom, QgsMapToolEmitPoint |
42 | 42 | from qgis.testing import start_app, unittest
|
43 | 43 |
|
44 | 44 | app = start_app()
|
@@ -794,6 +794,48 @@ def on_extent_changed():
|
794 | 794 |
|
795 | 795 | self.assertEqual(TestQgsMapCanvas.new_crs, QgsCoordinateReferenceSystem('EPSG:3857'))
|
796 | 796 |
|
| 797 | + def test_set_map_tool(self): |
| 798 | + |
| 799 | + canvas = QgsMapCanvas() |
| 800 | + moveTool = QgsMapToolPan(canvas) |
| 801 | + zoomTool = QgsMapToolZoom(canvas, True) |
| 802 | + emitTool = QgsMapToolEmitPoint(canvas) |
| 803 | + |
| 804 | + counter = {} |
| 805 | + |
| 806 | + def increment(tool, section): |
| 807 | + counter[tool][section] += 1 |
| 808 | + |
| 809 | + # Keep track of how many times each tool is activated, deactivated, and reactivated |
| 810 | + for tool in [moveTool, zoomTool, emitTool]: |
| 811 | + counter[tool] = {"activated": 0, "deactivated": 0, "reactivated": 0} |
| 812 | + tool.activated.connect(lambda tool=tool: increment(tool, "activated"), Qt.DirectConnection) |
| 813 | + tool.deactivated.connect(lambda tool=tool: increment(tool, "deactivated"), Qt.DirectConnection) |
| 814 | + tool.reactivated.connect(lambda tool=tool: increment(tool, "reactivated"), Qt.DirectConnection) |
| 815 | + |
| 816 | + canvas.setMapTool(moveTool) |
| 817 | + canvas.setMapTool(zoomTool) |
| 818 | + canvas.setMapTool(zoomTool) |
| 819 | + canvas.setMapTool(emitTool) |
| 820 | + |
| 821 | + # Check that the correct number of activations and deactivations occurred |
| 822 | + self.assertEqual(counter[moveTool]["activated"], 1) |
| 823 | + self.assertEqual(counter[moveTool]["deactivated"], 1) |
| 824 | + self.assertEqual(counter[moveTool]["reactivated"], 0) |
| 825 | + |
| 826 | + self.assertEqual(counter[zoomTool]["activated"], 1) |
| 827 | + self.assertEqual(counter[zoomTool]["deactivated"], 1) |
| 828 | + self.assertEqual(counter[zoomTool]["reactivated"], 1) |
| 829 | + |
| 830 | + self.assertEqual(counter[emitTool]["activated"], 1) |
| 831 | + self.assertEqual(counter[emitTool]["deactivated"], 0) |
| 832 | + self.assertEqual(counter[emitTool]["reactivated"], 0) |
| 833 | + |
| 834 | + canvas.setMapTool(emitTool) |
| 835 | + self.assertEqual(counter[emitTool]["activated"], 1) |
| 836 | + self.assertEqual(counter[emitTool]["deactivated"], 0) |
| 837 | + self.assertEqual(counter[emitTool]["reactivated"], 1) |
| 838 | + |
797 | 839 |
|
798 | 840 | if __name__ == '__main__':
|
799 | 841 | unittest.main()
|
0 commit comments