diff --git a/src/Model/GeoTIFF/GeoTIFF.py b/src/Model/GeoTIFF/GeoTIFF.py index c35bc875..1a9281cd 100644 --- a/src/Model/GeoTIFF/GeoTIFF.py +++ b/src/Model/GeoTIFF/GeoTIFF.py @@ -116,13 +116,13 @@ class GeoTIFF(SQLSubModel): self.read_file(value) elif key == "coordinates": self.coordinates = value - elif key == "coordinates_bottom": + elif key == "coordinates_bottom" or key == "bottom": self.coordinates["bottom"] = value - elif key == "coordinates_top": + elif key == "coordinates_top" or key == "top": self.coordinates["top"] = value - elif key == "coordinates_left": + elif key == "coordinates_left" or key == "left": self.coordinates["left"] = value - elif key == "coordinates_right": + elif key == "coordinates_right" or key == "right": self.coordinates["right"] = value self.modified() diff --git a/src/View/GeoTIFF/Window.py b/src/View/GeoTIFF/Window.py index 630b3981..2ac03485 100644 --- a/src/View/GeoTIFF/Window.py +++ b/src/View/GeoTIFF/Window.py @@ -22,6 +22,8 @@ from PyQt5.QtWidgets import ( QAction, QListView, QVBoxLayout, ) +from matplotlib.patches import Rectangle + from Modules import Modules from View.Tools.PamhyrWindow import PamhyrWindow @@ -30,6 +32,7 @@ from View.GeoTIFF.List import ListModel from View.GeoTIFF.Translate import GeoTIFFTranslate from View.GeoTIFF.Edit.Window import EditGeoTIFFWindow +from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar from View.Tools.Plot.PamhyrCanvas import MplCanvas from View.PlotXY import PlotXY @@ -71,7 +74,7 @@ class GeoTIFFListWindow(PamhyrWindow): self.setup_connections() def setup_list(self): - lst = self.find(QListView, f"listView") + lst = self.find(QListView, "listView") self._list = ListModel( list_view=lst, data=self._study.river.geotiff, @@ -83,6 +86,11 @@ class GeoTIFFListWindow(PamhyrWindow): self.canvas = MplCanvas(width=5, height=4, dpi=100) self.canvas.setObjectName("canvas") self._plot_layout = self.find(QVBoxLayout, "verticalLayout") + self._toolbar = PamhyrPlotToolbar( + self.canvas, self, + items=["home", "zoom", "save", "iso", "back/forward", "move"] + ) + self._plot_layout.addWidget(self._toolbar) self._plot_layout.addWidget(self.canvas) self._plot = PlotXY( @@ -93,6 +101,7 @@ class GeoTIFFListWindow(PamhyrWindow): toolbar=None, parent=self ) + self._plot_rect = [] self._plot.update() @@ -103,6 +112,11 @@ class GeoTIFFListWindow(PamhyrWindow): self.find(QAction, "action_edit").triggered.connect(self.edit) + self.find(QListView, "listView")\ + .selectionModel()\ + .selectionChanged\ + .connect(self._update_rectangle) + def _propagated_update(self, key=Modules(0)): if Modules.GEOMETRY not in key and Modules.GEOTIFF not in key: return @@ -113,6 +127,40 @@ class GeoTIFFListWindow(PamhyrWindow): self._list.update() self._plot.update() + self._update_rectangle() + + def _update_rectangle(self): + for rect in self._plot_rect: + rect.remove() + + self._plot_rect = [] + + rows = self.selected_rows() + if len(rows) <= 0: + return + + for row in rows: + geotiff = self._study.river.geotiff.files[row] + coord = geotiff.coordinates + + xy = (coord["bottom"], coord["left"]) + width = abs(coord["top"] - coord["bottom"]) + height = abs(coord["right"] - coord["left"]) + + rect = Rectangle( + xy, width, height, + edgecolor='red', facecolor='none', + lw=2 + ) + + self._plot_rect.append(rect) + + self.canvas.axes.add_patch( + rect + ) + + self._plot.idle() + def selected_rows(self): lst = self.find(QListView, f"listView") return list(map(lambda i: i.row(), lst.selectedIndexes()))