diff --git a/src/View/D90AdisTS/Window.py b/src/View/D90AdisTS/Window.py index 5fffc17d68a61d9e2134c39fe9996a4f3a33c576..7d08a657a1209104d8deca9f03bdf878fbadb25e 100644 --- a/src/View/D90AdisTS/Window.py +++ b/src/View/D90AdisTS/Window.py @@ -245,7 +245,7 @@ class D90AdisTSWindow(PamhyrWindow): return logger.debug( - "IC: Paste: " + + "D90: Paste: " + f"header = {header}, " + f"data = {data}" ) diff --git a/src/View/DIFAdisTS/Table.py b/src/View/DIFAdisTS/Table.py index 13d5555cb7a43845c940398e56f6b7aded460514..7b4037e7832e37bddb9adf16eb166298d16c52a4 100644 --- a/src/View/DIFAdisTS/Table.py +++ b/src/View/DIFAdisTS/Table.py @@ -35,7 +35,7 @@ from PyQt5.QtWidgets import ( from View.Tools.PamhyrTable import PamhyrTableModel -from View.D90AdisTS.UndoCommand import ( +from View.DIFAdisTS.UndoCommand import ( SetCommand, AddCommand, SetCommandSpec, DelCommand, ) @@ -69,6 +69,8 @@ class ComboBoxDelegate(QItemDelegate): lambda kp: str(kp), reach.reach.get_kp() ) ) + elif self._mode == "method": + val = self._data.dif_adists.lst[0].types else: val = list( map( @@ -106,11 +108,11 @@ class ComboBoxDelegate(QItemDelegate): self.commitData.emit(self.sender()) -class D90TableModel(PamhyrTableModel): +class DIFTableModel(PamhyrTableModel): def __init__(self, river=None, data=None, **kwargs): self._river = river - super(D90TableModel, self).__init__(data=data, **kwargs) + super(DIFTableModel, self).__init__(data=data, **kwargs) self._data = data @@ -127,8 +129,8 @@ class D90TableModel(PamhyrTableModel): row = index.row() column = index.column() - if self._headers[column] is "name": - n = self._lst[row].name + if self._headers[column] is "method": + n = self._lst[row].method if n is None or n == "": return self._trad['not_associated'] return n @@ -147,8 +149,18 @@ class D90TableModel(PamhyrTableModel): if n is None: return self._trad['not_associated'] return n - elif self._headers[column] is "d90": - n = self._lst[row].d90 + elif self._headers[column] is "dif": + n = self._lst[row].dif + if n is None: + return self._trad['not_associated'] + return n + elif self._headers[column] is "b": + n = self._lst[row].b + if n is None: + return self._trad['not_associated'] + return n + elif self._headers[column] is "c": + n = self._lst[row].c if n is None: return self._trad['not_associated'] return n diff --git a/src/View/DIFAdisTS/TableDefault.py b/src/View/DIFAdisTS/TableDefault.py index c3231d424916abef2ccb4c1790739737e44e5989..60d3f58784c2649350b724b1d560475778cb9473 100644 --- a/src/View/DIFAdisTS/TableDefault.py +++ b/src/View/DIFAdisTS/TableDefault.py @@ -35,7 +35,7 @@ from PyQt5.QtWidgets import ( from View.Tools.PamhyrTable import PamhyrTableModel -from View.D90AdisTS.UndoCommand import ( +from View.DIFAdisTS.UndoCommand import ( SetCommand, ) @@ -43,9 +43,9 @@ logger = logging.getLogger() _translate = QCoreApplication.translate -class D90TableDefaultModel(PamhyrTableModel): +class DIFTableDefaultModel(PamhyrTableModel): def __init__(self, **kwargs): - super(D90TableDefaultModel, self).__init__(**kwargs) + super(DIFTableDefaultModel, self).__init__(**kwargs) def data(self, index, role): if role != Qt.ItemDataRole.DisplayRole: @@ -54,10 +54,23 @@ class D90TableDefaultModel(PamhyrTableModel): row = index.row() column = index.column() - if self._headers[column] is "name": - return self._data[row].name - elif self._headers[column] is "d90": - n = self._data[row].d90 + if self._headers[column] is "method": + n = self._data[row].method + if n is None: + return self._trad['not_associated'] + return n + elif self._headers[column] is "dif": + n = self._data[row].dif + if n is None: + return self._trad['not_associated'] + return n + elif self._headers[column] is "b": + n = self._data[row].b + if n is None: + return self._trad['not_associated'] + return n + elif self._headers[column] is "c": + n = self._data[row].c if n is None: return self._trad['not_associated'] return n diff --git a/src/View/DIFAdisTS/UndoCommand.py b/src/View/DIFAdisTS/UndoCommand.py index f0644955f804a69300d441ff4787ac60a377ab7d..2d28189b78a959cfb6e4d51ad894c99f082d50b9 100644 --- a/src/View/DIFAdisTS/UndoCommand.py +++ b/src/View/DIFAdisTS/UndoCommand.py @@ -23,8 +23,8 @@ from PyQt5.QtWidgets import ( QMessageBox, QUndoCommand, QUndoStack, ) -from Model.D90AdisTS.D90AdisTS import D90AdisTS -from Model.D90AdisTS.D90AdisTSList import D90AdisTSList +from Model.DIFAdisTS.DIFAdisTS import DIFAdisTS +from Model.DIFAdisTS.DIFAdisTSList import DIFAdisTSList class SetCommand(QUndoCommand): @@ -35,28 +35,40 @@ class SetCommand(QUndoCommand): self._row = row self._column = column - if self._column == "name": - self._old = self._data[self._row].name - elif self._column == "d90": - self._old = self._data[self._row].d90 + if self._column == "method": + self._old = self._data[self._row].method + elif self._column == "dif": + self._old = self._data[self._row].dif + elif self._column == "b": + self._old = self._data[self._row].b + elif self._column == "c": + self._old = self._data[self._row].c _type = float - if column == "name": + if column == "method": _type = str self._new = _type(new_value) def undo(self): - if self._column == "name": - self._data[self._row].name = self._old - elif self._column == "d90": - self._data[self._row].d90 = self._old + if self._column == "method": + self._data[self._row].method = self._old + elif self._column == "dif": + self._data[self._row].dif = self._old + elif self._column == "b": + self._data[self._row].b = self._old + elif self._column == "c": + self._data[self._row].c = self._old def redo(self): - if self._column == "name": - self._data[self._row].name = self._new - elif self._column == "d90": - self._data[self._row].d90 = self._new + if self._column == "method": + self._data[self._row].method = self._new + elif self._column == "dif": + self._data[self._row].dif = self._new + elif self._column == "b": + self._data[self._row].b = self._new + elif self._column == "c": + self._data[self._row].c = self._new class SetCommandSpec(QUndoCommand): def __init__(self, data, row, column, new_value): @@ -66,19 +78,23 @@ class SetCommandSpec(QUndoCommand): self._row = row self._column = column - if self._column == "name": - self._old = self._data[self._row].name + if self._column == "method": + self._old = self._data[self._row].method elif self._column == "reach": self._old = self._data[self._row].reach elif self._column == "start_kp": self._old = self._data[self._row].start_kp elif self._column == "end_kp": self._old = self._data[self._row].end_kp - elif self._column == "d90": - self._old = self._data[self._row].d90 + elif self._column == "dif": + self._old = self._data[self._row].dif + elif self._column == "b": + self._old = self._data[self._row].b + elif self._column == "c": + self._old = self._data[self._row].c _type = float - if column == "name": + if column == "method": _type = str elif column == "reach": _type = int @@ -86,28 +102,36 @@ class SetCommandSpec(QUndoCommand): self._new = _type(new_value) def undo(self): - if self._column == "name": - self._data[self._row].name = self._old + if self._column == "method": + self._data[self._row].method = self._old elif self._column == "reach": self._data[self._row].reach = self._old elif self._column == "start_kp": self._data[self._row].start_kp = self._old elif self._column == "end_kp": self._data[self._row].end_kp = self._old - elif self._column == "d90": - self._data[self._row].d90 = self._old + elif self._column == "dif": + self._data[self._row].dif = self._old + elif self._column == "b": + self._data[self._row].b = self._old + elif self._column == "c": + self._data[self._row].c = self._old def redo(self): - if self._column == "name": - self._data[self._row].name = self._new + if self._column == "method": + self._data[self._row].method = self._new elif self._column == "reach": self._data[self._row].reach = self._new elif self._column == "start_kp": self._data[self._row].start_kp = self._new elif self._column == "end_kp": self._data[self._row].end_kp = self._new - elif self._column == "d90": - self._data[self._row].d90 = self._new + elif self._column == "dif": + self._data[self._row].dif = self._new + elif self._column == "b": + self._data[self._row].b = self._new + elif self._column == "c": + self._data[self._row].c = self._new class AddCommand(QUndoCommand): def __init__(self, data, ics_spec, index): diff --git a/src/View/DIFAdisTS/Window.py b/src/View/DIFAdisTS/Window.py index 5fffc17d68a61d9e2134c39fe9996a4f3a33c576..a4af1b955504c2886156a41f4eb8fb6b5cc59854 100644 --- a/src/View/DIFAdisTS/Window.py +++ b/src/View/DIFAdisTS/Window.py @@ -43,19 +43,15 @@ from PyQt5.QtWidgets import ( from Modules import Modules -from View.InitialConditionsAdisTS.UndoCommand import ( - SetCommand, +from View.DIFAdisTS.TableDefault import ( + DIFTableDefaultModel, ) -from View.D90AdisTS.TableDefault import ( - D90TableDefaultModel, +from View.DIFAdisTS.Table import ( + DIFTableModel, ComboBoxDelegate, ) -from View.D90AdisTS.Table import ( - D90TableModel, ComboBoxDelegate, -) - -from View.D90AdisTS.translate import D90AdisTSTranslate +from View.DIFAdisTS.translate import DIFAdisTSTranslate from Solver.Mage import Mage8 @@ -64,14 +60,14 @@ _translate = QCoreApplication.translate logger = logging.getLogger() -class D90AdisTSWindow(PamhyrWindow): - _pamhyr_ui = "D90AdisTS" - _pamhyr_name = "D90 AdisTS" +class DIFAdisTSWindow(PamhyrWindow): + _pamhyr_ui = "DIFAdisTS" + _pamhyr_name = "DIF AdisTS" def __init__(self, data=None, study=None, config=None, parent=None): self._data = [] self._data.append(data) - trad = D90AdisTSTranslate() + trad = DIFAdisTSTranslate() name = ( trad[self._pamhyr_name] + @@ -79,7 +75,7 @@ class D90AdisTSWindow(PamhyrWindow): " - " + self._data[0].name ) - super(D90AdisTSWindow, self).__init__( + super(DIFAdisTSWindow, self).__init__( title=name, study=study, config=config, @@ -89,7 +85,7 @@ class D90AdisTSWindow(PamhyrWindow): self._hash_data.append(data) - self._d90_adists_lst = study.river.d90_adists + self._dif_adists_lst = study.river.dif_adists self.setup_table() @@ -101,11 +97,21 @@ class D90AdisTSWindow(PamhyrWindow): table_default = self.find(QTableView, f"tableView") - self._table = D90TableDefaultModel( + self._delegate_method = ComboBoxDelegate( + trad=self._trad, + data=self._study.river, + ic_spec_lst=self._data[0]._data, + parent=self, + mode="method" + ) + + self._table = DIFTableDefaultModel( table_view=table_default, table_headers=self._trad.get_dict("table_headers"), - editable_headers=["name", "d90"], - delegates={}, + editable_headers=["method", "dif", "b", "c"], + delegates={ + "method": self._delegate_method + }, data=self._data, undo=self._undo_stack, trad=self._trad @@ -148,11 +154,12 @@ class D90AdisTSWindow(PamhyrWindow): mode="kp" ) - self._table_spec = D90TableModel( + self._table_spec = DIFTableModel( table_view=self.table_spec, table_headers=self._trad.get_dict("table_headers_spec"), - editable_headers=["name", "reach", "start_kp", "end_kp", "d90"], + editable_headers=["method", "reach", "start_kp", "end_kp", "dif", "b", "c"], delegates={ + "method": self._delegate_method, "reach": self._delegate_reach, "start_kp": self._delegate_kp, "end_kp": self._delegate_kp @@ -245,7 +252,7 @@ class D90AdisTSWindow(PamhyrWindow): return logger.debug( - "IC: Paste: " + + "DIF: Paste: " + f"header = {header}, " + f"data = {data}" ) diff --git a/src/View/DIFAdisTS/translate.py b/src/View/DIFAdisTS/translate.py index 5a7bbd755d514a6d628c3828d95883296bf13d95..fc10d141af3b003ee0f1d6ea8d4ba5ff4d3a8f4e 100644 --- a/src/View/DIFAdisTS/translate.py +++ b/src/View/DIFAdisTS/translate.py @@ -23,24 +23,28 @@ from View.Translate import MainTranslate _translate = QCoreApplication.translate -class D90AdisTSTranslate(MainTranslate): +class DIFAdisTSTranslate(MainTranslate): def __init__(self): - super(D90AdisTSTranslate, self).__init__() + super(DIFAdisTSTranslate, self).__init__() - self._dict["D90 AdisTS"] = _translate( - "D90AdisTS", "D90 AdisTS") + self._dict["DIF AdisTS"] = _translate( + "DIFAdisTS", "DIF AdisTS") self._dict["kp"] = self._dict["unit_kp"] self._sub_dict["table_headers"] = { - "name": self._dict["name"], - "d90": _translate("Unit", "D90"), + "method": self._dict["method"], + "dif": _translate("Unit", "DIF"), + "b": _translate("Unit", "Coeff b"), + "c": _translate("Unit", "Coeff c"), } self._sub_dict["table_headers_spec"] = { - "name": self._dict["name"], + "method": self._dict["method"], "reach": self._dict["reach"], "start_kp": _translate("Unit", "Start_KP (m)"), "end_kp": _translate("Unit", "End_KP (m)"), - "d90": _translate("Unit", "D90"), + "dif": _translate("Unit", "DIF"), + "b": _translate("Unit", "Coeff b"), + "c": _translate("Unit", "Coeff c"), } diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index ddca58d6bd50fb6c88b20d58dd96d30a14e9447c..f005ba5c9a599c26ad6a2125183b759ee8c51be0 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -78,7 +78,7 @@ from View.Debug.Window import ReplWindow from View.OutputKpAdisTS.Window import OutputKpAdisTSWindow from View.Pollutants.Window import PollutantsWindow from View.D90AdisTS.Window import D90AdisTSWindow -from View.DIFAdisTS.Window import D90AdisTSWindow +from View.DIFAdisTS.Window import DIFAdisTSWindow # Optional internal display of documentation for make the application # package lighter... @@ -891,23 +891,23 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): D90AdisTS.show() def open_dif(self): - if len(self._study.river.d90_adists.lst) != 0: - d90_default = self._study.river.d90_adists.lst[0] + if len(self._study.river.dif_adists.lst) != 0: + dif_default = self._study.river.dif_adists.lst[0] else: - d90_default = self._study.river.d90_adists.new(0) + dif_default = self._study.river.dif_adists.new(0) if self.sub_window_exists( - D90AdisTSWindow, - data=[self._study, None, d90_default] + DIFAdisTSWindow, + data=[self._study, None, dif_default] ): return - D90AdisTS = D90AdisTSWindow( + DIFAdisTS = DIFAdisTSWindow( study=self._study, parent=self, - data=d90_default + data=dif_default ) - D90AdisTS.show() + DIFAdisTS.show() def open_pollutants(self): if self.sub_window_exists( diff --git a/src/View/Translate.py b/src/View/Translate.py index 5b906534158020e38352f7f4cd0e7d734043fc97..126043b5be21c6e48d4fc710a66a86b991cd2695 100644 --- a/src/View/Translate.py +++ b/src/View/Translate.py @@ -48,6 +48,8 @@ class CommonWordTranslate(PamhyrTranslate): "CommonWord", "Not associated" ) + self._dict["method"] = _translate("CommonWord", "Method") + class UnitTranslate(CommonWordTranslate): def __init__(self): diff --git a/src/View/ui/DIFAdisTS.ui b/src/View/ui/DIFAdisTS.ui new file mode 100644 index 0000000000000000000000000000000000000000..b4fe3e2d6777785e701a5c7771e11d6ce77952af --- /dev/null +++ b/src/View/ui/DIFAdisTS.ui @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>1024</width> + <height>576</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QSplitter" name="splitter_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <widget class="QWidget" name="layoutWidget"> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"/> + </item> + <item> + <widget class="QTableView" name="tableView"/> + </item> + </layout> + </widget> + <widget class="QSplitter" name="splitter"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <widget class="QWidget" name="verticalLayoutWidget"> + <layout class="QVBoxLayout" name="verticalLayout_1"/> + </widget> + <widget class="QWidget" name="verticalLayoutWidget_2"> + <layout class="QVBoxLayout" name="verticalLayout_2"/> + </widget> + </widget> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>1024</width> + <height>22</height> + </rect> + </property> + </widget> + <widget class="QStatusBar" name="statusbar"/> + <widget class="QToolBar" name="toolBar"> + <property name="windowTitle"> + <string>toolBar</string> + </property> + <attribute name="toolBarArea"> + <enum>TopToolBarArea</enum> + </attribute> + <attribute name="toolBarBreak"> + <bool>false</bool> + </attribute> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests_cases/Enlargement/Enlargement.pamhyr b/tests_cases/Enlargement/Enlargement.pamhyr index ae39194e16d126cba23500f15e4cad5347be997e..ee8749c4d284e64a929297cf802ff0263ae738b2 100644 Binary files a/tests_cases/Enlargement/Enlargement.pamhyr and b/tests_cases/Enlargement/Enlargement.pamhyr differ