Commit 16916f44 authored by Theophile Terraz's avatar Theophile Terraz
Browse files

add slope option for BC generation

No related merge requests found
Pipeline #57247 passed with stages
in 56 seconds
Showing with 176 additions and 2 deletions
+176 -2
# 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 <https://www.gnu.org/licenses/>.
# -*- 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)
...@@ -50,6 +50,7 @@ from View.BoundaryCondition.Edit.translate import BCETranslate ...@@ -50,6 +50,7 @@ from View.BoundaryCondition.Edit.translate import BCETranslate
from View.BoundaryCondition.Edit.UndoCommand import SetMetaDataCommand from View.BoundaryCondition.Edit.UndoCommand import SetMetaDataCommand
from View.BoundaryCondition.Edit.Table import TableModel from View.BoundaryCondition.Edit.Table import TableModel
from View.BoundaryCondition.Edit.Plot import Plot from View.BoundaryCondition.Edit.Plot import Plot
from View.BoundaryCondition.Edit.GenerateDialog import GenerateDialog
_translate = QCoreApplication.translate _translate = QCoreApplication.translate
...@@ -332,7 +333,13 @@ class EditBoundaryConditionWindow(PamhyrWindow): ...@@ -332,7 +333,13 @@ class EditBoundaryConditionWindow(PamhyrWindow):
node = self._data.node node = self._data.node
reach = self._data.reach(self._study.river)[0] reach = self._data.reach(self._study.river)[0]
profile = reach.profiles[-1] 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 frictions = reach._parent.frictions.frictions
z_min = profile.z_min() z_min = profile.z_min()
z_max = profile.z_max() z_max = profile.z_max()
...@@ -355,7 +362,6 @@ class EditBoundaryConditionWindow(PamhyrWindow): ...@@ -355,7 +362,6 @@ class EditBoundaryConditionWindow(PamhyrWindow):
node = self._data.node node = self._data.node
reach = self._data.reach(self._study.river)[0] reach = self._data.reach(self._study.river)[0]
profile = reach.profiles[-1] profile = reach.profiles[-1]
incline = reach.get_incline_median_mean()
z_min = profile.z_min() z_min = profile.z_min()
z_max = profile.z_max() z_max = profile.z_max()
height = [(i)*(z_max-z_min)/50 for i in range(51)] height = [(i)*(z_max-z_min)/50 for i in range(51)]
......
...@@ -32,6 +32,8 @@ class BCETranslate(BCTranslate): ...@@ -32,6 +32,8 @@ class BCETranslate(BCTranslate):
self._dict["Edit Boundary Conditions"] = _translate( self._dict["Edit Boundary Conditions"] = _translate(
"BoundaryCondition", "Edit boundary conditions" "BoundaryCondition", "Edit boundary conditions"
) )
self._dict["Boundary Condition Options"] = _translate(
"BoundaryCondition", "Boundary Condition Options")
self._sub_dict["table_headers"] = { self._sub_dict["table_headers"] = {
"x": _translate("BoundaryCondition", "X"), "x": _translate("BoundaryCondition", "X"),
......
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>356</width>
<height>107</height>
</rect>
</property>
<property name="windowTitle">
<string>Options</string>
</property>
<property name="accessibleName">
<string/>
</property>
<property name="locale">
<locale language="English" country="Europe"/>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Slope</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="doubleSpinBox">
<property name="decimals">
<number>6</number>
</property>
<property name="maximum">
<double>999999.998999999952503</double>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="EstimateButton">
<property name="text">
<string>Estimate</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment