From deb9b2069f81db7085179f057b8ddf356e2db0d6 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Thu, 13 Nov 2025 14:56:03 +0100 Subject: [PATCH] GeoTIFF: Integrate geotiff menu to mainwindow and fix bounds update. --- src/View/GeoTIFF/Edit/Window.py | 49 ++++++++++++++++----------------- src/View/MainWindow.py | 3 +- src/View/ui/MainWindow.ui | 6 ++++ 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/View/GeoTIFF/Edit/Window.py b/src/View/GeoTIFF/Edit/Window.py index 91c083da..37ab2e58 100644 --- a/src/View/GeoTIFF/Edit/Window.py +++ b/src/View/GeoTIFF/Edit/Window.py @@ -85,7 +85,8 @@ class EditGeoTIFFWindow(PamhyrWindow): def setup_graph(self): self.canvas = MplCanvas(width=5, height=4, dpi=100) self.canvas.setObjectName("canvas") - self.plot_layout = self.find(QVBoxLayout, "verticalLayout_geotiff") + self.plot_layout = self.find(QVBoxLayout, + "verticalLayout_geotiff") self.plot_layout.addWidget(self.canvas) self.plot = PlotXY( @@ -109,20 +110,10 @@ class EditGeoTIFFWindow(PamhyrWindow): self.set_line_edit_text("lineEdit_description", self._geotiff.description) - self._values = { - "bottom": self._geotiff.coord_bottom, - "top": self._geotiff.coord_top, - "left": self._geotiff.coord_left, - "right": self._geotiff.coord_right, - } - self._values_default = { - "bottom": self._geotiff.coord_bottom, - "top": self._geotiff.coord_top, - "left": self._geotiff.coord_left, - "right": self._geotiff.coord_right, - } - - self._reset_values() + bounds = list(self._geotiff.coordinates.values()) + self._set_values_from_bounds(bounds) + self._set_default_values_from_bounds(bounds) + self._reset_spinboxes() if self._study.is_read_only(): self.set_check_box_enable("checkBox", False) @@ -137,6 +128,8 @@ class EditGeoTIFFWindow(PamhyrWindow): "left": bounds[1], "right": bounds[3], } + + def _set_default_values_from_bounds(self, bounds): self._values_default = { "bottom": bounds[0], "top": bounds[2], @@ -144,14 +137,15 @@ class EditGeoTIFFWindow(PamhyrWindow): "right": bounds[3], } - self._reset_values() - - def _reset_values(self): + def _reset_spinboxes(self): for key in self._values: - self._reset_values_key(key) + self._reset_spinbox(key) - def _reset_values_key(self, key): - self.set_double_spin_box(f"doubleSpinBox_{key}", self._values_default[key]) + def _reset_spinbox(self, key): + self.set_double_spin_box( + f"doubleSpinBox_{key}", + self._values_default[key] + ) def setup_connection(self): self.find(QPushButton, "pushButton_cancel")\ @@ -163,15 +157,18 @@ class EditGeoTIFFWindow(PamhyrWindow): for key in self._values: self.find(QPushButton, f"pushButton_{key}")\ - .clicked.connect(lambda: self._reset_values_key(key)) + .clicked.connect(lambda: self._reset_spinbox(key)) self.find(QDoubleSpinBox, f"doubleSpinBox_{key}")\ - .valueChanged.connect(lambda: self.update_spinbox_value(key)) + .valueChanged.connect( + lambda: self.update_values_from_spinbox(key) + ) - def update_spinbox_value(self, key): + def update_values_from_spinbox(self, key): self._values[key] = self.get_double_spin_box(f"doubleSpinBox_{key}") self._plot_img.set_extent(list(self._values.values())) + self.plot.idle() def draw_geotiff(self, memfile=None): if not _rasterio_loaded: @@ -184,13 +181,13 @@ class EditGeoTIFFWindow(PamhyrWindow): with rasterio.open(self._file_name) as data: img = data.read() b = data.bounds[:] + + self._set_values_from_bounds(b) else: with memfile.open() as gt: img = gt.read() b = gt.bounds[:] - self._set_values_from_bounds(b) - if self._plot_img is not None: self._plot_img.remove() diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index 96c123ae..da2b7bbf 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -158,7 +158,7 @@ define_model_action = [ "action_menu_boundary_conditions_sediment", "action_menu_rep_additional_lines", "action_menu_output_rk", "action_menu_run_adists", "action_menu_pollutants", - "action_menu_d90", "action_menu_dif", + "action_menu_d90", "action_menu_dif", "action_menu_edit_geotiff" ] action = ( @@ -298,6 +298,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): self.open_reach_sediment_layers, "action_menu_additional_file": self.open_additional_files, "action_menu_rep_additional_lines": self.open_rep_lines, + "action_menu_edit_geotiff": self.open_geotiff, "action_menu_close": self.close_model, "action_menu_results_last": self.open_last_results, "action_menu_open_results_from_file": self.open_results_from_file, diff --git a/src/View/ui/MainWindow.ui b/src/View/ui/MainWindow.ui index 96661c4f..b5c6f93f 100644 --- a/src/View/ui/MainWindow.ui +++ b/src/View/ui/MainWindow.ui @@ -129,6 +129,7 @@ &Geometry + @@ -811,6 +812,11 @@ Compare results + + + GeoTIFF + +