Raise an error message box on ascii stl

This commit is contained in:
Matt Keeter 2014-03-24 20:14:13 -04:00
parent 236a203320
commit 428aff52a5
4 changed files with 22 additions and 4 deletions

View file

@ -8,10 +8,16 @@ Loader::Loader(QObject* parent, const QString& filename)
void Loader::run() void Loader::run()
{ {
QTime timer; { // Verify that this isn't an ascii stl file
timer.start(); QFile file(filename);
emit got_mesh(Mesh::load_stl(filename)); file.open(QIODevice::ReadOnly);
qDebug() << "Time taken:" << timer.elapsed(); if (file.read(5) == "solid")
{
emit error_ascii_stl();
return;
}
}
emit got_mesh(Mesh::load_stl(filename));
emit loaded_file(filename); emit loaded_file(filename);
} }

View file

@ -15,6 +15,7 @@ public:
signals: signals:
void loaded_file(QString filename); void loaded_file(QString filename);
void got_mesh(Mesh* m); void got_mesh(Mesh* m);
void error_ascii_stl();
private: private:
const QString filename; const QString filename;

View file

@ -69,6 +69,14 @@ void Window::on_about()
" style=\"color: #93a1a1;\">matt.j.keeter@gmail.com</a></p>"); " style=\"color: #93a1a1;\">matt.j.keeter@gmail.com</a></p>");
} }
void Window::on_ascii_stl()
{
QMessageBox::critical(this, "Error",
"<b>Error:</b><br>"
"Cannot open ASCII <code>.stl</code> file<br>"
"Please convert to binary <code>.stl</code> and retry");
}
void Window::enable_open() void Window::enable_open()
{ {
open_action->setEnabled(true); open_action->setEnabled(true);
@ -91,6 +99,8 @@ bool Window::load_stl(const QString& filename)
connect(loader, &Loader::got_mesh, connect(loader, &Loader::got_mesh,
canvas, &Canvas::load_mesh); canvas, &Canvas::load_mesh);
connect(loader, &Loader::error_ascii_stl,
this, &Window::on_ascii_stl);
connect(loader, &Loader::finished, connect(loader, &Loader::finished,
loader, &Loader::deleteLater); loader, &Loader::deleteLater);

View file

@ -15,6 +15,7 @@ public:
public slots: public slots:
void on_open(); void on_open();
void on_about(); void on_about();
void on_ascii_stl();
void enable_open(); void enable_open();
void disable_open(); void disable_open();