excel2moodle 0.3.1__py3-none-any.whl → 0.3.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- excel2moodle/core/dataStructure.py +1 -0
- excel2moodle/core/parser.py +1 -0
- excel2moodle/ui/appUi.py +13 -31
- excel2moodle/ui/windowMain.py +414 -0
- {excel2moodle-0.3.1.dist-info → excel2moodle-0.3.2.dist-info}/METADATA +1 -1
- {excel2moodle-0.3.1.dist-info → excel2moodle-0.3.2.dist-info}/RECORD +9 -8
- {excel2moodle-0.3.1.dist-info → excel2moodle-0.3.2.dist-info}/WHEEL +0 -0
- {excel2moodle-0.3.1.dist-info → excel2moodle-0.3.2.dist-info}/licenses/LICENSE +0 -0
- {excel2moodle-0.3.1.dist-info → excel2moodle-0.3.2.dist-info}/top_level.txt +0 -0
@@ -46,6 +46,7 @@ class QuestionDB():
|
|
46
46
|
self.spreadSheetPath = sheet
|
47
47
|
self.svgFolder = (self.spreadSheetPath.parent / 'Abbildungen_SVG')
|
48
48
|
self.retrieveCategoriesData()
|
49
|
+
self.parseAll()
|
49
50
|
|
50
51
|
def retrieveCategoriesData(self)->None:
|
51
52
|
"""Scans through the sheet with the metadata for all the question categories
|
excel2moodle/core/parser.py
CHANGED
excel2moodle/ui/appUi.py
CHANGED
@@ -64,9 +64,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
64
64
|
self.ui.checkBoxIncludeCategories.checkStateChanged.connect(self.setIncludeCategoriesSetting)
|
65
65
|
# self.ui.buttonRefresh.clicked.connect(self.refreshList)
|
66
66
|
self.ui.actionParseAll.triggered.connect(self.onParseAll )
|
67
|
+
self.testDB.dataChanged.signal.connect(self.onParseAll)
|
67
68
|
self.ui.buttonSpreadSheet.clicked.connect(self.onButSpreadsheet)
|
68
69
|
self.ui.buttonTestGen.clicked.connect(self.onButGenTest)
|
69
|
-
self.testDB.dataChanged.signal.connect(self.refreshList)
|
70
70
|
self.ui.actionPreviewQ.triggered.connect(self.previewQ)
|
71
71
|
self.ui.actionDocumentation.triggered.connect(self.onOpenDocumentation)
|
72
72
|
self.settings.shPathChanged.connect(self.onSheetPathChanged)
|
@@ -110,22 +110,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
110
110
|
|
111
111
|
logger.info(f'{questions} questions are selected with {count} points')
|
112
112
|
self.ui.pointCounter.setValue(count)
|
113
|
-
|
114
|
-
# val = item.text(2)
|
115
|
-
# if val == "nan":
|
116
|
-
# val = 0
|
117
|
-
# else: val = float(val)
|
118
|
-
# if item.text(0).startswith('KAT'):
|
119
|
-
# logger.debug(f'seems to be a Category, doing nothing\n')
|
120
|
-
# return None
|
121
|
-
# logger.debug(f'Current Item: {item.text(1)}, is Selected? {item.isSelected()}')
|
122
|
-
# if item.isSelected():
|
123
|
-
# count = count + val
|
124
|
-
# logger.debug(f'Selected, Count up: {count}')
|
125
|
-
# else:
|
126
|
-
# count = count - val
|
127
|
-
# logger.debug(f'unselected, Count down: {count}')
|
128
|
-
|
113
|
+
self.ui.questionCounter.setValue(questions)
|
129
114
|
return None
|
130
115
|
|
131
116
|
@QtCore.Slot()
|
@@ -151,19 +136,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
151
136
|
self.testDB.appendQuestions(selection, self.exportFile)
|
152
137
|
return None
|
153
138
|
|
154
|
-
@QtCore.Slot()
|
155
|
-
def refreshList(self):
|
156
|
-
logger.info("starting List refresh")
|
157
|
-
cats = self.testDB.categories
|
158
|
-
self.ui.treeWidget.clear()
|
159
|
-
for cat in cats.values():
|
160
|
-
catItem = CategoryItem(self.ui.treeWidget,cat)
|
161
|
-
catItem.setFlags(catItem.flags() & ~Qt.ItemIsSelectable)
|
162
|
-
for q in cat.questions.values():
|
163
|
-
QuestionItem(catItem,q)
|
164
|
-
self.setStatus("[OK] Fragen Liste wurde aktualisiert")
|
165
|
-
self.ui.buttonTestGen.setEnabled(True)
|
166
|
-
|
167
139
|
@QtCore.Slot()
|
168
140
|
def onButSpreadsheet(self):
|
169
141
|
file = QtWidgets.QFileDialog.getOpenFileName(self,
|
@@ -187,9 +159,19 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
187
159
|
It parses all the Questions found in the spreadsheet and then refreshes the list of questions.
|
188
160
|
If successful it prints out a list of all exported Questions
|
189
161
|
"""
|
162
|
+
self.ui.buttonTestGen.setEnabled(True)
|
190
163
|
self.testDB.parseAll()
|
191
164
|
self.setStatus("[OK] Alle Fragen wurden erfolgreich in XML-Dateien umgewandelt")
|
192
|
-
|
165
|
+
# below is former refres method
|
166
|
+
logger.info("starting List refresh")
|
167
|
+
cats = self.testDB.categories
|
168
|
+
self.ui.treeWidget.clear()
|
169
|
+
for cat in cats.values():
|
170
|
+
catItem = CategoryItem(self.ui.treeWidget,cat)
|
171
|
+
catItem.setFlags(catItem.flags() & ~Qt.ItemIsSelectable)
|
172
|
+
for q in cat.questions.values():
|
173
|
+
QuestionItem(catItem,q)
|
174
|
+
self.setStatus("[OK] Fragen Liste wurde aktualisiert")
|
193
175
|
return None
|
194
176
|
|
195
177
|
@QtCore.Slot()
|
@@ -0,0 +1,414 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
################################################################################
|
4
|
+
## Form generated from reading UI file 'mainWindow.ui'
|
5
|
+
##
|
6
|
+
## Created by: Qt User Interface Compiler version 6.8.3
|
7
|
+
##
|
8
|
+
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
9
|
+
################################################################################
|
10
|
+
|
11
|
+
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
12
|
+
QMetaObject, QObject, QPoint, QRect,
|
13
|
+
QSize, QTime, QUrl, Qt)
|
14
|
+
from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
|
15
|
+
QCursor, QFont, QFontDatabase, QGradient,
|
16
|
+
QIcon, QImage, QKeySequence, QLinearGradient,
|
17
|
+
QPainter, QPalette, QPixmap, QRadialGradient,
|
18
|
+
QTransform)
|
19
|
+
from PySide6.QtWidgets import (QAbstractItemView, QAbstractSpinBox, QApplication, QCheckBox,
|
20
|
+
QDoubleSpinBox, QFormLayout, QFrame, QHBoxLayout,
|
21
|
+
QHeaderView, QLabel, QMainWindow, QMenu,
|
22
|
+
QMenuBar, QPushButton, QSizePolicy, QSpacerItem,
|
23
|
+
QSpinBox, QStatusBar, QTextEdit, QToolBar,
|
24
|
+
QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget)
|
25
|
+
|
26
|
+
class Ui_MoodleTestGenerator(object):
|
27
|
+
def setupUi(self, MoodleTestGenerator):
|
28
|
+
if not MoodleTestGenerator.objectName():
|
29
|
+
MoodleTestGenerator.setObjectName(u"MoodleTestGenerator")
|
30
|
+
MoodleTestGenerator.resize(936, 1198)
|
31
|
+
icon = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DialogQuestion))
|
32
|
+
MoodleTestGenerator.setWindowIcon(icon)
|
33
|
+
self.actionInput_Spreadsheet = QAction(MoodleTestGenerator)
|
34
|
+
self.actionInput_Spreadsheet.setObjectName(u"actionInput_Spreadsheet")
|
35
|
+
icon1 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentOpen))
|
36
|
+
self.actionInput_Spreadsheet.setIcon(icon1)
|
37
|
+
self.actionOutput_Folder = QAction(MoodleTestGenerator)
|
38
|
+
self.actionOutput_Folder.setObjectName(u"actionOutput_Folder")
|
39
|
+
self.actionEquationChecker = QAction(MoodleTestGenerator)
|
40
|
+
self.actionEquationChecker.setObjectName(u"actionEquationChecker")
|
41
|
+
icon2 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.ToolsCheckSpelling))
|
42
|
+
self.actionEquationChecker.setIcon(icon2)
|
43
|
+
self.actionParseAll = QAction(MoodleTestGenerator)
|
44
|
+
self.actionParseAll.setObjectName(u"actionParseAll")
|
45
|
+
icon3 = QIcon(QIcon.fromTheme(u"view-refresh"))
|
46
|
+
self.actionParseAll.setIcon(icon3)
|
47
|
+
self.actionPreviewQ = QAction(MoodleTestGenerator)
|
48
|
+
self.actionPreviewQ.setObjectName(u"actionPreviewQ")
|
49
|
+
icon4 = QIcon(QIcon.fromTheme(u"document-print-preview"))
|
50
|
+
self.actionPreviewQ.setIcon(icon4)
|
51
|
+
self.actionAbout = QAction(MoodleTestGenerator)
|
52
|
+
self.actionAbout.setObjectName(u"actionAbout")
|
53
|
+
icon5 = QIcon(QIcon.fromTheme(u"help-about"))
|
54
|
+
self.actionAbout.setIcon(icon5)
|
55
|
+
self.actionDocumentation = QAction(MoodleTestGenerator)
|
56
|
+
self.actionDocumentation.setObjectName(u"actionDocumentation")
|
57
|
+
self.actionDocumentation.setIcon(icon5)
|
58
|
+
self.actionSetting = QAction(MoodleTestGenerator)
|
59
|
+
self.actionSetting.setObjectName(u"actionSetting")
|
60
|
+
icon6 = QIcon(QIcon.fromTheme(u"preferences-system"))
|
61
|
+
self.actionSetting.setIcon(icon6)
|
62
|
+
self.mainWidget = QWidget(MoodleTestGenerator)
|
63
|
+
self.mainWidget.setObjectName(u"mainWidget")
|
64
|
+
self.verticalLayout = QVBoxLayout(self.mainWidget)
|
65
|
+
self.verticalLayout.setObjectName(u"verticalLayout")
|
66
|
+
self.horizontalLayout_2 = QHBoxLayout()
|
67
|
+
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
|
68
|
+
self.horizontalLayout_2.setContentsMargins(-1, -1, -1, 14)
|
69
|
+
self.verticalLayout_4 = QVBoxLayout()
|
70
|
+
self.verticalLayout_4.setObjectName(u"verticalLayout_4")
|
71
|
+
self.verticalLayout_4.setContentsMargins(3, -1, -1, -1)
|
72
|
+
self.horizontalLayout = QHBoxLayout()
|
73
|
+
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
74
|
+
self.checkBoxQuestionListSelectAll = QCheckBox(self.mainWidget)
|
75
|
+
self.checkBoxQuestionListSelectAll.setObjectName(u"checkBoxQuestionListSelectAll")
|
76
|
+
|
77
|
+
self.horizontalLayout.addWidget(self.checkBoxQuestionListSelectAll)
|
78
|
+
|
79
|
+
self.horizontalSpacer_4 = QSpacerItem(20, 10, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
|
80
|
+
|
81
|
+
self.horizontalLayout.addItem(self.horizontalSpacer_4)
|
82
|
+
|
83
|
+
self.line_4 = QFrame(self.mainWidget)
|
84
|
+
self.line_4.setObjectName(u"line_4")
|
85
|
+
self.line_4.setFrameShape(QFrame.Shape.VLine)
|
86
|
+
self.line_4.setFrameShadow(QFrame.Shadow.Sunken)
|
87
|
+
|
88
|
+
self.horizontalLayout.addWidget(self.line_4)
|
89
|
+
|
90
|
+
self.label = QLabel(self.mainWidget)
|
91
|
+
self.label.setObjectName(u"label")
|
92
|
+
font = QFont()
|
93
|
+
font.setPointSize(14)
|
94
|
+
self.label.setFont(font)
|
95
|
+
self.label.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
|
96
|
+
|
97
|
+
self.horizontalLayout.addWidget(self.label)
|
98
|
+
|
99
|
+
self.horizontalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
100
|
+
|
101
|
+
self.horizontalLayout.addItem(self.horizontalSpacer)
|
102
|
+
|
103
|
+
|
104
|
+
self.verticalLayout_4.addLayout(self.horizontalLayout)
|
105
|
+
|
106
|
+
self.treeWidget = QTreeWidget(self.mainWidget)
|
107
|
+
__qtreewidgetitem = QTreeWidgetItem()
|
108
|
+
__qtreewidgetitem.setTextAlignment(2, Qt.AlignLeading|Qt.AlignVCenter);
|
109
|
+
self.treeWidget.setHeaderItem(__qtreewidgetitem)
|
110
|
+
self.treeWidget.setObjectName(u"treeWidget")
|
111
|
+
self.treeWidget.setBaseSize(QSize(0, 60))
|
112
|
+
self.treeWidget.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
|
113
|
+
self.treeWidget.header().setCascadingSectionResizes(True)
|
114
|
+
self.treeWidget.header().setMinimumSectionSize(8)
|
115
|
+
|
116
|
+
self.verticalLayout_4.addWidget(self.treeWidget)
|
117
|
+
|
118
|
+
|
119
|
+
self.horizontalLayout_2.addLayout(self.verticalLayout_4)
|
120
|
+
|
121
|
+
self.verticalLayout_2 = QVBoxLayout()
|
122
|
+
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
|
123
|
+
self.label_5 = QLabel(self.mainWidget)
|
124
|
+
self.label_5.setObjectName(u"label_5")
|
125
|
+
font1 = QFont()
|
126
|
+
font1.setPointSize(15)
|
127
|
+
self.label_5.setFont(font1)
|
128
|
+
|
129
|
+
self.verticalLayout_2.addWidget(self.label_5)
|
130
|
+
|
131
|
+
self.formLayout = QFormLayout()
|
132
|
+
self.formLayout.setObjectName(u"formLayout")
|
133
|
+
self.formLayout.setLabelAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
|
134
|
+
self.formLayout.setFormAlignment(Qt.AlignmentFlag.AlignHCenter|Qt.AlignmentFlag.AlignTop)
|
135
|
+
self.formLayout.setContentsMargins(5, 5, 5, 5)
|
136
|
+
self.label_6 = QLabel(self.mainWidget)
|
137
|
+
self.label_6.setObjectName(u"label_6")
|
138
|
+
|
139
|
+
self.formLayout.setWidget(0, QFormLayout.LabelRole, self.label_6)
|
140
|
+
|
141
|
+
self.pointCounter = QDoubleSpinBox(self.mainWidget)
|
142
|
+
self.pointCounter.setObjectName(u"pointCounter")
|
143
|
+
self.pointCounter.setEnabled(True)
|
144
|
+
sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
|
145
|
+
sizePolicy.setHorizontalStretch(0)
|
146
|
+
sizePolicy.setVerticalStretch(0)
|
147
|
+
sizePolicy.setHeightForWidth(self.pointCounter.sizePolicy().hasHeightForWidth())
|
148
|
+
self.pointCounter.setSizePolicy(sizePolicy)
|
149
|
+
self.pointCounter.setBaseSize(QSize(190, 0))
|
150
|
+
font2 = QFont()
|
151
|
+
font2.setPointSize(13)
|
152
|
+
self.pointCounter.setFont(font2)
|
153
|
+
self.pointCounter.setAutoFillBackground(False)
|
154
|
+
self.pointCounter.setInputMethodHints(Qt.InputMethodHint.ImhNone)
|
155
|
+
self.pointCounter.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.UpDownArrows)
|
156
|
+
self.pointCounter.setDecimals(1)
|
157
|
+
self.pointCounter.setMaximum(999.899999999999977)
|
158
|
+
|
159
|
+
self.formLayout.setWidget(0, QFormLayout.FieldRole, self.pointCounter)
|
160
|
+
|
161
|
+
self.label_7 = QLabel(self.mainWidget)
|
162
|
+
self.label_7.setObjectName(u"label_7")
|
163
|
+
|
164
|
+
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label_7)
|
165
|
+
|
166
|
+
self.questionCounter = QDoubleSpinBox(self.mainWidget)
|
167
|
+
self.questionCounter.setObjectName(u"questionCounter")
|
168
|
+
self.questionCounter.setFont(font2)
|
169
|
+
self.questionCounter.setDecimals(0)
|
170
|
+
self.questionCounter.setMaximum(300.000000000000000)
|
171
|
+
|
172
|
+
self.formLayout.setWidget(1, QFormLayout.FieldRole, self.questionCounter)
|
173
|
+
|
174
|
+
self.label_8 = QLabel(self.mainWidget)
|
175
|
+
self.label_8.setObjectName(u"label_8")
|
176
|
+
|
177
|
+
self.formLayout.setWidget(2, QFormLayout.LabelRole, self.label_8)
|
178
|
+
|
179
|
+
self.categoriesCounter = QSpinBox(self.mainWidget)
|
180
|
+
self.categoriesCounter.setObjectName(u"categoriesCounter")
|
181
|
+
self.categoriesCounter.setFont(font2)
|
182
|
+
self.categoriesCounter.setMaximum(999)
|
183
|
+
|
184
|
+
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.categoriesCounter)
|
185
|
+
|
186
|
+
|
187
|
+
self.verticalLayout_2.addLayout(self.formLayout)
|
188
|
+
|
189
|
+
self.line_3 = QFrame(self.mainWidget)
|
190
|
+
self.line_3.setObjectName(u"line_3")
|
191
|
+
self.line_3.setFrameShape(QFrame.Shape.HLine)
|
192
|
+
self.line_3.setFrameShadow(QFrame.Shadow.Sunken)
|
193
|
+
|
194
|
+
self.verticalLayout_2.addWidget(self.line_3)
|
195
|
+
|
196
|
+
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
197
|
+
|
198
|
+
self.verticalLayout_2.addItem(self.verticalSpacer)
|
199
|
+
|
200
|
+
self.label_2 = QLabel(self.mainWidget)
|
201
|
+
self.label_2.setObjectName(u"label_2")
|
202
|
+
self.label_2.setFont(font)
|
203
|
+
self.label_2.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
|
204
|
+
|
205
|
+
self.verticalLayout_2.addWidget(self.label_2)
|
206
|
+
|
207
|
+
self.buttonSpreadSheet = QPushButton(self.mainWidget)
|
208
|
+
self.buttonSpreadSheet.setObjectName(u"buttonSpreadSheet")
|
209
|
+
#if QT_CONFIG(tooltip)
|
210
|
+
self.buttonSpreadSheet.setToolTip(u"<html><head/><body><p>Select the Spreadsheet File with all the Questions inside</p></body></html>")
|
211
|
+
#endif // QT_CONFIG(tooltip)
|
212
|
+
|
213
|
+
self.verticalLayout_2.addWidget(self.buttonSpreadSheet)
|
214
|
+
|
215
|
+
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
216
|
+
|
217
|
+
self.verticalLayout_2.addItem(self.horizontalSpacer_2)
|
218
|
+
|
219
|
+
self.line_2 = QFrame(self.mainWidget)
|
220
|
+
self.line_2.setObjectName(u"line_2")
|
221
|
+
self.line_2.setFrameShape(QFrame.Shape.HLine)
|
222
|
+
self.line_2.setFrameShadow(QFrame.Shadow.Sunken)
|
223
|
+
|
224
|
+
self.verticalLayout_2.addWidget(self.line_2)
|
225
|
+
|
226
|
+
self.label_3 = QLabel(self.mainWidget)
|
227
|
+
self.label_3.setObjectName(u"label_3")
|
228
|
+
self.label_3.setFont(font)
|
229
|
+
|
230
|
+
self.verticalLayout_2.addWidget(self.label_3)
|
231
|
+
|
232
|
+
self.formLayout_2 = QFormLayout()
|
233
|
+
self.formLayout_2.setObjectName(u"formLayout_2")
|
234
|
+
self.formLayout_2.setContentsMargins(5, 5, 5, 5)
|
235
|
+
self.label_9 = QLabel(self.mainWidget)
|
236
|
+
self.label_9.setObjectName(u"label_9")
|
237
|
+
|
238
|
+
self.formLayout_2.setWidget(2, QFormLayout.LabelRole, self.label_9)
|
239
|
+
|
240
|
+
self.checkBoxIncludeCategories = QCheckBox(self.mainWidget)
|
241
|
+
self.checkBoxIncludeCategories.setObjectName(u"checkBoxIncludeCategories")
|
242
|
+
|
243
|
+
self.formLayout_2.setWidget(2, QFormLayout.FieldRole, self.checkBoxIncludeCategories)
|
244
|
+
|
245
|
+
self.spinBoxDefaultQVariant = QSpinBox(self.mainWidget)
|
246
|
+
self.spinBoxDefaultQVariant.setObjectName(u"spinBoxDefaultQVariant")
|
247
|
+
|
248
|
+
self.formLayout_2.setWidget(1, QFormLayout.FieldRole, self.spinBoxDefaultQVariant)
|
249
|
+
|
250
|
+
self.checkBoxUseDefQVariant = QCheckBox(self.mainWidget)
|
251
|
+
self.checkBoxUseDefQVariant.setObjectName(u"checkBoxUseDefQVariant")
|
252
|
+
|
253
|
+
self.formLayout_2.setWidget(0, QFormLayout.FieldRole, self.checkBoxUseDefQVariant)
|
254
|
+
|
255
|
+
self.label_10 = QLabel(self.mainWidget)
|
256
|
+
self.label_10.setObjectName(u"label_10")
|
257
|
+
|
258
|
+
self.formLayout_2.setWidget(1, QFormLayout.LabelRole, self.label_10)
|
259
|
+
|
260
|
+
self.label_11 = QLabel(self.mainWidget)
|
261
|
+
self.label_11.setObjectName(u"label_11")
|
262
|
+
|
263
|
+
self.formLayout_2.setWidget(0, QFormLayout.LabelRole, self.label_11)
|
264
|
+
|
265
|
+
|
266
|
+
self.verticalLayout_2.addLayout(self.formLayout_2)
|
267
|
+
|
268
|
+
self.buttonTestGen = QPushButton(self.mainWidget)
|
269
|
+
self.buttonTestGen.setObjectName(u"buttonTestGen")
|
270
|
+
self.buttonTestGen.setEnabled(False)
|
271
|
+
#if QT_CONFIG(tooltip)
|
272
|
+
self.buttonTestGen.setToolTip(u"<html><head/><body><p>exporst all selected questions to the test File</p></body></html>")
|
273
|
+
#endif // QT_CONFIG(tooltip)
|
274
|
+
|
275
|
+
self.verticalLayout_2.addWidget(self.buttonTestGen)
|
276
|
+
|
277
|
+
self.line = QFrame(self.mainWidget)
|
278
|
+
self.line.setObjectName(u"line")
|
279
|
+
self.line.setFrameShape(QFrame.Shape.VLine)
|
280
|
+
self.line.setFrameShadow(QFrame.Shadow.Sunken)
|
281
|
+
|
282
|
+
self.verticalLayout_2.addWidget(self.line)
|
283
|
+
|
284
|
+
|
285
|
+
self.horizontalLayout_2.addLayout(self.verticalLayout_2)
|
286
|
+
|
287
|
+
|
288
|
+
self.verticalLayout.addLayout(self.horizontalLayout_2)
|
289
|
+
|
290
|
+
self.label_4 = QLabel(self.mainWidget)
|
291
|
+
self.label_4.setObjectName(u"label_4")
|
292
|
+
|
293
|
+
self.verticalLayout.addWidget(self.label_4)
|
294
|
+
|
295
|
+
self.loggerWindow = QTextEdit(self.mainWidget)
|
296
|
+
self.loggerWindow.setObjectName(u"loggerWindow")
|
297
|
+
self.loggerWindow.setMinimumSize(QSize(0, 0))
|
298
|
+
self.loggerWindow.setMaximumSize(QSize(16777215, 373))
|
299
|
+
self.loggerWindow.setBaseSize(QSize(0, 30))
|
300
|
+
self.loggerWindow.setTextInteractionFlags(Qt.TextInteractionFlag.NoTextInteraction)
|
301
|
+
|
302
|
+
self.verticalLayout.addWidget(self.loggerWindow)
|
303
|
+
|
304
|
+
MoodleTestGenerator.setCentralWidget(self.mainWidget)
|
305
|
+
self.menubar = QMenuBar(MoodleTestGenerator)
|
306
|
+
self.menubar.setObjectName(u"menubar")
|
307
|
+
self.menubar.setGeometry(QRect(0, 0, 936, 33))
|
308
|
+
self.menuFile = QMenu(self.menubar)
|
309
|
+
self.menuFile.setObjectName(u"menuFile")
|
310
|
+
self.menuTools = QMenu(self.menubar)
|
311
|
+
self.menuTools.setObjectName(u"menuTools")
|
312
|
+
self.menuHelp = QMenu(self.menubar)
|
313
|
+
self.menuHelp.setObjectName(u"menuHelp")
|
314
|
+
MoodleTestGenerator.setMenuBar(self.menubar)
|
315
|
+
self.statusbar = QStatusBar(MoodleTestGenerator)
|
316
|
+
self.statusbar.setObjectName(u"statusbar")
|
317
|
+
MoodleTestGenerator.setStatusBar(self.statusbar)
|
318
|
+
self.toolBar = QToolBar(MoodleTestGenerator)
|
319
|
+
self.toolBar.setObjectName(u"toolBar")
|
320
|
+
MoodleTestGenerator.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.toolBar)
|
321
|
+
self.toolBar_3 = QToolBar(MoodleTestGenerator)
|
322
|
+
self.toolBar_3.setObjectName(u"toolBar_3")
|
323
|
+
MoodleTestGenerator.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.toolBar_3)
|
324
|
+
self.toolBar_2 = QToolBar(MoodleTestGenerator)
|
325
|
+
self.toolBar_2.setObjectName(u"toolBar_2")
|
326
|
+
MoodleTestGenerator.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.toolBar_2)
|
327
|
+
|
328
|
+
self.menubar.addAction(self.menuFile.menuAction())
|
329
|
+
self.menubar.addAction(self.menuTools.menuAction())
|
330
|
+
self.menubar.addAction(self.menuHelp.menuAction())
|
331
|
+
self.menuFile.addAction(self.actionInput_Spreadsheet)
|
332
|
+
self.menuTools.addAction(self.actionEquationChecker)
|
333
|
+
self.menuTools.addAction(self.actionParseAll)
|
334
|
+
self.menuTools.addAction(self.actionPreviewQ)
|
335
|
+
self.menuTools.addAction(self.actionSetting)
|
336
|
+
self.menuHelp.addAction(self.actionAbout)
|
337
|
+
self.menuHelp.addAction(self.actionDocumentation)
|
338
|
+
self.toolBar.addAction(self.actionInput_Spreadsheet)
|
339
|
+
self.toolBar.addAction(self.actionParseAll)
|
340
|
+
self.toolBar.addSeparator()
|
341
|
+
self.toolBar_3.addAction(self.actionEquationChecker)
|
342
|
+
self.toolBar_3.addAction(self.actionPreviewQ)
|
343
|
+
self.toolBar_2.addAction(self.actionDocumentation)
|
344
|
+
self.toolBar_2.addAction(self.actionSetting)
|
345
|
+
|
346
|
+
self.retranslateUi(MoodleTestGenerator)
|
347
|
+
|
348
|
+
QMetaObject.connectSlotsByName(MoodleTestGenerator)
|
349
|
+
# setupUi
|
350
|
+
|
351
|
+
def retranslateUi(self, MoodleTestGenerator):
|
352
|
+
MoodleTestGenerator.setWindowTitle(QCoreApplication.translate("MoodleTestGenerator", u"excel 2 moodle", None))
|
353
|
+
self.actionInput_Spreadsheet.setText(QCoreApplication.translate("MoodleTestGenerator", u"&Input Spreadsheet", None))
|
354
|
+
#if QT_CONFIG(shortcut)
|
355
|
+
self.actionInput_Spreadsheet.setShortcut(QCoreApplication.translate("MoodleTestGenerator", u"Ctrl+O", None))
|
356
|
+
#endif // QT_CONFIG(shortcut)
|
357
|
+
self.actionOutput_Folder.setText(QCoreApplication.translate("MoodleTestGenerator", u"&Output Folder", None))
|
358
|
+
self.actionEquationChecker.setText(QCoreApplication.translate("MoodleTestGenerator", u"&Equation Checker", None))
|
359
|
+
self.actionParseAll.setText(QCoreApplication.translate("MoodleTestGenerator", u"&Parse all Questions", None))
|
360
|
+
#if QT_CONFIG(tooltip)
|
361
|
+
self.actionParseAll.setToolTip(QCoreApplication.translate("MoodleTestGenerator", u"Parses all questions inside the spreadsheet", None))
|
362
|
+
#endif // QT_CONFIG(tooltip)
|
363
|
+
#if QT_CONFIG(shortcut)
|
364
|
+
self.actionParseAll.setShortcut(QCoreApplication.translate("MoodleTestGenerator", u"Ctrl+R", None))
|
365
|
+
#endif // QT_CONFIG(shortcut)
|
366
|
+
self.actionPreviewQ.setText(QCoreApplication.translate("MoodleTestGenerator", u"Preview Question", None))
|
367
|
+
#if QT_CONFIG(shortcut)
|
368
|
+
self.actionPreviewQ.setShortcut(QCoreApplication.translate("MoodleTestGenerator", u"Ctrl+P", None))
|
369
|
+
#endif // QT_CONFIG(shortcut)
|
370
|
+
self.actionAbout.setText(QCoreApplication.translate("MoodleTestGenerator", u"About", None))
|
371
|
+
self.actionDocumentation.setText(QCoreApplication.translate("MoodleTestGenerator", u"Documentation", None))
|
372
|
+
#if QT_CONFIG(shortcut)
|
373
|
+
self.actionDocumentation.setShortcut(QCoreApplication.translate("MoodleTestGenerator", u"F1", None))
|
374
|
+
#endif // QT_CONFIG(shortcut)
|
375
|
+
self.actionSetting.setText(QCoreApplication.translate("MoodleTestGenerator", u"Settings", None))
|
376
|
+
self.checkBoxQuestionListSelectAll.setText(QCoreApplication.translate("MoodleTestGenerator", u"Select all", None))
|
377
|
+
self.label.setText(QCoreApplication.translate("MoodleTestGenerator", u"Question List", None))
|
378
|
+
___qtreewidgetitem = self.treeWidget.headerItem()
|
379
|
+
___qtreewidgetitem.setText(3, QCoreApplication.translate("MoodleTestGenerator", u"Variant", None));
|
380
|
+
___qtreewidgetitem.setText(2, QCoreApplication.translate("MoodleTestGenerator", u"Points", None));
|
381
|
+
___qtreewidgetitem.setText(1, QCoreApplication.translate("MoodleTestGenerator", u"Description", None));
|
382
|
+
___qtreewidgetitem.setText(0, QCoreApplication.translate("MoodleTestGenerator", u"Question ID", None));
|
383
|
+
self.label_5.setText(QCoreApplication.translate("MoodleTestGenerator", u"Selected:", None))
|
384
|
+
self.label_6.setText(QCoreApplication.translate("MoodleTestGenerator", u"Points", None))
|
385
|
+
self.pointCounter.setPrefix("")
|
386
|
+
self.label_7.setText(QCoreApplication.translate("MoodleTestGenerator", u"Questions", None))
|
387
|
+
self.questionCounter.setPrefix("")
|
388
|
+
self.label_8.setText(QCoreApplication.translate("MoodleTestGenerator", u"Categories", None))
|
389
|
+
self.categoriesCounter.setSuffix("")
|
390
|
+
self.categoriesCounter.setPrefix("")
|
391
|
+
self.label_2.setText(QCoreApplication.translate("MoodleTestGenerator", u"Input", None))
|
392
|
+
self.buttonSpreadSheet.setText(QCoreApplication.translate("MoodleTestGenerator", u"Select spreadsheet", None))
|
393
|
+
self.label_3.setText(QCoreApplication.translate("MoodleTestGenerator", u"Output", None))
|
394
|
+
#if QT_CONFIG(tooltip)
|
395
|
+
self.label_9.setToolTip(QCoreApplication.translate("MoodleTestGenerator", u"If enabled, all questions will be categorized, when importing into moodle. Otherwise they will all be imported into one category", None))
|
396
|
+
#endif // QT_CONFIG(tooltip)
|
397
|
+
self.label_9.setText(QCoreApplication.translate("MoodleTestGenerator", u"Include Questions in Categories", None))
|
398
|
+
self.checkBoxIncludeCategories.setText("")
|
399
|
+
self.checkBoxUseDefQVariant.setText("")
|
400
|
+
self.label_10.setText(QCoreApplication.translate("MoodleTestGenerator", u"Default Question Variant", None))
|
401
|
+
#if QT_CONFIG(tooltip)
|
402
|
+
self.label_11.setToolTip(QCoreApplication.translate("MoodleTestGenerator", u"If enabled it will always use the question variant that is set below. If not, it will ask everytime, which question Variant should be used", None))
|
403
|
+
#endif // QT_CONFIG(tooltip)
|
404
|
+
self.label_11.setText(QCoreApplication.translate("MoodleTestGenerator", u"Use default question Variant", None))
|
405
|
+
self.buttonTestGen.setText(QCoreApplication.translate("MoodleTestGenerator", u"export selected Questions to examfile", None))
|
406
|
+
self.label_4.setText(QCoreApplication.translate("MoodleTestGenerator", u"Logger", None))
|
407
|
+
self.menuFile.setTitle(QCoreApplication.translate("MoodleTestGenerator", u"File", None))
|
408
|
+
self.menuTools.setTitle(QCoreApplication.translate("MoodleTestGenerator", u"Tools", None))
|
409
|
+
self.menuHelp.setTitle(QCoreApplication.translate("MoodleTestGenerator", u"Help", None))
|
410
|
+
self.toolBar.setWindowTitle(QCoreApplication.translate("MoodleTestGenerator", u"toolBar", None))
|
411
|
+
self.toolBar_3.setWindowTitle(QCoreApplication.translate("MoodleTestGenerator", u"toolBar_3", None))
|
412
|
+
self.toolBar_2.setWindowTitle(QCoreApplication.translate("MoodleTestGenerator", u"toolBar_2", None))
|
413
|
+
# retranslateUi
|
414
|
+
|
@@ -2,12 +2,12 @@ excel2moodle/__init__.py,sha256=nb37g9Zga4KqTA5r-GFei9_XCunoPESxww9BL8zzMBI,3841
|
|
2
2
|
excel2moodle/__main__.py,sha256=yLls1C3w070wtrrRl3_HXs5TNaO8l0yRDGtIAcHmeDk,695
|
3
3
|
excel2moodle/core/__init__.py,sha256=E7smxf7ESHlucvho4Gb5oaTHA7IsOv9J-UDIsoKwp84,399
|
4
4
|
excel2moodle/core/category.py,sha256=6U10HgQQVi0BYO28XrsLbYFqr0GbxEN9U2-fPDTM1Ng,4149
|
5
|
-
excel2moodle/core/dataStructure.py,sha256=
|
5
|
+
excel2moodle/core/dataStructure.py,sha256=8cLqGZLhHRscohrstvsYARWvKekGAfdoMV1zWuUpHCA,6200
|
6
6
|
excel2moodle/core/etHelpers.py,sha256=_fd-fGMVNWt1l8FY7xcA2uXOBahxtq8ggYxRYm4SwdA,2354
|
7
7
|
excel2moodle/core/exceptions.py,sha256=3OLVHMCBgETiOxSsirlsCPvlMN5UgEQcMkRDkCfrUs4,675
|
8
8
|
excel2moodle/core/globals.py,sha256=9V9-KBSsHMdsRZWg2wGrvjAd6dc3XZG4pNPnun0AHGE,3595
|
9
9
|
excel2moodle/core/numericMultiQ.py,sha256=InBrn-tsCCYwDb78sGR3FyFxVeN0GfIg63JGtr_tqg4,2751
|
10
|
-
excel2moodle/core/parser.py,sha256=
|
10
|
+
excel2moodle/core/parser.py,sha256=ruSFHKjwpXggaETrtsUBdZK1BENCe2wppmOLdpKrAAs,13455
|
11
11
|
excel2moodle/core/question.py,sha256=4mbzy6ZodvdM5QfBZltR950BmMdXqSBe9V7HBLZMewM,4198
|
12
12
|
excel2moodle/core/questionValidator.py,sha256=6leCAvMFOieiVJtQEYx4iihiaKuuSBlCpBkpqbzKa3M,4139
|
13
13
|
excel2moodle/core/questionWriter.py,sha256=kyUTrnjWrLEWdez5_7FPNJ0Cs_fF5d16oOQiVvHv3zA,10242
|
@@ -15,7 +15,7 @@ excel2moodle/core/stringHelpers.py,sha256=c92YYFluZ6-NIM7K1k0SzN_zB82hh3huNZMH0N
|
|
15
15
|
excel2moodle/extra/__init__.py,sha256=e70OmuW3j7N4ErIIHlK4vkmCKcpRbitJCdJvzjego8c,339
|
16
16
|
excel2moodle/extra/equationVerification.py,sha256=FOvVBQZ357fbA5nYkHjvvWWVP3pQpo4RK3H7vru9v3A,4278
|
17
17
|
excel2moodle/ui/__init__.py,sha256=4EdGtpzwH3rgw4xW9E5x9kdPQYwKbo9rehHRZTNxCrQ,44
|
18
|
-
excel2moodle/ui/appUi.py,sha256=
|
18
|
+
excel2moodle/ui/appUi.py,sha256=gWLJ3vU-KcHAz0HQXrOk2hGi3LD_8SSC5aPVEpayMEA,9518
|
19
19
|
excel2moodle/ui/dialogs.py,sha256=C58PzPLfkzglsRl-x8Y23TC08_JG03JgFCVFfEi_od8,2961
|
20
20
|
excel2moodle/ui/questionPreviewDialog.py,sha256=_rJvz1GM90aNnj3P6SugEezK7JW6m74ZALgkChohWLM,4980
|
21
21
|
excel2moodle/ui/settings.py,sha256=Zz4zxdGC55Ma6pB1HWdPdiAsN0fnqrPfgOFgSkVnKNA,1092
|
@@ -23,8 +23,9 @@ excel2moodle/ui/treewidget.py,sha256=xiYWhJeJ9o9Iubtr44HcyJas9v4m8aBsHNdokQAHi80
|
|
23
23
|
excel2moodle/ui/variantDialog.py,sha256=snVaF3_YAc7NWjMRg7NzbjL_PzNbOpt4eiqElkE46io,5414
|
24
24
|
excel2moodle/ui/windowDoc.py,sha256=IciZpwrLnGzIQV1aCdKQBg6km3oufHGs8havTFzNJyU,1055
|
25
25
|
excel2moodle/ui/windowEquationChecker.py,sha256=fLyal3sbJwpthWCAxLB5vbSFOX23JoivoYksNp3mZVY,7925
|
26
|
-
excel2moodle
|
27
|
-
excel2moodle-0.3.
|
28
|
-
excel2moodle-0.3.
|
29
|
-
excel2moodle-0.3.
|
30
|
-
excel2moodle-0.3.
|
26
|
+
excel2moodle/ui/windowMain.py,sha256=sB1ahkAwxFxO3EYP3X_MuB6ohgXwK5NUQHWeFo4eqrI,21062
|
27
|
+
excel2moodle-0.3.2.dist-info/licenses/LICENSE,sha256=ywQqe6Sitymkf2lV2NRcx_aGsaC-KbSl_EfEsRXmNRw,35135
|
28
|
+
excel2moodle-0.3.2.dist-info/METADATA,sha256=f_TnbqQEmg8wy6WuvMuYOTd8u_-h5qw4aKADlcvtzsM,2904
|
29
|
+
excel2moodle-0.3.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
30
|
+
excel2moodle-0.3.2.dist-info/top_level.txt,sha256=5V1xRUQ9o7UmOCmNoWCZPAuy5nXp3Qbzyqch8fUGT_c,13
|
31
|
+
excel2moodle-0.3.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|