LC: Add begin and end kp and fix the convertion bug.

mesh
Pierre-Antoine Rouby 2023-05-15 16:01:11 +02:00
parent ce1872a90f
commit 1179dd0b92
9 changed files with 112 additions and 10 deletions

View File

@ -161,7 +161,9 @@ class BoundaryCondition(object):
@timer @timer
def convert(self, cls): def convert(self, cls):
new = cls(name = self.name) new = cls(name = self.name, status = self._status)
new.node = self.node
for i, _ in self.data: for i, _ in self.data:
new.add(i) new.add(i)
@ -171,7 +173,6 @@ class BoundaryCondition(object):
for ind, v in self.data: for ind, v in self.data:
new._set_i_c_v(ind, j, v[i]) new._set_i_c_v(ind, j, v[i])
self._status.modified()
return new return new
def move_up(self, index): def move_up(self, index):

View File

@ -37,7 +37,7 @@ class BoundaryConditionList(object):
self._status.modified() self._status.modified()
def new(self, lst, index): def new(self, lst, index):
n = NotDefined() n = NotDefined(status=self._status)
self._tabs[lst].insert(index, n) self._tabs[lst].insert(index, n)
self._status.modified() self._status.modified()
return n return n

View File

@ -201,6 +201,12 @@ class Reach:
""" """
return [profile.kp for profile in self.profiles] return [profile.kp for profile in self.profiles]
def get_kp_min(self):
return min([profile.kp for profile in self.profiles])
def get_kp_max(self):
return max([profile.kp for profile in self.profiles])
# Guidelines # Guidelines

View File

@ -13,6 +13,8 @@ class LateralContribution(object):
self._name = name self._name = name
self._type = "" self._type = ""
self._edge = None self._edge = None
self._begin_kp = 0.0
self._end_kp = 0.0
self._data = [] self._data = []
self._header = [] self._header = []
self._types = [float, float] self._types = [float, float]
@ -51,11 +53,48 @@ class LateralContribution(object):
@edge.setter @edge.setter
def edge(self, edge): def edge(self, edge):
self._edge = edge self._edge = edge
if edge is not None:
self._begin_kp = self._edge.reach.get_kp_min()
self._end_kp = self._edge.reach.get_kp_max()
self._status.modified() self._status.modified()
def has_edge(self): def has_edge(self):
return self._edge is not None return self._edge is not None
@property
def begin_kp(self):
return self._begin_kp
@begin_kp.setter
def begin_kp(self, begin_kp):
if self._edge is None:
self._begin_kp = begin_kp
else:
_min = self._edge.reach.get_kp_min()
_max = self._edge.reach.get_kp_max()
if _min <= begin_kp <= _max:
self._begin_kp = begin_kp
self._status.modified()
@property
def end_kp(self):
return self._end_kp
@end_kp.setter
def end_kp(self, end_kp):
if self._edge is None:
self._end_kp = end_kp
else:
_min = self._edge.reach.get_kp_min()
_max = self._edge.reach.get_kp_max()
if _min <= end_kp <= _max:
self._end_kp = end_kp
self._status.modified()
@property @property
def header(self): def header(self):
return self._header.copy() return self._header.copy()
@ -160,7 +199,11 @@ class LateralContribution(object):
@timer @timer
def convert(self, cls): def convert(self, cls):
new = cls(name = self.name) new = cls(name = self.name, status = self._status)
new.edge = self.edge
new.begin_kp = self.begin_kp
new.end_kp = self.end_kp
for i, _ in self.data: for i, _ in self.data:
new.add(i) new.add(i)

View File

@ -35,7 +35,7 @@ class LateralContributionList(object):
self._status.modified() self._status.modified()
def new(self, lst, index): def new(self, lst, index):
n = NotDefined() n = NotDefined(status=self._status)
self._tabs[lst].insert(index, n) self._tabs[lst].insert(index, n)
self._status.modified() self._status.modified()
return n return n

View File

@ -52,7 +52,6 @@ class RiverReach(Edge):
class River(Graph): class River(Graph):
def __init__(self, status=None): def __init__(self, status=None):
print(status)
super(River, self).__init__(status=status) super(River, self).__init__(status=status)
# Replace Node and Edge ctor by custom ctor # Replace Node and Edge ctor by custom ctor

View File

@ -17,6 +17,7 @@ from PyQt5.QtWidgets import (
from View.LateralContribution.UndoCommand import ( from View.LateralContribution.UndoCommand import (
SetNameCommand, SetEdgeCommand, SetTypeCommand, SetNameCommand, SetEdgeCommand, SetTypeCommand,
SetBeginCommand, SetEndCommand,
AddCommand, DelCommand, SortCommand, AddCommand, DelCommand, SortCommand,
MoveCommand, PasteCommand, DuplicateCommand, MoveCommand, PasteCommand, DuplicateCommand,
) )
@ -120,6 +121,11 @@ class TableModel(QAbstractTableModel):
if n is None: if n is None:
return _translate("LateralContribution", "Not associate") return _translate("LateralContribution", "Not associate")
return n.name return n.name
elif self._headers[column] == "begin_kp":
return self._lcs.get(self._tab, row).begin_kp
elif self._headers[column] == "end_kp":
return self._lcs.get(self._tab, row).end_kp
return QVariant() return QVariant()
@ -155,6 +161,18 @@ class TableModel(QAbstractTableModel):
self._lcs, self._tab, row, self._data.edge(value) self._lcs, self._tab, row, self._data.edge(value)
) )
) )
elif self._headers[column] == "begin_kp":
self._undo.push(
SetBeginCommand(
self._lcs, self._tab, row, value
)
)
elif self._headers[column] == "end_kp":
self._undo.push(
SetEndCommand(
self._lcs, self._tab, row, value
)
)
self.dataChanged.emit(index, index) self.dataChanged.emit(index, index)
return True return True

View File

@ -26,6 +26,39 @@ class SetNameCommand(QUndoCommand):
def redo(self): def redo(self):
self._lcs.get(self._tab, self._index).name = self._new self._lcs.get(self._tab, self._index).name = self._new
class SetBeginCommand(QUndoCommand):
def __init__(self, lcs, tab, index, new_value):
QUndoCommand.__init__(self)
self._lcs = lcs
self._tab = tab
self._index = index
self._old = self._lcs.get(self._tab, self._index).begin_kp
self._new = new_value
def undo(self):
self._lcs.get(self._tab, self._index).begin_kp = float(self._old)
def redo(self):
self._lcs.get(self._tab, self._index).begin_kp = float(self._new)
class SetEndCommand(QUndoCommand):
def __init__(self, lcs, tab, index, new_value):
QUndoCommand.__init__(self)
self._lcs = lcs
self._tab = tab
self._index = index
self._old = self._lcs.get(self._tab, self._index).end_kp
self._new = new_value
def undo(self):
self._lcs.get(self._tab, self._index).end_kp = float(self._old)
def redo(self):
self._lcs.get(self._tab, self._index).end_kp = float(self._new)
class SetEdgeCommand(QUndoCommand): class SetEdgeCommand(QUndoCommand):
def __init__(self, lcs, tab, index, edge): def __init__(self, lcs, tab, index, edge):
QUndoCommand.__init__(self) QUndoCommand.__init__(self)

View File

@ -18,7 +18,9 @@ long_types = {
table_headers = { table_headers = {
"name": _translate("LateralContribution", "Name"), "name": _translate("LateralContribution", "Name"),
"type": _translate("LateralContribution", "Type"), "type": _translate("LateralContribution", "Type"),
"edge": _translate("LateralContribution", "Edge") "edge": _translate("LateralContribution", "Reach"),
"begin_kp": _translate("LateralContribution", "Begin kp (m)"),
"end_kp": _translate("LateralContribution", "End kp (m)")
} }
LC_types = { LC_types = {