#include "Viewer.h"
#include <qfiledialog.h>
#include <qmessagebox.h>
#include <X3DTK/kernel.h>
using namespace X3DTK;
using namespace std;
void Viewer::init()
{
#ifdef GL_RESCALE_NORMAL
glEnable(GL_RESCALE_NORMAL);
#endif
about();
loadFile();
}
void Viewer::keyPressEvent(QKeyEvent *e)
{
switch (e->key())
{
case Qt::Key_L : loadFile(); break;
default: QGLViewer::keyPressEvent(e);
}
}
void Viewer::loadFile()
{
QString name = QFileDialog::getOpenFileName("", "X3D files (*.x3d *.X3D);;All files (*)", this);
if (name.isEmpty())
return;
scene.load(name);
setSceneBoundingBox(scene.getBBoxMin().f_data(), scene.getBBoxMax().f_data());
showEntireScene();
}
void Viewer::draw()
{
scene.draw();
}
void Viewer::about()
{
QMessageBox::about(this, "about the X3DViewer", "this is an example showing how to load and display a simple X3D scene.Type 'h' to display help");
}
QString Viewer::helpString() const
{
QString message("");
message += "<b>L</b>" + QString(" loads a new file<br>");
message += QGLViewer::helpString();
return message;
}
void Viewer::help() const
{
QMessageBox *mb = new QMessageBox("help", helpString(), QMessageBox::NoIcon,QMessageBox::Ok | QMessageBox::Default, QMessageBox::NoButton,QMessageBox::NoButton, NULL, "Help", false,Qt::WStyle_DialogBorder | Qt::WType_Dialog | Qt::WDestructiveClose);
mb->show();
}