Newer
Older
Import / research / 3d-z-maps / mview-0.3.3 / mview / viewpointdialog.cpp
//
//    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();
}