Pamhyr2/src/Model/InitialConditions/InitialConditions.py

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()