mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
stricklers, config: Add stricklers tab in config window.
This commit is contained in:
1 parent
6c14e5ebf1
commit
70fac8e6e3
7 files changed
+161
-10
No files matched your search
@@ -4,8 +4,16 @@ from config import Config
|
||||
from View.ASubWindow import ASubWindow
|
||||
from View.ListedSubWindow import ListedSubWindow
|
||||
|
||||
from View.Stricklers.Table import TableModel
|
||||
from View.Stricklers.translate import *
|
||||
from View.Stricklers.UndoCommand import *
|
||||
|
||||
from View.Configure.Solver.Window import ConfigureSolverWindow
|
||||
|
||||
from PyQt5.QtGui import (
|
||||
QKeySequence,
|
||||
)
|
||||
|
||||
from PyQt5.QtCore import (
|
||||
Qt, QVariant, QAbstractTableModel,
|
||||
)
|
||||
@@ -13,7 +21,7 @@ from PyQt5.QtCore import (
|
||||
from PyQt5.QtWidgets import (
|
||||
QDialogButtonBox, QPushButton, QLineEdit,
|
||||
QFileDialog, QTableView, QAbstractItemView,
|
||||
QComboBox,
|
||||
QComboBox, QUndoStack, QShortcut, QHeaderView,
|
||||
)
|
||||
|
||||
|
||||
@@ -71,17 +79,18 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
else:
|
||||
self.conf = conf
|
||||
|
||||
self.setup_sc()
|
||||
|
||||
# Solver
|
||||
table = self.find(QTableView, "tableView_solver")
|
||||
self.solver_table_model = SolverTableModel(
|
||||
headers = ["name", "type", "description"],
|
||||
rows = conf.solvers.copy()
|
||||
)
|
||||
self.find(QTableView, "tableView_solver")\
|
||||
.setModel(self.solver_table_model)
|
||||
self.find(QTableView, "tableView_solver")\
|
||||
.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
self.find(QTableView, "tableView_solver")\
|
||||
.setAlternatingRowColors(True)
|
||||
table.setModel(self.solver_table_model)
|
||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
table.setAlternatingRowColors(True)
|
||||
|
||||
# Meshing_Tool
|
||||
self.set_line_edit_text("lineEdit_meshing_tool", self.conf.meshing_tool)
|
||||
@@ -99,6 +108,18 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
self.find(QTableView, "tableView_solver").resizeColumnsToContents()
|
||||
self.connect()
|
||||
|
||||
# Stricklers
|
||||
table = self.find(QTableView, f"tableView_stricklers")
|
||||
self._stricklers = self.conf.stricklers
|
||||
self._stricklers_table = TableModel(
|
||||
data = self._stricklers,
|
||||
undo = self._undo_stack,
|
||||
)
|
||||
table.setModel(self._stricklers_table)
|
||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
||||
table.setAlternatingRowColors(True)
|
||||
|
||||
# Language
|
||||
languages = Config.languages()
|
||||
for lang in languages:
|
||||
@@ -106,11 +127,25 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
if self.conf.lang == languages[lang]:
|
||||
self.set_combobox_text("comboBox_language", lang)
|
||||
|
||||
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 connect(self):
|
||||
buttons = {
|
||||
# Solvers
|
||||
"pushButton_solver_add": self.add_solver,
|
||||
"pushButton_solver_del": self.remove_solver,
|
||||
"pushButton_solver_edit": self.edit_solver,
|
||||
# Stricklers
|
||||
"pushButton_stricklers_add": self.add_stricklers,
|
||||
"pushButton_stricklers_del": self.del_stricklers,
|
||||
"pushButton_stricklers_sort": self.sort_stricklers,
|
||||
# Others
|
||||
"pushButton_backup_path": lambda: self.file_dialog(
|
||||
select_file = False,
|
||||
callback = lambda f: self.set_line_edit_text(
|
||||
@@ -158,6 +193,8 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
self.conf.save()
|
||||
self.close()
|
||||
|
||||
# Solvers
|
||||
|
||||
def edit_solver(self):
|
||||
indexes = self.find(QTableView, "tableView_solver").selectionModel().selectedRows()
|
||||
for index in indexes:
|
||||
@@ -177,3 +214,33 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
||||
indices = self.find(QTableView, "tableView_solver").selectionModel().selectedRows()
|
||||
for index in sorted(indices):
|
||||
self.solver_table_model.removeRow(index)
|
||||
|
||||
# Stricklers
|
||||
|
||||
def index_selected_rows_strikclers(self):
|
||||
table = self.find(QTableView, f"tableView_stricklers")
|
||||
return list(
|
||||
set(
|
||||
map(
|
||||
lambda i: i.row(),
|
||||
table.selectedIndexes()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
def add_stricklers(self):
|
||||
rows = self.index_selected_rows_strikclers()
|
||||
if len(rows) == 0:
|
||||
self._stricklers_table.add(0)
|
||||
else:
|
||||
self._stricklers_table.add(rows[0])
|
||||
|
||||
def del_stricklers(self):
|
||||
rows = self.index_selected_rows_strikclers()
|
||||
if len(rows) == 0:
|
||||
return
|
||||
|
||||
self._stricklers_table.delete(rows)
|
||||
|
||||
def sort_stricklers(self):
|
||||
self._stricklers_table.sort(False)
|
||||
Reference in new issue
Block a user