refactoring: refacto solver parameters

setup.py
Pierre-Antoine Rouby 2023-10-04 17:01:31 +02:00
parent 63d6c114c0
commit a64a9867ef
5 changed files with 85 additions and 115 deletions

View File

@ -24,9 +24,9 @@ from Solver.Mage import Mage7, Mage8
_translate = QCoreApplication.translate
solver_long_name = {
"generic": _translate("Solvers", "Generic"),
# "mage7": _translate("Solvers", "Mage version 7"),
"mage8": _translate("Solvers", "Mage version 8"),
"generic": "Generic",
# "mage7": "Mage v7",
"mage8": "Mage v8",
}
solver_type_list = {

View File

@ -52,7 +52,7 @@ from View.Stricklers.Window import StricklersWindow
from View.Frictions.Window import FrictionsWindow
from View.SedimentLayers.Window import SedimentLayersWindow
from View.SedimentLayers.Reach.Window import ReachSedimentLayersWindow
# from View.SolverParameters.Window import SolverParametersWindow
from View.SolverParameters.Window import SolverParametersWindow
# from View.RunSolver.Window import SelectSolverWindow, SolverLogWindow
# from View.CheckList.Window import CheckListWindow
# from View.Results.Window import ResultsWindow

View File

@ -34,37 +34,20 @@ from PyQt5.QtWidgets import (
QComboBox,
)
from View.Tools.PamhyrTable import PamhyrTableModel
from View.SolverParameters.UndoCommand import *
from View.SolverParameters import translate as tr
from Solver.Solvers import solver_long_name, solver_type_list
logger = logging.getLogger()
_translate = QCoreApplication.translate
class TableModel(QAbstractTableModel):
def __init__(self, data=None, undo=None, tab=""):
super(QAbstractTableModel, self).__init__()
self._headers = list(tr.table_headers.keys())
self._data = data
self._undo = undo
self._tab = tab
self._params = self._data.get_params(self._tab)
def flags(self, index):
options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
column = index.column()
if self._headers[column] == "value":
options |= Qt.ItemIsEditable
return options
def rowCount(self, parent):
return len(self._params)
def columnCount(self, parent):
return len(self._headers)
class TableModel(PamhyrTableModel):
def _setup_lst(self):
self._tab = self._opt_data
self._lst = self._data.get_params(self._tab)
def data(self, index, role):
if role != Qt.ItemDataRole.DisplayRole:
@ -75,24 +58,18 @@ class TableModel(QAbstractTableModel):
cname = self._headers[column]
if cname == "name":
value = self._params.get(row)[cname]
if value in tr.names:
value = tr.names[value]
value = self._lst.get(row)[cname]
if value in self._trad.get_dict("names"):
value = self._trad.get_dict("names")[value]
return value
elif cname == "value":
value = self._params.get(row)[cname]
if value in tr.yes_no:
value = tr.yes_no[value]
value = self._lst.get(row)[cname]
if value in self._trad.get_dict("yes_no"):
value = self._trad.get_dict("yes_no")[value]
return value
return QVariant()
def headerData(self, section, orientation, role):
if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal:
return tr.table_headers[self._headers[section]]
return QVariant()
def setData(self, index, value, role=Qt.EditRole):
if not index.isValid() or role != Qt.EditRole:
return False
@ -102,12 +79,12 @@ class TableModel(QAbstractTableModel):
try:
if self._headers[column] == "value":
if value in tr.r_yes_no:
value = tr.r_yes_no[value].lower()
if value in self._trad.get_dict("r_yes_no"):
value = self._trad.get_dict("r_yes_no")[value].lower()
self._undo.push(
SetCommand(
self._params, row,
self._lst, row,
"value", value
)
)
@ -123,7 +100,7 @@ class TableModel(QAbstractTableModel):
# self._undo.push(
# AddCommand(
# self._params, row
# self._lst, row
# )
# )
@ -135,7 +112,7 @@ class TableModel(QAbstractTableModel):
# self._undo.push(
# DelCommand(
# self._params, rows
# self._lst, rows
# )
# )
@ -147,7 +124,7 @@ class TableModel(QAbstractTableModel):
# self._undo.push(
# SortCommand(
# self._params, False
# self._lst, False
# )
# )
@ -164,7 +141,7 @@ class TableModel(QAbstractTableModel):
# self._undo_stack.push(
# MoveCommand(
# self._params, "up", row
# self._lst, "up", row
# )
# )
@ -172,7 +149,7 @@ class TableModel(QAbstractTableModel):
# self.layoutChanged.emit()
# def move_down(self, index, parent=QModelIndex()):
# if row > len(self._params):
# if row > len(self._lst):
# return
# target = row
@ -181,7 +158,7 @@ class TableModel(QAbstractTableModel):
# self._undo_stack.push(
# MoveCommand(
# self._params, "down", row
# self._lst, "down", row
# )
# )

View File

@ -42,7 +42,7 @@ from PyQt5.QtWidgets import (
from View.SolverParameters.UndoCommand import *
from View.SolverParameters.Table import TableModel
from View.SolverParameters import translate as tr
from View.SolverParameters.translate import ParamTranslate
from Solver.Solvers import solver_long_name, solver_type_list
@ -55,16 +55,13 @@ class SolverParametersWindow(PamhyrWindow):
_pamhyr_name = "Solver parameters"
def __init__(self, study=None, config=None, parent=None):
# Init tanslate dictionary
tr.init()
name = self._pamhyr_name + " - " + study.name
super(SolverParametersWindow, self).__init__(
title = name,
study = study,
config = config,
options = ['copy'],
trad = ParamTranslate(),
parent = parent
)
@ -73,8 +70,6 @@ class SolverParametersWindow(PamhyrWindow):
self.setup_sc()
self.setup_table()
self.ui.setWindowTitle(self._title)
def setup_sc(self):
self._undo_stack = {}
@ -101,9 +96,13 @@ class SolverParametersWindow(PamhyrWindow):
# Create table model
self._table[st] = TableModel(
table_view = table,
data = self._study.river,
opt_data = st,
table_headers = self._trad.get_dict("table_headers"),
editable_headers = ["value"],
trad = self._trad,
undo = self._undo_stack[st],
tab = st,
)
table.setModel(self._table[st])

View File

@ -18,40 +18,34 @@
from PyQt5.QtCore import QCoreApplication
from View.Tools.PamhyrTranslate import PamhyrTranslate
_translate = QCoreApplication.translate
table_headers = None
yes_no = None
r_yes_no = None
names = None
class ParamTranslate(PamhyrTranslate):
def __init__(self):
super(ParamTranslate, self).__init__()
def init():
global table_headers
table_headers = {
self._sub_dict["table_headers"] = {
"name": _translate("SolverParameters", "Name"),
"value": _translate("SolverParameters", "Value")
}
# Used to translate user parameter with value yes or no
global yes_no
yes_no = {
self._sub_dict["yes_no"] = {
"yes": _translate("SolverParameters", "Yes"),
"no": _translate("SolverParameters", "No"),
"y": _translate("SolverParameters", "Y"),
"n": _translate("SolverParameters", "N"),
}
# Reverse
global r_yes_no
r_yes_no = {
self._sub_dict["r_yes_no"] = {
_translate("SolverParameters", "Yes"): "yes",
_translate("SolverParameters", "No"): "no",
_translate("SolverParameters", "Y"): "y",
_translate("SolverParameters", "N"): "n",
}
global names
names = {
self._sub_dict["names"] = {
"all_init_time": _translate("SolverParameters", "Initial time (jj:hh:mm:ss)"),
"all_final_time": _translate("SolverParameters", "Final time (jj:hh:mm:ss)"),
"all_timestep": _translate("SolverParameters", "Timestep (second)"),