diff --git a/src/View/BoundaryCondition/Edit/GenerateDialog.py b/src/View/BoundaryCondition/Edit/GenerateDialog.py new file mode 100644 index 00000000..3b07a4d0 --- /dev/null +++ b/src/View/BoundaryCondition/Edit/GenerateDialog.py @@ -0,0 +1,68 @@ +# GenerateDialog.py -- Pamhyr +# Copyright (C) 2023-2024 INRAE +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# -*- coding: utf-8 -*- + +from View.Tools.PamhyrWindow import PamhyrDialog + +from PyQt5.QtGui import ( + QKeySequence, +) + +from PyQt5.QtCore import ( + Qt, QVariant, QAbstractTableModel, +) + +from PyQt5.QtWidgets import ( + QDialogButtonBox, QComboBox, QUndoStack, QShortcut, + QDoubleSpinBox, QCheckBox, QPushButton +) + + +class GenerateDialog(PamhyrDialog): + _pamhyr_ui = "BoundaryConditionsDialogGenerator" + _pamhyr_name = "Boundary Condition Options" + + def __init__(self, + value, + reach, + title="Boundary Condition Options", + trad=None, + parent=None): + super(GenerateDialog, self).__init__( + title=trad[self._pamhyr_name], + options=[], + trad=trad, + parent=parent + ) + + self.value = value + self.find(QDoubleSpinBox, "doubleSpinBox").setValue(self.value) + self.reach = reach + self.find(QPushButton, "EstimateButton").clicked.connect( + self.estimate + ) + + def accept(self): + self.value = self.find(QDoubleSpinBox, "doubleSpinBox").value() + super().accept() + + def reject(self): + self.close() + + def estimate(self): + self.value = abs(self.reach.get_incline_median_mean()) + self.find(QDoubleSpinBox, "doubleSpinBox").setValue(self.value) diff --git a/src/View/BoundaryCondition/Edit/Window.py b/src/View/BoundaryCondition/Edit/Window.py index d639a3a3..168958bd 100644 --- a/src/View/BoundaryCondition/Edit/Window.py +++ b/src/View/BoundaryCondition/Edit/Window.py @@ -50,6 +50,7 @@ from View.BoundaryCondition.Edit.translate import BCETranslate from View.BoundaryCondition.Edit.UndoCommand import SetMetaDataCommand from View.BoundaryCondition.Edit.Table import TableModel from View.BoundaryCondition.Edit.Plot import Plot +from View.BoundaryCondition.Edit.GenerateDialog import GenerateDialog _translate = QCoreApplication.translate @@ -332,7 +333,13 @@ class EditBoundaryConditionWindow(PamhyrWindow): node = self._data.node reach = self._data.reach(self._study.river)[0] profile = reach.profiles[-1] - incline = reach.get_incline_median_mean() + incline = abs(reach.get_incline_median_mean()) + dlg = GenerateDialog(incline, + reach, + trad=self._trad, + parent=self) + if dlg.exec(): + incline = dlg.value frictions = reach._parent.frictions.frictions z_min = profile.z_min() z_max = profile.z_max() @@ -355,7 +362,6 @@ class EditBoundaryConditionWindow(PamhyrWindow): node = self._data.node reach = self._data.reach(self._study.river)[0] profile = reach.profiles[-1] - incline = reach.get_incline_median_mean() z_min = profile.z_min() z_max = profile.z_max() height = [(i)*(z_max-z_min)/50 for i in range(51)] diff --git a/src/View/BoundaryCondition/Edit/translate.py b/src/View/BoundaryCondition/Edit/translate.py index 9d835550..006c49df 100644 --- a/src/View/BoundaryCondition/Edit/translate.py +++ b/src/View/BoundaryCondition/Edit/translate.py @@ -32,6 +32,8 @@ class BCETranslate(BCTranslate): self._dict["Edit Boundary Conditions"] = _translate( "BoundaryCondition", "Edit boundary conditions" ) + self._dict["Boundary Condition Options"] = _translate( + "BoundaryCondition", "Boundary Condition Options") self._sub_dict["table_headers"] = { "x": _translate("BoundaryCondition", "X"), diff --git a/src/View/ui/BoundaryConditionsDialogGenerator.ui b/src/View/ui/BoundaryConditionsDialogGenerator.ui new file mode 100644 index 00000000..6d3793bf --- /dev/null +++ b/src/View/ui/BoundaryConditionsDialogGenerator.ui @@ -0,0 +1,98 @@ + + + Dialog + + + + 0 + 0 + 356 + 107 + + + + Options + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + Slope + + + + + + + 6 + + + 999999.998999999952503 + + + + + + + Estimate + + + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +