Close old file and open new one
[agianapa.git] / qt / sphere-orbit-camera-gui / controlDialog.cpp
blob2c1b47c24f78aee55f1625ff525c9bb6b470bf9c
1 #include <iostream>
2 //#include <QString>
3 //#include <QTextStream>
5 #include "controlDialog.h"
6 #include "myglwidget.h"
8 ControlDialog::ControlDialog(QWidget *parent)
9 : QDialog(parent)
11 std::cout << "ControlDialog::ControlDialog()\n";
13 setupUi(this);
15 // Connect signals
16 connect(this, SIGNAL(glSceneNeedsUpdate()), &m_GLScene, SLOT(updateGL()));
17 connect(this, SIGNAL(fileNameChanged(QString)), &m_GLScene, SLOT(setFileName(QString)));
19 // Initialize axis, camera, sphere.
20 // XXX: axis
21 m_axisX.setColor(QColor(255, 0, 0));
22 m_axisY.setColor(QColor(0, 255, 0));
23 m_axisZ.setColor(QColor(0, 0, 255));
25 // Camera
26 m_camera.setEyeX(eyeXEdit->text().toFloat());
27 m_camera.setEyeY(eyeYEdit->text().toFloat());
28 m_camera.setEyeZ(eyeZEdit->text().toFloat());
30 m_camera.setCenterX(centerXEdit->text().toFloat());
31 m_camera.setCenterY(centerYEdit->text().toFloat());
32 m_camera.setCenterZ(centerZEdit->text().toFloat());
34 m_camera.setUpX(upXEdit->text().toFloat());
35 m_camera.setUpY(upYEdit->text().toFloat());
36 m_camera.setUpZ(upZEdit->text().toFloat());
38 // Sphere
39 m_sphere.setRadius(radiusSpin->value());
40 m_sphere.setSlices(slicesSpin->value());
41 m_sphere.setStacks(stacksSpin->value());
42 m_sphere.setCulling(cullingCheck->checkState() == Qt::Checked ?
43 true : false);
45 // Pass objects to GL scene.
46 m_GLScene.setAxis(AXIS_X, &m_axisX);
47 m_GLScene.setAxis(AXIS_Y, &m_axisY);
48 m_GLScene.setAxis(AXIS_Z, &m_axisZ);
50 m_GLScene.setCamera(&m_camera);
52 m_GLScene.setSphere(&m_sphere);
54 // Show scene and start animating.
55 m_GLScene.setWindowTitle("GL Scene");
56 // Window manager might ignore the following line.
57 m_GLScene.move(pos().x() + frameGeometry().width(), pos().y());
58 m_GLScene.show();
59 //m_GLScene.startAnimation();
62 ControlDialog::~ControlDialog()
64 std::cout << "ControlDialog::~ControlDialog()\n";
68 void ControlDialog::on_startButton_clicked()
70 std::cout << "ControlDialog::on_startButton_clicked()\n";
72 m_GLScene.startAnimation();
73 stopButton->setEnabled(true);
76 void ControlDialog::on_stopButton_clicked()
78 std::cout << "ControlDialog::on_stopButton_clicked()\n";
80 m_GLScene.stopAnimation();
81 stopButton->setEnabled(false);
84 void ControlDialog::on_exitButton_clicked()
86 // qApp is a global pointer referring to the unique application object.
87 qApp->closeAllWindows();
90 void ControlDialog::on_stacksSpin_valueChanged(int i)
92 std::cout << "ControlDialog::on_stacksSpin_valueChanged()\n";
93 std::cout << "New stacks = " << i << "\n";
95 m_sphere.setStacks(i);
97 emit glSceneNeedsUpdate();
100 void ControlDialog::on_slicesSpin_valueChanged(int i)
102 std::cout << "ControlDialog::on_slicesSpin_valueChanged()\n";
103 std::cout << "Niew slices = " << i << "\n";
105 m_sphere.setSlices(i);
107 emit glSceneNeedsUpdate();
110 void ControlDialog::on_radiusSpin_valueChanged(double d)
112 std::cout << "ControlDialog::on_radiusSpin_valueChanged()\n";
113 std::cout << "New radius = " << d << "\n";
115 m_sphere.setRadius(d);
117 emit glSceneNeedsUpdate();
120 void ControlDialog::on_cullingCheck_stateChanged(int state)
122 std::cout << "ControlDialog::on_cullingCheck_stateChanged()\n";
123 std::cout << "New state = " << state << "\n";
125 m_sphere.setCulling(state == Qt::Checked ? true : false);
128 // Camera tab related slots
130 void ControlDialog::on_eyeXEdit_textChanged(const QString& text)
132 std::cout << "ControlDialog::on_eyeXEdit_textChanged()\n";
133 std::cout << "New eye X = " << text.toFloat() << "\n";
135 m_camera.setEyeX(text.toFloat());
136 emit glSceneNeedsUpdate();
139 void ControlDialog::on_eyeYEdit_textChanged(const QString& text)
141 std::cout << "ControlDialog::on_eyeYEdit_textChanged()\n";
142 std::cout << "New eye Y = " << text.toFloat() << "\n";
144 m_camera.setEyeY(text.toFloat());
145 emit glSceneNeedsUpdate();
148 void ControlDialog::on_eyeZEdit_textChanged(const QString& text)
150 std::cout << "ControlDialog::on_eyeZEdit_textChanged()\n";
151 std::cout << "New eye Z = " << text.toFloat() << "\n";
153 m_camera.setEyeZ(text.toFloat());
154 emit glSceneNeedsUpdate();
157 void ControlDialog::on_centerXEdit_textChanged(const QString& text)
159 std::cout << "ControlDialog::on_centerXEdit_textChanged()\n";
160 std::cout << "New center X = " << text.toFloat() << "\n";
162 m_camera.setCenterX(text.toFloat());
163 emit glSceneNeedsUpdate();
166 void ControlDialog::on_centerYEdit_textChanged(const QString& text)
168 std::cout << "ControlDialog::on_centerYEdit_textChanged()\n";
169 std::cout << "New center Y = " << text.toFloat() << "\n";
171 m_camera.setCenterY(text.toFloat());
172 emit glSceneNeedsUpdate();
175 void ControlDialog::on_centerZEdit_textChanged(const QString& text)
177 std::cout << "ControlDialog::on_upZEdit_textChanged()\n";
178 std::cout << "New center Z = " << text.toFloat() << "\n";
180 m_camera.setCenterZ(text.toFloat());
181 emit glSceneNeedsUpdate();
184 void ControlDialog::on_upXEdit_textChanged(const QString& text)
186 std::cout << "ControlDialog::on_upXEdit_textChanged()\n";
187 std::cout << "New up X = " << text.toFloat() << "\n";
189 m_camera.setUpX(text.toFloat());
190 emit glSceneNeedsUpdate();
193 void ControlDialog::on_upYEdit_textChanged(const QString& text)
195 std::cout << "ControlDialog::on_upYEdit_textChanged()\n";
196 std::cout << "New up Y = " << text.toFloat() << "\n";
198 m_camera.setUpY(text.toFloat());
199 emit glSceneNeedsUpdate();
202 void ControlDialog::on_upZEdit_textChanged(const QString& text)
204 std::cout << "ControlDialog::on_upZEdit_textChanged()\n";
205 std::cout << "New up Z = " << text.toFloat() << "\n";
207 m_camera.setUpZ(text.toFloat());
208 emit glSceneNeedsUpdate();
211 void ControlDialog::on_browseFileButton_clicked(void)
213 QString fileName;
214 std::cout << "ControlDialog::on_browseFileButton_clicked()\n";
216 fileName = QFileDialog::getOpenFileName(this, tr("Open data file"),
217 "/home", "*.dat;;*");
218 if (fileName == NULL)
219 return;
221 fileNameEdit->setText(fileName);
222 emit fileNameChanged(fileName);