class TaskingDockWidget(BASE, WIDGET): def __init__( self, parent=None, ): super().__init__(parent=parent) self.setupUi(self) self.rect = None self.prev_map_tool = None self.btnMapTool.setIcon(TASKING_ICON) self.btnMapTool.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.footprint = QgsRubberBand(iface.mapCanvas(), QgsWkbTypes.PolygonGeometry) self.footprint.setStrokeColor(PLANET_COLOR) self.footprint.setFillColor(QColor(204, 235, 239, 100)) self.footprint.setWidth(2) self.marker = QgsRubberBand(iface.mapCanvas(), QgsWkbTypes.PointGeometry) self.marker.setIcon(QgsRubberBand.ICON_SVG) self.marker.setSvgIcon(SVG_ICON, QPoint(-15, -30)) self.map_tool = AOICaptureMapTool(iface.mapCanvas()) self.map_tool.aoi_captured.connect(self.aoi_captured) self.btnMapTool.toggled.connect(self._set_map_tool) iface.mapCanvas().mapToolSet.connect(self._map_tool_set) self.textBrowserPoint.setHtml("No point selected") self.btnOpenDashboard.setEnabled(False) self.btnOpenDashboard.clicked.connect(self._open_tasking_dashboard) self.btnCancel.clicked.connect(self.cancel_clicked) self.visibilityChanged.connect(self.visibility_changed) self.textBrowserPoint.viewport().setAutoFillBackground(False) def aoi_captured(self, rect, pt): self.pt = pt self.rect = rect self.footprint.setToGeometry(QgsGeometry.fromRect(rect)) transform = QgsCoordinateTransform( QgsCoordinateReferenceSystem("EPSG:4326"), QgsProject.instance().crs(), QgsProject.instance(), ) transformed = transform.transform(pt) self.marker.setToGeometry(QgsGeometry.fromPointXY(transformed)) self._set_map_tool(False) text = f""" <p><b>Selected Point Coordinates</b></p> <p align="center">Latitude : {pt.x():.4f}</p> <p align="center">Longitude : {pt.y():.4f}</p> """ self.textBrowserPoint.setHtml(text) self.btnCancel.setEnabled(True) self.btnOpenDashboard.setEnabled(True) def cancel_clicked(self): self.footprint.reset(QgsWkbTypes.PolygonGeometry) self.marker.reset(QgsWkbTypes.PointGeometry) self.btnOpenDashboard.setEnabled(False) self.textBrowserPoint.setHtml("") self.btnCancel.setEnabled(False) self._set_map_tool(False) def _set_map_tool(self, checked): if checked: self.prev_map_tool = iface.mapCanvas().mapTool() iface.mapCanvas().setMapTool(self.map_tool) else: if self.prev_map_tool is not None: iface.mapCanvas().setMapTool(self.prev_map_tool) def _map_tool_set(self, new, old): if new != self.map_tool: self.btnMapTool.blockSignals(True) self.btnMapTool.setChecked(False) self.btnMapTool.blockSignals(False) def visibility_changed(self, visible): if not visible: self.cancel_clicked() def _open_tasking_dashboard(self): dialog = WarningDialog(self.pt) dialog.exec()