refactor ui + code clean
This commit is contained in:
parent
a93c9a520f
commit
fb740f4895
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>395</width>
|
||||
<height>365</height>
|
||||
<width>297</width>
|
||||
<height>556</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
@ -21,69 +21,153 @@
|
||||
</property>
|
||||
<widget class="QWidget" name="dockWidgetContents">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0">
|
||||
<widget class="QGroupBox" name="gbShowMap">
|
||||
<item row="4" column="0">
|
||||
<widget class="QGroupBox" name="gbWaterlevels">
|
||||
<property name="title">
|
||||
<string>Wasserstandinformationen anzeigen:</string>
|
||||
<string>Pegelstände:</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbStationsVisible">
|
||||
<property name="text">
|
||||
<string>Stationen anzeigen</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbWaterlevelsVisible">
|
||||
<property name="text">
|
||||
<string>Wasserstände anzeigen</string>
|
||||
<string>Anzeigen (Download von Pegelonline)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbBasemapLinesVisible">
|
||||
<widget class="QGroupBox" name="gbWaterlevelsOptions">
|
||||
<property name="title">
|
||||
<string>Optionen:</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbWaterlevelsName">
|
||||
<property name="text">
|
||||
<string>Basiskarte Flüsse anzeigen</string>
|
||||
<string>Name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbBasemapAreasVisible">
|
||||
<widget class="QCheckBox" name="cbWaterlevelsTimestamp">
|
||||
<property name="text">
|
||||
<string>Basiskarte Flächen anzeigen</string>
|
||||
<string>Zeitstempel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbWaterlevelsLabelsVisible">
|
||||
<widget class="QCheckBox" name="cbWaterlevelsValue">
|
||||
<property name="text">
|
||||
<string>Beschriftungen</string>
|
||||
<string>Aktueller Wert</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="rbShowTrend">
|
||||
<widget class="QCheckBox" name="cbWaterlevelsMean">
|
||||
<property name="text">
|
||||
<string>Trend</string>
|
||||
<string>mittelere niedrigste, höchste Pegel</string>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string notr="true">rbValue</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="rbShowAbsValues">
|
||||
<widget class="QCheckBox" name="cbWaterlevelsAbsolute">
|
||||
<property name="text">
|
||||
<string>Absolutwerte (in cm)</string>
|
||||
<string>absolute niedrigste, höchste Pegel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QGroupBox" name="gbStations">
|
||||
<property name="title">
|
||||
<string>Stationen:</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbStationsVisible">
|
||||
<property name="text">
|
||||
<string>Anzeigen (Download von Pegelonline)</string>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string notr="true">rbValue</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="PoGraphDisplay" name="poGraphDisplay" native="true"/>
|
||||
<widget class="QGroupBox" name="gbStationsOptions">
|
||||
<property name="title">
|
||||
<string>Optionen:</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbStationsName">
|
||||
<property name="text">
|
||||
<string>Name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbStationsNumber">
|
||||
<property name="text">
|
||||
<string>Nummer</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbStationsAgency">
|
||||
<property name="text">
|
||||
<string>Unternehmen</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbStationsKm">
|
||||
<property name="text">
|
||||
<string>km</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbStationsWater">
|
||||
<property name="text">
|
||||
<string>Wasserstand</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</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>
|
||||
@ -91,17 +175,6 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>PoGraphDisplay</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>pegelonline.poGraph2</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
<buttongroups>
|
||||
<buttongroup name="rbValue"/>
|
||||
</buttongroups>
|
||||
</ui>
|
||||
|
||||
227
po_runner.py
227
po_runner.py
@ -17,30 +17,28 @@ class PoRunner(object):
|
||||
self.local_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
# Layer Variablen
|
||||
self.layer_stations = None
|
||||
self.layer_waterlevels = None
|
||||
self.basemap_lines = None
|
||||
self.basemap_areas = None
|
||||
self.stations = None
|
||||
self.waterlevels = None
|
||||
self.lines = None
|
||||
self.areas = None
|
||||
|
||||
# connect ui signals
|
||||
self.ui.cbStationsVisible.toggled.connect(self.cbStationsVisibleToggled)
|
||||
self.ui.cbWaterlevelsVisible.toggled.connect(self.cbWaterlevelsVisibleToggled)
|
||||
self.ui.cbBasemapLinesVisible.toggled.connect(self.cbBasemapLinesVisibleToggled)
|
||||
self.ui.cbBasemapAreasVisible.toggled.connect(self.cbBasemapAreasVisibleToggled)
|
||||
self.ui.cbWaterlevelsLabelsVisible.toggled.connect(self.cbWaterlevelsLabelsVisibleToggled)
|
||||
self.ui.rbValue.buttonClicked.connect(self.rbValueChanged)
|
||||
self.connect_basemap_signals()
|
||||
self.connect_stations_signals()
|
||||
self.connect_waterlevels_signals()
|
||||
|
||||
# stations ----------------------------------------------------------------
|
||||
|
||||
def loadStations(self):
|
||||
print("loadStations")
|
||||
reader = PoQgsStations()
|
||||
self.layer_stations = self._layerFromReader(reader.fields, reader.crs, reader.getStationsFeatures(), "Stationen")
|
||||
self._layerShow(self.layer_stations, "styles/label_stations.qml", self.disconnectStations)
|
||||
self.stations = self._layerFromReader(reader.fields, reader.crs, reader.getStationsFeatures(), "Stationen")
|
||||
self._layerShow(self.stations, "styles/label_stations.qml", self.disconnectStations)
|
||||
|
||||
def loadWaterlevels(self):
|
||||
print("loadWaterlevels")
|
||||
reader = PoQgsCurrentW()
|
||||
self.layer_waterlevels = self._layerFromReader(reader.fields, reader.crs, reader.getCurrentWFeatures(), "Wasserstandinformationen")
|
||||
self._layerShow(self.layer_waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels)
|
||||
self.waterlevels = self._layerFromReader(reader.fields, reader.crs, reader.getCurrentWFeatures(), "Wasserstandinformationen")
|
||||
self._layerShow(self.waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels)
|
||||
|
||||
def _layerFromReader(self, fields, crs, features, title) -> None | QgsVectorLayer:
|
||||
print("_layerFromReader")
|
||||
@ -86,32 +84,60 @@ class PoRunner(object):
|
||||
self._layerSetVisible(layer, True)
|
||||
self._layerRefresh(layer)
|
||||
|
||||
def _layerRefresh(self, layer):
|
||||
print("_layerRefresh")
|
||||
if self.iface.mapCanvas().isCachingEnabled():
|
||||
layer.triggerRepaint()
|
||||
else:
|
||||
self.iface.mapCanvas().refresh()
|
||||
# stations signals --------------------------------------------------------
|
||||
|
||||
def cbBasemapLinesVisibleToggled(self):
|
||||
checked = self.ui.cbBasemapLinesVisible.isChecked()
|
||||
print("cbBasemapLinesVisibleToggled: %s" % (checked,))
|
||||
def connect_stations_signals(self):
|
||||
print("connect_stations_signals")
|
||||
self.ui.cbStationsVisible.toggled.connect(self.cbStationsVisibleToggled)
|
||||
self.ui.cbStationsName.toggled.connect(self.cbStationsNameToggled)
|
||||
self.ui.cbStationsNumber.toggled.connect(self.cbStationsNumberToggled)
|
||||
self.ui.cbStationsAgency.toggled.connect(self.cbStationsAgencyToggled)
|
||||
self.ui.cbStationsKm.toggled.connect(self.cbStationsKmToggled)
|
||||
self.ui.cbStationsWater.toggled.connect(self.cbStationsWaterToggled)
|
||||
|
||||
if self.basemap_lines is None and checked:
|
||||
self.basemap_lines = self._basemapCreate("waters.gpkg|layername=water_l", "Flüsse", self.disconnectBasemapLines)
|
||||
def cbStationsVisibleToggled(self):
|
||||
visible = self.ui.cbStationsVisible.isChecked()
|
||||
print("cbStationsVisibleToggled: %s" % (visible,))
|
||||
|
||||
if self.basemap_lines is not None:
|
||||
self._layerSetVisible(self.basemap_lines, checked)
|
||||
if self.stations is None and visible:
|
||||
self.loadStations()
|
||||
|
||||
def cbBasemapAreasVisibleToggled(self):
|
||||
checked = self.ui.cbBasemapAreasVisible.isChecked()
|
||||
print("cbBasemapAreasVisibleToggled: %s" % (checked,))
|
||||
if self.stations is not None:
|
||||
self.stations.setLabelsEnabled(visible)
|
||||
self._layerSetVisible(self.stations, visible)
|
||||
self._layerRefresh(self.stations)
|
||||
|
||||
if self.basemap_areas is None and checked:
|
||||
self.basemap_areas = self._basemapCreate("waters.gpkg|layername=water_f", "Flächen", self.disconnectBasemapAreas)
|
||||
def cbStationsNameToggled(self):
|
||||
checked = self.ui.cbStationsName.isChecked()
|
||||
print("cbStationsNameToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
if self.basemap_areas is not None:
|
||||
self._layerSetVisible(self.basemap_areas, checked)
|
||||
def cbStationsNumberToggled(self):
|
||||
checked = self.ui.cbStationsNumber.isChecked()
|
||||
print("cbStationsNumberToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
def cbStationsAgencyToggled(self):
|
||||
checked = self.ui.cbStationsAgency.isChecked()
|
||||
print("cbStationsAgencyToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
def cbStationsKmToggled(self):
|
||||
checked = self.ui.cbStationsKm.isChecked()
|
||||
print("cbStationsKmToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
def cbStationsWaterToggled(self):
|
||||
checked = self.ui.cbStationsWater.isChecked()
|
||||
print("cbStationsWaterToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
def disconnectStations(self):
|
||||
print("disconnectStations")
|
||||
self.stations = None
|
||||
self.ui.cbStationsVisible.setChecked(False)
|
||||
|
||||
# basemap -----------------------------------------------------------------
|
||||
|
||||
def _basemapCreate(self, path, name, disconnect: Callable[[], None]) -> None | QgsVectorLayer:
|
||||
print("_basemapCreate: %s" % (name,))
|
||||
@ -134,68 +160,119 @@ class PoRunner(object):
|
||||
|
||||
return basemap
|
||||
|
||||
# basemap signals ---------------------------------------------------------
|
||||
|
||||
def connect_basemap_signals(self):
|
||||
print("connect_basemap_signals")
|
||||
self.ui.cbBasemapLines.toggled.connect(self.cbBasemapLinesToggled)
|
||||
self.ui.cbBasemapAreas.toggled.connect(self.cbBasemapAreasToggled)
|
||||
|
||||
def cbBasemapLinesToggled(self):
|
||||
checked = self.ui.cbBasemapLines.isChecked()
|
||||
print("cbBasemapLinesToggled: %s" % (checked,))
|
||||
|
||||
if self.lines is None and checked:
|
||||
self.lines = self._basemapCreate("waters.gpkg|layername=water_l", "Flüsse", self.disconnectBasemapLines)
|
||||
|
||||
if self.lines is not None:
|
||||
self._layerSetVisible(self.lines, checked)
|
||||
|
||||
def cbBasemapAreasToggled(self):
|
||||
checked = self.ui.cbBasemapAreas.isChecked()
|
||||
print("cbBasemapAreasToggled: %s" % (checked,))
|
||||
|
||||
if self.areas is None and checked:
|
||||
self.areas = self._basemapCreate("waters.gpkg|layername=water_f", "Flächen", self.disconnectBasemapAreas)
|
||||
|
||||
if self.areas is not None:
|
||||
self._layerSetVisible(self.areas, checked)
|
||||
|
||||
def disconnectBasemapLines(self):
|
||||
print("disconnectBasemapLines")
|
||||
self.lines = None
|
||||
self.ui.cbBasemapLines.setChecked(False)
|
||||
|
||||
def disconnectBasemapAreas(self):
|
||||
print("disconnectBasemapAreas")
|
||||
self.areas = None
|
||||
self.ui.cbBasemapAreas.setChecked(False)
|
||||
|
||||
# layers ------------------------------------------------------------------
|
||||
|
||||
def _layerRefresh(self, layer):
|
||||
print("_layerRefresh")
|
||||
if self.iface.mapCanvas().isCachingEnabled():
|
||||
layer.triggerRepaint()
|
||||
else:
|
||||
self.iface.mapCanvas().refresh()
|
||||
|
||||
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 cbStationsVisibleToggled(self):
|
||||
visible = self.ui.cbStationsVisible.isChecked()
|
||||
print("cbStationsVisibleToggled: %s" % (visible,))
|
||||
# waterlevels signals -----------------------------------------------------
|
||||
|
||||
if self.layer_stations is None and visible:
|
||||
self.loadStations()
|
||||
|
||||
if self.layer_stations is not None:
|
||||
self.layer_stations.setLabelsEnabled(visible)
|
||||
self._layerSetVisible(self.layer_stations, visible)
|
||||
self._layerRefresh(self.layer_stations)
|
||||
def connect_waterlevels_signals(self):
|
||||
print("connect_waterlevels_signals")
|
||||
self.ui.cbWaterlevelsVisible.toggled.connect(self.cbWaterlevelsVisibleToggled)
|
||||
self.ui.cbWaterlevelsName.toggled.connect(self.cbWaterlevelsNameToggled)
|
||||
self.ui.cbWaterlevelsTimestamp.toggled.connect(self.cbWaterlevelsTimestampToggled)
|
||||
self.ui.cbWaterlevelsValue.toggled.connect(self.cbWaterlevelsValueToggled)
|
||||
self.ui.cbWaterlevelsMean.toggled.connect(self.cbWaterlevelsMeanToggled)
|
||||
self.ui.cbWaterlevelsAbsolute.toggled.connect(self.cbWaterlevelsAbsoluteToggled)
|
||||
|
||||
def cbWaterlevelsVisibleToggled(self):
|
||||
visible = self.ui.cbWaterlevelsVisible.isChecked()
|
||||
print("cbWaterlevelsVisibleToggled: %s" % (visible,))
|
||||
|
||||
if self.layer_waterlevels is None:
|
||||
if self.waterlevels is None:
|
||||
self.loadWaterlevels()
|
||||
|
||||
if self.layer_waterlevels is not None:
|
||||
self.layer_waterlevels.setLabelsEnabled(visible)
|
||||
self._layerSetVisible(self.layer_waterlevels, visible)
|
||||
self._layerRefresh(self.layer_waterlevels)
|
||||
if self.waterlevels is not None:
|
||||
self.waterlevels.setLabelsEnabled(visible)
|
||||
self._layerSetVisible(self.waterlevels, visible)
|
||||
self._layerRefresh(self.waterlevels)
|
||||
|
||||
def cbWaterlevelsLabelsVisibleToggled(self):
|
||||
print("cbWaterlevelsLabelsVisibleToggled: %s" % (self.ui.cbWaterlevelsVisible.isChecked(),))
|
||||
def cbWaterlevelsNameToggled(self):
|
||||
checked = self.ui.cbWaterlevelsName.isChecked()
|
||||
print("cbWaterlevelsNameToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
def rbValueChanged(self, button):
|
||||
print("rbValueChanged")
|
||||
if self.layer_waterlevels is None:
|
||||
self.loadWaterlevels()
|
||||
def cbWaterlevelsTimestampToggled(self):
|
||||
checked = self.ui.cbWaterlevelsTimestamp.isChecked()
|
||||
print("cbWaterlevelsTimestampToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
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"))
|
||||
def cbWaterlevelsValueToggled(self):
|
||||
checked = self.ui.cbWaterlevelsValue.isChecked()
|
||||
print("cbWaterlevelsValueToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
self.cbWaterlevelsVisibleToggled()
|
||||
def cbWaterlevelsMeanToggled(self):
|
||||
checked = self.ui.cbWaterlevelsMean.isChecked()
|
||||
print("cbWaterlevelsMeanToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
def disconnectStations(self):
|
||||
print("disconnectStations")
|
||||
self.layer_stations = None
|
||||
self.ui.cbStationsVisible.setChecked(False)
|
||||
def cbWaterlevelsAbsoluteToggled(self):
|
||||
checked = self.ui.cbWaterlevelsAbsolute.isChecked()
|
||||
print("cbWaterlevelsAbsoluteToggled: %s" % (checked,))
|
||||
# TODO
|
||||
|
||||
def disconnectWaterlevels(self):
|
||||
print("disconnectWaterlevels")
|
||||
self.layer_waterlevels = None
|
||||
self.waterlevels = None
|
||||
self.ui.cbWaterlevelsVisible.setChecked(False)
|
||||
|
||||
def disconnectBasemapLines(self):
|
||||
print("disconnectBasemapLines")
|
||||
self.basemap_lines = None
|
||||
self.ui.cbBasemapLinesVisible.setChecked(False)
|
||||
|
||||
def disconnectBasemapAreas(self):
|
||||
print("disconnectBasemapAreas")
|
||||
self.basemap_areas = None
|
||||
self.ui.cbBasemapAreasVisible.setChecked(False)
|
||||
# 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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user