mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
refactoring: Add PamhyrWindow and PamhyrDialog (WIP).
This commit is contained in:
1 parent
9c7f1f7ba9
commit
fa32e42933
11 files changed
+408
-194
No files matched your search
@@ -21,8 +21,7 @@ import logging
|
||||
from copy import deepcopy
|
||||
|
||||
from config import Config
|
||||
from View.ASubWindow import ASubWindow
|
||||
from View.ListedSubWindow import ListedSubWindow
|
||||
from View.Tools.PamhyrWindow import PamhyrDialog
|
||||
|
||||
from View.Stricklers.Table import TableModel
|
||||
from View.Stricklers.translate import *
|
||||
@@ -95,50 +94,42 @@ class SolverTableModel(QAbstractTableModel):
|
||||
self.layoutChanged.emit()
|
||||
|
||||
|
||||
class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
def __init__(self, conf=None, title="Configure", parent=None):
|
||||
class ConfigureWindow(PamhyrDialog):
|
||||
_pamhyr_ui = "ConfigureDialog"
|
||||
_pamhyr_name = "Configure"
|
||||
|
||||
def __init__(self, config=None, parent=None):
|
||||
if config is None:
|
||||
config = Config()
|
||||
|
||||
super(ConfigureWindow, self).__init__(
|
||||
name=title, ui="ConfigureDialog", parent=parent
|
||||
title = self._pamhyr_name,
|
||||
config = config,
|
||||
options = [],
|
||||
parent=parent
|
||||
)
|
||||
self.ui.setWindowTitle(title)
|
||||
|
||||
if conf is None:
|
||||
self.conf = Config()
|
||||
else:
|
||||
self.conf = conf
|
||||
self.setup_custom_sc()
|
||||
self.setup_solver()
|
||||
self.setup_stricklers()
|
||||
self.setup_data()
|
||||
self.setup_connection()
|
||||
|
||||
self.setup_sc()
|
||||
|
||||
# Solver
|
||||
def setup_solver(self):
|
||||
table = self.find(QTableView, "tableView_solver")
|
||||
self.solver_table_model = SolverTableModel(
|
||||
headers = ["name", "type", "description"],
|
||||
rows = conf.solvers
|
||||
rows = self._config.solvers
|
||||
)
|
||||
table.setModel(self.solver_table_model)
|
||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
table.setAlternatingRowColors(True)
|
||||
table.resizeColumnsToContents()
|
||||
|
||||
# Meshing_Tool
|
||||
self.set_line_edit_text("lineEdit_meshing_tool", self.conf.meshing_tool)
|
||||
|
||||
# Const
|
||||
self.set_line_edit_text("lineEdit_segment", str(self.conf.segment))
|
||||
self.set_line_edit_text("lineEdit_max_listing", str(self.conf.max_listing))
|
||||
|
||||
# Backup
|
||||
self.set_check_box("checkBox_backup", self.conf.backup_enable)
|
||||
self.set_line_edit_text("lineEdit_backup_path", self.conf.backup_path)
|
||||
self.set_time_edit("timeEdit_backup_frequence", self.conf.backup_frequence)
|
||||
self.set_spin_box("spinBox_backup_max", self.conf.backup_max)
|
||||
|
||||
self.find(QTableView, "tableView_solver").resizeColumnsToContents()
|
||||
self.connect()
|
||||
|
||||
# Stricklers
|
||||
def setup_stricklers(self):
|
||||
table = self.find(QTableView, f"tableView_stricklers")
|
||||
self._stricklers = deepcopy(self.conf.stricklers)
|
||||
self._stricklers = deepcopy(self._config.stricklers)
|
||||
self._stricklers_table = TableModel(
|
||||
data = self._stricklers,
|
||||
undo = self._undo_stack,
|
||||
@@ -148,26 +139,35 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
table.setAlternatingRowColors(True)
|
||||
|
||||
def setup_data(self):
|
||||
# Meshing_Tool
|
||||
self.set_line_edit_text("lineEdit_meshing_tool", self._config.meshing_tool)
|
||||
|
||||
# Const
|
||||
self.set_line_edit_text("lineEdit_segment", str(self._config.segment))
|
||||
self.set_line_edit_text("lineEdit_max_listing", str(self._config.max_listing))
|
||||
|
||||
# Backup
|
||||
self.set_check_box("checkBox_backup", self._config.backup_enable)
|
||||
self.set_line_edit_text("lineEdit_backup_path", self._config.backup_path)
|
||||
self.set_time_edit("timeEdit_backup_frequence", self._config.backup_frequence)
|
||||
self.set_spin_box("spinBox_backup_max", self._config.backup_max)
|
||||
|
||||
# Editor
|
||||
self.set_line_edit_text("lineEdit_editor_cmd", str(self.conf.editor))
|
||||
self.set_line_edit_text("lineEdit_editor_cmd", str(self._config.editor))
|
||||
|
||||
# Language
|
||||
languages = Config.languages()
|
||||
for lang in languages:
|
||||
self.combobox_add_item("comboBox_language", lang)
|
||||
if self.conf.lang == languages[lang]:
|
||||
if self._config.lang == languages[lang]:
|
||||
self.set_combobox_text("comboBox_language", lang)
|
||||
|
||||
def setup_sc(self):
|
||||
self._undo_stack = QUndoStack()
|
||||
def setup_custom_sc(self):
|
||||
self._debug_sc = QShortcut(QKeySequence("Ctrl+G"), self)
|
||||
self._debug_sc.activated.connect(self.set_debug)
|
||||
|
||||
self.debug_sc = QShortcut(QKeySequence("Ctrl+G"), self)
|
||||
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 connect(self):
|
||||
def setup_connection(self):
|
||||
buttons = {
|
||||
# Solvers
|
||||
"pushButton_solver_add": self.add_solver,
|
||||
@@ -195,33 +195,31 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
for button in buttons:
|
||||
self.find(QPushButton, button).clicked.connect(buttons[button])
|
||||
|
||||
self.debug_sc.activated.connect(self.set_debug)
|
||||
|
||||
def accept(self):
|
||||
# Solvers
|
||||
self.conf.solvers = self.solver_table_model.rows.copy()
|
||||
self._config.solvers = self.solver_table_model.rows.copy()
|
||||
|
||||
# Meshing_Tool
|
||||
self.conf.meshing_tool = self.get_line_edit_text("lineEdit_meshing_tool")
|
||||
self._config.meshing_tool = self.get_line_edit_text("lineEdit_meshing_tool")
|
||||
|
||||
# Const
|
||||
self.conf.segment = self.get_line_edit_text("lineEdit_segment")
|
||||
self.conf.max_listing = self.get_line_edit_text("lineEdit_max_listing")
|
||||
self._config.segment = self.get_line_edit_text("lineEdit_segment")
|
||||
self._config.max_listing = self.get_line_edit_text("lineEdit_max_listing")
|
||||
|
||||
# Backup
|
||||
self.conf.backup_enable = self.get_check_box("checkBox_backup")
|
||||
self.conf.backup_path = self.get_line_edit_text("lineEdit_backup_path")
|
||||
self.conf.backup_frequence = self.get_time_edit("timeEdit_backup_frequence")
|
||||
self.conf.backup_max = self.get_spin_box("spinBox_backup_max")
|
||||
self._config.backup_enable = self.get_check_box("checkBox_backup")
|
||||
self._config.backup_path = self.get_line_edit_text("lineEdit_backup_path")
|
||||
self._config.backup_frequence = self.get_time_edit("timeEdit_backup_frequence")
|
||||
self._config.backup_max = self.get_spin_box("spinBox_backup_max")
|
||||
|
||||
# Stricklers
|
||||
self.conf.stricklers = deepcopy(self._stricklers)
|
||||
self._config.stricklers = deepcopy(self._stricklers)
|
||||
|
||||
# Editor
|
||||
self.conf.editor = self.get_line_edit_text("lineEdit_editor_cmd")
|
||||
self._config.editor = self.get_line_edit_text("lineEdit_editor_cmd")
|
||||
|
||||
# Language
|
||||
self.conf.lang = Config.languages()[self.get_combobox_text("comboBox_language")]
|
||||
self._config.lang = Config.languages()[self.get_combobox_text("comboBox_language")]
|
||||
|
||||
self.end()
|
||||
|
||||
@@ -230,13 +228,13 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
self.end()
|
||||
|
||||
def end(self):
|
||||
self.conf.save()
|
||||
self._config.save()
|
||||
self.close()
|
||||
|
||||
# Debug
|
||||
def set_debug(self):
|
||||
self.conf.debug = not self.conf.debug
|
||||
logger.info(f"Debug mode set : {self.conf.debug}")
|
||||
self._config.debug = not self._config.debug
|
||||
logger.info(f"Debug mode set : {self._config.debug}")
|
||||
self.parent.setup_debug_mode()
|
||||
|
||||
# Solvers
|
||||
@@ -246,6 +244,7 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
for index in indexes:
|
||||
self.edit_solver = ConfigureSolverWindow(
|
||||
data=self.solver_table_model.rows[index.row()],
|
||||
config=self._config,
|
||||
parent=self
|
||||
)
|
||||
if self.edit_solver.exec_():
|
||||
|
||||
Reference in new issue
Block a user