mirror of https://gitlab.com/pamhyr/pamhyr2
refactoring: refacto frictions & stricklers.
parent
b430cbb62b
commit
4ce597a2a0
|
|
@ -17,7 +17,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from tools import timer, flatten
|
from tools import timer, flatten
|
||||||
from View.Plot.APlot import APlot
|
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||||
|
|
||||||
from PyQt5.QtCore import (
|
from PyQt5.QtCore import (
|
||||||
QCoreApplication
|
QCoreApplication
|
||||||
|
|
@ -25,14 +25,7 @@ from PyQt5.QtCore import (
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
class PlotStricklers(APlot):
|
class PlotStricklers(PamhyrPlot):
|
||||||
def __init__(self, canvas=None, data=None, toolbar=None):
|
|
||||||
super(PlotStricklers, self).__init__(
|
|
||||||
canvas=canvas,
|
|
||||||
data=data,
|
|
||||||
toolbar=toolbar
|
|
||||||
)
|
|
||||||
|
|
||||||
def draw_frictions(self, frictions, color="r"):
|
def draw_frictions(self, frictions, color="r"):
|
||||||
lst = frictions
|
lst = frictions
|
||||||
lst.sort(key = lambda s: s.begin_kp)
|
lst.sort(key = lambda s: s.begin_kp)
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ from View.Frictions.UndoCommand import (
|
||||||
MoveCommand, PasteCommand, DuplicateCommand,
|
MoveCommand, PasteCommand, DuplicateCommand,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||||
|
|
||||||
from View.Frictions.translate import *
|
from View.Frictions.translate import *
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
@ -93,26 +95,10 @@ class ComboBoxDelegate(QItemDelegate):
|
||||||
self.commitData.emit(self.sender())
|
self.commitData.emit(self.sender())
|
||||||
|
|
||||||
|
|
||||||
class TableModel(QAbstractTableModel):
|
class TableModel(PamhyrTableModel):
|
||||||
def __init__(self, data=None, study=None, undo=None):
|
def _setup_lst(self):
|
||||||
super(QAbstractTableModel, self).__init__()
|
self._lst = self._data.frictions
|
||||||
self._headers = list(table_headers.keys())
|
self._study = self._opt_data
|
||||||
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)
|
|
||||||
|
|
||||||
def data(self, index, role):
|
def data(self, index, role):
|
||||||
if role != Qt.ItemDataRole.DisplayRole:
|
if role != Qt.ItemDataRole.DisplayRole:
|
||||||
|
|
@ -122,30 +108,24 @@ class TableModel(QAbstractTableModel):
|
||||||
column = index.column()
|
column = index.column()
|
||||||
|
|
||||||
if self._headers[column] == "name":
|
if self._headers[column] == "name":
|
||||||
return self._frictions.get(row).name
|
return self._lst.get(row).name
|
||||||
elif self._headers[column] == "begin_kp":
|
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":
|
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":
|
elif self._headers[column] == "begin_strickler":
|
||||||
value = self._frictions.get(row).begin_strickler
|
value = self._lst.get(row).begin_strickler
|
||||||
if value == None:
|
if value == None:
|
||||||
return _translate("Frictions", "Not defined")
|
return _translate("Frictions", "Not defined")
|
||||||
return str(value)
|
return str(value)
|
||||||
elif self._headers[column] == "end_strickler":
|
elif self._headers[column] == "end_strickler":
|
||||||
value = self._frictions.get(row).end_strickler
|
value = self._lst.get(row).end_strickler
|
||||||
if value == None:
|
if value == None:
|
||||||
return _translate("Frictions", "Not defined")
|
return _translate("Frictions", "Not defined")
|
||||||
return str(value)
|
return str(value)
|
||||||
|
|
||||||
return QVariant()
|
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):
|
def setData(self, index, value, role=Qt.EditRole):
|
||||||
if not index.isValid() or role != Qt.EditRole:
|
if not index.isValid() or role != Qt.EditRole:
|
||||||
return False
|
return False
|
||||||
|
|
@ -157,31 +137,31 @@ class TableModel(QAbstractTableModel):
|
||||||
if self._headers[column] == "name":
|
if self._headers[column] == "name":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SetNameCommand(
|
SetNameCommand(
|
||||||
self._frictions, row, value
|
self._lst, row, value
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif self._headers[column] == "begin_kp":
|
elif self._headers[column] == "begin_kp":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SetBeginCommand(
|
SetBeginCommand(
|
||||||
self._frictions, row, value
|
self._lst, row, value
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif self._headers[column] == "end_kp":
|
elif self._headers[column] == "end_kp":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SetEndCommand(
|
SetEndCommand(
|
||||||
self._frictions, row, value
|
self._lst, row, value
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif self._headers[column] == "begin_strickler":
|
elif self._headers[column] == "begin_strickler":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SetBeginStricklerCommand(
|
SetBeginStricklerCommand(
|
||||||
self._frictions, row, self._study.river.strickler(value)
|
self._lst, row, self._study.river.strickler(value)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif self._headers[column] == "end_strickler":
|
elif self._headers[column] == "end_strickler":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SetEndStricklerCommand(
|
SetEndStricklerCommand(
|
||||||
self._frictions, row, self._study.river.strickler(value)
|
self._lst, row, self._study.river.strickler(value)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
@ -196,7 +176,7 @@ class TableModel(QAbstractTableModel):
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
AddCommand(
|
AddCommand(
|
||||||
self._frictions, row, self._data
|
self._lst, row, self._data
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -208,7 +188,7 @@ class TableModel(QAbstractTableModel):
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
DelCommand(
|
DelCommand(
|
||||||
self._frictions, rows
|
self._lst, rows
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -220,7 +200,7 @@ class TableModel(QAbstractTableModel):
|
||||||
|
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
SortCommand(
|
SortCommand(
|
||||||
self._frictions, False
|
self._lst, False
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -237,7 +217,7 @@ class TableModel(QAbstractTableModel):
|
||||||
|
|
||||||
self._undo_stack.push(
|
self._undo_stack.push(
|
||||||
MoveCommand(
|
MoveCommand(
|
||||||
self._frictions, "up", row
|
self._lst, "up", row
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -245,7 +225,7 @@ class TableModel(QAbstractTableModel):
|
||||||
self.layoutChanged.emit()
|
self.layoutChanged.emit()
|
||||||
|
|
||||||
def move_down(self, index, parent=QModelIndex()):
|
def move_down(self, index, parent=QModelIndex()):
|
||||||
if row > len(self._frictions):
|
if row > len(self._lst):
|
||||||
return
|
return
|
||||||
|
|
||||||
target = row
|
target = row
|
||||||
|
|
@ -254,7 +234,7 @@ class TableModel(QAbstractTableModel):
|
||||||
|
|
||||||
self._undo_stack.push(
|
self._undo_stack.push(
|
||||||
MoveCommand(
|
MoveCommand(
|
||||||
self._frictions, "down", row
|
self._lst, "down", row
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,15 +47,13 @@ from View.Frictions.Table import (
|
||||||
TableModel, ComboBoxDelegate
|
TableModel, ComboBoxDelegate
|
||||||
)
|
)
|
||||||
|
|
||||||
from View.Plot.MplCanvas import MplCanvas
|
from View.Tools.Plot.PamhyrCanvas import MplCanvas
|
||||||
from View.Geometry.PlotKPZ import PlotKPZ
|
from View.Geometry.PlotKPZ import PlotKPZ
|
||||||
from View.Frictions.PlotStricklers import PlotStricklers
|
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
|
from View.Stricklers.Window import StricklersWindow
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
class FrictionsWindow(PamhyrWindow):
|
class FrictionsWindow(PamhyrWindow):
|
||||||
|
|
@ -80,6 +78,7 @@ class FrictionsWindow(PamhyrWindow):
|
||||||
title = name,
|
title = name,
|
||||||
study = study,
|
study = study,
|
||||||
config = config,
|
config = config,
|
||||||
|
trad = FrictionsTranslate(),
|
||||||
parent = parent
|
parent = parent
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -89,17 +88,8 @@ class FrictionsWindow(PamhyrWindow):
|
||||||
|
|
||||||
|
|
||||||
def setup_table(self):
|
def setup_table(self):
|
||||||
retranslate()
|
|
||||||
self._table = {}
|
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(
|
self._delegate_stricklers = ComboBoxDelegate(
|
||||||
data = self._reach,
|
data = self._reach,
|
||||||
study = self._study,
|
study = self._study,
|
||||||
|
|
@ -107,13 +97,23 @@ class FrictionsWindow(PamhyrWindow):
|
||||||
parent=self
|
parent=self
|
||||||
)
|
)
|
||||||
|
|
||||||
table.setItemDelegateForColumn(
|
table = self.find(QTableView, f"tableView")
|
||||||
3, self._delegate_stricklers
|
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.setItemDelegateForColumn(
|
table.setModel(self._table)
|
||||||
4, self._delegate_stricklers
|
|
||||||
)
|
|
||||||
|
|
||||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||||
table.setAlternatingRowColors(True)
|
table.setAlternatingRowColors(True)
|
||||||
|
|
|
||||||
|
|
@ -18,21 +18,19 @@
|
||||||
|
|
||||||
from PyQt5.QtCore import QCoreApplication
|
from PyQt5.QtCore import QCoreApplication
|
||||||
|
|
||||||
|
from View.Tools.PamhyrTranslate import PamhyrTranslate
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
table_headers = {
|
class FrictionsTranslate(PamhyrTranslate):
|
||||||
|
def __init__(self):
|
||||||
|
super(FrictionsTranslate, self).__init__()
|
||||||
|
|
||||||
|
self._sub_dict["table_headers"] = {
|
||||||
"name": _translate("Frictions", "Name"),
|
"name": _translate("Frictions", "Name"),
|
||||||
# "edge": _translate("Frictions", "Reach"),
|
# "edge": _translate("Frictions", "Reach"),
|
||||||
"begin_kp": _translate("Frictions", "Begin kp (m)"),
|
"begin_kp": _translate("Frictions", "Begin kp (m)"),
|
||||||
"end_kp": _translate("Frictions", "End kp (m)"),
|
"end_kp": _translate("Frictions", "End kp (m)"),
|
||||||
"begin_strickler": _translate("Frictions", "Begin strickler"),
|
"begin_strickler": _translate("Frictions", "Begin strickler"),
|
||||||
"end_strickler": _translate("Frictions", "End strickler"),
|
"end_strickler": _translate("Frictions", "End strickler"),
|
||||||
}
|
}
|
||||||
|
|
||||||
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")
|
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,8 @@ from View.Geometry.Window import GeometryWindow
|
||||||
from View.BoundaryCondition.Window import BoundaryConditionWindow
|
from View.BoundaryCondition.Window import BoundaryConditionWindow
|
||||||
from View.LateralContribution.Window import LateralContributionWindow
|
from View.LateralContribution.Window import LateralContributionWindow
|
||||||
from View.InitialConditions.Window import InitialConditionsWindow
|
from View.InitialConditions.Window import InitialConditionsWindow
|
||||||
# from View.Stricklers.Window import StricklersWindow
|
from View.Stricklers.Window import StricklersWindow
|
||||||
# from View.Frictions.Window import FrictionsWindow
|
from View.Frictions.Window import FrictionsWindow
|
||||||
# from View.SedimentLayers.Window import SedimentLayersWindow
|
# from View.SedimentLayers.Window import SedimentLayersWindow
|
||||||
# from View.SedimentLayers.Reach.Window import ReachSedimentLayersWindow
|
# from View.SedimentLayers.Reach.Window import ReachSedimentLayersWindow
|
||||||
# from View.SolverParameters.Window import SolverParametersWindow
|
# 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.UndoCommand import PasteCommand
|
||||||
from View.Stricklers.Table import TableModel
|
from View.Stricklers.Table import TableModel
|
||||||
from View.Stricklers.translate import table_headers, retranslate
|
from View.Stricklers.translate import StricklersTranslate
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
|
@ -60,6 +60,7 @@ class StricklersWindow(PamhyrWindow):
|
||||||
title = name,
|
title = name,
|
||||||
study = study,
|
study = study,
|
||||||
config = config,
|
config = config,
|
||||||
|
trad = StricklersTranslate(),
|
||||||
parent = parent
|
parent = parent
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -67,7 +68,6 @@ class StricklersWindow(PamhyrWindow):
|
||||||
self.setup_connections()
|
self.setup_connections()
|
||||||
|
|
||||||
def setup_table(self):
|
def setup_table(self):
|
||||||
retranslate()
|
|
||||||
self._table = {}
|
self._table = {}
|
||||||
|
|
||||||
for t in ["app", "study"]:
|
for t in ["app", "study"]:
|
||||||
|
|
@ -79,7 +79,7 @@ class StricklersWindow(PamhyrWindow):
|
||||||
|
|
||||||
self._table[t] = TableModel(
|
self._table[t] = TableModel(
|
||||||
table_view = table,
|
table_view = table,
|
||||||
table_headers = table_headers,
|
table_headers = self._trad.get_dict("table_headers"),
|
||||||
editable_headers = ["name", "comment", "minor", "medium"],
|
editable_headers = ["name", "comment", "minor", "medium"],
|
||||||
data = data,
|
data = data,
|
||||||
undo = self._undo_stack,
|
undo = self._undo_stack,
|
||||||
|
|
|
||||||
|
|
@ -18,21 +18,18 @@
|
||||||
|
|
||||||
from PyQt5.QtCore import QCoreApplication
|
from PyQt5.QtCore import QCoreApplication
|
||||||
|
|
||||||
from Model.LateralContribution.LateralContributionTypes import (
|
from View.Tools.PamhyrTranslate import PamhyrTranslate
|
||||||
NotDefined, LateralContrib, Rain, Evaporation,
|
|
||||||
)
|
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
table_headers = {
|
|
||||||
|
class StricklersTranslate(PamhyrTranslate):
|
||||||
|
def __init__(self):
|
||||||
|
super(StricklersTranslate, self).__init__()
|
||||||
|
|
||||||
|
self._sub_dict["table_headers"] = {
|
||||||
"name": _translate("LateralContribution", "Name"),
|
"name": _translate("LateralContribution", "Name"),
|
||||||
"minor": _translate("LateralContribution", "Minor bed"),
|
"minor": _translate("LateralContribution", "Minor bed"),
|
||||||
"medium": _translate("LateralContribution", "Medium bed"),
|
"medium": _translate("LateralContribution", "Medium bed"),
|
||||||
"comment": _translate("LateralContribution", "Comment"),
|
"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")
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue