1 | #include "Screen.h" |
---|
2 | #include "screen/ScreenDome.h" |
---|
3 | #include "screen/ScreenPlane.h" |
---|
4 | #include "screen/ScreenBox.h" |
---|
5 | #include "screen/ScreenModel.h" |
---|
6 | #include "gui/Defines.h" |
---|
7 | #include "gui/QScreenWidget.h" |
---|
8 | |
---|
9 | using namespace projection; |
---|
10 | |
---|
11 | QScreenWidget::QScreenWidget(QWidget* pParent, Qt::WFlags flags) |
---|
12 | : QWidget(pParent, flags) |
---|
13 | { |
---|
14 | ui.setupUi(this); |
---|
15 | |
---|
16 | m_pScreen = NULL; |
---|
17 | } |
---|
18 | |
---|
19 | QScreenWidget::~QScreenWidget() |
---|
20 | { |
---|
21 | } |
---|
22 | |
---|
23 | void QScreenWidget::setScreen(Screen* pScreen) |
---|
24 | { |
---|
25 | m_pScreen = pScreen; |
---|
26 | ui.typeComboBox->clear(); |
---|
27 | for (unsigned int i=0; i<m_pScreen->getNumShapes(); ++i) |
---|
28 | ui.typeComboBox->addItem(m_pScreen->getShapeName(i)); |
---|
29 | |
---|
30 | updateGUI(); |
---|
31 | } |
---|
32 | |
---|
33 | void QScreenWidget::updateGUI() |
---|
34 | { |
---|
35 | if (m_pScreen) |
---|
36 | { |
---|
37 | ui.transformWidget->setMatrix(m_pScreen->getMatrix()); |
---|
38 | |
---|
39 | if (m_pScreen->getCurrentShapeName() == "Dome") |
---|
40 | { |
---|
41 | ScreenDome* pScreenDome = (ScreenDome*)m_pScreen->getCurrentShape(); |
---|
42 | ui.domeRadiusEdit->setText(formatValue(pScreenDome->getRadius())); |
---|
43 | ui.domeAzimResSpinBox->setValue(pScreenDome->getAzimResolution()); |
---|
44 | ui.domeElevResSpinBox->setValue(pScreenDome->getElevResolution()); |
---|
45 | ui.domeSubdivSpinBox->setValue(pScreenDome->getSubdivision()); |
---|
46 | ui.domeFullDomeCheckBox->setChecked(pScreenDome->getFullDome()); |
---|
47 | } |
---|
48 | else if (m_pScreen->getCurrentShapeName() == "Plane") |
---|
49 | { |
---|
50 | ScreenPlane* pScreenPlane = (ScreenPlane*)m_pScreen->getCurrentShape(); |
---|
51 | ui.planeWidthEdit->setText(formatValue(pScreenPlane->getWidth())); |
---|
52 | ui.planeHeightEdit->setText(formatValue(pScreenPlane->getHeight())); |
---|
53 | ui.planeHorResSpinBox->setValue(pScreenPlane->getHorResolution()); |
---|
54 | ui.planeVertResSpinBox->setValue(pScreenPlane->getVertResolution()); |
---|
55 | } |
---|
56 | else if (m_pScreen->getCurrentShapeName() == "Box") |
---|
57 | { |
---|
58 | ScreenBox* pScreenBox = (ScreenBox*)m_pScreen->getCurrentShape(); |
---|
59 | ui.boxWidthEdit->setText(formatValue(pScreenBox->getWidth())); |
---|
60 | ui.boxHeightEdit->setText(formatValue(pScreenBox->getHeight())); |
---|
61 | ui.boxDepthEdit->setText(formatValue(pScreenBox->getDepth())); |
---|
62 | ui.boxHorResSpinBox->setValue(pScreenBox->getHorResolution()); |
---|
63 | ui.boxVertResSpinBox->setValue(pScreenBox->getVertResolution()); |
---|
64 | ui.boxDepthResSpinBox->setValue(pScreenBox->getDepthResolution()); |
---|
65 | } |
---|
66 | else if (m_pScreen->getCurrentShapeName() == "Model") |
---|
67 | { |
---|
68 | ScreenModel* pScreenModel = (ScreenModel*)m_pScreen->getCurrentShape(); |
---|
69 | ui.modelFileNameEdit->setText(pScreenModel->getFileName()); |
---|
70 | } |
---|
71 | ui.frameCheckBox->setChecked(m_pScreen->getShowFrame()); |
---|
72 | ui.frameLineWidthSpinBox->setValue(m_pScreen->getFrameLineWidth()); |
---|
73 | |
---|
74 | ui.typeComboBox->setCurrentIndex(ui.typeComboBox->findText(m_pScreen->getCurrentShapeName())); |
---|
75 | ui.stackedWidget->setCurrentIndex(ui.typeComboBox->currentIndex()); |
---|
76 | } |
---|
77 | } |
---|
78 | |
---|
79 | void QScreenWidget::on_typeComboBox_activated(int) |
---|
80 | { |
---|
81 | if (m_pScreen) |
---|
82 | { |
---|
83 | m_pScreen->setCurrentShape(ui.typeComboBox->currentText()); |
---|
84 | updateGUI(); |
---|
85 | } |
---|
86 | } |
---|
87 | |
---|
88 | void QScreenWidget::on_transformWidget_matrixChanged(const TransformMatrix& matrix) |
---|
89 | { |
---|
90 | if (m_pScreen && m_pScreen->getMatrix() != matrix) |
---|
91 | { |
---|
92 | m_pScreen->setMatrix(matrix); |
---|
93 | updateGUI(); |
---|
94 | } |
---|
95 | } |
---|
96 | |
---|
97 | void QScreenWidget::on_domeRadiusEdit_editingFinished() |
---|
98 | { |
---|
99 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") |
---|
100 | ((ScreenDome*)m_pScreen->getCurrentShape())->setRadius(ui.domeRadiusEdit->text().toDouble()); |
---|
101 | } |
---|
102 | |
---|
103 | void QScreenWidget::on_domeAzimResSpinBox_valueChanged(int value) |
---|
104 | { |
---|
105 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") |
---|
106 | ((ScreenDome*)m_pScreen->getCurrentShape())->setAzimResolution(value); |
---|
107 | } |
---|
108 | |
---|
109 | void QScreenWidget::on_domeElevResSpinBox_valueChanged(int value) |
---|
110 | { |
---|
111 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") |
---|
112 | ((ScreenDome*)m_pScreen->getCurrentShape())->setElevResolution(value); |
---|
113 | } |
---|
114 | |
---|
115 | void QScreenWidget::on_domeSubdivSpinBox_valueChanged(int value) |
---|
116 | { |
---|
117 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") |
---|
118 | ((ScreenDome*)m_pScreen->getCurrentShape())->setSubdivision(value); |
---|
119 | } |
---|
120 | |
---|
121 | void QScreenWidget::on_domeFullDomeCheckBox_toggled(bool checked) |
---|
122 | { |
---|
123 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") |
---|
124 | ((ScreenDome*)m_pScreen->getCurrentShape())->setFullDome(checked); |
---|
125 | } |
---|
126 | |
---|
127 | void QScreenWidget::on_planeWidthEdit_editingFinished() |
---|
128 | { |
---|
129 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") |
---|
130 | ((ScreenPlane*)m_pScreen->getCurrentShape())->setWidth(ui.planeWidthEdit->text().toDouble()); |
---|
131 | } |
---|
132 | |
---|
133 | void QScreenWidget::on_planeHeightEdit_editingFinished() |
---|
134 | { |
---|
135 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") |
---|
136 | ((ScreenPlane*)m_pScreen->getCurrentShape())->setHeight(ui.planeHeightEdit->text().toDouble()); |
---|
137 | } |
---|
138 | |
---|
139 | void QScreenWidget::on_planeHorResSpinBox_valueChanged(int value) |
---|
140 | { |
---|
141 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") |
---|
142 | ((ScreenPlane*)m_pScreen->getCurrentShape())->setHorResolution(value); |
---|
143 | } |
---|
144 | |
---|
145 | void QScreenWidget::on_planeVertResSpinBox_valueChanged(int value) |
---|
146 | { |
---|
147 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") |
---|
148 | ((ScreenPlane*)m_pScreen->getCurrentShape())->setVertResolution(value); |
---|
149 | } |
---|
150 | |
---|
151 | void QScreenWidget::on_boxWidthEdit_editingFinished() |
---|
152 | { |
---|
153 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") |
---|
154 | ((ScreenBox*)m_pScreen->getCurrentShape())->setWidth(ui.boxWidthEdit->text().toDouble()); |
---|
155 | } |
---|
156 | |
---|
157 | void QScreenWidget::on_boxHeightEdit_editingFinished() |
---|
158 | { |
---|
159 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") |
---|
160 | ((ScreenBox*)m_pScreen->getCurrentShape())->setHeight(ui.boxHeightEdit->text().toDouble()); |
---|
161 | } |
---|
162 | |
---|
163 | void QScreenWidget::on_boxDepthEdit_editingFinished() |
---|
164 | { |
---|
165 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") |
---|
166 | ((ScreenBox*)m_pScreen->getCurrentShape())->setDepth(ui.boxDepthEdit->text().toDouble()); |
---|
167 | } |
---|
168 | |
---|
169 | void QScreenWidget::on_boxHorResSpinBox_valueChanged(int value) |
---|
170 | { |
---|
171 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") |
---|
172 | ((ScreenBox*)m_pScreen->getCurrentShape())->setHorResolution(value); |
---|
173 | } |
---|
174 | |
---|
175 | void QScreenWidget::on_boxVertResSpinBox_valueChanged(int value) |
---|
176 | { |
---|
177 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") |
---|
178 | ((ScreenBox*)m_pScreen->getCurrentShape())->setVertResolution(value); |
---|
179 | } |
---|
180 | |
---|
181 | void QScreenWidget::on_boxDepthResSpinBox_valueChanged(int value) |
---|
182 | { |
---|
183 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") |
---|
184 | ((ScreenBox*)m_pScreen->getCurrentShape())->setDepthResolution(value); |
---|
185 | } |
---|
186 | |
---|
187 | void QScreenWidget::on_modelFileNameEdit_editingFinished() |
---|
188 | { |
---|
189 | if (m_pScreen && m_pScreen->getCurrentShapeName() == "Model" && ui.modelFileNameEdit->text() != "" ) |
---|
190 | { |
---|
191 | if (QFile::exists(ui.modelFileNameEdit->text())) |
---|
192 | { |
---|
193 | ((ScreenModel*)m_pScreen->getCurrentShape())->setFileName(ui.modelFileNameEdit->text()); |
---|
194 | //QMessageBox::information(this,"moep!","."); |
---|
195 | } |
---|
196 | else |
---|
197 | { |
---|
198 | QMessageBox::warning(this,"Filename not Found!","Filename not Found!<br><br>Your selection will be cleared."); |
---|
199 | ui.modelFileNameEdit->clear(); |
---|
200 | } |
---|
201 | } |
---|
202 | } |
---|
203 | |
---|
204 | void QScreenWidget::on_modelBrowseButton_clicked() |
---|
205 | { |
---|
206 | QString fileName = QFileDialog::getOpenFileName(this, "Choose a file to open", ui.modelFileNameEdit->text(), "Model files (*.obj)"); |
---|
207 | if (!fileName.isEmpty()) { |
---|
208 | ui.modelFileNameEdit->setText(fileName); |
---|
209 | on_modelFileNameEdit_editingFinished(); |
---|
210 | } |
---|
211 | } |
---|
212 | |
---|
213 | void QScreenWidget::on_frameCheckBox_toggled(bool checked) |
---|
214 | { |
---|
215 | if (m_pScreen) |
---|
216 | m_pScreen->setShowFrame(checked); |
---|
217 | } |
---|
218 | |
---|
219 | void QScreenWidget::on_frameLineWidthSpinBox_valueChanged(int value) |
---|
220 | { |
---|
221 | if (m_pScreen) |
---|
222 | m_pScreen->setFrameLineWidth(value); |
---|
223 | } |
---|