diff --git a/timeseriesviewer/mapvisualization.py b/timeseriesviewer/mapvisualization.py index 94a3f5a4f73878a8971a474149da3be382571e7d..1f6c9c3b0e84d1c1cc1ed7a29ba8e2a616710834 100644 --- a/timeseriesviewer/mapvisualization.py +++ b/timeseriesviewer/mapvisualization.py @@ -63,6 +63,7 @@ class MapViewUI(QFrame, loadUI('mapviewdefinition.ui')): self.btnToggleCrosshair.setDefaultAction(self.actionToggleCrosshairVisibility) self.btnToggleMapViewVisibility.setDefaultAction(self.actionToggleMapViewHidden) + self.btnSetVectorStyle.setDefaultAction(self.actionSetVectorStyle) def connectActionWithGroupBox(self,action, groupBox): assert isinstance(action, QAction) @@ -114,11 +115,11 @@ class MapView(QObject): sigShowProfiles = pyqtSignal(SpatialPoint, MapCanvas, str) - def __init__(self, mapViewCollection, name='Map View', recommended_bands=None, parent=None): + def __init__(self, mapViewCollectionDock, name='Map View', recommended_bands=None, parent=None): super(MapView, self).__init__() - assert isinstance(mapViewCollection, MapViewCollectionDock) + assert isinstance(mapViewCollectionDock, MapViewCollectionDock) - self.ui = MapViewUI(mapViewCollection.stackedWidget) + self.ui = MapViewUI(mapViewCollectionDock.stackedWidget) self.ui.show() self.ui.cbQgsVectorLayer.setFilters(QgsMapLayerProxyModel.VectorLayer) self.ui.cbQgsVectorLayer.layerChanged.connect(self.setVectorLayer) @@ -130,7 +131,7 @@ class MapView(QObject): crosshairStyle=self.mCrosshairStyle)) ) - self.mapViewCollection = mapViewCollection + self.mapViewCollection = mapViewCollectionDock self.mSensorViews = collections.OrderedDict() self.mVectorLayer = None @@ -149,6 +150,7 @@ class MapView(QObject): self.ui.actionToggleVectorVisibility.setChecked(False) self.ui.actionToggleRasterVisibility.setChecked(True) + self.ui.actionSetVectorStyle.triggered.connect(self.setVectorLayerStyle) for sensor in self.mapViewCollection.TS.Sensors: self.addSensor(sensor) @@ -183,13 +185,23 @@ class MapView(QObject): m.extend(sensorView.mapCanvases()) return m + + + + def setVectorLayerStyle(self, *args): + if isinstance(self.mVectorLayer, QgsVectorLayer): + d = QgsRendererPropertiesDialog(self.mVectorLayer, QgsStyle.defaultStyle()) + d.exec_() + + def vectorLayerRenderer(self): if isinstance(self.mVectorLayer, QgsVectorLayer): - return self.mVectorLayer.rendererV2() + return self.mVectorLayer.renderer() return None + def setVectorLayerRenderer(self, renderer): - if isinstance(renderer, QgsFeatureRendererV2) and \ + if isinstance(renderer, QgsFeatureRenderer) and \ isinstance(self.mVectorLayer, QgsVectorLayer): self.mVectorLayer.setRendererV2(renderer) @@ -440,9 +452,9 @@ class MapViewSensorSettings(QObject): self.ceAlgs["Clip to MinMax"] = QgsContrastEnhancement.ClipToMinimumMaximum self.colorRampType = collections.OrderedDict() - self.colorRampType['Interpolated'] = QgsColorRampShader.INTERPOLATED - self.colorRampType['Discrete'] = QgsColorRampShader.DISCRETE - self.colorRampType['Exact'] = QgsColorRampShader.EXACT + self.colorRampType['Interpolated'] = QgsColorRampShader.Interpolated + self.colorRampType['Discrete'] = QgsColorRampShader.Discrete + self.colorRampType['Exact'] = QgsColorRampShader.Exact self.colorRampClassificationMode = collections.OrderedDict() self.colorRampClassificationMode['Continuous'] = 1 @@ -459,7 +471,7 @@ class MapViewSensorSettings(QObject): populateCombobox(self.ui.cbSingleBandMode, self.colorRampClassificationMode) #self.ui.cbSingleBandColorRamp.populate(QgsStyleV2.defaultStyle()) - self.ui.btnSingleBandColorRamp.set + self.ui.btnSingleBandColorRamp.setColorRamp(QgsStyle.defaultStyle().colorRamp('Greens')) nb = self.sensor.nb @@ -490,7 +502,7 @@ class MapViewSensorSettings(QObject): colorRamp = self.ui.btnSingleBandColorRamp.colorRamp() #fix: QGIS 3.0 constructor shaderFunc = QgsColorRampShader(bandStats[0].Min, bandStats[0].Max) - shaderFunc.setColorRampType(QgsColorRampShader.INTERPOLATED) + shaderFunc.setColorRampType(QgsColorRampShader.Interpolated) shaderFunc.setClip(True) nSteps = 5 colorRampItems = [] @@ -684,7 +696,7 @@ class MapViewSensorSettings(QObject): self.multiBandMinValues[i].setText(niceNumberString(vMin)) self.multiBandMaxValues[i].setText(niceNumberString(vMax)) - idx = self.ceAlgs.values().index(ceRed.contrastEnhancementAlgorithm()) + idx = list(self.ceAlgs.values()).index(ceRed.contrastEnhancementAlgorithm()) ui.comboBoxContrastEnhancement.setCurrentIndex(idx) @@ -703,7 +715,9 @@ class MapViewSensorSettings(QObject): shaderFunc = shader.rasterShaderFunction() #self.ui.cbSingleBandColorRampType.setCurrentIndex(shaderFunc.colorRampType()) - self.ui.btnSingleBandColorRamp.setColorRamp(shaderFunc.colorRampType()) + colorRamp = shaderFunc.sourceColorRamp() + if isinstance(colorRamp, QgsColorRamp): + self.ui.btnSingleBandColorRamp.setColorRamp(colorRamp) updated = True self.updateUi() @@ -1795,55 +1809,32 @@ class MapViewCollectionDock(QgsDockWidget, loadUI('mapviewdock.ui')): return None -""" -class MapViewDockUI(QgsDockWidget, loadUi('mapviewdock.ui')): - def __init__(self, parent=None): - super(MapViewDockUI, self).__init__(parent) - self.setupUi(self) +if __name__ == '__main__': + from timeseriesviewer import utils + from timeseriesviewer.mapcanvas import MapCanvas + from example.Images import Img_2014_01_15_LC82270652014015LGN00_BOA - self.baseTitle = self.windowTitle() - self.btnApplyStyles.setDefaultAction(self.actionApplyStyles) - - #self.dockLocationChanged.connect(self.adjustLayouts) - - - - def toggleLayout(self, p): - newLayout = None - l = p.layout() - print('toggle layout {}'.format(str(p.objectName()))) - tmp = QWidget() - tmp.setLayout(l) - sMax = p.maximumSize() - sMax.transpose() - sMin = p.minimumSize() - sMin.transpose() - p.setMaximumSize(sMax) - p.setMinimumSize(sMin) - if isinstance(l, QVBoxLayout): - newLayout = QHBoxLayout() - else: - newLayout = QVBoxLayout() - print(l, '->', newLayout) - while l.count() > 0: - item = l.itemAt(0) - l.removeItem(item) + from example import exampleEvents + qgsApp = utils.initQgisApplication() - newLayout.addItem(item) + TS= TimeSeries() + dock = MapViewCollectionDock() + dock.setTimeSeries(TS) + dock.show() + mv1 = dock.createMapView() + mv2 = dock.createMapView() + dock.setCurrentMapView(mv1) + assert dock.currentMapView() == mv1 + dock.setCurrentMapView(mv2) + assert dock.currentMapView() == mv2 + vl = QgsVectorLayer(exampleEvents, 'ogr') + QgsProject.instance().addMapLayer(vl) + #d = QgsRendererPropertiesDialog(vl, QgsStyle.defaultStyle()) + #d.show() - p.setLayout(newLayout) - return newLayout + TS.addFiles(Img_2014_01_15_LC82270652014015LGN00_BOA) - def adjustLayouts(self, area): - return - lOld = self.scrollAreaMapsViewDockContent.layout() - if area in [Qt.LeftDockWidgetArea, Qt.RightDockWidgetArea] \ - and isinstance(lOld, QVBoxLayout) or \ - area in [Qt.TopDockWidgetArea, Qt.BottomDockWidgetArea] \ - and isinstance(lOld, QHBoxLayout): - #self.toogleLayout(self.scrollAreaMapsViewDockContent) - self.toggleLayout(self.BVButtonList) -""" \ No newline at end of file + qgsApp.exec_() \ No newline at end of file diff --git a/timeseriesviewer/ui/mapviewdefinition.ui b/timeseriesviewer/ui/mapviewdefinition.ui index aefc551eb637814f26f840418510801e4b3cf943..b59e5ddee201e1e29ece1052d834fe9457ca49ef 100644 --- a/timeseriesviewer/ui/mapviewdefinition.ui +++ b/timeseriesviewer/ui/mapviewdefinition.ui @@ -38,7 +38,16 @@ <property name="sizeConstraint"> <enum>QLayout::SetMinAndMaxSize</enum> </property> - <property name="margin"> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> <number>2</number> </property> <item> @@ -89,7 +98,16 @@ <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <property name="margin"> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> <number>2</number> </property> <item> @@ -104,7 +122,16 @@ <property name="spacing"> <number>2</number> </property> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> </layout> @@ -235,23 +262,40 @@ <enum>QLayout::SetMinAndMaxSize</enum> </property> <item> - <widget class="QgsMapLayerComboBox" name="cbQgsVectorLayer"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>1</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>2</number> </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>0</height> - </size> + <property name="topMargin"> + <number>0</number> </property> - </widget> + <item> + <widget class="QgsMapLayerComboBox" name="cbQgsVectorLayer"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="btnSetVectorStyle"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + </layout> </item> <item> <widget class="QLabel" name="label_3"> @@ -261,9 +305,9 @@ </widget> </item> </layout> - <zorder>cbQgsVectorLayer</zorder> <zorder>collapseButton</zorder> <zorder>label_3</zorder> + <zorder>horizontalLayoutWidget</zorder> </widget> </item> <item> @@ -293,7 +337,16 @@ <property name="spacing"> <number>0</number> </property> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> @@ -301,7 +354,16 @@ <property name="sizeConstraint"> <enum>QLayout::SetMinAndMaxSize</enum> </property> - <property name="margin"> + <property name="leftMargin"> + <number>9</number> + </property> + <property name="topMargin"> + <number>9</number> + </property> + <property name="rightMargin"> + <number>9</number> + </property> + <property name="bottomMargin"> <number>9</number> </property> </layout> @@ -405,6 +467,18 @@ <string>toggleRasterVisibility</string> </property> </action> + <action name="actionSetVectorStyle"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/timeseriesviewer/icons/symbology.svg</normaloff>:/timeseriesviewer/icons/symbology.svg</iconset> + </property> + <property name="text"> + <string>Set Vector Style</string> + </property> + <property name="toolTip"> + <string>Sets the style of the selected vector layer.</string> + </property> + </action> </widget> <customwidgets> <customwidget> diff --git a/timeseriesviewer/ui/mapviewrendersettings.ui b/timeseriesviewer/ui/mapviewrendersettings.ui index a4aebaf83d5af92c7c987c51564a29135b18026b..a5f17f42924ae5cb396d7df179087dea47aa3537 100644 --- a/timeseriesviewer/ui/mapviewrendersettings.ui +++ b/timeseriesviewer/ui/mapviewrendersettings.ui @@ -1042,7 +1042,7 @@ </widget> </item> <item row="5" column="1"> - <widget class="QToolButton" name="btnSingleBandColorRamp"> + <widget class="QgsColorRampButton" name="btnSingleBandColorRamp"> <property name="text"> <string>...</string> </property> @@ -1209,6 +1209,13 @@ enhancement</string> </property> </action> </widget> + <customwidgets> + <customwidget> + <class>QgsColorRampButton</class> + <extends>QToolButton</extends> + <header>qgis.gui</header> + </customwidget> + </customwidgets> <resources> <include location="resources.qrc"/> </resources>