mirror of https://gitlab.com/pamhyr/pamhyr2
refactoring: refacto SL list & edit.
parent
4ce597a2a0
commit
1d45ccb8b8
|
|
@ -50,7 +50,7 @@ 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.SedimentLayers.Window import SedimentLayersWindow
|
||||
from View.SedimentLayers.Window import SedimentLayersWindow
|
||||
# from View.SedimentLayers.Reach.Window import ReachSedimentLayersWindow
|
||||
# from View.SolverParameters.Window import SolverParametersWindow
|
||||
# from View.RunSolver.Window import SelectSolverWindow, SolverLogWindow
|
||||
|
|
|
|||
|
|
@ -5,23 +5,19 @@ import logging
|
|||
from functools import reduce
|
||||
|
||||
from tools import timer
|
||||
from View.Plot.APlot import APlot
|
||||
|
||||
from PyQt5.QtCore import (
|
||||
QCoreApplication
|
||||
)
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
class Plot(APlot):
|
||||
def __init__(self, canvas=None, data=None, toolbar=None,
|
||||
display_current=True):
|
||||
class Plot(PamhyrPlot):
|
||||
def __init__(self, canvas=None, trad=None, data=None, toolbar=None,
|
||||
display_current=True, parent=None):
|
||||
super(Plot, self).__init__(
|
||||
canvas=canvas,
|
||||
data=data,
|
||||
toolbar=toolbar
|
||||
canvas = canvas,
|
||||
trad = trad,
|
||||
data = data,
|
||||
toolbar = toolbar,
|
||||
parent = parent
|
||||
)
|
||||
|
||||
self._display_current = display_current
|
||||
|
|
@ -34,13 +30,9 @@ class Plot(APlot):
|
|||
self.canvas.axes.cla()
|
||||
self.canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
|
||||
|
||||
# self.canvas.axes.set_xlabel(
|
||||
# _translate("MainWindow_reach", "X (m)"),
|
||||
# color='green', fontsize=12
|
||||
# )
|
||||
self.canvas.axes.axes.get_xaxis().set_visible(False)
|
||||
self.canvas.axes.set_ylabel(
|
||||
_translate("MainWindow_reach", "Height (m)"),
|
||||
self._trad["height"],
|
||||
color='green', fontsize=12
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -15,32 +15,14 @@ from PyQt5.QtWidgets import (
|
|||
QComboBox,
|
||||
)
|
||||
|
||||
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||
|
||||
from View.SedimentLayers.Edit.UndoCommand import *
|
||||
from View.SedimentLayers.Edit.translate import *
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
||||
class TableModel(QAbstractTableModel):
|
||||
def __init__(self, study=None, sl=None, undo=None):
|
||||
super(QAbstractTableModel, self).__init__()
|
||||
self._headers = list(table_headers.keys())
|
||||
self._study = study
|
||||
self._undo = undo
|
||||
self._sl = sl
|
||||
|
||||
def flags(self, index):
|
||||
options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
|
||||
options |= Qt.ItemIsEditable
|
||||
|
||||
return options
|
||||
|
||||
def rowCount(self, parent):
|
||||
return len(self._sl)
|
||||
|
||||
def columnCount(self, parent):
|
||||
return len(self._headers)
|
||||
|
||||
class TableModel(PamhyrTableModel):
|
||||
def data(self, index, role):
|
||||
if role != Qt.ItemDataRole.DisplayRole:
|
||||
return QVariant()
|
||||
|
|
@ -49,23 +31,17 @@ class TableModel(QAbstractTableModel):
|
|||
column = index.column()
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._sl.get(row).name
|
||||
return self._data.get(row).name
|
||||
elif self._headers[column] == "type":
|
||||
return self._sl.get(row).type
|
||||
return self._data.get(row).type
|
||||
elif self._headers[column] == "height":
|
||||
return self._sl.get(row).height
|
||||
return self._data.get(row).height
|
||||
elif self._headers[column] == "d50":
|
||||
return self._sl.get(row).d50
|
||||
return self._data.get(row).d50
|
||||
elif self._headers[column] == "sigma":
|
||||
return self._sl.get(row).sigma
|
||||
return self._data.get(row).sigma
|
||||
elif self._headers[column] == "critical_constraint":
|
||||
return self._sl.get(row).critical_constraint
|
||||
|
||||
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 self._data.get(row).critical_constraint
|
||||
|
||||
return QVariant()
|
||||
|
||||
|
|
@ -79,37 +55,37 @@ class TableModel(QAbstractTableModel):
|
|||
if self._headers[column] == "name":
|
||||
self._undo.push(
|
||||
SetNameCommand(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
if self._headers[column] == "type":
|
||||
self._undo.push(
|
||||
SetTypeCommand(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
if self._headers[column] == "height":
|
||||
self._undo.push(
|
||||
SetHeightCommand(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
if self._headers[column] == "d50":
|
||||
self._undo.push(
|
||||
SetD50Command(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
if self._headers[column] == "sigma":
|
||||
self._undo.push(
|
||||
SetSigmaCommand(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
if self._headers[column] == "critical_constraint":
|
||||
self._undo.push(
|
||||
SetCriticalConstraintCommand(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -121,7 +97,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
AddCommand(
|
||||
self._sl, row
|
||||
self._data, row
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -133,7 +109,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
DelCommand(
|
||||
self._sl, rows
|
||||
self._data, rows
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -150,7 +126,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
MoveCommand(
|
||||
self._sl, "up", row
|
||||
self._data, "up", row
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -158,7 +134,7 @@ class TableModel(QAbstractTableModel):
|
|||
self.layoutChanged.emit()
|
||||
|
||||
def move_down(self, row, parent=QModelIndex()):
|
||||
if row + 1 >= len(self._sl):
|
||||
if row + 1 >= len(self._data):
|
||||
return
|
||||
|
||||
target = row
|
||||
|
|
@ -167,7 +143,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
MoveCommand(
|
||||
self._sl, "down", row
|
||||
self._data, "down", row
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -39,13 +39,13 @@ from PyQt5.QtWidgets import (
|
|||
QComboBox, QVBoxLayout, QHeaderView, QTabWidget,
|
||||
)
|
||||
|
||||
from View.Plot.MplCanvas import MplCanvas
|
||||
from View.Plot.PamhyrToolbar import PamhyrPlotToolbar
|
||||
from View.Tools.Plot.PamhyrCanvas import MplCanvas
|
||||
from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar
|
||||
|
||||
from View.SedimentLayers.Edit.UndoCommand import *
|
||||
from View.SedimentLayers.Edit.Table import *
|
||||
from View.SedimentLayers.Edit.Plot import Plot
|
||||
from View.SedimentLayers.Edit.translate import table_headers, retranslate
|
||||
from View.SedimentLayers.Edit.translate import SedimentEditTranslate
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
|
@ -71,7 +71,8 @@ class EditSedimentLayersWindow(PamhyrWindow):
|
|||
title = name,
|
||||
study = study,
|
||||
config = config,
|
||||
parent=parent
|
||||
trad = SedimentEditTranslate(),
|
||||
parent = parent
|
||||
)
|
||||
|
||||
self.setup_table()
|
||||
|
|
@ -79,17 +80,17 @@ class EditSedimentLayersWindow(PamhyrWindow):
|
|||
self.setup_connections()
|
||||
|
||||
def setup_table(self):
|
||||
retranslate()
|
||||
self._table = {}
|
||||
|
||||
table_headers = self._trad.get_dict("table_headers")
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._table = TableModel(
|
||||
study = self._study,
|
||||
sl = self._sl,
|
||||
table_view = table,
|
||||
table_headers = table_headers,
|
||||
editable_headers = list(table_headers),
|
||||
data = self._sl,
|
||||
trad = self._trad,
|
||||
undo = self._undo_stack,
|
||||
)
|
||||
table.setModel(self._table)
|
||||
|
||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
table.setAlternatingRowColors(True)
|
||||
|
|
@ -110,6 +111,7 @@ class EditSedimentLayersWindow(PamhyrWindow):
|
|||
canvas = self.canvas,
|
||||
data = self._sl,
|
||||
toolbar = self.toolbar,
|
||||
trad = self._trad,
|
||||
display_current = False
|
||||
)
|
||||
self.plot.draw()
|
||||
|
|
|
|||
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
from PyQt5.QtCore import QCoreApplication
|
||||
|
||||
from View.SedimentLayers.translate import SedimentTranslate
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
table_headers = {
|
||||
"name": _translate("SedimentLayers", "Name"),
|
||||
# "type": _translate("SedimentLayers", "Type"),
|
||||
"height": _translate("SedimentLayers", "Height"),
|
||||
"d50": _translate("SedimentLayers", "D50"),
|
||||
"sigma": _translate("SedimentLayers", "Sigma"),
|
||||
"critical_constraint": _translate("SedimentLayers", "Critical constraint"),
|
||||
}
|
||||
class SedimentEditTranslate(SedimentTranslate):
|
||||
def __init__(self):
|
||||
super(SedimentEditTranslate, self).__init__()
|
||||
|
||||
def retranslate():
|
||||
table_headers["name"] = _translate("SedimentLayers", "Name")
|
||||
# table_headers["type"] = _translate("SedimentLayers", "Type")
|
||||
table_headers["height"] = _translate("SedimentLayers", "Height")
|
||||
table_headers["d50"] = _translate("SedimentLayers", "D50")
|
||||
table_headers["sigma"] = _translate("SedimentLayers", "Sigma")
|
||||
table_headers["critical_constraint"] = _translate("SedimentLayers", "Critical constraint")
|
||||
self._dict["height"] = _translate("SedimentLayers", "Height (m)"),
|
||||
|
||||
self._sub_dict["table_headers"] = {
|
||||
"name": _translate("SedimentLayers", "Name"),
|
||||
# "type": _translate("SedimentLayers", "Type"),
|
||||
"height": _translate("SedimentLayers", "Height"),
|
||||
"d50": _translate("SedimentLayers", "D50"),
|
||||
"sigma": _translate("SedimentLayers", "Sigma"),
|
||||
"critical_constraint": _translate("SedimentLayers", "Critical constraint"),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,32 +15,12 @@ from PyQt5.QtWidgets import (
|
|||
QComboBox,
|
||||
)
|
||||
|
||||
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||
|
||||
from View.SedimentLayers.UndoCommand import *
|
||||
from View.SedimentLayers.translate import *
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
||||
class TableModel(QAbstractTableModel):
|
||||
def __init__(self, study=None, undo=None):
|
||||
super(QAbstractTableModel, self).__init__()
|
||||
self._headers = list(table_headers.keys())
|
||||
self._study = study
|
||||
self._undo = undo
|
||||
self._sl = self._study.river.sediment_layers
|
||||
|
||||
def flags(self, index):
|
||||
options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
|
||||
options |= Qt.ItemIsEditable
|
||||
|
||||
return options
|
||||
|
||||
def rowCount(self, parent):
|
||||
return len(self._sl)
|
||||
|
||||
def columnCount(self, parent):
|
||||
return len(self._headers)
|
||||
|
||||
class TableModel(PamhyrTableModel):
|
||||
def data(self, index, role):
|
||||
if role != Qt.ItemDataRole.DisplayRole:
|
||||
return QVariant()
|
||||
|
|
@ -49,15 +29,9 @@ class TableModel(QAbstractTableModel):
|
|||
column = index.column()
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._sl.get(row).name
|
||||
return self._data.get(row).name
|
||||
elif self._headers[column] == "comment":
|
||||
return self._sl.get(row).comment
|
||||
|
||||
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 self._data.get(row).comment
|
||||
|
||||
return QVariant()
|
||||
|
||||
|
|
@ -71,13 +45,13 @@ class TableModel(QAbstractTableModel):
|
|||
if self._headers[column] == "name":
|
||||
self._undo.push(
|
||||
SetNameCommand(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
if self._headers[column] == "comment":
|
||||
self._undo.push(
|
||||
SetCommentCommand(
|
||||
self._sl, row, value
|
||||
self._data, row, value
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -89,7 +63,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
AddCommand(
|
||||
self._sl, row
|
||||
self._data, row
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -101,7 +75,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
DelCommand(
|
||||
self._sl, rows
|
||||
self._data, rows
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -118,7 +92,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo_stack.push(
|
||||
MoveCommand(
|
||||
self._sl, "up", row
|
||||
self._data, "up", row
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -126,7 +100,7 @@ class TableModel(QAbstractTableModel):
|
|||
self.layoutChanged.emit()
|
||||
|
||||
def move_down(self, index, parent=QModelIndex()):
|
||||
if row > len(self._sl):
|
||||
if row > len(self._data):
|
||||
return
|
||||
|
||||
target = row
|
||||
|
|
@ -135,7 +109,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo_stack.push(
|
||||
MoveCommand(
|
||||
self._sl, "down", row
|
||||
self._data, "down", row
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -44,13 +44,11 @@ from View.SedimentLayers.Table import *
|
|||
|
||||
from View.SedimentLayers.Edit.Plot import Plot
|
||||
|
||||
from View.Plot.MplCanvas import MplCanvas
|
||||
from View.SedimentLayers.translate import table_headers, retranslate
|
||||
from View.Tools.Plot.PamhyrCanvas import MplCanvas
|
||||
from View.SedimentLayers.translate import SedimentTranslate
|
||||
|
||||
from View.SedimentLayers.Edit.Window import EditSedimentLayersWindow
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
class SedimentLayersWindow(PamhyrWindow):
|
||||
|
|
@ -68,34 +66,31 @@ class SedimentLayersWindow(PamhyrWindow):
|
|||
title = name,
|
||||
study = study,
|
||||
config = config,
|
||||
trad = SedimentTranslate(),
|
||||
parent=parent
|
||||
)
|
||||
|
||||
self.setup_table()
|
||||
self.setup_graph()
|
||||
self.setup_plot()
|
||||
self.setup_connections()
|
||||
|
||||
def setup_title(self, title):
|
||||
self._title = (
|
||||
title + " - " + self._study.name
|
||||
)
|
||||
|
||||
def setup_table(self):
|
||||
retranslate()
|
||||
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._table = TableModel(
|
||||
study = self._study,
|
||||
table_view = table,
|
||||
table_headers = self._trad.get_dict("table_headers"),
|
||||
editable_headers = ["name", "comment"],
|
||||
data = self._study.river.sediment_layers,
|
||||
trad = self._trad,
|
||||
undo = self._undo_stack,
|
||||
)
|
||||
table.setModel(self._table)
|
||||
|
||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
table.setAlternatingRowColors(True)
|
||||
|
||||
def setup_graph(self):
|
||||
self.canvas = MplCanvas(width=5, height=4, dpi=100)
|
||||
def setup_plot(self):
|
||||
self.canvas = MplCanvas(width=2, height=4, dpi=100)
|
||||
self.canvas.setObjectName("canvas")
|
||||
self.plot_layout = self.find(QVBoxLayout, "verticalLayout")
|
||||
self.plot_layout.addWidget(self.canvas)
|
||||
|
|
@ -122,6 +117,7 @@ class SedimentLayersWindow(PamhyrWindow):
|
|||
self.plot = Plot(
|
||||
canvas = self.canvas,
|
||||
data = self._sediment_layers.get(rows[0]),
|
||||
trad = self._trad,
|
||||
toolbar = None,
|
||||
display_current = False
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2,13 +2,15 @@
|
|||
|
||||
from PyQt5.QtCore import QCoreApplication
|
||||
|
||||
from View.Tools.PamhyrTranslate import PamhyrTranslate
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
table_headers = {
|
||||
"name": _translate("SedimentLayers", "Name"),
|
||||
"comment": _translate("SedimentLayers", "Comment"),
|
||||
}
|
||||
class SedimentTranslate(PamhyrTranslate):
|
||||
def __init__(self):
|
||||
super(SedimentTranslate, self).__init__()
|
||||
|
||||
def retranslate():
|
||||
table_headers["name"] = _translate("SedimentLayers", "Name")
|
||||
table_headers["comment"] = _translate("SedimentLayers", "Comment")
|
||||
self._sub_dict["table_headers"] = {
|
||||
"name": _translate("SedimentLayers", "Name"),
|
||||
"comment": _translate("SedimentLayers", "Comment"),
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue