]> git.sur5r.net Git - fstl/blob - src/window.cpp
Adding quit action to file 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
25     QAction* quit_action = new QAction("Quit", this);
26     quit_action->setShortcut(QKeySequence::Quit);
27     QObject::connect(quit_action, SIGNAL(triggered()),
28                      this, SLOT(close()));
29
30     auto file_menu = menuBar()->addMenu("File");
31     file_menu->addAction(open_action);
32     file_menu->addAction(quit_action);
33
34     resize(600, 400);
35 }
36
37 void Window::on_open()
38 {
39     QString filename = QFileDialog::getOpenFileName(
40                 this, "Load .stl file", QString(), "*.stl");
41     if (not filename.isNull())
42     {
43         load_stl(filename);
44     }
45 }
46
47 void Window::load_stl(const QString &filename)
48 {
49     Loader* loader = new Loader(this, filename);
50     connect(loader, SIGNAL(got_mesh(Mesh*)),
51             canvas, SLOT(load_mesh(Mesh*)));
52     connect(loader, SIGNAL(finished()),
53             loader, SLOT(deleteLater()));
54     loader->start();
55 }