diff --git a/src/Model/SolverParameters/SolverParametersList.py b/src/Model/SolverParameters/SolverParametersList.py index 4aae2b377d4569806dc0b7b86b24751ed1a988e5..bff87d69030fe949afe3916478c07b2f3488375d 100644 --- a/src/Model/SolverParameters/SolverParametersList.py +++ b/src/Model/SolverParameters/SolverParametersList.py @@ -20,6 +20,7 @@ from copy import copy from tools import trace, timer from Solver.Solvers import solver_type_list +from Model.Tools.PamhyrList import PamhyrModelList from Model.DB import SQLSubModel class Parameter(): @@ -63,13 +64,13 @@ class Parameter(): return new -class SolverParametersList(SQLSubModel): +class SolverParametersList(PamhyrModelList): def __init__(self, solver_type = None, status = None): super(SolverParametersList, self).__init__() self._status = status self._solver = solver_type - self._parameters = list( + self._lst = list( map( lambda t: Parameter.from_tuple(t, self._status), solver_type.default_parameters() @@ -194,7 +195,7 @@ class SolverParametersList(SQLSubModel): ) ind = 0 - for param in self._parameters: + for param in self._lst: sql = ( "INSERT INTO " + "solver_parameter(ind, name, value, solver) "+ @@ -210,39 +211,36 @@ class SolverParametersList(SQLSubModel): return True - def __len__(self): - return len(self._parameters) - @property def parameters(self): - return self._parameters.copy() + return self.lst def get(self, index): - return self._parameters[index] + return self._lst[index] def get_by_key(self, key): try: return next( filter( lambda p: p["name"] == key, - self._parameters + self._lst ) )["value"] except: return None def set(self, index, new): - self._parameters[index] = new + self._lst[index] = new self._status.modified() def set_value(self, key, value): - for p in self._parameters: + for p in self._lst: if p["name"] == key: p["value"] = value self._status.modified() return - self._parameters.append( + self._lst.append( Parameter( name = key, value = value, @@ -253,47 +251,6 @@ class SolverParametersList(SQLSubModel): def new(self, index): n = Parameter(status = self._status) - self._parameters.insert(index, n) + self._lst.insert(index, n) self._status.modified() return n - - def insert(self, index, new): - self._parameters.insert(index, new) - self._status.modified() - - def delete(self, parameters): - for parameter in parameters: - self._parameters.remove(parameter) - self._status.modified() - - def delete_i(self, indexes): - parameters = list( - map( - lambda x: x[1], - filter( - lambda x: x[0] in indexes, - enumerate(self._parameters) - ) - ) - ) - self.delete(parameters) - - def sort(self, reverse=False, key=None): - self._parameters.sort(reverse=reverse, key=key) - self._status.modified() - - def move_up(self, index): - if index < len(self._parameters): - next = index - 1 - - l = self._parameters - l[index], l[next] = l[next], l[index] - self._status.modified() - - def move_down(self, index): - if index >= 0: - prev = index + 1 - - l = self._parameters - l[index], l[prev] = l[prev], l[index] - self._status.modified()