merge master

This commit is contained in:
Theophile Terraz committed 2025-10-10 15:09:44 +02:00
commit 19045329dc
13 files changed
+491 -87

No files matched your search

+18 -8
View File
@@ -23,12 +23,12 @@ from PyQt5.QtGui import (
)
from PyQt5.QtCore import (
Qt, QVariant, QAbstractTableModel,
Qt, QVariant, QAbstractTableModel, QItemSelectionModel,
)
from PyQt5.QtWidgets import (
QDialogButtonBox, QComboBox, QUndoStack, QShortcut,
QDoubleSpinBox,
QDoubleSpinBox, QRadioButton,
)
@@ -55,7 +55,7 @@ class MeshingDialog(PamhyrDialog):
self._space_step = 50.0
self._lplan = False
self._lm = "3"
self._linear = False
self._linear = True
self._begin_cs = -1
self._end_cs = -1
self._begin_dir = "un"
@@ -71,7 +71,7 @@ class MeshingDialog(PamhyrDialog):
self._origin = self._reach.profile(0)
self._init_default_values_profiles()
self._init_default_values_guidelines()
# self._init_default_values_guidelines()
self.set_double_spin_box(
"doubleSpinBox_space_step",
@@ -83,14 +83,24 @@ class MeshingDialog(PamhyrDialog):
else:
self.set_radio_button("radioButton_spline", True)
self.find(QRadioButton, "radioButton_spline").setEnabled(False)
self.find(QRadioButton, "radioButton_linear").setEnabled(False)
def _init_default_values_profiles(self):
profiles = self.profiles
self.combobox_add_items("comboBox_begin_rk", profiles)
self.combobox_add_items("comboBox_end_rk", profiles)
self.set_combobox_text("comboBox_begin_rk", profiles[0])
self.set_combobox_text("comboBox_end_rk", profiles[-1])
r = self.parent.tableView\
.selectionModel()\
.selectedRows()
if len(r) <= 1:
self.set_combobox_text("comboBox_begin_rk", profiles[0])
self.set_combobox_text("comboBox_end_rk", profiles[-1])
else:
self.set_combobox_text("comboBox_begin_rk", profiles[r[0].row()])
self.set_combobox_text("comboBox_end_rk", profiles[r[-1].row()])
@property
def profiles(self):
@@ -167,8 +177,8 @@ class MeshingDialog(PamhyrDialog):
self._begin_cs = self.profiles.index(p1)
self._end_cs = self.profiles.index(p2)
self._begin_dir = self.get_combobox_text("comboBox_begin_gl")
self._end_dir = self.get_combobox_text("comboBox_end_gl")
# self._begin_dir = self.get_combobox_text("comboBox_begin_gl")
# self._end_dir = self.get_combobox_text("comboBox_end_gl")
super().accept()
+2 -4
View File
@@ -28,8 +28,6 @@ from PyQt5.QtWidgets import (
from Model.Geometry import Reach
from Model.Except import exception_message_box
from Meshing.Mage import MeshingWithMage
logger = logging.getLogger()
@@ -238,7 +236,7 @@ class MeshingCommand(QUndoCommand):
self._mesher = mesher
self._command = command
self._profiles = reach.profiles.copy()
self._profiles = [p.copy() for p in reach.profiles]
self._profiles.reverse()
self._new_profiles = None
@@ -262,7 +260,7 @@ class MeshingCommand(QUndoCommand):
**self._data
)
self._new_profiles = self._reach.profiles.copy()
self._new_profiles = [p.copy() for p in self._reach.profiles]
self._new_profiles.reverse()
else:
self._reach.purge()
+29 -12
View File
@@ -32,6 +32,7 @@ from PyQt5.QtGui import (
from PyQt5.QtCore import (
QModelIndex, Qt, QSettings, pyqtSlot,
QItemSelectionModel, QCoreApplication, QSize,
QItemSelection, QItemSelectionRange,
)
from PyQt5.QtWidgets import (
QApplication, QMainWindow, QFileDialog, QCheckBox,
@@ -49,9 +50,7 @@ from View.Tools.Plot.PamhyrCanvas import MplCanvas
from View.SelectReach.Window import SelectReachWindow
from Meshing.Mage import (
MeshingWithMage, MeshingWithMageMailleurTT
)
from Meshing.Internal import InternalMeshing
from View.Geometry.Table import GeometryReachTableModel
from View.Geometry.PlotXY import PlotXY
@@ -300,6 +299,13 @@ class GeometryWindow(PamhyrWindow):
self.tableView.model().blockSignals(False)
def edit_meshing(self):
rows = list(
set(
(i.row() for i in self.tableView.selectedIndexes())
)
)
selected_rk = [self._reach.profile(r).rk for r in rows]
try:
dlg = MeshingDialog(
reach=self._reach,
@@ -310,8 +316,6 @@ class GeometryWindow(PamhyrWindow):
data = {
"step": dlg.space_step,
"limites": [dlg.begin_cs, dlg.end_cs],
"directrices": [dlg.begin_dir, dlg.end_dir],
"lplan": dlg.lplan,
"linear": dlg.linear,
}
self._edit_meshing(data)
@@ -319,18 +323,31 @@ class GeometryWindow(PamhyrWindow):
logger_exception(e)
return
ind = []
for i in range(self._reach.number_profiles):
if self._reach.profile(i).rk in selected_rk:
ind.append(i)
self.tableView.setFocus()
selection = self.tableView.selectionModel()
index = QItemSelection()
if len(ind) > 0:
for i in ind:
index.append(QItemSelectionRange(
self.tableView.model().index(i, 0)
))
selection.select(
index,
QItemSelectionModel.Rows |
QItemSelectionModel.ClearAndSelect |
QItemSelectionModel.Select
)
def _edit_meshing(self, data):
try:
mesher = MeshingWithMageMailleurTT()
mesher = InternalMeshing()
self._table.meshing(mesher, data)
except Exception as e:
logger_exception(e)
raise ExternFileMissingError(
module="mage",
filename="MailleurTT",
path=MeshingWithMageMailleurTT._path(),
src_except=e
)
def update_rk(self):
try:
+9 -1
View File
@@ -23,6 +23,8 @@ from numpy import sqrt
from tools import timer, trace
from itertools import compress
from PyQt5.QtGui import (
QKeySequence, QColor
)
@@ -51,8 +53,12 @@ class TableModel(PamhyrTableModel):
self._lst = _river.reachs
elif self._opt_data == "profile":
self._lst = _river.reach(0).profiles
# self._lst = list(filter(lambda x: x.name[0:8] != 'interpol',
# _river.reach(0).profiles))
elif self._opt_data == "raw_data":
self._lst = _river.reach(0).profiles
# self._lst = list(filter(lambda x: x.name[0:8] != 'interpol',
# _river.reach(0).profiles))
elif self._opt_data == "solver":
self._lst = self._parent._solvers
@@ -152,7 +158,9 @@ class TableModel(PamhyrTableModel):
if self._opt_data == "reach":
self._lst = _river.reachs
elif self._opt_data == "profile" or self._opt_data == "raw_data":
self._lst = _river.reach(reach).profiles
# self._lst = _river.reach(reach).profiles
self._lst = list(compress(_river.reach(reach).profiles,
_river.reach(reach).profile_mask))
elif self._opt_data == "solver":
self._lst = self._parent._solvers
+13 -53
View File
@@ -7,24 +7,14 @@
<x>0</x>
<y>0</y>
<width>520</width>
<height>341</height>
<height>245</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="3" 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="2" column="0">
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Parameters</string>
@@ -79,7 +69,7 @@
<string>Spline</string>
</property>
<property name="checked">
<bool>true</bool>
<bool>false</bool>
</property>
</widget>
</item>
@@ -88,6 +78,9 @@
<property name="text">
<string>Linear</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@@ -108,47 +101,14 @@
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Guideline used for distance computation</string>
<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>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Second guideline</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>First guideline</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_end_gl">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_begin_gl">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">