#include "Screen.h" #include "screen/ScreenDome.h" #include "screen/ScreenPlane.h" #include "screen/ScreenBox.h" #include "screen/ScreenModel.h" #include "gui/Defines.h" #include "gui/QScreenWidget.h" using namespace projection; QScreenWidget::QScreenWidget(QWidget* pParent, Qt::WFlags flags) : QWidget(pParent, flags) { ui.setupUi(this); m_pScreen = NULL; } QScreenWidget::~QScreenWidget() { } void QScreenWidget::setScreen(Screen* pScreen) { m_pScreen = pScreen; ui.typeComboBox->clear(); for (unsigned int i=0; igetNumShapes(); ++i) ui.typeComboBox->addItem(m_pScreen->getShapeName(i)); updateGUI(); } void QScreenWidget::updateGUI() { if (m_pScreen) { ui.transformWidget->setMatrix(m_pScreen->getMatrix()); if (m_pScreen->getCurrentShapeName() == "Dome") { ScreenDome* pScreenDome = (ScreenDome*)m_pScreen->getCurrentShape(); ui.domeRadiusEdit->setText(formatValue(pScreenDome->getRadius())); ui.domeAzimResSpinBox->setValue(pScreenDome->getAzimResolution()); ui.domeElevResSpinBox->setValue(pScreenDome->getElevResolution()); ui.domeSubdivSpinBox->setValue(pScreenDome->getSubdivision()); ui.domeFullDomeCheckBox->setChecked(pScreenDome->getFullDome()); } else if (m_pScreen->getCurrentShapeName() == "Plane") { ScreenPlane* pScreenPlane = (ScreenPlane*)m_pScreen->getCurrentShape(); ui.planeWidthEdit->setText(formatValue(pScreenPlane->getWidth())); ui.planeHeightEdit->setText(formatValue(pScreenPlane->getHeight())); ui.planeHorResSpinBox->setValue(pScreenPlane->getHorResolution()); ui.planeVertResSpinBox->setValue(pScreenPlane->getVertResolution()); } else if (m_pScreen->getCurrentShapeName() == "Box") { ScreenBox* pScreenBox = (ScreenBox*)m_pScreen->getCurrentShape(); ui.boxWidthEdit->setText(formatValue(pScreenBox->getWidth())); ui.boxHeightEdit->setText(formatValue(pScreenBox->getHeight())); ui.boxDepthEdit->setText(formatValue(pScreenBox->getDepth())); ui.boxHorResSpinBox->setValue(pScreenBox->getHorResolution()); ui.boxVertResSpinBox->setValue(pScreenBox->getVertResolution()); ui.boxDepthResSpinBox->setValue(pScreenBox->getDepthResolution()); } else if (m_pScreen->getCurrentShapeName() == "Model") { ScreenModel* pScreenModel = (ScreenModel*)m_pScreen->getCurrentShape(); ui.modelFileNameEdit->setText(pScreenModel->getFileName()); } ui.frameCheckBox->setChecked(m_pScreen->getShowFrame()); ui.frameLineWidthSpinBox->setValue(m_pScreen->getFrameLineWidth()); ui.typeComboBox->setCurrentIndex(ui.typeComboBox->findText(m_pScreen->getCurrentShapeName())); ui.stackedWidget->setCurrentIndex(ui.typeComboBox->currentIndex()); } } void QScreenWidget::on_typeComboBox_activated(int) { if (m_pScreen) { m_pScreen->setCurrentShape(ui.typeComboBox->currentText()); updateGUI(); } } void QScreenWidget::on_transformWidget_matrixChanged(const TransformMatrix& matrix) { if (m_pScreen && m_pScreen->getMatrix() != matrix) { m_pScreen->setMatrix(matrix); updateGUI(); } } void QScreenWidget::on_domeRadiusEdit_editingFinished() { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") ((ScreenDome*)m_pScreen->getCurrentShape())->setRadius(ui.domeRadiusEdit->text().toDouble()); } void QScreenWidget::on_domeAzimResSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") ((ScreenDome*)m_pScreen->getCurrentShape())->setAzimResolution(value); } void QScreenWidget::on_domeElevResSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") ((ScreenDome*)m_pScreen->getCurrentShape())->setElevResolution(value); } void QScreenWidget::on_domeSubdivSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") ((ScreenDome*)m_pScreen->getCurrentShape())->setSubdivision(value); } void QScreenWidget::on_domeFullDomeCheckBox_toggled(bool checked) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Dome") ((ScreenDome*)m_pScreen->getCurrentShape())->setFullDome(checked); } void QScreenWidget::on_planeWidthEdit_editingFinished() { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") ((ScreenPlane*)m_pScreen->getCurrentShape())->setWidth(ui.planeWidthEdit->text().toDouble()); } void QScreenWidget::on_planeHeightEdit_editingFinished() { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") ((ScreenPlane*)m_pScreen->getCurrentShape())->setHeight(ui.planeHeightEdit->text().toDouble()); } void QScreenWidget::on_planeHorResSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") ((ScreenPlane*)m_pScreen->getCurrentShape())->setHorResolution(value); } void QScreenWidget::on_planeVertResSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Plane") ((ScreenPlane*)m_pScreen->getCurrentShape())->setVertResolution(value); } void QScreenWidget::on_boxWidthEdit_editingFinished() { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") ((ScreenBox*)m_pScreen->getCurrentShape())->setWidth(ui.boxWidthEdit->text().toDouble()); } void QScreenWidget::on_boxHeightEdit_editingFinished() { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") ((ScreenBox*)m_pScreen->getCurrentShape())->setHeight(ui.boxHeightEdit->text().toDouble()); } void QScreenWidget::on_boxDepthEdit_editingFinished() { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") ((ScreenBox*)m_pScreen->getCurrentShape())->setDepth(ui.boxDepthEdit->text().toDouble()); } void QScreenWidget::on_boxHorResSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") ((ScreenBox*)m_pScreen->getCurrentShape())->setHorResolution(value); } void QScreenWidget::on_boxVertResSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") ((ScreenBox*)m_pScreen->getCurrentShape())->setVertResolution(value); } void QScreenWidget::on_boxDepthResSpinBox_valueChanged(int value) { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Box") ((ScreenBox*)m_pScreen->getCurrentShape())->setDepthResolution(value); } void QScreenWidget::on_modelFileNameEdit_editingFinished() { if (m_pScreen && m_pScreen->getCurrentShapeName() == "Model" && ui.modelFileNameEdit->text() != "" ) { if (QFile::exists(ui.modelFileNameEdit->text())) { ((ScreenModel*)m_pScreen->getCurrentShape())->setFileName(ui.modelFileNameEdit->text()); //QMessageBox::information(this,"moep!","."); } else { QMessageBox::warning(this,"Filename not Found!","Filename not Found!

Your selection will be cleared."); ui.modelFileNameEdit->clear(); } } } void QScreenWidget::on_modelBrowseButton_clicked() { QString fileName = QFileDialog::getOpenFileName(this, "Choose a file to open", ui.modelFileNameEdit->text(), "Model files (*.obj)"); if (!fileName.isEmpty()) { ui.modelFileNameEdit->setText(fileName); on_modelFileNameEdit_editingFinished(); } } void QScreenWidget::on_frameCheckBox_toggled(bool checked) { if (m_pScreen) m_pScreen->setShowFrame(checked); } void QScreenWidget::on_frameLineWidthSpinBox_valueChanged(int value) { if (m_pScreen) m_pScreen->setFrameLineWidth(value); }