_layerRefresh refactor + code clean
This commit is contained in:
parent
126f0f8b50
commit
d72fbe169d
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>290</width>
|
<width>290</width>
|
||||||
<height>532</height>
|
<height>676</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
@ -61,7 +61,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="cbWaterlevelsAgency">
|
<widget class="QCheckBox" name="cbWaterlevelsAgency">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Organisation</string>
|
<string>Betreiber</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -107,6 +107,29 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QGroupBox" name="gbBasemap">
|
||||||
|
<property name="title">
|
||||||
|
<string>Basiskarte:</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="cbBasemapLines">
|
||||||
|
<property name="text">
|
||||||
|
<string>Flüsse</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="cbBasemapAreas">
|
||||||
|
<property name="text">
|
||||||
|
<string>Flächen</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QGroupBox" name="gbStations">
|
<widget class="QGroupBox" name="gbStations">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
@ -145,7 +168,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="cbStationsAgency">
|
<widget class="QCheckBox" name="cbStationsAgency">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Organisation</string>
|
<string>Betreiber</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -175,25 +198,35 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="5" column="0">
|
||||||
<widget class="QGroupBox" name="gbBasemap">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Basiskarte:</string>
|
<string>Pegelverlauf:</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="cbBasemapLines">
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
<property name="text">
|
<item>
|
||||||
<string>Flüsse</string>
|
<widget class="QLabel" name="label">
|
||||||
</property>
|
<property name="text">
|
||||||
</widget>
|
<string>Station:</string>
|
||||||
</item>
|
</property>
|
||||||
<item>
|
</widget>
|
||||||
<widget class="QCheckBox" name="cbBasemapAreas">
|
</item>
|
||||||
<property name="text">
|
<item>
|
||||||
<string>Flächen</string>
|
<widget class="QComboBox" name="comboBox"/>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Tage</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBox"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
75
po_runner.py
75
po_runner.py
@ -73,6 +73,7 @@ class PoRunner(object):
|
|||||||
|
|
||||||
if self.lines is not None:
|
if self.lines is not None:
|
||||||
self._layerSetVisible(self.lines, checked)
|
self._layerSetVisible(self.lines, checked)
|
||||||
|
self._layerRefresh(self.lines)
|
||||||
|
|
||||||
def cbBasemapAreasToggled(self):
|
def cbBasemapAreasToggled(self):
|
||||||
checked = self.ui.cbBasemapAreas.isChecked()
|
checked = self.ui.cbBasemapAreas.isChecked()
|
||||||
@ -83,6 +84,7 @@ class PoRunner(object):
|
|||||||
|
|
||||||
if self.areas is not None:
|
if self.areas is not None:
|
||||||
self._layerSetVisible(self.areas, checked)
|
self._layerSetVisible(self.areas, checked)
|
||||||
|
self._layerRefresh(self.areas)
|
||||||
|
|
||||||
def disconnectBasemapLines(self):
|
def disconnectBasemapLines(self):
|
||||||
print("disconnectBasemapLines")
|
print("disconnectBasemapLines")
|
||||||
@ -96,16 +98,12 @@ class PoRunner(object):
|
|||||||
|
|
||||||
# stations ----------------------------------------------------------------
|
# 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
|
# noinspection DuplicatedCode
|
||||||
def _stationsUpdateLabeling(self):
|
def _stationsUpdateLabeling(self):
|
||||||
|
print("_stationsUpdateLabeling")
|
||||||
|
if self.stations is None:
|
||||||
|
return
|
||||||
|
|
||||||
fields = []
|
fields = []
|
||||||
if self.ui.cbStationsName.isChecked():
|
if self.ui.cbStationsName.isChecked():
|
||||||
fields.append("shortname")
|
fields.append("shortname")
|
||||||
@ -117,6 +115,7 @@ class PoRunner(object):
|
|||||||
fields.append("km")
|
fields.append("km")
|
||||||
if self.ui.cbStationsWater.isChecked():
|
if self.ui.cbStationsWater.isChecked():
|
||||||
fields.append("water")
|
fields.append("water")
|
||||||
|
|
||||||
self._layerUpdateLabeling(self.stations, fields)
|
self._layerUpdateLabeling(self.stations, fields)
|
||||||
|
|
||||||
# stations signals --------------------------------------------------------
|
# stations signals --------------------------------------------------------
|
||||||
@ -136,12 +135,14 @@ class PoRunner(object):
|
|||||||
print("cbStationsVisibleToggled: %s" % (visible,))
|
print("cbStationsVisibleToggled: %s" % (visible,))
|
||||||
|
|
||||||
if self.stations is None and 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:
|
if self.stations is not None:
|
||||||
self.stations.setLabelsEnabled(visible)
|
|
||||||
self._layerSetVisible(self.stations, visible)
|
self._layerSetVisible(self.stations, visible)
|
||||||
self._layerRefresh(self.stations)
|
self._stationsUpdateLabeling()
|
||||||
|
|
||||||
def cbStationsNameToggled(self):
|
def cbStationsNameToggled(self):
|
||||||
checked = self.ui.cbStationsName.isChecked()
|
checked = self.ui.cbStationsName.isChecked()
|
||||||
@ -170,16 +171,11 @@ class PoRunner(object):
|
|||||||
|
|
||||||
# waterlevels -------------------------------------------------------------
|
# 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
|
# noinspection DuplicatedCode
|
||||||
def _waterlevelsUpdateLabeling(self):
|
def _waterlevelsUpdateLabeling(self):
|
||||||
|
if self.waterlevels is None:
|
||||||
|
return
|
||||||
|
|
||||||
fields = []
|
fields = []
|
||||||
if self.ui.cbWaterlevelsName.isChecked():
|
if self.ui.cbWaterlevelsName.isChecked():
|
||||||
fields.append("shortname")
|
fields.append("shortname")
|
||||||
@ -199,12 +195,6 @@ class PoRunner(object):
|
|||||||
|
|
||||||
# waterlevels signals -----------------------------------------------------
|
# 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):
|
def connect_waterlevels_signals(self):
|
||||||
print("connect_waterlevels_signals")
|
print("connect_waterlevels_signals")
|
||||||
# noinspection DuplicatedCode
|
# noinspection DuplicatedCode
|
||||||
@ -221,13 +211,15 @@ class PoRunner(object):
|
|||||||
visible = self.ui.cbWaterlevelsVisible.isChecked()
|
visible = self.ui.cbWaterlevelsVisible.isChecked()
|
||||||
print("cbWaterlevelsVisibleToggled: %s" % (visible,))
|
print("cbWaterlevelsVisibleToggled: %s" % (visible,))
|
||||||
|
|
||||||
if self.waterlevels is None:
|
if self.waterlevels is None and visible:
|
||||||
self.loadWaterlevels()
|
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:
|
if self.waterlevels is not None:
|
||||||
self.waterlevels.setLabelsEnabled(visible)
|
|
||||||
self._layerSetVisible(self.waterlevels, visible)
|
self._layerSetVisible(self.waterlevels, visible)
|
||||||
self._layerRefresh(self.waterlevels)
|
self._waterlevelsUpdateLabeling()
|
||||||
|
|
||||||
def cbWaterlevelsNameToggled(self):
|
def cbWaterlevelsNameToggled(self):
|
||||||
checked = self.ui.cbWaterlevelsName.isChecked()
|
checked = self.ui.cbWaterlevelsName.isChecked()
|
||||||
@ -264,18 +256,6 @@ class PoRunner(object):
|
|||||||
print("cbWaterlevelsAbsoluteToggled: %s" % (checked,))
|
print("cbWaterlevelsAbsoluteToggled: %s" % (checked,))
|
||||||
self._waterlevelsUpdateLabeling()
|
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):
|
def disconnectWaterlevels(self):
|
||||||
print("disconnectWaterlevels")
|
print("disconnectWaterlevels")
|
||||||
self.waterlevels = None
|
self.waterlevels = None
|
||||||
@ -283,6 +263,11 @@ class PoRunner(object):
|
|||||||
|
|
||||||
# layers ------------------------------------------------------------------
|
# 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:
|
def _layerFromReader(self, fields, crs, features, title) -> None | QgsVectorLayer:
|
||||||
print("_layerFromReader")
|
print("_layerFromReader")
|
||||||
if features is None:
|
if features is None:
|
||||||
@ -298,6 +283,9 @@ class PoRunner(object):
|
|||||||
layer.updateFields()
|
layer.updateFields()
|
||||||
|
|
||||||
provider.addFeatures(features)
|
provider.addFeatures(features)
|
||||||
|
for error in provider.errors():
|
||||||
|
print("Fehler beim Hinzufügen von Features: " + error)
|
||||||
|
|
||||||
layer.updateExtents()
|
layer.updateExtents()
|
||||||
|
|
||||||
layer.commitChanges()
|
layer.commitChanges()
|
||||||
@ -307,7 +295,7 @@ class PoRunner(object):
|
|||||||
|
|
||||||
return None
|
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")
|
print("_layerShow")
|
||||||
if layer is None:
|
if layer is None:
|
||||||
print("_layerShow: Übergebener Layer ist None")
|
print("_layerShow: Übergebener Layer ist None")
|
||||||
@ -326,9 +314,6 @@ class PoRunner(object):
|
|||||||
layer_tree = self.iface.layerTreeCanvasBridge().rootGroup()
|
layer_tree = self.iface.layerTreeCanvasBridge().rootGroup()
|
||||||
layer_tree.insertChildNode(0, QgsLayerTreeLayer(layer))
|
layer_tree.insertChildNode(0, QgsLayerTreeLayer(layer))
|
||||||
|
|
||||||
self._layerSetVisible(layer, True)
|
|
||||||
self._layerRefresh(layer)
|
|
||||||
|
|
||||||
def _layerUpdateLabeling(self, layer, fields):
|
def _layerUpdateLabeling(self, layer, fields):
|
||||||
labeling = QgsVectorLayerSimpleLabeling(QgsPalLayerSettings())
|
labeling = QgsVectorLayerSimpleLabeling(QgsPalLayerSettings())
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user