]> git.sur5r.net Git - fstl/blob - src/window.cpp
Adding Open command to menu
[fstl] / src / window.cpp
1 #include <QMenuBar>
2 #include <QFileDialog>
3
4 #include "window.h"
5 #include "canvas.h"
6 #include "loader.h"
7
8 Window::Window(QWidget *parent) :
9     QMainWindow(parent)
10 {
11     setWindowTitle("fstl");
12
13     QGLFormat format;
14     format.setVersion(2, 1);
15     format.setSampleBuffers(true);
16
17     canvas = new Canvas(format, this);
18     setCentralWidget(canvas);
19
20     QAction* open_action = new QAction("Open", this);
21     open_action->setShortcut(QKeySequence::Open);
22     QObject::connect(open_action, SIGNAL(triggered()),
23                      this, SLOT(on_open()));
24     auto file_menu = menuBar()->addMenu("File");
25     file_menu->addAction(open_action);
26
27     resize(600, 400);
28 }
29
30 void Window::on_open()
31 {
32     QString filename = QFileDialog::getOpenFileName(
33                 this, "Load .stl file", QString(), "*.stl");
34     if (not filename.isNull())
35     {
36         load_stl(filename);
37     }
38 }
39
40 void Window::load_stl(const QString &filename)
41 {
42     Loader* loader = new Loader(this, filename);
43     connect(loader, SIGNAL(got_mesh(Mesh*)),
44             canvas, SLOT(load_mesh(Mesh*)));
45     connect(loader, SIGNAL(finished()),
46             loader, SLOT(deleteLater()));
47     loader->start();
48 }