From f677a0519ea8746a742fc446cd72a292c50d1650 Mon Sep 17 00:00:00 2001 From: "benjamin.jakimow" <benjamin.jakimow@geo.hu-berlin.de> Date: Fri, 24 May 2019 15:10:52 +0200 Subject: [PATCH] closes Issue #87 (SensorLayer / QgsMapLayer properties dialog from MapViewLayerTreeContextMenu uses center mapcanvas of all visible mapcanvases Signed-off-by: benjamin.jakimow <benjamin.jakimow@geo.hu-berlin.de> --- eotimeseriesviewer/mapvisualization.py | 31 ++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/eotimeseriesviewer/mapvisualization.py b/eotimeseriesviewer/mapvisualization.py index a299c88c..5dceef48 100644 --- a/eotimeseriesviewer/mapvisualization.py +++ b/eotimeseriesviewer/mapvisualization.py @@ -54,13 +54,14 @@ KEY_SENSOR_LAYER = 'eotsv/sensorlayer' class MapViewLayerTreeViewMenuProvider(QgsLayerTreeViewMenuProvider): - def __init__(self, view: QgsLayerTreeView, canvas: QgsMapCanvas): + def __init__(self, mapView, view: QgsLayerTreeView, canvas: QgsMapCanvas): super(MapViewLayerTreeViewMenuProvider, self).__init__() assert isinstance(view, QgsLayerTreeView) assert isinstance(canvas, QgsMapCanvas) self.mLayerTreeView = view self.mDummyCanvas = canvas self.mDefActions = QgsLayerTreeViewDefaultActions(self.mLayerTreeView) + self.mMapView = mapView self.actionAddGroup = self.mDefActions.actionAddGroup() self.actionRename = self.mDefActions.actionRenameGroupOrLayer() @@ -75,6 +76,8 @@ class MapViewLayerTreeViewMenuProvider(QgsLayerTreeViewMenuProvider): self.actionAddEOTSVTemporalProfiles = QAction('Add Temporal Profile Layer') + def mapView(self): + return self.mMapView def layerTreeView(self)->QgsLayerTreeView: return self.mLayerTreeView @@ -118,9 +121,22 @@ class MapViewLayerTreeViewMenuProvider(QgsLayerTreeViewMenuProvider): menu.addAction(self.actionAddEOTSVTemporalProfiles) menu.addSeparator() + + centerCanvas = None + if isinstance(self.mapView(), MapView): + visibleCanvases = self.mapView().visibleMapCanvases() + if len(visibleCanvases) > 0: + i = int(len(visibleCanvases) / 2) + centerCanvas = visibleCanvases[i] + + a = menu.addAction('Set Properties') - a.triggered.connect(lambda *args, lyr=l, canvas=self.mDummyCanvas: showLayerPropertiesDialog(lyr, canvas)) - a.setEnabled(not isinstance(l, SensorProxyLayer)) + a.triggered.connect(lambda *args, canvas=centerCanvas, lyr=l: + showLayerPropertiesDialog(lyr, canvas)) + a.setEnabled(isinstance(centerCanvas, QgsMapCanvas)) + + + #a = menu.addAction('Settings') #from qps.layerproperties import showLayerPropertiesDialog #a.triggered.connect(lambda *args, lyr=l:showLayerPropertiesDialog(lyr, self._canvas)) @@ -228,7 +244,7 @@ class MapView(QFrame, loadUIFormClass(jp(DIR_UI, 'mapview.ui'))): self._createSensorNode() self.mLayerTreeView.setModel(self.mLayerTreeModel) - self.mMapLayerTreeViewMenuProvider = MapViewLayerTreeViewMenuProvider(self.mLayerTreeView, self.mDummyCanvas) + self.mMapLayerTreeViewMenuProvider = MapViewLayerTreeViewMenuProvider(self, self.mLayerTreeView, self.mDummyCanvas) # register some actions that interact with other GUI elements self.mMapLayerTreeViewMenuProvider.actionAddEOTSVSpectralProfiles.triggered.connect(self.addSpectralProfileLayer) @@ -241,6 +257,13 @@ class MapView(QFrame, loadUIFormClass(jp(DIR_UI, 'mapview.ui'))): self.mIsVisible = True self.setTitle(name) + def visibleMapCanvases(self)->list: + """ + Returns the currently visible mapcanvases + :return: [list-of-MapCanvases] + """ + return [m for m in self.mapCanvases() if m.isVisibleToViewport()] + def onAddOgrLayer(self): from .externals.qps.utils import SelectMapLayersDialog -- GitLab