diff --git a/pegelonline_dockwidget_base.ui b/pegelonline_dockwidget_base.ui index 36dc7e0..1936b0b 100644 --- a/pegelonline_dockwidget_base.ui +++ b/pegelonline_dockwidget_base.ui @@ -7,7 +7,7 @@ 0 0 290 - 532 + 676 @@ -61,7 +61,7 @@ - Organisation + Betreiber @@ -107,6 +107,29 @@ + + + + Basiskarte: + + + + + + Flüsse + + + + + + + Flächen + + + + + + @@ -145,7 +168,7 @@ - Organisation + Betreiber @@ -175,25 +198,35 @@ - - + + - Basiskarte: + Pegelverlauf: - + - - - Flüsse - - - - - - - Flächen - - + + + + + Station: + + + + + + + + + + Tage + + + + + + + diff --git a/po_runner.py b/po_runner.py index e5192a4..e8be14d 100644 --- a/po_runner.py +++ b/po_runner.py @@ -73,6 +73,7 @@ class PoRunner(object): if self.lines is not None: self._layerSetVisible(self.lines, checked) + self._layerRefresh(self.lines) def cbBasemapAreasToggled(self): checked = self.ui.cbBasemapAreas.isChecked() @@ -83,6 +84,7 @@ class PoRunner(object): if self.areas is not None: self._layerSetVisible(self.areas, checked) + self._layerRefresh(self.areas) def disconnectBasemapLines(self): print("disconnectBasemapLines") @@ -96,16 +98,12 @@ class PoRunner(object): # stations ---------------------------------------------------------------- - def loadStations(self): - print("loadStations") - reader = PoQgsStations() - features = reader.getStationsFeatures() - self.stations = self._layerFromReader(reader.fields, reader.crs, features, "Stationen") - self._stationsUpdateLabeling() - self._layerShow(self.stations, "styles/label_stations.qml", self.disconnectStations) - # noinspection DuplicatedCode def _stationsUpdateLabeling(self): + print("_stationsUpdateLabeling") + if self.stations is None: + return + fields = [] if self.ui.cbStationsName.isChecked(): fields.append("shortname") @@ -117,6 +115,7 @@ class PoRunner(object): fields.append("km") if self.ui.cbStationsWater.isChecked(): fields.append("water") + self._layerUpdateLabeling(self.stations, fields) # stations signals -------------------------------------------------------- @@ -136,12 +135,14 @@ class PoRunner(object): print("cbStationsVisibleToggled: %s" % (visible,)) if self.stations is None and visible: - self.loadStations() + reader = PoQgsStations() + features = reader.getStationsFeatures() + self.stations = self._layerFromReader(reader.fields, reader.crs, features, "Stationen") + self._layerAdd(self.stations, "styles/label_stations.qml", self.disconnectStations) if self.stations is not None: - self.stations.setLabelsEnabled(visible) self._layerSetVisible(self.stations, visible) - self._layerRefresh(self.stations) + self._stationsUpdateLabeling() def cbStationsNameToggled(self): checked = self.ui.cbStationsName.isChecked() @@ -170,16 +171,11 @@ class PoRunner(object): # waterlevels ------------------------------------------------------------- - def loadWaterlevels(self): - print("loadWaterlevels") - reader = PoQgsCurrentW() - features = reader.getCurrentWFeatures() - self.waterlevels = self._layerFromReader(reader.fields, reader.crs, features, "Wasserstandinformationen") - self._waterlevelsUpdateLabeling() - self._layerShow(self.waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels) - # noinspection DuplicatedCode def _waterlevelsUpdateLabeling(self): + if self.waterlevels is None: + return + fields = [] if self.ui.cbWaterlevelsName.isChecked(): fields.append("shortname") @@ -199,12 +195,6 @@ class PoRunner(object): # waterlevels signals ----------------------------------------------------- - def _layerSetVisible(self, basemap: QgsVectorLayer, visible): - print("_layerSetVisible: %s => %s" % (basemap.name, visible)) - layer_tree = QgsProject.instance().layerTreeRoot().findLayer(basemap.id()) - layer_tree.setItemVisibilityChecked(visible) - self._layerRefresh(basemap) - def connect_waterlevels_signals(self): print("connect_waterlevels_signals") # noinspection DuplicatedCode @@ -221,13 +211,15 @@ class PoRunner(object): visible = self.ui.cbWaterlevelsVisible.isChecked() print("cbWaterlevelsVisibleToggled: %s" % (visible,)) - if self.waterlevels is None: - self.loadWaterlevels() + if self.waterlevels is None and visible: + reader = PoQgsCurrentW() + features = reader.getCurrentWFeatures() + self.waterlevels = self._layerFromReader(reader.fields, reader.crs, features, "Wasserstandinformationen") + self._layerAdd(self.waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels) if self.waterlevels is not None: - self.waterlevels.setLabelsEnabled(visible) self._layerSetVisible(self.waterlevels, visible) - self._layerRefresh(self.waterlevels) + self._waterlevelsUpdateLabeling() def cbWaterlevelsNameToggled(self): checked = self.ui.cbWaterlevelsName.isChecked() @@ -264,18 +256,6 @@ class PoRunner(object): print("cbWaterlevelsAbsoluteToggled: %s" % (checked,)) self._waterlevelsUpdateLabeling() - # def rbValueChanged(self, button): - # print("rbValueChanged") - # if self.layer_waterlevels is None: - # self.loadWaterlevels() - # - # if button.objectName() == "rbShowTrend": - # self.layer_waterlevels.loadNamedStyle(os.path.join(self.local_dir, "styles/label_currentw_trend.qml")) - # elif button.objectName() == "rbShowAbsValues": - # self.layer_waterlevels.loadNamedStyle(os.path.join(self.local_dir, "styles/label_currentw_absvalue.qml")) - # - # self.cbWaterlevelsVisibleToggled() - def disconnectWaterlevels(self): print("disconnectWaterlevels") self.waterlevels = None @@ -283,6 +263,11 @@ class PoRunner(object): # layers ------------------------------------------------------------------ + def _layerSetVisible(self, basemap: QgsVectorLayer, visible): + print("_layerSetVisible: %s => %s" % (basemap.name, visible)) + layer_tree = QgsProject.instance().layerTreeRoot().findLayer(basemap.id()) + layer_tree.setItemVisibilityChecked(visible) + def _layerFromReader(self, fields, crs, features, title) -> None | QgsVectorLayer: print("_layerFromReader") if features is None: @@ -298,6 +283,9 @@ class PoRunner(object): layer.updateFields() provider.addFeatures(features) + for error in provider.errors(): + print("Fehler beim Hinzufügen von Features: " + error) + layer.updateExtents() layer.commitChanges() @@ -307,7 +295,7 @@ class PoRunner(object): return None - def _layerShow(self, layer: QgsVectorLayer, styles_path: str, disconnect: Callable[[], None]): + def _layerAdd(self, layer: QgsVectorLayer, styles_path: str, disconnect: Callable[[], None]): print("_layerShow") if layer is None: print("_layerShow: Übergebener Layer ist None") @@ -326,9 +314,6 @@ class PoRunner(object): layer_tree = self.iface.layerTreeCanvasBridge().rootGroup() layer_tree.insertChildNode(0, QgsLayerTreeLayer(layer)) - self._layerSetVisible(layer, True) - self._layerRefresh(layer) - def _layerUpdateLabeling(self, layer, fields): labeling = QgsVectorLayerSimpleLabeling(QgsPalLayerSettings())