3 //#include <QTextStream>
5 #include "controlDialog.h"
6 #include "myglwidget.h"
8 ControlDialog::ControlDialog(QWidget
*parent
)
11 std::cout
<< "ControlDialog::ControlDialog()\n";
16 connect(this, SIGNAL(glSceneNeedsUpdate()), &m_GLScene
, SLOT(updateGL()));
18 connect(fileNameEdit
, SIGNAL(returnPressed()), this, SLOT(on_fileNameChangedManually()));
19 connect(this, SIGNAL(fileNameChanged(QString
)), &m_GLScene
, SLOT(setFileName(QString
)));
21 // Initialize axis, camera, sphere.
23 m_axisX
.setColor(QColor(255, 0, 0));
24 m_axisY
.setColor(QColor(0, 255, 0));
25 m_axisZ
.setColor(QColor(0, 0, 255));
26 m_localAxisSystem
= false;
29 m_camera
.setEyeX(eyeXEdit
->text().toFloat());
30 m_camera
.setEyeY(eyeYEdit
->text().toFloat());
31 m_camera
.setEyeZ(eyeZEdit
->text().toFloat());
33 m_camera
.setCenterX(centerXEdit
->text().toFloat());
34 m_camera
.setCenterY(centerYEdit
->text().toFloat());
35 m_camera
.setCenterZ(centerZEdit
->text().toFloat());
37 m_camera
.setUpX(upXEdit
->text().toFloat());
38 m_camera
.setUpY(upYEdit
->text().toFloat());
39 m_camera
.setUpZ(upZEdit
->text().toFloat());
42 m_sphere
.setRadius(radiusSpin
->value());
43 m_sphere
.setSlices(slicesSpin
->value());
44 m_sphere
.setStacks(stacksSpin
->value());
45 m_sphere
.setCulling(cullingCheck
->checkState() == Qt::Checked
?
48 // Pass objects to GL scene.
49 m_GLScene
.setAxis(AXIS_X
, &m_axisX
);
50 m_GLScene
.setAxis(AXIS_Y
, &m_axisY
);
51 m_GLScene
.setAxis(AXIS_Z
, &m_axisZ
);
53 m_GLScene
.setCamera(&m_camera
);
55 m_GLScene
.setSphere(&m_sphere
);
57 // Show scene and start animating.
58 m_GLScene
.setWindowTitle("GL Scene");
59 // Window manager might ignore the following line.
60 m_GLScene
.move(pos().x() + frameGeometry().width(), pos().y());
62 //m_GLScene.startAnimation();
65 ControlDialog::~ControlDialog()
67 std::cout
<< "ControlDialog::~ControlDialog()\n";
71 void ControlDialog::on_startButton_clicked()
73 std::cout
<< "ControlDialog::on_startButton_clicked()\n";
75 m_GLScene
.startAnimation();
76 stopButton
->setEnabled(true);
79 void ControlDialog::on_stopButton_clicked()
81 std::cout
<< "ControlDialog::on_stopButton_clicked()\n";
83 m_GLScene
.stopAnimation();
84 stopButton
->setEnabled(false);
87 void ControlDialog::on_exitButton_clicked()
89 // qApp is a global pointer referring to the unique application object.
90 qApp
->closeAllWindows();
93 void ControlDialog::on_xAxisVisibleCheck_stateChanged(int state
)
95 qDebug("ControlDialog::on_xAxisVisibleCheck_stateChanged()\n"
96 "New state = %d", state
);
98 m_axisX
.setVisible(state
== Qt::Checked
? true : false);
99 emit
glSceneNeedsUpdate();
102 void ControlDialog::on_yAxisVisibleCheck_stateChanged(int state
)
104 qDebug("ControlDialog::on_yAxisVisibleCheck_stateChanged()\n"
105 "New state = %d", state
);
107 m_axisY
.setVisible(state
== Qt::Checked
? true : false);
108 emit
glSceneNeedsUpdate();
111 void ControlDialog::on_zAxisVisibleCheck_stateChanged(int state
)
113 qDebug("ControlDialog::on_zAxisVisibleCheck_stateChanged()\n"
114 "New state = %d", state
);
116 m_axisZ
.setVisible(state
== Qt::Checked
? true : false);
117 emit
glSceneNeedsUpdate();
120 void ControlDialog::on_localAxisCheck_stateChanged(int state
)
122 qDebug("ControlDialog::on_localAxisCheck_stateChanged()\n"
123 "New state = %d", state
);
125 m_axisX
.setLocal(state
== Qt::Checked
? true : false);
126 m_axisY
.setLocal(state
== Qt::Checked
? true : false);
127 m_axisZ
.setLocal(state
== Qt::Checked
? true : false);
128 emit
glSceneNeedsUpdate();
131 void ControlDialog::on_stacksSpin_valueChanged(int i
)
133 qDebug("ControlDialog::on_stacksSpin_valueChanged()\n"
134 "New value = %d", i
);
136 m_sphere
.setStacks(i
);
137 emit
glSceneNeedsUpdate();
140 void ControlDialog::on_slicesSpin_valueChanged(int i
)
142 qDebug("ControlDialog::on_slicesSpin_valueChanged()\n"
143 "New value = %d", i
);
145 m_sphere
.setSlices(i
);
146 emit
glSceneNeedsUpdate();
149 void ControlDialog::on_radiusSpin_valueChanged(double d
)
151 qDebug("ControlDialog::on_radiusSpin_valueChanged()\n"
152 "New value = %f", d
);
154 m_sphere
.setRadius(d
);
155 emit
glSceneNeedsUpdate();
158 void ControlDialog::on_cullingCheck_stateChanged(int state
)
160 qDebug("ControlDialog::on_cullingCheck_stateChanged()\n"
161 "New state = %d", state
);
163 m_sphere
.setCulling(state
== Qt::Checked
? true : false);
166 // Camera tab related slots
167 void ControlDialog::on_eyeXEdit_textChanged(const QString
& text
)
169 qDebug("ControlDialog::on_eyeXEdit_textChanged()\n"
170 "New eyeX = %f", text
.toFloat());
172 m_camera
.setEyeX(text
.toFloat());
173 emit
glSceneNeedsUpdate();
176 void ControlDialog::on_eyeYEdit_textChanged(const QString
& text
)
178 qDebug("ControlDialog::on_eyeYEdit_textChanged()\n"
179 "New eyeY = %f", text
.toFloat());
181 m_camera
.setEyeY(text
.toFloat());
182 emit
glSceneNeedsUpdate();
185 void ControlDialog::on_eyeZEdit_textChanged(const QString
& text
)
187 qDebug("ControlDialog::on_eyeZEdit_textChanged()\n"
188 "New eyeZ = %f", text
.toFloat());
190 m_camera
.setEyeZ(text
.toFloat());
191 emit
glSceneNeedsUpdate();
194 void ControlDialog::on_centerXEdit_textChanged(const QString
& text
)
196 qDebug("ControlDialog::on_centerXEdit_textChanged()\n"
197 "New centerX = %f", text
.toFloat());
199 m_camera
.setCenterX(text
.toFloat());
200 emit
glSceneNeedsUpdate();
203 void ControlDialog::on_centerYEdit_textChanged(const QString
& text
)
205 qDebug("ControlDialog::on_centerYEdit_textChanged()\n"
206 "New centerY = %f", text
.toFloat());
208 m_camera
.setCenterY(text
.toFloat());
209 emit
glSceneNeedsUpdate();
212 void ControlDialog::on_centerZEdit_textChanged(const QString
& text
)
214 qDebug("ControlDialog::on_centerZEdit_textChanged()\n"
215 "New centerZ = %f", text
.toFloat());
217 m_camera
.setCenterZ(text
.toFloat());
218 emit
glSceneNeedsUpdate();
221 void ControlDialog::on_upXEdit_textChanged(const QString
& text
)
223 qDebug("ControlDialog::on_upXEdit_textChanged()\n"
224 "New upX = %f", text
.toFloat());
226 m_camera
.setUpX(text
.toFloat());
227 emit
glSceneNeedsUpdate();
230 void ControlDialog::on_upYEdit_textChanged(const QString
& text
)
232 qDebug("ControlDialog::on_upYEdit_textChanged()\n"
233 "New upY = %f", text
.toFloat());
235 m_camera
.setUpY(text
.toFloat());
236 emit
glSceneNeedsUpdate();
239 void ControlDialog::on_upZEdit_textChanged(const QString
& text
)
241 qDebug("ControlDialog::on_upZEdit_textChanged()\n"
242 "New upZ = %f", text
.toFloat());
244 m_camera
.setUpZ(text
.toFloat());
245 emit
glSceneNeedsUpdate();
248 void ControlDialog::on_browseFileButton_clicked(void)
251 qDebug("ControlDialog::on_browseFileButton_clicked()");
253 fileName
= QFileDialog::getOpenFileName(this, tr("Open data file"),
254 "/home", "Data files(*.dat);; All files(*)");
255 if (fileName
== NULL
)
258 fileNameEdit
->setText(fileName
);
259 emit
fileNameChanged(fileName
);
262 void ControlDialog::on_fileNameChangedManually(void)
264 qDebug("ControlDialog::on_fileNameChangedManually()");
266 QString fileName
= fileNameEdit
->text();
267 emit
fileNameChanged(fileName
);