diff --git a/map_tips.py b/map_tips.py
new file mode 100644
index 0000000..3a13f8f
--- /dev/null
+++ b/map_tips.py
@@ -0,0 +1,55 @@
+BASEMAP_MAP_TIPS = "[% \"NAM\" %] [% if(\"ZNM\" != '', ' / ' || \"ZNM\", '') %]"
+
+STATIONS_MAP_TIPS = "\
+
[% \"shortname\" %]
\
+ \
+ \
+ | Nummer: | \
+ #[% \"number\" %] | \
+
\
+ \
+ | Behörde: | \
+ [% \"agency\" %] | \
+
\
+ \
+ | Gewässer: | \
+ [% \"water\" %] | \
+
\
+ \
+ | Kilometer: | \
+ [% \"km\" %] km | \
+
\
+
"
+
+WATERLEVELS_MAP_TIPS = "\
+ [% \"shortname\" %]
\
+ \
+ \
+ | Nummer: | \
+ #[% \"number\" %] | \
+
\
+ \
+ | Behörde: | \
+ [% \"agency\" %] | \
+
\
+ \
+ | Gewässer: | \
+ [% \"water\" %] | \
+
\
+ \
+ | Zeitstempel: | \
+ [% \"timestamp\" %] | \
+
\
+ \
+ | Aktueller Pegel: | \
+ [% \"value\" %] [% \"unit\" %] | \
+
\
+ \
+ | MNW, MHW: | \
+ [% \"stateMnwMhw\" %] | \
+
\
+ \
+ | NSW, HSW: | \
+ [% \"stateNswHsw\" %] | \
+
\
+
"
diff --git a/pb_tool.cfg b/pb_tool.cfg
index 234e0c1..7cba20f 100644
--- a/pb_tool.cfg
+++ b/pb_tool.cfg
@@ -48,7 +48,7 @@ plugin_path:/home/patrick/.local/share/QGIS/QGIS3/profiles/default/python/plugin
[files]
# Python files that should be deployed with the plugin
-python_files: __init__.py pegelonline.py pegelonline_dockwidget.py pegelonline_dockwidget_graph.py po_runner.py
+python_files: __init__.py pegelonline.py pegelonline_dockwidget.py pegelonline_dockwidget_graph.py po_runner.py map_tips.py
# The main dialog file that is loaded (not compiled)
main_dialog: pegelonline_dockwidget_base.ui
diff --git a/pegelonline_dockwidget_base.ui b/pegelonline_dockwidget_base.ui
index f0dd077..25c5c36 100644
--- a/pegelonline_dockwidget_base.ui
+++ b/pegelonline_dockwidget_base.ui
@@ -393,6 +393,20 @@
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ ...
+
+
+
-
diff --git a/po_runner.py b/po_runner.py
index 6a67126..3a3d65d 100644
--- a/po_runner.py
+++ b/po_runner.py
@@ -5,6 +5,7 @@ from PyQt5 import QtGui
from PyQt5.QtWidgets import QAction
from qgis._core import QgsVectorLayer, QgsProject, QgsLayerTreeLayer, QgsPalLayerSettings, QgsVectorLayerSimpleLabeling
+from .map_tips import WATERLEVELS_MAP_TIPS, STATIONS_MAP_TIPS, BASEMAP_MAP_TIPS
from .pegelonline_dockwidget import PegelonlineDockWidget
from .pegelonline_dockwidget_graph import PegelonlineDockWidgetGraph
from .pomodules.po_history import PoHistory
@@ -39,6 +40,7 @@ class PoRunner(object):
self.ui.btnSelectRectangle.setDefaultAction(iface.actionSelectRectangle())
self.ui.btnUnselectAll.setDefaultAction(iface.mainWindow().findChild(QAction, "mActionDeselectAll"))
self.ui.btnUnselectLayer.setDefaultAction(iface.mainWindow().findChild(QAction, "mActionDeselectActiveLayer"))
+ self.ui.btnMapTips.setDefaultAction(iface.actionMapTips())
# Signale verbinden
self._connect_basemap_signals()
@@ -48,7 +50,7 @@ class PoRunner(object):
# basemap -----------------------------------------------------------------
- def _basemap_create(self, path, name, disconnect: Callable[[], None]) -> None | QgsVectorLayer:
+ def _basemap_create(self, path, name, disconnect: Callable[[], None], map_tips) -> None | QgsVectorLayer:
print("_basemap_create: %s" % (name,))
path = os.path.join(self.local_dir, "basemap", path)
basemap = QgsVectorLayer(path, name, "ogr")
@@ -61,6 +63,9 @@ class PoRunner(object):
# noinspection PyUnresolvedReferences
basemap.willBeDeleted.connect(disconnect)
+ # map-tips setzen
+ basemap.setMapTipTemplate(map_tips)
+
# zur Instanz hinzufügen
QgsProject.instance().addMapLayer(basemap, False)
@@ -82,7 +87,7 @@ class PoRunner(object):
print("_cbBasemapLines_toggled: %s" % (checked,))
if self.lines is None and checked:
- self.lines = self._basemap_create("waters.gpkg|layername=water_l", "Flüsse", self._basemap_disconnect_lines)
+ self.lines = self._basemap_create("waters.gpkg|layername=water_l", "Flüsse", self._basemap_disconnect_lines, BASEMAP_MAP_TIPS)
if self.lines is not None:
self._layer_set_visible(self.lines, checked)
@@ -93,7 +98,7 @@ class PoRunner(object):
print("_cbBasemapAreas_toggled: %s" % (checked,))
if self.areas is None and checked:
- self.areas = self._basemap_create("waters.gpkg|layername=water_f", "Flächen", self._basemap_disconnect_areas)
+ self.areas = self._basemap_create("waters.gpkg|layername=water_f", "Flächen", self._basemap_disconnect_areas, BASEMAP_MAP_TIPS)
if self.areas is not None:
self._layer_set_visible(self.areas, checked)
@@ -128,7 +133,7 @@ class PoRunner(object):
if self.stations is None and visible:
reader = PoStationsQgs()
features = reader.getStationsFeatures()
- self.stations = self._layer_create_from_reader(reader.fields, reader.crs, features, "Stationen")
+ self.stations = self._layer_create_from_reader(reader.fields, reader.crs, features, "Stationen", STATIONS_MAP_TIPS)
self._layer_add_to_instance(self.stations, "styles/label_stations.qml", self._stations_disconnect)
if self.stations is not None:
@@ -207,7 +212,7 @@ class PoRunner(object):
if self.waterlevels is None and visible:
reader = PoWaterlevelsQgs()
features = reader.getWaterlevelsFeatures()
- self.waterlevels = self._layer_create_from_reader(reader.fields, reader.crs, features, "Pegelstände")
+ self.waterlevels = self._layer_create_from_reader(reader.fields, reader.crs, features, "Pegelstände", WATERLEVELS_MAP_TIPS)
self._layer_add_to_instance(self.waterlevels, "styles/label_waterlevels.qml", self.waterlevels_disconnect)
if self.waterlevels is not None:
@@ -291,7 +296,7 @@ class PoRunner(object):
layer_tree = QgsProject.instance().layerTreeRoot().findLayer(basemap.id())
layer_tree.setItemVisibilityChecked(visible)
- def _layer_create_from_reader(self, fields, crs, features, title) -> None | QgsVectorLayer:
+ def _layer_create_from_reader(self, fields, crs, features, title, map_tips) -> None | QgsVectorLayer:
print("_layer_create_from_reader")
if features is None:
return None
@@ -302,6 +307,9 @@ class PoRunner(object):
layer = QgsVectorLayer(layer_path, title, "memory")
provider = layer.dataProvider()
+ # map-tips setzen
+ layer.setMapTipTemplate(map_tips)
+
provider.addAttributes(fields)
layer.updateFields()