Commit 4ce597a2 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

refactoring: refacto frictions & stricklers.

Showing with 72 additions and 104 deletions
+72 -104
......@@ -17,7 +17,7 @@
# -*- coding: utf-8 -*-
from tools import timer, flatten
from View.Plot.APlot import APlot
from View.Tools.PamhyrPlot import PamhyrPlot
from PyQt5.QtCore import (
QCoreApplication
......@@ -25,14 +25,7 @@ from PyQt5.QtCore import (
_translate = QCoreApplication.translate
class PlotStricklers(APlot):
def __init__(self, canvas=None, data=None, toolbar=None):
super(PlotStricklers, self).__init__(
canvas=canvas,
data=data,
toolbar=toolbar
)
class PlotStricklers(PamhyrPlot):
def draw_frictions(self, frictions, color="r"):
lst = frictions
lst.sort(key = lambda s: s.begin_kp)
......
......@@ -41,6 +41,8 @@ from View.Frictions.UndoCommand import (
MoveCommand, PasteCommand, DuplicateCommand,
)
from View.Tools.PamhyrTable import PamhyrTableModel
from View.Frictions.translate import *
logger = logging.getLogger()
......@@ -93,26 +95,10 @@ class ComboBoxDelegate(QItemDelegate):
self.commitData.emit(self.sender())
class TableModel(QAbstractTableModel):
def __init__(self, data=None, study=None, undo=None):
super(QAbstractTableModel, self).__init__()
self._headers = list(table_headers.keys())
self._data = data
self._study = study
self._undo = undo
self._frictions = self._data.frictions
def flags(self, index):
options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
options |= Qt.ItemIsEditable
return options
def rowCount(self, parent):
return len(self._frictions)
def columnCount(self, parent):
return len(self._headers)
class TableModel(PamhyrTableModel):
def _setup_lst(self):
self._lst = self._data.frictions
self._study = self._opt_data
def data(self, index, role):
if role != Qt.ItemDataRole.DisplayRole:
......@@ -122,30 +108,24 @@ class TableModel(QAbstractTableModel):
column = index.column()
if self._headers[column] == "name":
return self._frictions.get(row).name
return self._lst.get(row).name
elif self._headers[column] == "begin_kp":
return self._frictions.get(row).begin_kp
return self._lst.get(row).begin_kp
elif self._headers[column] == "end_kp":
return self._frictions.get(row).end_kp
return self._lst.get(row).end_kp
elif self._headers[column] == "begin_strickler":
value = self._frictions.get(row).begin_strickler
value = self._lst.get(row).begin_strickler
if value == None:
return _translate("Frictions", "Not defined")
return str(value)
elif self._headers[column] == "end_strickler":
value = self._frictions.get(row).end_strickler
value = self._lst.get(row).end_strickler
if value == None:
return _translate("Frictions", "Not defined")
return str(value)
return QVariant()
def headerData(self, friction, orientation, role):
if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal:
return table_headers[self._headers[friction]]
return QVariant()
def setData(self, index, value, role=Qt.EditRole):
if not index.isValid() or role != Qt.EditRole:
return False
......@@ -157,31 +137,31 @@ class TableModel(QAbstractTableModel):
if self._headers[column] == "name":
self._undo.push(
SetNameCommand(
self._frictions, row, value
self._lst, row, value
)
)
elif self._headers[column] == "begin_kp":
self._undo.push(
SetBeginCommand(
self._frictions, row, value
self._lst, row, value
)
)
elif self._headers[column] == "end_kp":
self._undo.push(
SetEndCommand(
self._frictions, row, value
self._lst, row, value
)
)
elif self._headers[column] == "begin_strickler":
self._undo.push(
SetBeginStricklerCommand(
self._frictions, row, self._study.river.strickler(value)
self._lst, row, self._study.river.strickler(value)
)
)
elif self._headers[column] == "end_strickler":
self._undo.push(
SetEndStricklerCommand(
self._frictions, row, self._study.river.strickler(value)
self._lst, row, self._study.river.strickler(value)
)
)
except Exception as e:
......@@ -196,7 +176,7 @@ class TableModel(QAbstractTableModel):
self._undo.push(
AddCommand(
self._frictions, row, self._data
self._lst, row, self._data
)
)
......@@ -208,7 +188,7 @@ class TableModel(QAbstractTableModel):
self._undo.push(
DelCommand(
self._frictions, rows
self._lst, rows
)
)
......@@ -220,7 +200,7 @@ class TableModel(QAbstractTableModel):
self._undo.push(
SortCommand(
self._frictions, False
self._lst, False
)
)
......@@ -237,7 +217,7 @@ class TableModel(QAbstractTableModel):
self._undo_stack.push(
MoveCommand(
self._frictions, "up", row
self._lst, "up", row
)
)
......@@ -245,7 +225,7 @@ class TableModel(QAbstractTableModel):
self.layoutChanged.emit()
def move_down(self, index, parent=QModelIndex()):
if row > len(self._frictions):
if row > len(self._lst):
return
target = row
......@@ -254,7 +234,7 @@ class TableModel(QAbstractTableModel):
self._undo_stack.push(
MoveCommand(
self._frictions, "down", row
self._lst, "down", row
)
)
......
......@@ -47,15 +47,13 @@ from View.Frictions.Table import (
TableModel, ComboBoxDelegate
)
from View.Plot.MplCanvas import MplCanvas
from View.Tools.Plot.PamhyrCanvas import MplCanvas
from View.Geometry.PlotKPZ import PlotKPZ
from View.Frictions.PlotStricklers import PlotStricklers
from View.Frictions.translate import table_headers, retranslate
from View.Frictions.translate import FrictionsTranslate
from View.Stricklers.Window import StricklersWindow
_translate = QCoreApplication.translate
logger = logging.getLogger()
class FrictionsWindow(PamhyrWindow):
......@@ -80,6 +78,7 @@ class FrictionsWindow(PamhyrWindow):
title = name,
study = study,
config = config,
trad = FrictionsTranslate(),
parent = parent
)
......@@ -89,17 +88,8 @@ class FrictionsWindow(PamhyrWindow):
def setup_table(self):
retranslate()
self._table = {}
table = self.find(QTableView, f"tableView")
self._table = TableModel(
data = self._reach,
study = self._study,
undo = self._undo_stack,
)
table.setModel(self._table)
self._delegate_stricklers = ComboBoxDelegate(
data = self._reach,
study = self._study,
......@@ -107,13 +97,23 @@ class FrictionsWindow(PamhyrWindow):
parent=self
)
table.setItemDelegateForColumn(
3, self._delegate_stricklers
)
table.setItemDelegateForColumn(
4, self._delegate_stricklers
table = self.find(QTableView, f"tableView")
self._table = TableModel(
table_view = table,
table_headers = self._trad.get_dict("table_headers"),
editable_headers = [
"name", "begin_kp", "end_kp",
"begin_strickler", "end_strickler"
],
delegates = {
"begin_strickler": self._delegate_stricklers,
"end_strickler": self._delegate_stricklers,
},
data = self._reach,
undo = self._undo_stack,
opt_data = self._study
)
table.setModel(self._table)
table.setSelectionBehavior(QAbstractItemView.SelectRows)
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
table.setAlternatingRowColors(True)
......
......@@ -18,21 +18,19 @@
from PyQt5.QtCore import QCoreApplication
from View.Tools.PamhyrTranslate import PamhyrTranslate
_translate = QCoreApplication.translate
table_headers = {
"name": _translate("Frictions", "Name"),
# "edge": _translate("Frictions", "Reach"),
"begin_kp": _translate("Frictions", "Begin kp (m)"),
"end_kp": _translate("Frictions", "End kp (m)"),
"begin_strickler": _translate("Frictions", "Begin strickler"),
"end_strickler": _translate("Frictions", "End strickler"),
}
class FrictionsTranslate(PamhyrTranslate):
def __init__(self):
super(FrictionsTranslate, self).__init__()
def retranslate():
table_headers["name"] = _translate("Frictions", "Name")
# table_headers["edge"] = _translate("Frictions", "Reach")
table_headers["begin_kp"] = _translate("Frictions", "Begin kp (m)")
table_headers["end_kp"] = _translate("Frictions", "End kp (m)")
table_headers["begin_strickler"] = _translate("Frictions", "Begin strickler")
table_headers["end_strickler"] = _translate("Frictions", "End strickler")
self._sub_dict["table_headers"] = {
"name": _translate("Frictions", "Name"),
# "edge": _translate("Frictions", "Reach"),
"begin_kp": _translate("Frictions", "Begin kp (m)"),
"end_kp": _translate("Frictions", "End kp (m)"),
"begin_strickler": _translate("Frictions", "Begin strickler"),
"end_strickler": _translate("Frictions", "End strickler"),
}
......@@ -48,8 +48,8 @@ from View.Geometry.Window import GeometryWindow
from View.BoundaryCondition.Window import BoundaryConditionWindow
from View.LateralContribution.Window import LateralContributionWindow
from View.InitialConditions.Window import InitialConditionsWindow
# from View.Stricklers.Window import StricklersWindow
# from View.Frictions.Window import FrictionsWindow
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
......
......@@ -43,7 +43,7 @@ from Model.Stricklers.Stricklers import Stricklers
from View.Stricklers.UndoCommand import PasteCommand
from View.Stricklers.Table import TableModel
from View.Stricklers.translate import table_headers, retranslate
from View.Stricklers.translate import StricklersTranslate
_translate = QCoreApplication.translate
......@@ -60,6 +60,7 @@ class StricklersWindow(PamhyrWindow):
title = name,
study = study,
config = config,
trad = StricklersTranslate(),
parent = parent
)
......@@ -67,7 +68,6 @@ class StricklersWindow(PamhyrWindow):
self.setup_connections()
def setup_table(self):
retranslate()
self._table = {}
for t in ["app", "study"]:
......@@ -79,7 +79,7 @@ class StricklersWindow(PamhyrWindow):
self._table[t] = TableModel(
table_view = table,
table_headers = table_headers,
table_headers = self._trad.get_dict("table_headers"),
editable_headers = ["name", "comment", "minor", "medium"],
data = data,
undo = self._undo_stack,
......
......@@ -18,21 +18,18 @@
from PyQt5.QtCore import QCoreApplication
from Model.LateralContribution.LateralContributionTypes import (
NotDefined, LateralContrib, Rain, Evaporation,
)
from View.Tools.PamhyrTranslate import PamhyrTranslate
_translate = QCoreApplication.translate
table_headers = {
"name": _translate("LateralContribution", "Name"),
"minor": _translate("LateralContribution", "Minor bed"),
"medium": _translate("LateralContribution", "Medium bed"),
"comment": _translate("LateralContribution", "Comment"),
}
def retranslate():
table_headers["name"] = _translate("LateralContribution", "Name")
table_headers["minor"] = _translate("LateralContribution", "Minor bed")
table_headers["medium"] = _translate("LateralContribution", "Medium bed")
table_headers["comment"] = _translate("LateralContribution", "Comment")
class StricklersTranslate(PamhyrTranslate):
def __init__(self):
super(StricklersTranslate, self).__init__()
self._sub_dict["table_headers"] = {
"name": _translate("LateralContribution", "Name"),
"minor": _translate("LateralContribution", "Minor bed"),
"medium": _translate("LateralContribution", "Medium bed"),
"comment": _translate("LateralContribution", "Comment"),
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment