//
// File: viewpointdialog.cc
//
// (C) 2000-2008 Helmut Cantzler
//
// Licensed under the terms of the Lesser General Public License.
//
#include <QtGui>
#include "viewpointdialog.h"
ViewpointDialog::ViewpointDialog(QWidget *parent, GLMeshSettings *s) :
QDialog(parent)
{
settings=s;
QGridLayout *grid = new QGridLayout();
grid->setMargin(5);
grid->setSpacing(5);
setLayout(grid);
/// Translation and zoom values ///
grid->addWidget( new QLabel("XShift:", this), 0, 0 );
xShift = new QLineEdit( QString("%1").arg(settings->xShift), this );
xShift->setValidator( new QDoubleValidator(-99.0, 99.0, 10, xShift) );
grid->addWidget(xShift, 0, 1);
grid->addWidget( new QLabel("YShift:", this), 0, 2 );
yShift = new QLineEdit( QString("%1").arg(settings->yShift), this );
yShift->setValidator( new QDoubleValidator(-99.0, 99.0, 10, yShift) );
grid->addWidget(yShift, 0, 3);
grid->addWidget( new QLabel("ZShift:", this), 0, 4 );
zShift = new QLineEdit( QString("%1").arg(settings->zShift), this);
zShift->setValidator( new QDoubleValidator(-99.0, 99.0, 10, zShift) );
grid->addWidget(zShift, 0, 5);
/// Clipping value ///
grid->addWidget( new QLabel("Clipping:", this), 1, 0 );
clipping = new QLineEdit( QString("%1").arg(settings->clipping), this );
clipping->setValidator( new QDoubleValidator(-99.0, 99.0, 10, clipping) );
grid->addWidget(clipping, 1, 1);
/// Rotation matrix ///
table = new QTableWidget(3, 3);
table->setFocusPolicy(Qt::NoFocus);
table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
for (int i=0; i < 3; i++)
for (int j=0; j < 3; j++)
{
QLineEdit *edit = new QLineEdit(
QString("%1").arg(settings->tbTransform[i][j]), this);
edit->setValidator( new QDoubleValidator(-1.0, 1.0, 10, edit) );
table->setCellWidget(i, j, edit);
}
grid->addWidget(table, 2, 0, 1, 6);
/// Control buttons ///
QWidget *buttons = new QWidget(this);
QHBoxLayout *blayout = new QHBoxLayout(buttons);
blayout->setMargin(5);
blayout->setSpacing(5);
buttons->setLayout(blayout);
blayout->addStretch( 10 );
QPushButton* ok = new QPushButton("OK", buttons);
connect(ok, SIGNAL(clicked()), this, SLOT(accept()));
blayout->addWidget( ok );
QPushButton* cancel = new QPushButton("Cancel", buttons);
connect(cancel, SIGNAL(clicked()), this, SLOT(reject()));
blayout->addWidget( cancel );
grid->addWidget(buttons, 3, 0, 1, 6);
setWindowTitle("Set Viewpoint");
}
void ViewpointDialog::accept()
{
settings->xShift = xShift->text().toFloat();
settings->yShift = yShift->text().toFloat();
settings->zShift = zShift->text().toFloat();
settings->clipping = clipping->text().toFloat();
for (int i=0; i < 3; i++)
for (int j=0; j < 3; j++)
{
QLineEdit *edit = qobject_cast<QLineEdit*> (table->cellWidget(i, j));
settings->tbTransform[i][j] = edit->text().toFloat();
}
QDialog::accept();
}