From 51f772b3ac5f65dcbff7c3d312930a2c72031be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Sat, 27 Sep 2025 15:59:38 +0200 Subject: [PATCH] code clean: PEP8 methodennamen --- pegelonline_dockwidget_base.ui | 2 +- po_runner.py | 292 +++++++++++++++++---------------- 2 files changed, 151 insertions(+), 143 deletions(-) diff --git a/pegelonline_dockwidget_base.ui b/pegelonline_dockwidget_base.ui index eb536be..03ba5f3 100644 --- a/pegelonline_dockwidget_base.ui +++ b/pegelonline_dockwidget_base.ui @@ -274,7 +274,7 @@ - + 0 diff --git a/po_runner.py b/po_runner.py index f056621..300c436 100644 --- a/po_runner.py +++ b/po_runner.py @@ -4,7 +4,6 @@ from typing import Callable from PyQt5 import QtGui from qgis._core import QgsVectorLayer, QgsProject, QgsLayerTreeLayer, QgsPalLayerSettings, QgsVectorLayerSimpleLabeling -from .pegelonline_dockwidget import PegelonlineDockWidget from .pomodules.po_history import PoHistory from .pomodules.po_stations import PoStations from .pomodules.po_stations_qgs import PoStationsQgs @@ -28,17 +27,17 @@ class PoRunner(object): self.areas = None # ui Signale verbinden - self.connect_basemap_signals() - self.connect_stations_signals() - self.connect_waterlevels_signals() - self.connect_history_signals() + self._connect_basemap_signals() + self._connect_stations_signals() + self._waterlevels_connect_signals() + self._history_connect_signals() - self._historyLoadStations() + self._history_load_stations() # basemap ----------------------------------------------------------------- - def _basemapCreate(self, path, name, disconnect: Callable[[], None]) -> None | QgsVectorLayer: - print("_basemapCreate: %s" % (name,)) + def _basemap_create(self, path, name, disconnect: Callable[[], None]) -> None | QgsVectorLayer: + print("_basemap_create: %s" % (name,)) path = os.path.join(self.local_dir, "basemap", path) basemap = QgsVectorLayer(path, name, "ogr") @@ -55,108 +54,108 @@ class PoRunner(object): # zum LayerTree hinzufügen layer_tree = self.iface.layerTreeCanvasBridge().rootGroup() - layer_tree.insertChildNode(-1, QgsLayerTreeLayer(basemap)) # am unteren Ende anhängen → liegt somit unter stations/waterlevels + layer_tree.insertChildNode(-1, QgsLayerTreeLayer(basemap)) # am unteren Ende anhängen → liegt somit unter stations/waterlevels 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 _connect_basemap_signals(self): + print("_connect_basemap_signals") + self.ui.cbBasemapLines.toggled.connect(self._cbBasemapLines_toggled) + self.ui.cbBasemapAreas.toggled.connect(self._cbBasemapAreas_toggled) - def cbBasemapLinesToggled(self): + def _cbBasemapLines_toggled(self): checked = self.ui.cbBasemapLines.isChecked() - print("cbBasemapLinesToggled: %s" % (checked,)) + print("_cbBasemapLines_toggled: %s" % (checked,)) if self.lines is None and checked: - self.lines = self._basemapCreate("waters.gpkg|layername=water_l", "Flüsse", self.disconnectBasemapLines) + self.lines = self._basemap_create("waters.gpkg|layername=water_l", "Flüsse", self._basemap_disconnect_lines) if self.lines is not None: - self._layerSetVisible(self.lines, checked) - self._layerRefresh(self.lines) + self._layer_set_visible(self.lines, checked) + self._layer_refresh(self.lines) - def cbBasemapAreasToggled(self): + def _cbBasemapAreas_toggled(self): checked = self.ui.cbBasemapAreas.isChecked() - print("cbBasemapAreasToggled: %s" % (checked,)) + print("_cbBasemapAreas_toggled: %s" % (checked,)) if self.areas is None and checked: - self.areas = self._basemapCreate("waters.gpkg|layername=water_f", "Flächen", self.disconnectBasemapAreas) + self.areas = self._basemap_create("waters.gpkg|layername=water_f", "Flächen", self._basemap_disconnect_areas) if self.areas is not None: - self._layerSetVisible(self.areas, checked) - self._layerRefresh(self.areas) + self._layer_set_visible(self.areas, checked) + self._layer_refresh(self.areas) - def disconnectBasemapLines(self): - print("disconnectBasemapLines") + def _basemap_disconnect_lines(self): + print("_basemap_disconnect_lines") self.lines = None self.ui.cbBasemapLines.setChecked(False) - def disconnectBasemapAreas(self): - print("disconnectBasemapAreas") + def _basemap_disconnect_areas(self): + print("_basemap_disconnect_areas") self.areas = None self.ui.cbBasemapAreas.setChecked(False) # stations ---------------------------------------------------------------- - def connect_stations_signals(self): - print("connect_stations_signals") + def _connect_stations_signals(self): + print("_connect_stations_signals") # noinspection DuplicatedCode - 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) + self.ui.cbStationsVisible.toggled.connect(self._cbStationsVisible_toggled) + self.ui.cbStationsName.toggled.connect(self._cbStationsName_toggled) + self.ui.cbStationsNumber.toggled.connect(self._cbStationsNumber_toggled) + self.ui.cbStationsAgency.toggled.connect(self._cbStationsAgency_toggled) + self.ui.cbStationsKm.toggled.connect(self._cbStationsKm_toggled) + self.ui.cbStationsWater.toggled.connect(self._cbStationsWater_toggled) - def cbStationsVisibleToggled(self): + def _cbStationsVisible_toggled(self): visible = self.ui.cbStationsVisible.isChecked() - print("cbStationsVisibleToggled: %s" % (visible,)) + print("_cbStationsVisible_toggled: %s" % (visible,)) if self.stations is None and visible: reader = PoStationsQgs() features = reader.getStationsFeatures() - self.stations = self._layerFromReader(reader.fields, reader.crs, features, "Stationen") - self._layerAdd(self.stations, "styles/label_stations.qml", self.disconnectStations) + self.stations = self._layer_create_from_reader(reader.fields, reader.crs, features, "Stationen") + self._layer_add_to_instance(self.stations, "styles/label_stations.qml", self._stations_disconnect) if self.stations is not None: - self._layerSetVisible(self.stations, visible) - self._stationsUpdateLabeling() + self._layer_set_visible(self.stations, visible) + self._stations_update_labels() - def cbStationsNameToggled(self): + def _cbStationsName_toggled(self): checked = self.ui.cbStationsName.isChecked() - print("cbStationsNameToggled: %s" % (checked,)) - self._stationsUpdateLabeling() + print("_cbStationsName_toggled: %s" % (checked,)) + self._stations_update_labels() - def cbStationsNumberToggled(self): + def _cbStationsNumber_toggled(self): checked = self.ui.cbStationsNumber.isChecked() - print("cbStationsNumberToggled: %s" % (checked,)) - self._stationsUpdateLabeling() + print("_cbStationsNumber_toggled: %s" % (checked,)) + self._stations_update_labels() - def cbStationsAgencyToggled(self): + def _cbStationsAgency_toggled(self): checked = self.ui.cbStationsAgency.isChecked() - print("cbStationsAgencyToggled: %s" % (checked,)) - self._stationsUpdateLabeling() + print("_cbStationsAgency_toggled: %s" % (checked,)) + self._stations_update_labels() - def cbStationsKmToggled(self): + def _cbStationsKm_toggled(self): checked = self.ui.cbStationsKm.isChecked() - print("cbStationsKmToggled: %s" % (checked,)) - self._stationsUpdateLabeling() + print("_cbStationsKm_toggled: %s" % (checked,)) + self._stations_update_labels() - def cbStationsWaterToggled(self): + def _cbStationsWater_toggled(self): checked = self.ui.cbStationsWater.isChecked() - print("cbStationsWaterToggled: %s" % (checked,)) - self._stationsUpdateLabeling() + print("_cbStationsWater_toggled: %s" % (checked,)) + self._stations_update_labels() - def disconnectStations(self): - print("disconnectStations") + def _stations_disconnect(self): + print("_stations_disconnect") self.stations = None self.ui.cbStationsVisible.setChecked(False) # noinspection DuplicatedCode - def _stationsUpdateLabeling(self): - print("_stationsUpdateLabeling") + def _stations_update_labels(self): + print("_stations_update_labels") if self.stations is None: return @@ -172,78 +171,79 @@ class PoRunner(object): if self.ui.cbStationsWater.isChecked(): fields.append("water") - self._layerUpdateLabeling(self.stations, fields) + self._layer_update_labels(self.stations, fields) # waterlevels ------------------------------------------------------------- - def connect_waterlevels_signals(self): - print("connect_waterlevels_signals") + def _waterlevels_connect_signals(self): + print("_waterlevels_connect_signals") # noinspection DuplicatedCode - self.ui.cbWaterlevelsVisible.toggled.connect(self.cbWaterlevelsVisibleToggled) - self.ui.cbWaterlevelsName.toggled.connect(self.cbWaterlevelsNameToggled) - self.ui.cbWaterlevelsNumber.toggled.connect(self.cbWaterlevelsNumberToggled) - self.ui.cbWaterlevelsAgency.toggled.connect(self.cbWaterlevelsAgencyToggled) - 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) + self.ui.cbWaterlevelsVisible.toggled.connect(self._cbWaterlevelsVisible_toggled) + self.ui.cbWaterlevelsName.toggled.connect(self._cbWaterlevelsName_toggled) + self.ui.cbWaterlevelsNumber.toggled.connect(self._cbWaterlevelsNumber_toggled) + self.ui.cbWaterlevelsAgency.toggled.connect(self._cbWaterlevelsAgency_toggled) + self.ui.cbWaterlevelsTimestamp.toggled.connect(self._cbWaterlevelsTimestamp_toggled) + self.ui.cbWaterlevelsValue.toggled.connect(self._cbWaterlevelsValue_toggled) + self.ui.cbWaterlevelsMean.toggled.connect(self._cbWaterlevelsMean_toggled) + self.ui.cbWaterlevelsAbsolute.toggled.connect(self._cbWaterlevelsAbsolute_toggled) - def cbWaterlevelsVisibleToggled(self): + def _cbWaterlevelsVisible_toggled(self): visible = self.ui.cbWaterlevelsVisible.isChecked() - print("cbWaterlevelsVisibleToggled: %s" % (visible,)) + print("_cbWaterlevelsVisible_toggled: %s" % (visible,)) if self.waterlevels is None and visible: reader = PoWaterlevelsQgs() features = reader.getWaterlevelsFeatures() - self.waterlevels = self._layerFromReader(reader.fields, reader.crs, features, "Wasserstandinformationen") - self._layerAdd(self.waterlevels, "styles/label_currentw.qml", self.disconnectWaterlevels) + self.waterlevels = self._layer_create_from_reader(reader.fields, reader.crs, features, "Wasserstandinformationen") + self._layer_add_to_instance(self.waterlevels, "styles/label_currentw.qml", self.waterlevels_disconnect) if self.waterlevels is not None: - self._layerSetVisible(self.waterlevels, visible) - self._waterlevelsUpdateLabeling() + self._layer_set_visible(self.waterlevels, visible) + self._waterlevels_update_labels() - def cbWaterlevelsNameToggled(self): + def _cbWaterlevelsName_toggled(self): checked = self.ui.cbWaterlevelsName.isChecked() - print("cbWaterlevelsNameName: %s" % (checked,)) - self._waterlevelsUpdateLabeling() + print("_cbWaterlevelsName_toggled: %s" % (checked,)) + self._waterlevels_update_labels() - def cbWaterlevelsNumberToggled(self): + def _cbWaterlevelsNumber_toggled(self): checked = self.ui.cbWaterlevelsNumber.isChecked() - print("cbWaterlevelsNameNumber: %s" % (checked,)) - self._waterlevelsUpdateLabeling() + print("_cbWaterlevelsNumber_toggled: %s" % (checked,)) + self._waterlevels_update_labels() - def cbWaterlevelsAgencyToggled(self): + def _cbWaterlevelsAgency_toggled(self): checked = self.ui.cbWaterlevelsAgency.isChecked() - print("cbWaterlevelsNameAgency: %s" % (checked,)) - self._waterlevelsUpdateLabeling() + print("_cbWaterlevelsAgency_toggled: %s" % (checked,)) + self._waterlevels_update_labels() - def cbWaterlevelsTimestampToggled(self): + def _cbWaterlevelsTimestamp_toggled(self): checked = self.ui.cbWaterlevelsTimestamp.isChecked() - print("cbWaterlevelsTimestampToggled: %s" % (checked,)) - self._waterlevelsUpdateLabeling() + print("_cbWaterlevelsTimestamp_toggled: %s" % (checked,)) + self._waterlevels_update_labels() - def cbWaterlevelsValueToggled(self): + def _cbWaterlevelsValue_toggled(self): checked = self.ui.cbWaterlevelsValue.isChecked() - print("cbWaterlevelsValueToggled: %s" % (checked,)) - self._waterlevelsUpdateLabeling() + print("_cbWaterlevelsValue_toggled: %s" % (checked,)) + self._waterlevels_update_labels() - def cbWaterlevelsMeanToggled(self): + def _cbWaterlevelsMean_toggled(self): checked = self.ui.cbWaterlevelsMean.isChecked() - print("cbWaterlevelsMeanToggled: %s" % (checked,)) - self._waterlevelsUpdateLabeling() + print("_cbWaterlevelsMean_toggled: %s" % (checked,)) + self._waterlevels_update_labels() - def cbWaterlevelsAbsoluteToggled(self): + def _cbWaterlevelsAbsolute_toggled(self): checked = self.ui.cbWaterlevelsAbsolute.isChecked() - print("cbWaterlevelsAbsoluteToggled: %s" % (checked,)) - self._waterlevelsUpdateLabeling() + print("_cbWaterlevelsAbsolute_toggled: %s" % (checked,)) + self._waterlevels_update_labels() - def disconnectWaterlevels(self): - print("disconnectWaterlevels") + def waterlevels_disconnect(self): + print("waterlevels_disconnect") self.waterlevels = None self.ui.cbWaterlevelsVisible.setChecked(False) # noinspection DuplicatedCode - def _waterlevelsUpdateLabeling(self): + def _waterlevels_update_labels(self): + print("_waterlevels_update_labels") if self.waterlevels is None: return @@ -262,22 +262,22 @@ class PoRunner(object): fields.append("stateMnwMhw") if self.ui.cbWaterlevelsAbsolute.isChecked(): fields.append("stateNswHsw") - self._layerUpdateLabeling(self.waterlevels, fields) + self._layer_update_labels(self.waterlevels, fields) # layers ------------------------------------------------------------------ - def _layerSetVisible(self, basemap: QgsVectorLayer, visible): - print("_layerSetVisible: %s => %s" % (basemap.name, visible)) + def _layer_set_visible(self, basemap: QgsVectorLayer, visible): + print("_layer_set_visible: %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") + def _layer_create_from_reader(self, fields, crs, features, title) -> None | QgsVectorLayer: + print("_layer_create_from_reader") if features is None: return None layer_path = "Point?crs=%s" % (crs.authid(),) - print("layer_path: " + layer_path) + print("_layer_create_from_reader: layer_path: " + layer_path) layer = QgsVectorLayer(layer_path, title, "memory") provider = layer.dataProvider() @@ -287,7 +287,7 @@ class PoRunner(object): provider.addFeatures(features) for error in provider.errors(): - print("Fehler beim Hinzufügen von Features: " + error) + print("_layer_create_from_reader: Fehler beim Hinzufügen von Features: " + error) layer.updateExtents() @@ -298,16 +298,16 @@ class PoRunner(object): return None - def _layerAdd(self, layer: QgsVectorLayer, styles_path: str, disconnect: Callable[[], None]): - print("_layerShow") + def _layer_add_to_instance(self, layer: QgsVectorLayer, styles_path: str, disconnect: Callable[[], None]): + print("_layer_add_to_instance") if layer is None: - print("_layerShow: Übergebener Layer ist None") + print("_layer_add_to_instance: Fehler: Übergebener Layer ist None") return # Styles laden layer.loadNamedStyle(os.path.join(self.local_dir, styles_path)) - # disconnect setzen + # disconnect Signal verbinden layer.willBeDeleted.connect(disconnect) # zur Instanz hinzufügen @@ -315,9 +315,10 @@ class PoRunner(object): # zum LayerTree hinzufügen layer_tree = self.iface.layerTreeCanvasBridge().rootGroup() - layer_tree.insertChildNode(0, QgsLayerTreeLayer(layer)) # am oberen Ende anhängen → liegt somit über basemap + layer_tree.insertChildNode(0, QgsLayerTreeLayer(layer)) # am oberen Ende anhängen → liegt somit über basemap - def _layerUpdateLabeling(self, layer, fields): + def _layer_update_labels(self, layer, fields): + print("_layer_update_labels") labeling = QgsVectorLayerSimpleLabeling(QgsPalLayerSettings()) # Anführungszeichen um Feldnamen anbringen @@ -333,9 +334,9 @@ class PoRunner(object): layer.setLabeling(QgsVectorLayerSimpleLabeling(settings)) layer.setLabelsEnabled(True) - self._layerRefresh(layer) + self._layer_refresh(layer) - def _layerRefresh(self, layer): + def _layer_refresh(self, layer): print("_layerRefresh") if self.iface.mapCanvas().isCachingEnabled(): layer.triggerRepaint() @@ -344,39 +345,40 @@ class PoRunner(object): # history signals --------------------------------------------------------- - def connect_history_signals(self): - self.ui.slHistoryStation.currentTextChanged.connect(self.slHistoryStationChanged) - self.ui.btnHistoryStationsRefresh.clicked.connect(self.btnHistoryStationsRefreshClicked) - self.ui.inHistoryDays.valueChanged.connect(self.inHistoryDaysChanged) - self.ui.btnHistoryGo.clicked.connect(self._historyLoadGraph) + def _history_connect_signals(self): + print("_history_connect_signals") + self.ui.slHistoryStation.currentTextChanged.connect(self._slHistoryStation_changed) + self.ui.btnHistoryStationsRefresh.clicked.connect(self._btnHistoryStationsRefresh_clicked) + self.ui.numHistoryDays.valueChanged.connect(self._numHistoryDays_changed) + self.ui.btnHistoryGo.clicked.connect(self._history_load_graph) - def btnHistoryStationsRefreshClicked(self): - print("btnHistoryStationsRefreshClicked") - self._historyLoadStations() + def _slHistoryStation_changed(self): + print("_slHistoryStation_changed: %s" % (self.ui.slHistoryStation.currentText(),)) + self._history_load_graph() - def slHistoryStationChanged(self): - print("slHistoryStationChanged: %s" % (self.ui.slHistoryStation.currentText(),)) - self._historyLoadGraph() + def _btnHistoryStationsRefresh_clicked(self): + print("_btnHistoryStationsRefresh_clicked") + self._history_load_stations() - def inHistoryDaysChanged(self): - print("inHistoryDays: %s" % (self.ui.inHistoryDays.value(),)) + def _numHistoryDays_changed(self): + print("_numHistoryDays_changed: %s" % (self.ui.numHistoryDays.value(),)) - def _historyLoadGraph(self): + def _history_load_graph(self): + print("_history_load_graph") station = self.ui.slHistoryStation.currentText() - days = self.ui.inHistoryDays.value() + days = self.ui.numHistoryDays.value() - print("_historyLoad: station=%s days=%s" % (station, days)) + print("_history_load_graph: station=%s days=%s" % (station, days)) self.ui.lbHistory.clear() - self.ui.lbHistory.setText("Laden...") if station == '' or station is None: - print("_historyLoad: Fehler: Ungültige Station: %s" % (station,)) + print("_history_load_graph: Fehler: Ungültige Station: %s" % (station,)) self.ui.lbHistory.setText("Bitte Station wählen...") return if days is None or days < 1 or days > 30: - print("_historyLoad: Fehler: Ungültige Anzahl von Tagen: %s" % (days,)) + print("_history_load_graph: Fehler: Ungültige Anzahl von Tagen: %s" % (days,)) self.ui.lbHistory.setText("Bitte Tage [1, 30] wählen...") return @@ -384,7 +386,7 @@ class PoRunner(object): image_data = history.download() if image_data is None or len(image_data) == 0: - print("_historyLoad: Fehler: Keine Daten erhalten") + print("_history_load_graph: Fehler: Keine Daten erhalten") self.ui.lbHistory.setText("Fehler beim Download!") return @@ -393,29 +395,35 @@ class PoRunner(object): self.ui.lbHistory.setPixmap(pixmap) self.ui.lbHistory.resize(pixmap.width(), pixmap.height()) - def _historyLoadStations(self): - print("_init_history_signals") + print("_history_load_graph: Bild erfolgreich geladen") - # merke die aktuelle Station, um sie wiederherzustellen - bisherige_station = self.ui.slHistoryStation.currentText() + def _history_load_stations(self): + print("_history_load_stations") + + # behalte die aktuelle Station, um sie (mit eventuell neuem Index) wiederherzustellen + current_station = self.ui.slHistoryStation.currentText() + print("_history_load_stations: bisherige_station=%s" % current_station) self.ui.slHistoryStation.clear() stations = PoStations().getStations() if stations is None or len(stations) == 0: - print("_init_history_signals: Fehler: Keine Stationen erhalten") + print("_history_load_stations: Fehler: Keine Stationen erhalten") return index = 0 neuer_index = None for station in stations: shortname = station['attributes']['shortname'] - if shortname == bisherige_station: + if shortname == current_station: neuer_index = index self.ui.slHistoryStation.addItem(shortname) index += 1 if neuer_index is not None: self.ui.slHistoryStation.setCurrentIndex(neuer_index) + print("_history_load_stations: Bisherige Station \"%s\" mit neuem index=%d wiederhergestellt" % (current_station, neuer_index)) else: self.ui.slHistoryStation.setCurrentIndex(0) + station = self.ui.slHistoryStation.currentText() + print("_history_load_stations: Bisherige Station \"%s\" nicht wiedergefunden. Nehme erste Station: %s" % (current_station, station))