refactoring: Add PamhyrWidget and continue refacto using PamhyrWindow.

setup.py
Pierre-Antoine Rouby 2023-09-25 15:31:41 +02:00
parent fa32e42933
commit cc9f853a34
8 changed files with 64 additions and 80 deletions

View File

@ -23,8 +23,6 @@ from datetime import date, time, datetime, timedelta
from tools import trace, timer from tools import trace, timer
from View.ASubWindow import ASubMainWindow, AWidget
from View.ListedSubWindow import ListedSubWindow
from View.Tools.PamhyrTable import PamhyrTableModel from View.Tools.PamhyrTable import PamhyrTableModel
from PyQt5.QtCore import ( from PyQt5.QtCore import (

View File

@ -20,8 +20,8 @@ import logging
from tools import timer, trace from tools import timer, trace
from View.ASubWindow import ASubMainWindow, AWidget from View.Tools.PamhyrWindow import PamhyrWindow
from View.ListedSubWindow import ListedSubWindow from View.Tools.PamhyrWidget import PamhyrWidget
from View.Tools.PamhyrDelegate import PamhyrExTimeDelegate from View.Tools.PamhyrDelegate import PamhyrExTimeDelegate
from PyQt5.QtGui import ( from PyQt5.QtGui import (
@ -54,16 +54,16 @@ _translate = QCoreApplication.translate
logger = logging.getLogger() logger = logging.getLogger()
class WD50Sigma(AWidget): class WD50Sigma(PamhyrWidget):
_pamhyr_ui = "d50sigma"
d50Changed = pyqtSignal(float) d50Changed = pyqtSignal(float)
sigmaChanged = pyqtSignal(float) sigmaChanged = pyqtSignal(float)
def __init__(self, parent=None): def __init__(self, parent=None):
super(WD50Sigma, self).__init__( super(WD50Sigma, self).__init__(
ui="d50sigma",
parent=parent parent=parent
) )
self.parent = parent
self.spinBox_d50 = self.find(QDoubleSpinBox, "doubleSpinBox_d50") self.spinBox_d50 = self.find(QDoubleSpinBox, "doubleSpinBox_d50")
self.spinBox_sigma = self.find(QDoubleSpinBox, "doubleSpinBox_sigma") self.spinBox_sigma = self.find(QDoubleSpinBox, "doubleSpinBox_sigma")
@ -95,45 +95,37 @@ class WD50Sigma(AWidget):
def valueChangedSigma(self, value): def valueChangedSigma(self, value):
self.sigmaChanged.emit(value) self.sigmaChanged.emit(value)
class EditBoundaryConditionWindow(ASubMainWindow, ListedSubWindow): class EditBoundaryConditionWindow(PamhyrWindow):
def __init__(self, title="Edit boundary condition", _pamhyr_ui = "EditBoundaryConditions"
data=None, study=None, parent=None): _pamhyr_name = "Edit Boundary Conditions"
def __init__(self, data=None, study=None, config=None, parent=None):
self._data = data self._data = data
self._study = study
self._title = title
self.compute_title() name = self._pamhyr_name
super(EditBoundaryConditionWindow, self).__init__(
name=self._title, ui="EditBoundaryConditions", parent=parent
)
self.ui.setWindowTitle(self._title)
self.setup_sc()
self.setup_table()
self.setup_plot()
self.setup_data()
self.setup_connections()
def compute_title(self):
if self._data is not None: if self._data is not None:
node_name = (self._data.node.name if self._data.node is not None node_name = (self._data.node.name if self._data.node is not None
else _translate("BoundaryCondition", "Not associate")) else _translate("BoundaryCondition", "Not associate"))
self._title = ( name = (
_translate("Edit boundary condition", self._title) + _translate("Edit boundary condition", self._pamhyr_name) +
f" - {self._study.name} " + f" - {study.name} " +
f" - {self._data.name} ({self._data.id}) " + f" - {self._data.name} ({self._data.id}) " +
f"({long_types[self._data.bctype]} - {node_name})" f"({long_types[self._data.bctype]} - {node_name})"
) )
def setup_sc(self): super(EditBoundaryConditionWindow, self).__init__(
self._undo_stack = QUndoStack() title = name,
study = study,
config = config,
parent = parent
)
self.undo_sc = QShortcut(QKeySequence.Undo, self) self.ui.setWindowTitle(self._title)
self.redo_sc = QShortcut(QKeySequence.Redo, self)
self.copy_sc = QShortcut(QKeySequence.Copy, self) self.setup_table()
self.paste_sc = QShortcut(QKeySequence.Paste, self) self.setup_plot()
self.setup_data()
self.setup_connections()
def setup_data(self): def setup_data(self):
self._is_solid = self._data.bctype == "SL" self._is_solid = self._data.bctype == "SL"
@ -193,17 +185,11 @@ class EditBoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
) )
self.plot.draw() self.plot.draw()
def setup_connections(self): def setup_connections(self):
self.find(QAction, "action_add").triggered.connect(self.add) self.find(QAction, "action_add").triggered.connect(self.add)
self.find(QAction, "action_del").triggered.connect(self.delete) self.find(QAction, "action_del").triggered.connect(self.delete)
self.find(QAction, "action_sort").triggered.connect(self.sort) self.find(QAction, "action_sort").triggered.connect(self.sort)
self.undo_sc.activated.connect(self.undo)
self.redo_sc.activated.connect(self.redo)
self.copy_sc.activated.connect(self.copy)
self.paste_sc.activated.connect(self.paste)
self._table.dataChanged.connect(self.update) self._table.dataChanged.connect(self.update)
if self._is_solid: if self._is_solid:
@ -252,7 +238,6 @@ class EditBoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
) )
) )
def add(self): def add(self):
rows = self.index_selected_rows() rows = self.index_selected_rows()
if len(self._data) == 0 or len(rows) == 0: if len(self._data) == 0 or len(rows) == 0:
@ -285,7 +270,7 @@ class EditBoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
self.plot.update() self.plot.update()
def copy(self): def _copy(self):
rows = self.index_selected_rows() rows = self.index_selected_rows()
table = [] table = []
@ -297,7 +282,7 @@ class EditBoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
self.copyTableIntoClipboard(table) self.copyTableIntoClipboard(table)
def paste(self): def _paste(self):
header, data = self.parseClipboardTable() header, data = self.parseClipboardTable()
if len(data) == 0: if len(data) == 0:
@ -311,12 +296,12 @@ class EditBoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
self._table.paste(row, header, data) self._table.paste(row, header, data)
self.plot.update() self.plot.update()
def undo(self): def _undo(self):
self._table.undo() self._table.undo()
self.plot.update() self.plot.update()
self.widget_update() self.widget_update()
def redo(self): def _redo(self):
self._table.redo() self._table.redo()
self.plot.update() self.plot.update()
self.widget_update() self.widget_update()

View File

@ -20,8 +20,7 @@ import logging
from tools import trace, timer from tools import trace, timer
from View.ASubWindow import ASubMainWindow from View.Tools.PamhyrWindow import PamhyrWindow
from View.ListedSubWindow import ListedSubWindow
from PyQt5.QtGui import ( from PyQt5.QtGui import (
QKeySequence, QKeySequence,
@ -63,32 +62,28 @@ _translate = QCoreApplication.translate
logger = logging.getLogger() logger = logging.getLogger()
class BoundaryConditionWindow(ASubMainWindow, ListedSubWindow): class BoundaryConditionWindow(PamhyrWindow):
def __init__(self, title="Boundary conditions", study=None, parent=None): _pamhyr_ui = "BoundaryConditions"
self._title = title + " - " + study.name _pamhyr_name = "Boundary conditions"
def __init__(self, study=None, config=None, parent=None):
name = self._pamhyr_name + " - " + study.name
super(BoundaryConditionWindow, self).__init__( super(BoundaryConditionWindow, self).__init__(
name=title, ui="BoundaryConditions", parent=parent title = name,
study = study,
config = config,
parent=parent
) )
self._study = study
self._bcs = self._study.river.boundary_condition self._bcs = self._study.river.boundary_condition
self.setup_sc()
self.setup_table() self.setup_table()
self.setup_graph() self.setup_graph()
self.setup_connections() self.setup_connections()
self.ui.setWindowTitle(self._title) self.ui.setWindowTitle(self._title)
def setup_sc(self):
self._undo_stack = QUndoStack()
self.undo_sc = QShortcut(QKeySequence.Undo, self)
self.redo_sc = QShortcut(QKeySequence.Redo, self)
self.copy_sc = QShortcut(QKeySequence.Copy, self)
self.paste_sc = QShortcut(QKeySequence.Paste, self)
def setup_table(self): def setup_table(self):
retranslate() retranslate()
self._table = {} self._table = {}
@ -141,11 +136,6 @@ class BoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
self.find(QAction, "action_edit").triggered.connect(self.edit) self.find(QAction, "action_edit").triggered.connect(self.edit)
self.find(QAction, "action_sort").triggered.connect(self.sort) self.find(QAction, "action_sort").triggered.connect(self.sort)
self.undo_sc.activated.connect(self.undo)
self.redo_sc.activated.connect(self.redo)
self.copy_sc.activated.connect(self.copy)
self.paste_sc.activated.connect(self.paste)
def current_tab(self): def current_tab(self):
return self.find(QTabWidget, "tabWidget")\ return self.find(QTabWidget, "tabWidget")\
.currentWidget()\ .currentWidget()\
@ -202,17 +192,17 @@ class BoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
row = self.index_selected_row() row = self.index_selected_row()
self._table[tab].move_down(row) self._table[tab].move_down(row)
def copy(self): def _copy(self):
logger.info("TODO: copy") logger.info("TODO: copy")
def paste(self): def _paste(self):
logger.info("TODO: paste") logger.info("TODO: paste")
def undo(self): def _undo(self):
tab = self.current_tab() tab = self.current_tab()
self._table[tab].undo() self._table[tab].undo()
def redo(self): def _redo(self):
tab = self.current_tab() tab = self.current_tab()
self._table[tab].redo() self._table[tab].redo()

View File

@ -37,7 +37,8 @@ from PyQt5.QtWidgets import (
from Model.Geometry.Reach import Reach from Model.Geometry.Reach import Reach
from Model.Geometry.ProfileXYZ import ProfileXYZ from Model.Geometry.ProfileXYZ import ProfileXYZ
from View.ASubWindow import ASubMainWindow from View.Tools.ASubWindow import ASubMainWindow
from View.Geometry.Profile.mainwindow_ui_profile import Ui_MainWindow from View.Geometry.Profile.mainwindow_ui_profile import Ui_MainWindow
from View.Geometry.Profile.Plot import Plot from View.Geometry.Profile.Plot import Plot
from View.Geometry.Profile.Table import * from View.Geometry.Profile.Table import *

View File

@ -41,8 +41,9 @@ from View.Geometry.PlotXY import PlotXY
from View.Geometry.PlotKPZ import PlotKPZ from View.Geometry.PlotKPZ import PlotKPZ
from View.Geometry.PlotAC import PlotAC from View.Geometry.PlotAC import PlotAC
from View.ASubWindow import ASubMainWindow, WindowToolKit from View.Tools.ASubWindow import ASubMainWindow, WindowToolKit
from View.ListedSubWindow import ListedSubWindow from View.Tools.ListedSubWindow import ListedSubWindow
from View.Geometry.mainwindow_ui_reach import Ui_MainWindow from View.Geometry.mainwindow_ui_reach import Ui_MainWindow
from View.Geometry.Table import * from View.Geometry.Table import *
from View.Geometry.Profile.Window import ProfileWindow from View.Geometry.Profile.Window import ProfileWindow

View File

@ -44,8 +44,8 @@ from View.Configure.Window import ConfigureWindow
from View.Study.Window import NewStudyWindow from View.Study.Window import NewStudyWindow
from View.About.Window import AboutWindow from View.About.Window import AboutWindow
from View.Network.Window import NetworkWindow from View.Network.Window import NetworkWindow
# from View.Geometry.Window import GeometryWindow 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

View File

@ -81,8 +81,6 @@ class PamhyrPlotToolbar(NavigationToolbar2QT):
os.path.abspath(f"{file_path}/../ui/ressources/zoom.png") os.path.abspath(f"{file_path}/../ui/ressources/zoom.png")
)) ))
logger.info(os.path.abspath(f"{file_path}/../ui/ressources/zoom.png"))
icons.append(("zoom",icon_zoom)) icons.append(("zoom",icon_zoom))
if "iso" in items: if "iso" in items:

View File

@ -26,10 +26,21 @@ from PyQt5.QtWidgets import (
QSpinBox, QTimeEdit, QDateTimeEdit, QItemDelegate, QSpinBox, QTimeEdit, QDateTimeEdit, QItemDelegate,
) )
from View.ASubWindow import AWidget from View.Tools.ASubWindow import AWidget
logger = logging.getLogger() logger = logging.getLogger()
class PamhyrWidget(AWidget):
_pamhyr_ui = ""
_pamhyr_name = "PamhyrWidget"
def __init__(self, parent=None):
super(PamhyrWidget, self).__init__(
ui = self._pamhyr_ui,
parent = parent
)
class PamhyrExtendedTimeEdit(AWidget): class PamhyrExtendedTimeEdit(AWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
super(PamhyrExtendedTimeEdit, self).__init__( super(PamhyrExtendedTimeEdit, self).__init__(