-
Notifications
You must be signed in to change notification settings - Fork 0
/
AnswerDialog.py
114 lines (88 loc) · 3.04 KB
/
AnswerDialog.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# Qt classes
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
# Custom classes
from AnswersDialogGUI import Ui_Dialog
from Answer import Answer
'''
/!\
MAKE GUI CLASS QWIDGET SUBCLASS!!!
QtWidgets.QWidget
(otherwise signals won't work)
/!\
'''
class AnswerDialog(Ui_Dialog):
completed = pyqtSignal(Answer)
dialogRef = None
def __init__(self, dialog, question, answer, tags):
# Setup user interface
Ui_Dialog.__init__(self)
self.setupUi(dialog)
self.setupSliders()
self.questionLabel.setText(question)
if answer != None:
print(answer.comment)
self.comment_lineEdit.setText(answer.comment)
self.answerText_lineEdit.setText(answer.answer)
self.academicsSlider.setValue(answer.changes['academics'])
self.socialSlider.setValue(answer.changes['social'])
self.financesSlider.setValue(answer.changes['finances'])
self.healthSlider.setValue(answer.changes['health'])
# Setup connections
self.buttonBox.accepted.connect(self.on_validate)
self.resetButton.clicked.connect(self.resetSliders)
self.academicsSlider.valueChanged.connect(lambda:
self.labelSliderAca.setText(str(self.academicsSlider.value())))
self.socialSlider.valueChanged.connect(lambda:
self.labelSliderSoc.setText(str(self.socialSlider.value())))
self.financesSlider.valueChanged.connect(lambda:
self.labelSliderFin.setText(str(self.financesSlider.value())))
self.healthSlider.valueChanged.connect(lambda:
self.labelSliderHea.setText(str(self.healthSlider.value())))
self.dialogRef = dialog
self.suiteCombo.insertItem(0, "")
if tags.each() == None:
return
for t in tags.each():
self.suiteCombo.insertItem(0, t.val())
def resetSliders(self):
self.academicsSlider.setValue(0)
self.socialSlider.setValue(0)
self.financesSlider.setValue(0)
self.healthSlider.setValue(0)
# Define min and max value for each gauge
def setupSliders(self):
max = 100
min = -max
self.academicsSlider.setRange(min, max)
self.academicsSlider.setValue(0)
self.socialSlider.setRange(min, max)
self.socialSlider.setValue(0)
self.financesSlider.setRange(min, max)
self.financesSlider.setValue(0)
self.healthSlider.setRange(min, max)
self.healthSlider.setValue(0)
# The user pressed "ok", validate what he/she did
def on_validate(self):
# Get the user input
answerText = self.answerText_lineEdit.text()
commentText = self.comment_lineEdit.text()
# Verify it
if answerText is not None and answerText is not "":
if commentText == "":
commentText = None
changes = {
'academics' : self.academicsSlider.value(),
'social' : self.socialSlider.value(),
'finances' : self.financesSlider.value(),
'health' : self.healthSlider.value()
}
# Everything is ok, emit completed signal and dismiss the dialog
answer = Answer(answerText, changes, commentText, self.suiteCombo.currentText())
self.completed.emit(answer)
self.dialogRef.accept()
else:
messageBox = QMessageBox()
messageBox.setText('La réponse ne doit pas être vide!')
messageBox.exec()