From 233a6cfe68a87e9b0624f17a1773ccb79503f3da Mon Sep 17 00:00:00 2001 From: Jan Feil <11638228+jfeil@users.noreply.github.com> Date: Wed, 3 May 2023 16:36:53 +0200 Subject: [PATCH] Add button to disable all MChoice before export and to change font size of questions --- res/regeltest_save.ui | 137 +++++++++++++++++++++++++-------------- src/dock_widgets.py | 2 +- src/regeltestcreator.py | 10 +++ src/ui_regeltest_save.py | 124 ++++++++++++++++++++++------------- 4 files changed, 179 insertions(+), 94 deletions(-) diff --git a/res/regeltest_save.ui b/res/regeltest_save.ui index cdaa396..1e1c768 100644 --- a/res/regeltest_save.ui +++ b/res/regeltest_save.ui @@ -6,8 +6,8 @@ 0 0 - 470 - 266 + 760 + 542 @@ -17,18 +17,14 @@ Save Regeltest - - - - - - + + + + Qt::StrongFocus + + - - - Auswählen - - + @@ -40,14 +36,23 @@ - - - - Speicherort - + + + + + + + + + + Auswählen + + + + - + Qt::Horizontal @@ -57,16 +62,28 @@ - - - - Qt::StrongFocus + + + + Speicherort - - - - - + + + + + + true + + + + + 0 + 0 + 740 + 142 + + + @@ -76,14 +93,48 @@ - - - + + + + + + Alle Multiple-Choice aktivieren + + + + + + + Alle Multiple-Choice deaktivieren + + + + + + + + + pt + + + 9 + + + 15 + + + 11 + + + + + + - + - + Auswählen @@ -92,24 +143,14 @@ - - - - true + + + + Schriftgröße - - - - 0 - 0 - 450 - 69 - - - - + Qt::Vertical diff --git a/src/dock_widgets.py b/src/dock_widgets.py index 4cd32a4..27879f7 100644 --- a/src/dock_widgets.py +++ b/src/dock_widgets.py @@ -69,7 +69,7 @@ def create_regeltest(self): selected_questions=selected_questions) db.add_object(regeltest) document_builder.create_document(selected_questions, output_path, settings.ui.title_edit.text(), - icon=icon) + icon=icon, font_size=settings.ui.fontsize_spinBox.value()) QApplication.restoreOverrideCursor() webbrowser.open_new(output_path) diff --git a/src/regeltestcreator.py b/src/regeltestcreator.py index 43de6b5..881a0d0 100644 --- a/src/regeltestcreator.py +++ b/src/regeltestcreator.py @@ -30,6 +30,7 @@ def add_question(self, question: Question): item = QListWidgetItem(self) item.setData(Qt.UserRole, question.signature) item.setText(question.question) + item.setToolTip(question.question) self.questions.append(question.signature) def delete_selected_items(self): @@ -117,6 +118,9 @@ def __init__(self, questions: List[Question], parent): self.questions = questions self.question_widgets: List[QuestionEditWidget] = [] + self.ui.activate_mc_button.clicked.connect(lambda: self.change_all_mchoice(True)) + self.ui.deactivate_mc_button.clicked.connect(lambda: self.change_all_mchoice(False)) + self.ui.question_scrollable.setLayout(QVBoxLayout()) for question in self.questions: @@ -124,6 +128,12 @@ def __init__(self, questions: List[Question], parent): self.ui.question_scrollable.layout().addWidget(widget) self.question_widgets += [widget] + def change_all_mchoice(self, value: bool): + for question in self.question_widgets: + if not question.ui.checkBox_multiplechoice.isEnabled(): + continue + question.ui.checkBox_multiplechoice.setCheckState(Qt.Checked if value else Qt.Unchecked) + def open_icon(self): file_name = QFileDialog.getOpenFileName(self, caption="Icon auswählen", filter="Icon file (*.jpg;*.png)") if len(file_name) == 0 or file_name[0] == "": diff --git a/src/ui_regeltest_save.py b/src/ui_regeltest_save.py index a83fc6b..ca7bea4 100644 --- a/src/ui_regeltest_save.py +++ b/src/ui_regeltest_save.py @@ -13,49 +13,17 @@ from PySide6.QtWidgets import (QDialogButtonBox, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QScrollArea, QSizePolicy, QSpacerItem, - QWidget) + QSpinBox, QWidget) + class Ui_RegeltestSave(object): def setupUi(self, RegeltestSave): if not RegeltestSave.objectName(): RegeltestSave.setObjectName(u"RegeltestSave") - RegeltestSave.resize(470, 266) + RegeltestSave.resize(760, 542) RegeltestSave.setFocusPolicy(Qt.NoFocus) self.gridLayout = QGridLayout(RegeltestSave) self.gridLayout.setObjectName(u"gridLayout") - self.widget = QWidget(RegeltestSave) - self.widget.setObjectName(u"widget") - self.horizontalLayout = QHBoxLayout(self.widget) - self.horizontalLayout.setObjectName(u"horizontalLayout") - self.icon_path_edit = QLineEdit(self.widget) - self.icon_path_edit.setObjectName(u"icon_path_edit") - - self.horizontalLayout.addWidget(self.icon_path_edit) - - self.icon_edit_button = QPushButton(self.widget) - self.icon_edit_button.setObjectName(u"icon_edit_button") - - self.horizontalLayout.addWidget(self.icon_edit_button) - - self.gridLayout.addWidget(self.widget, 1, 1, 1, 1) - - self.label = QLabel(RegeltestSave) - self.label.setObjectName(u"label") - - self.gridLayout.addWidget(self.label, 0, 0, 1, 1) - - self.label_3 = QLabel(RegeltestSave) - self.label_3.setObjectName(u"label_3") - - self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1) - - self.buttonBox = QDialogButtonBox(RegeltestSave) - self.buttonBox.setObjectName(u"buttonBox") - self.buttonBox.setOrientation(Qt.Horizontal) - self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) - - self.gridLayout.addWidget(self.buttonBox, 6, 0, 1, 2) - self.widget_3 = QWidget(RegeltestSave) self.widget_3.setObjectName(u"widget_3") self.widget_3.setFocusPolicy(Qt.StrongFocus) @@ -66,12 +34,12 @@ def setupUi(self, RegeltestSave): self.horizontalLayout_3.addWidget(self.title_edit) - self.gridLayout.addWidget(self.widget_3, 0, 1, 1, 1) + self.gridLayout.addWidget(self.widget_3, 0, 2, 1, 1) - self.label_2 = QLabel(RegeltestSave) - self.label_2.setObjectName(u"label_2") + self.label = QLabel(RegeltestSave) + self.label.setObjectName(u"label") - self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.widget_2 = QWidget(RegeltestSave) self.widget_2.setObjectName(u"widget_2") @@ -87,21 +55,81 @@ def setupUi(self, RegeltestSave): self.horizontalLayout_2.addWidget(self.output_edit_button) - self.gridLayout.addWidget(self.widget_2, 3, 1, 1, 1) + self.gridLayout.addWidget(self.widget_2, 3, 2, 1, 1) + + self.buttonBox = QDialogButtonBox(RegeltestSave) + self.buttonBox.setObjectName(u"buttonBox") + self.buttonBox.setOrientation(Qt.Horizontal) + self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) + + self.gridLayout.addWidget(self.buttonBox, 9, 0, 1, 3) + + self.label_3 = QLabel(RegeltestSave) + self.label_3.setObjectName(u"label_3") + + self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1) self.scrollArea = QScrollArea(RegeltestSave) self.scrollArea.setObjectName(u"scrollArea") self.scrollArea.setWidgetResizable(True) self.question_scrollable = QWidget() self.question_scrollable.setObjectName(u"question_scrollable") - self.question_scrollable.setGeometry(QRect(0, 0, 450, 69)) + self.question_scrollable.setGeometry(QRect(0, 0, 740, 142)) self.scrollArea.setWidget(self.question_scrollable) - self.gridLayout.addWidget(self.scrollArea, 5, 0, 1, 2) + self.gridLayout.addWidget(self.scrollArea, 8, 0, 1, 3) + + self.label_2 = QLabel(RegeltestSave) + self.label_2.setObjectName(u"label_2") + + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + + self.horizontalLayout_4 = QHBoxLayout() + self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") + self.activate_mc_button = QPushButton(RegeltestSave) + self.activate_mc_button.setObjectName(u"activate_mc_button") + + self.horizontalLayout_4.addWidget(self.activate_mc_button) + + self.deactivate_mc_button = QPushButton(RegeltestSave) + self.deactivate_mc_button.setObjectName(u"deactivate_mc_button") + + self.horizontalLayout_4.addWidget(self.deactivate_mc_button) + + self.gridLayout.addLayout(self.horizontalLayout_4, 6, 0, 1, 3) + + self.fontsize_spinBox = QSpinBox(RegeltestSave) + self.fontsize_spinBox.setObjectName(u"fontsize_spinBox") + self.fontsize_spinBox.setMinimum(9) + self.fontsize_spinBox.setMaximum(15) + self.fontsize_spinBox.setValue(11) + + self.gridLayout.addWidget(self.fontsize_spinBox, 4, 2, 1, 1) + + self.widget = QWidget(RegeltestSave) + self.widget.setObjectName(u"widget") + self.horizontalLayout = QHBoxLayout(self.widget) + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.icon_path_edit = QLineEdit(self.widget) + self.icon_path_edit.setObjectName(u"icon_path_edit") + + self.horizontalLayout.addWidget(self.icon_path_edit) + + self.icon_edit_button = QPushButton(self.widget) + self.icon_edit_button.setObjectName(u"icon_edit_button") + + self.horizontalLayout.addWidget(self.icon_edit_button) + + self.gridLayout.addWidget(self.widget, 1, 2, 1, 1) + + self.label_4 = QLabel(RegeltestSave) + self.label_4.setObjectName(u"label_4") + + self.gridLayout.addWidget(self.label_4, 4, 0, 1, 1) self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) - self.gridLayout.addItem(self.verticalSpacer, 4, 0, 1, 1) + self.gridLayout.addItem(self.verticalSpacer, 7, 0, 1, 1) QWidget.setTabOrder(self.title_edit, self.icon_path_edit) QWidget.setTabOrder(self.icon_path_edit, self.icon_edit_button) @@ -119,10 +147,16 @@ def setupUi(self, RegeltestSave): def retranslateUi(self, RegeltestSave): RegeltestSave.setWindowTitle(QCoreApplication.translate("RegeltestSave", u"Save Regeltest", None)) - self.icon_edit_button.setText(QCoreApplication.translate("RegeltestSave", u"Ausw\u00e4hlen", None)) self.label.setText(QCoreApplication.translate("RegeltestSave", u"Titel", None)) + self.output_edit_button.setText(QCoreApplication.translate("RegeltestSave", u"Ausw\u00e4hlen", None)) self.label_3.setText(QCoreApplication.translate("RegeltestSave", u"Speicherort", None)) self.label_2.setText(QCoreApplication.translate("RegeltestSave", u"Iconpfad", None)) - self.output_edit_button.setText(QCoreApplication.translate("RegeltestSave", u"Ausw\u00e4hlen", None)) + self.activate_mc_button.setText( + QCoreApplication.translate("RegeltestSave", u"Alle Multiple-Choice aktivieren", None)) + self.deactivate_mc_button.setText( + QCoreApplication.translate("RegeltestSave", u"Alle Multiple-Choice deaktivieren", None)) + self.fontsize_spinBox.setSuffix(QCoreApplication.translate("RegeltestSave", u" pt", None)) + self.icon_edit_button.setText(QCoreApplication.translate("RegeltestSave", u"Ausw\u00e4hlen", None)) + self.label_4.setText(QCoreApplication.translate("RegeltestSave", u"Schriftgr\u00f6\u00dfe", None)) # retranslateUi