mirror of https://gitlab.com/pamhyr/pamhyr2
119 lines
2.7 KiB
Python
119 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from copy import copy
|
|
from tools import trace, timer
|
|
|
|
class Data(object):
|
|
def __init__(self, status = None):
|
|
super(Data, self).__init__()
|
|
|
|
self._status = status
|
|
|
|
self._name = ""
|
|
self._comment = ""
|
|
|
|
self._kp = 0.0
|
|
self._flow = 0.0
|
|
self._cote = 0.0
|
|
self._tiran = 0.0
|
|
|
|
def __getitem__(self, key):
|
|
val = None
|
|
|
|
if key == "name":
|
|
val = self._name
|
|
elif key == "comment":
|
|
val = self._comment
|
|
elif key == "kp":
|
|
val = self._kp
|
|
elif key == "flow":
|
|
val = self._flow
|
|
elif key == "cote":
|
|
val = self._cote
|
|
elif key == "tiran":
|
|
val = self._tiran
|
|
|
|
return val
|
|
|
|
def __setitem__(self, key, value):
|
|
if key == "name":
|
|
self._name = str(value)
|
|
elif key == "comment":
|
|
self._comment = str(value)
|
|
elif key == "kp":
|
|
self._kp = float(value)
|
|
elif key == "flow":
|
|
self._flow = float(value)
|
|
elif key == "cote":
|
|
self._cote = float(value)
|
|
elif key == "tiran":
|
|
self._tiran = float(value)
|
|
|
|
self._status.modified()
|
|
|
|
class InitialConditions(object):
|
|
def __init__(self, reach = None, status = None):
|
|
super(InitialConditions, self).__init__()
|
|
|
|
self._status = status
|
|
|
|
self._reach = reach
|
|
self._data = []
|
|
|
|
def __len__(self):
|
|
return len(self._data)
|
|
|
|
@property
|
|
def reach(self):
|
|
return self._reach
|
|
|
|
@reach.setter
|
|
def reach(self, new):
|
|
self._reach = reach
|
|
self._status.modified()
|
|
|
|
@property
|
|
def data(self):
|
|
return self._data.copy()
|
|
|
|
def get(self, index):
|
|
return self._data[index]
|
|
|
|
def set(self, index, data):
|
|
self._data.insert(index, data)
|
|
self._status.modified()
|
|
|
|
def new(self, index):
|
|
n = Data(self._status)
|
|
self._data.insert(index, n)
|
|
self._status.modified()
|
|
|
|
def insert(self, index, data):
|
|
self._data.insert(index, data)
|
|
self._status.modified()
|
|
|
|
def delete(self, data):
|
|
self._data = list(
|
|
filter(
|
|
lambda x: x not in data,
|
|
self._data
|
|
)
|
|
)
|
|
self._status.modified()
|
|
|
|
def delete_i(self, indexes):
|
|
data = list(
|
|
map(
|
|
lambda x: x[1],
|
|
filter(
|
|
lambda x: x[0] in indexes,
|
|
enumerate(self._data)
|
|
)
|
|
)
|
|
)
|
|
self.delete(data)
|
|
|
|
def sort(self, reverse=False, key=None):
|
|
self._data.sort(reverse=reverse, key=key)
|
|
self._status.modified()
|