mirror of https://gitlab.com/pamhyr/pamhyr2
LC: Add begin and end kp and fix the convertion bug.
parent
ce1872a90f
commit
1179dd0b92
|
|
@ -161,7 +161,9 @@ class BoundaryCondition(object):
|
|||
|
||||
@timer
|
||||
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:
|
||||
new.add(i)
|
||||
|
||||
|
|
@ -171,7 +173,6 @@ class BoundaryCondition(object):
|
|||
for ind, v in self.data:
|
||||
new._set_i_c_v(ind, j, v[i])
|
||||
|
||||
self._status.modified()
|
||||
return new
|
||||
|
||||
def move_up(self, index):
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class BoundaryConditionList(object):
|
|||
self._status.modified()
|
||||
|
||||
def new(self, lst, index):
|
||||
n = NotDefined()
|
||||
n = NotDefined(status=self._status)
|
||||
self._tabs[lst].insert(index, n)
|
||||
self._status.modified()
|
||||
return n
|
||||
|
|
|
|||
|
|
@ -201,6 +201,12 @@ class Reach:
|
|||
"""
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ class LateralContribution(object):
|
|||
self._name = name
|
||||
self._type = ""
|
||||
self._edge = None
|
||||
self._begin_kp = 0.0
|
||||
self._end_kp = 0.0
|
||||
self._data = []
|
||||
self._header = []
|
||||
self._types = [float, float]
|
||||
|
|
@ -51,11 +53,48 @@ class LateralContribution(object):
|
|||
@edge.setter
|
||||
def edge(self, 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()
|
||||
|
||||
def has_edge(self):
|
||||
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
|
||||
def header(self):
|
||||
return self._header.copy()
|
||||
|
|
@ -160,7 +199,11 @@ class LateralContribution(object):
|
|||
|
||||
@timer
|
||||
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:
|
||||
new.add(i)
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class LateralContributionList(object):
|
|||
self._status.modified()
|
||||
|
||||
def new(self, lst, index):
|
||||
n = NotDefined()
|
||||
n = NotDefined(status=self._status)
|
||||
self._tabs[lst].insert(index, n)
|
||||
self._status.modified()
|
||||
return n
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ class RiverReach(Edge):
|
|||
|
||||
class River(Graph):
|
||||
def __init__(self, status=None):
|
||||
print(status)
|
||||
super(River, self).__init__(status=status)
|
||||
|
||||
# Replace Node and Edge ctor by custom ctor
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ from PyQt5.QtWidgets import (
|
|||
|
||||
from View.LateralContribution.UndoCommand import (
|
||||
SetNameCommand, SetEdgeCommand, SetTypeCommand,
|
||||
SetBeginCommand, SetEndCommand,
|
||||
AddCommand, DelCommand, SortCommand,
|
||||
MoveCommand, PasteCommand, DuplicateCommand,
|
||||
)
|
||||
|
|
@ -120,6 +121,11 @@ class TableModel(QAbstractTableModel):
|
|||
if n is None:
|
||||
return _translate("LateralContribution", "Not associate")
|
||||
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()
|
||||
|
||||
|
|
@ -139,20 +145,32 @@ class TableModel(QAbstractTableModel):
|
|||
if self._headers[column] == "name":
|
||||
self._undo.push(
|
||||
SetNameCommand(
|
||||
self._lcs, self._tab,row, value
|
||||
self._lcs, self._tab, row, value
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "type":
|
||||
key = next(k for k, v in long_types.items() if v == value)
|
||||
self._undo.push(
|
||||
SetTypeCommand(
|
||||
self._lcs, self._tab,row, LC_types[key]
|
||||
self._lcs, self._tab, row, LC_types[key]
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "edge":
|
||||
self._undo.push(
|
||||
SetEdgeCommand(
|
||||
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
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,39 @@ class SetNameCommand(QUndoCommand):
|
|||
def redo(self):
|
||||
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):
|
||||
def __init__(self, lcs, tab, index, edge):
|
||||
QUndoCommand.__init__(self)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ long_types = {
|
|||
table_headers = {
|
||||
"name": _translate("LateralContribution", "Name"),
|
||||
"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 = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue