]> git.sur5r.net Git - fstl/blobdiff - src/window.cpp
Disable open when load is in progress
[fstl] / src / window.cpp
index 55669a6a97af91dab34c16c7768f1f4c41d00a03..5c5e1c3332bb02f556361746b88d98f53ef22250 100644 (file)
@@ -1,3 +1,6 @@
+#include <QMenuBar>
+#include <QFileDialog>
+
 #include "window.h"
 #include "canvas.h"
 #include "loader.h"
@@ -13,14 +16,57 @@ Window::Window(QWidget *parent) :
 
     canvas = new Canvas(format, this);
     setCentralWidget(canvas);
+
+    open_action = new QAction("Open", this);
+    open_action->setShortcut(QKeySequence::Open);
+    QObject::connect(open_action, SIGNAL(triggered()),
+                     this, SLOT(on_open()));
+
+    quit_action = new QAction("Quit", this);
+    quit_action->setShortcut(QKeySequence::Quit);
+    QObject::connect(quit_action, SIGNAL(triggered()),
+                     this, SLOT(close()));
+
+    auto file_menu = menuBar()->addMenu("File");
+    file_menu->addAction(open_action);
+    file_menu->addAction(quit_action);
+
+    resize(600, 400);
 }
 
+void Window::on_open()
+{
+    QString filename = QFileDialog::getOpenFileName(
+                this, "Load .stl file", QString(), "*.stl");
+    if (not filename.isNull())
+    {
+        load_stl(filename);
+    }
+}
+
+
+void Window::enable_open_action()
+{
+    open_action->setEnabled(true);
+}
+
+
+void Window::disable_open_action()
+{
+
+    open_action->setEnabled(false);
+}
+
+
 void Window::load_stl(const QString &filename)
 {
+    disable_open_action();
     Loader* loader = new Loader(this, filename);
     connect(loader, SIGNAL(got_mesh(Mesh*)),
             canvas, SLOT(load_mesh(Mesh*)));
     connect(loader, SIGNAL(finished()),
             loader, SLOT(deleteLater()));
+    connect(loader, SIGNAL(finished()),
+            this, SLOT(enable_open_action()));
     loader->start();
 }