From 5b2ee803291441164f951d8b7fcdd1be598d6c25 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 11 Oct 2023 08:37:20 +0200 Subject: [PATCH] geometry, results, configure: Some fixes. --- src/Checker/Checker.py | 6 +++ src/Model/Geometry/ProfileXYZ.py | 2 +- src/Model/Geometry/Reach.py | 4 +- src/Model/Stricklers/StricklersList.py | 4 +- src/Model/Tools/PamhyrList.py | 23 +++++++--- src/View/CheckList/Worker.py | 2 +- src/View/Configure/Translate.py | 33 ++++++++++++++ src/View/Configure/Window.py | 63 +++++++++----------------- src/View/Tools/PamhyrTable.py | 2 + 9 files changed, 86 insertions(+), 53 deletions(-) create mode 100644 src/View/Configure/Translate.py diff --git a/src/Checker/Checker.py b/src/Checker/Checker.py index d10a8c4d..762db1c6 100644 --- a/src/Checker/Checker.py +++ b/src/Checker/Checker.py @@ -62,6 +62,12 @@ class AbstractModelChecker(object): # Abstract function + def _run(self, study): + from Model.Study import Study + + thread_study = Study.open(study._filename) + self.run(thread_study) + def run(self, study): """Run checker function diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index 7eb12ac5..929928b4 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -146,7 +146,7 @@ class ProfileXYZ(Profile, SQLSubModel): ) data["profile"] = new - new._points = PointXYZ._sql_load(execute, data) + new._points = PointXYZ._sql_load(execute, data.copy()) yield ind, new diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 4fdc8c74..a6ed514c 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -78,7 +78,7 @@ class Reach(SQLSubModel): data = {} ind = 0 - for profile in self._profiles: + for profile in self.profiles: data["ind"] = ind profile._sql_save(execute, data) ind += 1 @@ -136,7 +136,7 @@ class Reach(SQLSubModel): def get_profiles_from_kp(self, kp): return list( filter( - lambda p: p.kp == kp, self._profiles + lambda p: p.kp == kp, self.profiles ) ) diff --git a/src/Model/Stricklers/StricklersList.py b/src/Model/Stricklers/StricklersList.py index b000c07e..f1d36fa7 100644 --- a/src/Model/Stricklers/StricklersList.py +++ b/src/Model/Stricklers/StricklersList.py @@ -72,4 +72,6 @@ class StricklersList(PamhyrModelList): key = f, reverse = reverse, ) - self._status.modified() + + if self._status is not None: + self._status.modified() diff --git a/src/Model/Tools/PamhyrList.py b/src/Model/Tools/PamhyrList.py index f1896c90..9a83bdb0 100644 --- a/src/Model/Tools/PamhyrList.py +++ b/src/Model/Tools/PamhyrList.py @@ -71,7 +71,8 @@ class PamhyrModelList(SQLSubModel): def set(self, row, new): self._lst[row] = new - self._status.modified() + if self._status is not None: + self._status.modified() def new(self, index): """Create new elements and add it to list @@ -86,12 +87,16 @@ class PamhyrModelList(SQLSubModel): def insert(self, index, new): self._lst.insert(index, new) - self._status.modified() + + if self._status is not None: + self._status.modified() def delete(self, lst): for el in lst: self._lst.remove(el) - self._status.modified() + + if self._status is not None: + self._status.modified() def delete_i(self, indexes): lst = list( @@ -107,7 +112,9 @@ class PamhyrModelList(SQLSubModel): def sort(self, reverse=False, key=None): self._lst.sort(reverse=reverse, key=key) - self._status.modified() + + if self._status is not None: + self._status.modified() def move_up(self, index): if index < len(self._lst): @@ -115,7 +122,9 @@ class PamhyrModelList(SQLSubModel): l = self._lst l[index], l[next] = l[next], l[index] - self._status.modified() + + if self._status is not None: + self._status.modified() def move_down(self, index): if index >= 0: @@ -123,7 +132,9 @@ class PamhyrModelList(SQLSubModel): l = self._lst l[index], l[prev] = l[prev], l[index] - self._status.modified() + + if self._status is not None: + self._status.modified() class PamhyrModelListWithTab(SQLSubModel): diff --git a/src/View/CheckList/Worker.py b/src/View/CheckList/Worker.py index 66e34d2c..aacd9393 100644 --- a/src/View/CheckList/Worker.py +++ b/src/View/CheckList/Worker.py @@ -42,6 +42,6 @@ class Worker(QObject): self.signalStatus.emit(checker.name) # Run checker - checker.run(self._study) + checker._run(self._study) self.signalStatus.emit("progress") diff --git a/src/View/Configure/Translate.py b/src/View/Configure/Translate.py new file mode 100644 index 00000000..bed6a713 --- /dev/null +++ b/src/View/Configure/Translate.py @@ -0,0 +1,33 @@ +# Translate.py -- Pamhyr +# Copyright (C) 2023 INRAE +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# -*- coding: utf-8 -*- + +from PyQt5.QtCore import QCoreApplication + +from View.Tools.PamhyrTranslate import PamhyrTranslate + +_translate = QCoreApplication.translate + +class ConfigureTranslate(PamhyrTranslate): + def __init__(self): + super(ConfigureTranslate, self).__init__() + + self._sub_dict["table_headers"] = { + "name": _translate("Configure", "Name"), + "type": _translate("Configure", "Type"), + "description": _translate("Configure", "Description"), + } diff --git a/src/View/Configure/Window.py b/src/View/Configure/Window.py index 83db81f6..b07304fa 100644 --- a/src/View/Configure/Window.py +++ b/src/View/Configure/Window.py @@ -22,11 +22,13 @@ from copy import deepcopy from config import Config from View.Tools.PamhyrWindow import PamhyrDialog +from View.Tools.PamhyrTable import PamhyrTableModel from View.Stricklers.Table import TableModel -from View.Stricklers.translate import * +from View.Stricklers.translate import StricklersTranslate from View.Stricklers.UndoCommand import * +from View.Configure.Translate import ConfigureTranslate from View.Configure.Solver.Window import ConfigureSolverWindow from PyQt5.QtGui import ( @@ -47,50 +49,28 @@ from Solver.Solvers import solver_long_name logger = logging.getLogger() -class SolverTableModel(QAbstractTableModel): - def __init__(self, headers=[], rows=[]): - super(QAbstractTableModel, self).__init__() - self.rows = rows - self.headers = headers - - def rowCount(self, parent): - return len(self.rows) - - def columnCount(self, parent): - return len(self.headers) - +class SolverTableModel(PamhyrTableModel): def data(self, index, role): if role != Qt.ItemDataRole.DisplayRole: return QVariant() - ret = self.rows[index.row()][self.headers[index.column()]] + ret = self._data[index.row()][self._headers[index.column()]] - if self.headers[index.column()] == "type": + if self._headers[index.column()] == "type": ret = solver_long_name[ret] return ret - def headerData(self, section, orientation, role): - if (role == Qt.ItemDataRole.DisplayRole and - orientation == Qt.Orientation.Horizontal): - return self.headers[section].capitalize() - - if (role == Qt.ItemDataRole.DisplayRole and - orientation == Qt.Orientation.Vertical): - return section + 1 # Start at 1 - - return QVariant() - def removeRow(self, index): - del self.rows[index.row()] + del self._data[index.row()] self.layoutChanged.emit() def add_solver(self, solver): - self.rows.append(solver) + self._data.append(solver) self.layoutChanged.emit() def change_solver(self, solver, index): - self.rows[index.row()] = solver + self._data[index.row()] = solver self.layoutChanged.emit() @@ -105,10 +85,13 @@ class ConfigureWindow(PamhyrDialog): super(ConfigureWindow, self).__init__( title = self._pamhyr_name, config = config, + trad = ConfigureTranslate(), options = [], parent=parent ) + self._trad_stricklers = StricklersTranslate() + self.setup_custom_sc() self.setup_solver() self.setup_stricklers() @@ -118,26 +101,21 @@ class ConfigureWindow(PamhyrDialog): def setup_solver(self): table = self.find(QTableView, "tableView_solver") self.solver_table_model = SolverTableModel( - headers = ["name", "type", "description"], - rows = self._config.solvers + table_view = table, + table_headers = self._trad.get_dict("table_headers"), + data = self._config.solvers ) - table.setModel(self.solver_table_model) - table.setSelectionBehavior(QAbstractItemView.SelectRows) - table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) - table.setAlternatingRowColors(True) - table.resizeColumnsToContents() def setup_stricklers(self): table = self.find(QTableView, f"tableView_stricklers") self._stricklers = deepcopy(self._config.stricklers) self._stricklers_table = TableModel( + table_view = table, + table_headers = self._trad_stricklers.get_dict("table_headers"), + editable_headers = ["name", "comment", "minor", "medium"], data = self._stricklers, undo = self._undo_stack, ) - table.setModel(self._stricklers_table) - table.setSelectionBehavior(QAbstractItemView.SelectRows) - table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) - table.setAlternatingRowColors(True) def setup_data(self): # Meshing_Tool @@ -197,7 +175,7 @@ class ConfigureWindow(PamhyrDialog): def accept(self): # Solvers - self._config.solvers = self.solver_table_model.rows.copy() + self._config.solvers = self.solver_table_model._data.copy() # Meshing_Tool self._config.meshing_tool = self.get_line_edit_text("lineEdit_meshing_tool") @@ -232,6 +210,7 @@ class ConfigureWindow(PamhyrDialog): self.close() # Debug + def set_debug(self): self._config.debug = not self._config.debug logger.info(f"Debug mode set : {self._config.debug}") @@ -243,7 +222,7 @@ class ConfigureWindow(PamhyrDialog): indexes = self.find(QTableView, "tableView_solver").selectionModel().selectedRows() for index in indexes: self.edit_solver = ConfigureSolverWindow( - data=self.solver_table_model.rows[index.row()], + data=self.solver_table_model._data[index.row()], config=self._config, parent=self ) diff --git a/src/View/Tools/PamhyrTable.py b/src/View/Tools/PamhyrTable.py index d809dced..43aa22c2 100644 --- a/src/View/Tools/PamhyrTable.py +++ b/src/View/Tools/PamhyrTable.py @@ -110,6 +110,8 @@ class PamhyrTableModel(QAbstractTableModel): self._table_view.setSelectionBehavior(QAbstractItemView.SelectRows) self._table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self._table_view.setAlternatingRowColors(True) + self._table_view.resizeColumnsToContents() + def flags(self, index): column = index.column() -- GitLab