mirror of https://gitlab.com/pamhyr/pamhyr2
refactoring: refacto SL reach and profile window.
parent
1d45ccb8b8
commit
63d6c114c0
|
|
@ -51,7 +51,7 @@ 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.Reach.Window import ReachSedimentLayersWindow
|
||||
from View.SedimentLayers.Reach.Window import ReachSedimentLayersWindow
|
||||
# from View.SolverParameters.Window import SolverParametersWindow
|
||||
# from View.RunSolver.Window import SelectSolverWindow, SolverLogWindow
|
||||
# from View.CheckList.Window import CheckListWindow
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import logging
|
|||
from functools import reduce
|
||||
|
||||
from tools import timer
|
||||
from View.Plot.APlot import APlot
|
||||
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||
|
||||
from PyQt5.QtCore import (
|
||||
QCoreApplication
|
||||
|
|
@ -15,13 +15,16 @@ _translate = QCoreApplication.translate
|
|||
|
||||
logger = logging.getLogger()
|
||||
|
||||
class Plot(APlot):
|
||||
def __init__(self, canvas=None, data=None, toolbar=None,
|
||||
display_current=True):
|
||||
class Plot(PamhyrPlot):
|
||||
def __init__(self, data=None, display_current=True,
|
||||
canvas=None, trad=None, toolbar=None,
|
||||
parent=None):
|
||||
super(Plot, self).__init__(
|
||||
canvas = canvas,
|
||||
trad = trad,
|
||||
data = data,
|
||||
toolbar=toolbar
|
||||
toolbar = toolbar,
|
||||
parent = parent
|
||||
)
|
||||
|
||||
self._display_current = display_current
|
||||
|
|
@ -41,11 +44,11 @@ class Plot(APlot):
|
|||
return
|
||||
|
||||
self.canvas.axes.set_xlabel(
|
||||
_translate("MainWindow_reach", "Kp (m)"),
|
||||
self._trad["kp"],
|
||||
color='green', fontsize=12
|
||||
)
|
||||
self.canvas.axes.set_ylabel(
|
||||
_translate("MainWindow_reach", "Height (m)"),
|
||||
self._trad["height"],
|
||||
color='green', fontsize=12
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import logging
|
|||
from functools import reduce
|
||||
|
||||
from tools import timer
|
||||
from View.Plot.APlot import APlot
|
||||
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||
|
||||
from PyQt5.QtCore import (
|
||||
QCoreApplication
|
||||
|
|
@ -15,13 +15,16 @@ _translate = QCoreApplication.translate
|
|||
|
||||
logger = logging.getLogger()
|
||||
|
||||
class Plot(APlot):
|
||||
def __init__(self, canvas=None, data=None, toolbar=None,
|
||||
display_current=True):
|
||||
class Plot(PamhyrPlot):
|
||||
def __init__(self, data=None, display_current=True,
|
||||
canvas=None, trad=None, toolbar=None,
|
||||
parent=None):
|
||||
super(Plot, self).__init__(
|
||||
canvas = canvas,
|
||||
trad = trad,
|
||||
data = data,
|
||||
toolbar=toolbar
|
||||
toolbar = toolbar,
|
||||
parent = parent
|
||||
)
|
||||
|
||||
self._display_current = display_current
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ from PyQt5.QtWidgets import (
|
|||
from View.SedimentLayers.Reach.Profile.UndoCommand import *
|
||||
from View.SedimentLayers.Reach.Profile.translate import *
|
||||
|
||||
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
|
@ -67,28 +69,10 @@ class ComboBoxDelegate(QItemDelegate):
|
|||
self.commitData.emit(self.sender())
|
||||
|
||||
|
||||
class TableModel(QAbstractTableModel):
|
||||
def __init__(self, study=None, profile=None, undo=None):
|
||||
super(QAbstractTableModel, self).__init__()
|
||||
self._headers = list(table_headers.keys())
|
||||
self._study = study
|
||||
self._undo = undo
|
||||
self._profile = profile
|
||||
|
||||
def flags(self, index):
|
||||
column = index.column()
|
||||
|
||||
options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
|
||||
if self._headers[column] == "sl":
|
||||
options |= Qt.ItemIsEditable
|
||||
|
||||
return options
|
||||
|
||||
def rowCount(self, parent):
|
||||
return self._profile.number_points
|
||||
|
||||
def columnCount(self, parent):
|
||||
return len(self._headers)
|
||||
class TableModel(PamhyrTableModel):
|
||||
def _setup_lst(self):
|
||||
self._lst = self._data
|
||||
self._study = self._opt_data
|
||||
|
||||
def data(self, index, role):
|
||||
if role != Qt.ItemDataRole.DisplayRole:
|
||||
|
|
@ -98,25 +82,19 @@ class TableModel(QAbstractTableModel):
|
|||
column = index.column()
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._profile.point(row).name
|
||||
return self._data.point(row).name
|
||||
elif self._headers[column] == "sl":
|
||||
value = self._profile.point(row).sl
|
||||
value = self._data.point(row).sl
|
||||
if value == None:
|
||||
text = _translate("SedimentLayers", "Not defined")
|
||||
return text
|
||||
return str(value)
|
||||
elif self._headers[column] == "x":
|
||||
return self._profile.point(row).x
|
||||
return self._data.point(row).x
|
||||
elif self._headers[column] == "y":
|
||||
return self._profile.point(row).y
|
||||
return self._data.point(row).y
|
||||
elif self._headers[column] == "z":
|
||||
return self._profile.point(row).z
|
||||
|
||||
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.point(row).z
|
||||
|
||||
return QVariant()
|
||||
|
||||
|
|
@ -139,7 +117,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
SetSLCommand(
|
||||
self._profile, row, new
|
||||
self._data, row, new
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -27,10 +27,10 @@ from View.SedimentLayers.Reach.Profile.UndoCommand import *
|
|||
from View.SedimentLayers.Reach.Profile.Table import *
|
||||
from View.SedimentLayers.Reach.Profile.Plot import Plot
|
||||
|
||||
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.Reach.Profile.translate import table_headers, retranslate
|
||||
from View.SedimentLayers.Reach.Profile.translate import SedimentProfileTranslate
|
||||
from View.SedimentLayers.Window import SedimentLayersWindow
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
|
@ -52,6 +52,7 @@ class ProfileSedimentLayersWindow(PamhyrWindow):
|
|||
title = name,
|
||||
study = study,
|
||||
config = config,
|
||||
trad = SedimentProfileTranslate(),
|
||||
parent = parent
|
||||
)
|
||||
|
||||
|
|
@ -80,26 +81,25 @@ class ProfileSedimentLayersWindow(PamhyrWindow):
|
|||
)
|
||||
|
||||
def setup_table(self):
|
||||
retranslate()
|
||||
table_headers = self._trad.get_dict("table_headers")
|
||||
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._table = TableModel(
|
||||
study = self._study,
|
||||
profile = self._profile,
|
||||
undo = self._undo_stack,
|
||||
)
|
||||
table.setModel(self._table)
|
||||
|
||||
self._delegate_stricklers = ComboBoxDelegate(
|
||||
self._delegate_sl = ComboBoxDelegate(
|
||||
study = self._study,
|
||||
parent=self
|
||||
)
|
||||
|
||||
table.setItemDelegateForColumn(
|
||||
list(table_headers).index("sl"),
|
||||
self._delegate_stricklers
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._table = TableModel(
|
||||
table_view = table,
|
||||
data = self._profile,
|
||||
opt_data = self._study,
|
||||
table_headers = table_headers,
|
||||
editable_headers = ["sl"],
|
||||
delegates = {"sl": self._delegate_sl},
|
||||
trad = self._trad,
|
||||
undo = self._undo_stack,
|
||||
)
|
||||
|
||||
table.setModel(self._table)
|
||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
table.setAlternatingRowColors(True)
|
||||
|
|
|
|||
|
|
@ -2,19 +2,18 @@
|
|||
|
||||
from PyQt5.QtCore import QCoreApplication
|
||||
|
||||
from View.SedimentLayers.Reach.translate import SedimentReachTranslate
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
table_headers = {
|
||||
class SedimentProfileTranslate(SedimentReachTranslate):
|
||||
def __init__(self):
|
||||
super(SedimentProfileTranslate, self).__init__()
|
||||
|
||||
self._sub_dict["table_headers"] = {
|
||||
"x": _translate("SedimentLayers", "X (m)"),
|
||||
"y": _translate("SedimentLayers", "Y (m)"),
|
||||
"z": _translate("SedimentLayers", "Z (m)"),
|
||||
"name": _translate("SedimentLayers", "Name"),
|
||||
"sl": _translate("SedimentLayers", "Sediment layers"),
|
||||
}
|
||||
|
||||
def retranslate():
|
||||
table_headers["x"] = _translate("SedimentLayers", "X (m)")
|
||||
table_headers["y"] = _translate("SedimentLayers", "Y (m)")
|
||||
table_headers["z"] = _translate("SedimentLayers", "Z (m)")
|
||||
table_headers["name"] = _translate("SedimentLayers", "Name")
|
||||
table_headers["sl"] = _translate("SedimentLayers", "Sediment layers")
|
||||
|
|
|
|||
|
|
@ -18,23 +18,25 @@ from PyQt5.QtWidgets import (
|
|||
)
|
||||
|
||||
from View.SedimentLayers.Reach.UndoCommand import *
|
||||
from View.SedimentLayers.Reach.translate import *
|
||||
|
||||
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
class ComboBoxDelegate(QItemDelegate):
|
||||
def __init__(self, study=None, parent=None):
|
||||
def __init__(self, study=None, trad=None, parent=None):
|
||||
super(ComboBoxDelegate, self).__init__(parent)
|
||||
|
||||
self._study = study
|
||||
self._trad = trad
|
||||
|
||||
def createEditor(self, parent, option, index):
|
||||
self.editor = QComboBox(parent)
|
||||
|
||||
self.editor.addItems(
|
||||
[_translate("SedimentLayers", "Not defined")] +
|
||||
[self._trad["nd"]] +
|
||||
list(
|
||||
map(
|
||||
lambda sl: str(sl),
|
||||
|
|
@ -67,28 +69,10 @@ class ComboBoxDelegate(QItemDelegate):
|
|||
self.commitData.emit(self.sender())
|
||||
|
||||
|
||||
class TableModel(QAbstractTableModel):
|
||||
def __init__(self, study=None, reach=None, undo=None):
|
||||
super(QAbstractTableModel, self).__init__()
|
||||
self._headers = list(table_headers.keys())
|
||||
self._study = study
|
||||
self._undo = undo
|
||||
self._reach = reach
|
||||
|
||||
def flags(self, index):
|
||||
column = index.column()
|
||||
|
||||
options = Qt.ItemIsEnabled | Qt.ItemIsSelectable
|
||||
if self._headers[column] == "sl":
|
||||
options |= Qt.ItemIsEditable
|
||||
|
||||
return options
|
||||
|
||||
def rowCount(self, parent):
|
||||
return self._reach.number_profiles
|
||||
|
||||
def columnCount(self, parent):
|
||||
return len(self._headers)
|
||||
class TableModel(PamhyrTableModel):
|
||||
def _setup_lst(self):
|
||||
self._lst = self._data
|
||||
self._study = self._opt_data
|
||||
|
||||
def data(self, index, role):
|
||||
if role != Qt.ItemDataRole.DisplayRole:
|
||||
|
|
@ -98,11 +82,11 @@ class TableModel(QAbstractTableModel):
|
|||
column = index.column()
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._reach.profile(row).name
|
||||
return self._data.profile(row).name
|
||||
if self._headers[column] == "kp":
|
||||
return self._reach.profile(row).kp
|
||||
return self._data.profile(row).kp
|
||||
if self._headers[column] == "sl":
|
||||
value = self._reach.profile(row).sl
|
||||
value = self._data.profile(row).sl
|
||||
if value == None:
|
||||
text = _translate("SedimentLayers", "Not defined")
|
||||
return text
|
||||
|
|
@ -110,12 +94,6 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
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
|
||||
|
|
@ -135,7 +113,7 @@ class TableModel(QAbstractTableModel):
|
|||
|
||||
self._undo.push(
|
||||
SetSLCommand(
|
||||
self._reach, row, new
|
||||
self._data, row, new
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -145,7 +123,7 @@ class TableModel(QAbstractTableModel):
|
|||
def apply_sl_each_profile(self, sl):
|
||||
self._undo.push(
|
||||
ApplySLCommand(
|
||||
self._reach, sl
|
||||
self._data, sl
|
||||
)
|
||||
)
|
||||
self.layoutChanged.emit()
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@ from View.SedimentLayers.Reach.Table import *
|
|||
from View.SedimentLayers.Reach.Plot import Plot
|
||||
from View.SedimentLayers.Reach.SLDialog import SLDialog
|
||||
|
||||
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.Reach.translate import table_headers, retranslate
|
||||
from View.SedimentLayers.Reach.translate import SedimentReachTranslate
|
||||
from View.SedimentLayers.Window import SedimentLayersWindow
|
||||
from View.SedimentLayers.Reach.Profile.Window import ProfileSedimentLayersWindow
|
||||
|
||||
|
|
@ -57,39 +57,40 @@ class ReachSedimentLayersWindow(PamhyrWindow):
|
|||
title = name,
|
||||
study = study,
|
||||
config = config,
|
||||
trad = SedimentReachTranslate(),
|
||||
parent = parent
|
||||
)
|
||||
|
||||
self.setup_table()
|
||||
self.setup_graph()
|
||||
self.setup_plot()
|
||||
self.setup_connections()
|
||||
|
||||
def setup_table(self):
|
||||
retranslate()
|
||||
table_headers = self._trad.get_dict("table_headers")
|
||||
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._table = TableModel(
|
||||
study = self._study,
|
||||
reach = self._reach,
|
||||
undo = self._undo_stack,
|
||||
)
|
||||
table.setModel(self._table)
|
||||
|
||||
self._delegate_stricklers = ComboBoxDelegate(
|
||||
self._delegate_sl = ComboBoxDelegate(
|
||||
study = self._study,
|
||||
trad = self._trad,
|
||||
parent=self
|
||||
)
|
||||
|
||||
table.setItemDelegateForColumn(
|
||||
list(table_headers).index("sl"),
|
||||
self._delegate_stricklers
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._table = TableModel(
|
||||
table_view = table,
|
||||
data = self._reach,
|
||||
opt_data = self._study,
|
||||
table_headers = table_headers,
|
||||
editable_headers = ["sl"],
|
||||
delegates = {"sl": self._delegate_sl},
|
||||
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):
|
||||
def setup_plot(self):
|
||||
self.canvas = MplCanvas(width=5, height=4, dpi=100)
|
||||
self.canvas.setObjectName("canvas")
|
||||
self.toolbar = PamhyrPlotToolbar(
|
||||
|
|
@ -106,6 +107,7 @@ class ReachSedimentLayersWindow(PamhyrWindow):
|
|||
canvas = self.canvas,
|
||||
data = self._reach,
|
||||
toolbar = self.toolbar,
|
||||
trad = self._trad,
|
||||
display_current = False
|
||||
)
|
||||
self.plot.draw()
|
||||
|
|
|
|||
|
|
@ -2,15 +2,20 @@
|
|||
|
||||
from PyQt5.QtCore import QCoreApplication
|
||||
|
||||
from View.SedimentLayers.translate import SedimentTranslate
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
table_headers = {
|
||||
class SedimentReachTranslate(SedimentTranslate):
|
||||
def __init__(self):
|
||||
super(SedimentReachTranslate, self).__init__()
|
||||
|
||||
self._dict["nd"] = _translate("SedimentLayers", "Not defined")
|
||||
self._dict["kp"] = _translate("SedimentLayers", "Kp (m)")
|
||||
self._dict["height"] = _translate("SedimentLayers", "Height (m)")
|
||||
|
||||
self._sub_dict["table_headers"] = {
|
||||
"name": _translate("SedimentLayers", "Name"),
|
||||
"kp": _translate("SedimentLayers", "KP (m)"),
|
||||
"sl": _translate("SedimentLayers", "Sediment layers"),
|
||||
}
|
||||
|
||||
def retranslate():
|
||||
table_headers["name"] = _translate("SedimentLayers", "Name")
|
||||
table_headers["kp"] = _translate("SedimentLayers", "KP (m)")
|
||||
table_headers["sl"] = _translate("SedimentLayers", "Sediment layers")
|
||||
|
|
|
|||
Loading…
Reference in New Issue