plugin_animation/map_point_tool.py
2026-04-27 15:40:40 +02:00

38 lines
1.3 KiB
Python

from qgis.gui import QgsMapTool
from qgis.PyQt.QtCore import pyqtSignal
from qgis.PyQt.QtGui import QCursor
from qgis.PyQt.QtCore import Qt
class PointCaptureTool(QgsMapTool):
"""
Outil de capture d'un point sur la carte QGIS.
Émet pointCaptured(x, y, crs) au clic gauche.
Se désactive automatiquement après un clic.
"""
pointCaptured = pyqtSignal(float, float, object)
def __init__(self, canvas, previous_tool=None):
super().__init__(canvas)
self.canvas = canvas
self.previous_tool = previous_tool
self.setCursor(QCursor(Qt.CrossCursor))
def canvasReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
point = self.toMapCoordinates(event.pos())
crs = self.canvas.mapSettings().destinationCrs()
self.pointCaptured.emit(point.x(), point.y(), crs)
# Restaurer l'outil précédent
if self.previous_tool:
self.canvas.setMapTool(self.previous_tool)
else:
self.canvas.unsetMapTool(self)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
if self.previous_tool:
self.canvas.setMapTool(self.previous_tool)
else:
self.canvas.unsetMapTool(self)