Newer
Older
#include "TerrainParamDialog.h"
#include <QFormLayout>
#include <QGroupBox>
#include <QPushButton>
TerrainParamDialog::TerrainParamDialog(QWidget* parent)
: QDialog(parent)
{
QVBoxLayout* layout = new QVBoxLayout;
setLayout(layout);
setWindowTitle(tr("Terrain Parameters"));
setModal(true);
buildLayout(layout);
}
void
TerrainParamDialog::getTerrainParams(GlobalViewParamsPtr &globalViewParams)
{
QVector3D& positionOffset = globalViewParams->terrainPositionOffset();
QVector3D& attitudeOffset = globalViewParams->terrainAttitudeOffset();
TerrainParamDialog dialog;
dialog.mXOffsetSpinBox->setValue(positionOffset.x());
dialog.mYOffsetSpinBox->setValue(positionOffset.y());
dialog.mZOffsetSpinBox->setValue(positionOffset.z());
dialog.mRollOffsetSpinBox->setValue(osg::RadiansToDegrees(attitudeOffset.x()));
dialog.mPitchOffsetSpinBox->setValue(osg::RadiansToDegrees(attitudeOffset.y()));
dialog.mYawOffsetSpinBox->setValue(osg::RadiansToDegrees(attitudeOffset.z()));
if (dialog.exec() == QDialog::Accepted)
{
positionOffset.setX(dialog.mXOffsetSpinBox->value());
positionOffset.setY(dialog.mYOffsetSpinBox->value());
positionOffset.setZ(dialog.mZOffsetSpinBox->value());
attitudeOffset.setX(osg::DegreesToRadians(dialog.mRollOffsetSpinBox->value()));
attitudeOffset.setY(osg::DegreesToRadians(dialog.mPitchOffsetSpinBox->value()));
attitudeOffset.setZ(osg::DegreesToRadians(dialog.mYawOffsetSpinBox->value()));
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
}
}
void
TerrainParamDialog::closeWithSaving(void)
{
done(QDialog::Accepted);
}
void
TerrainParamDialog::closeWithoutSaving(void)
{
done(QDialog::Rejected);
}
void
TerrainParamDialog::buildLayout(QVBoxLayout* layout)
{
QGroupBox* offsetGroupBox = new QGroupBox(tr("Offset"), this);
mXOffsetSpinBox = new QDoubleSpinBox(this);
mXOffsetSpinBox->setDecimals(1);
mXOffsetSpinBox->setRange(-100.0, 100.0);
mXOffsetSpinBox->setValue(0.0);
mYOffsetSpinBox = new QDoubleSpinBox(this);
mYOffsetSpinBox->setDecimals(1);
mYOffsetSpinBox->setRange(-100.0, 100.0);
mYOffsetSpinBox->setValue(0.0);
mZOffsetSpinBox = new QDoubleSpinBox(this);
mZOffsetSpinBox->setDecimals(1);
mZOffsetSpinBox->setRange(-100.0, 100.0);
mZOffsetSpinBox->setValue(0.0);
mRollOffsetSpinBox = new QDoubleSpinBox(this);
mRollOffsetSpinBox->setDecimals(0);
mRollOffsetSpinBox->setRange(-180.0, 180.0);
mRollOffsetSpinBox->setValue(0.0);
mPitchOffsetSpinBox = new QDoubleSpinBox(this);
mPitchOffsetSpinBox->setDecimals(0);
mPitchOffsetSpinBox->setRange(-180.0, 180.0);
mPitchOffsetSpinBox->setValue(0.0);
mYawOffsetSpinBox = new QDoubleSpinBox(this);
mYawOffsetSpinBox->setDecimals(0);
mYawOffsetSpinBox->setRange(-180.0, 180.0);
mYawOffsetSpinBox->setValue(0.0);
QFormLayout* formLayout = new QFormLayout;
formLayout->addRow(tr("x (m)"), mXOffsetSpinBox);
formLayout->addRow(tr("y (m)"), mYOffsetSpinBox);
formLayout->addRow(tr("z (m)"), mZOffsetSpinBox);
formLayout->addRow(tr("Roll (deg)"), mRollOffsetSpinBox);
formLayout->addRow(tr("Pitch (deg)"), mPitchOffsetSpinBox);
formLayout->addRow(tr("Yaw (deg)"), mYawOffsetSpinBox);
offsetGroupBox->setLayout(formLayout);
layout->addWidget(offsetGroupBox);
layout->addItem(new QSpacerItem(10, 0, QSizePolicy::Expanding, QSizePolicy::Expanding));
QPushButton* cancelButton = new QPushButton(this);
cancelButton->setText("Cancel");
QPushButton* saveButton = new QPushButton(this);
saveButton->setText("Save");
QHBoxLayout* buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(cancelButton);
buttonLayout->addItem(new QSpacerItem(10, 0, QSizePolicy::Expanding, QSizePolicy::Expanding));
buttonLayout->addWidget(saveButton);
layout->addLayout(buttonLayout);
connect(cancelButton, SIGNAL(clicked()), this, SLOT(closeWithoutSaving()));
connect(saveButton, SIGNAL(clicked()), this, SLOT(closeWithSaving()));
}