From 1b2caba2f55b826d3efc849dead388956040c7d8 Mon Sep 17 00:00:00 2001 From: clifford Date: Wed, 28 Oct 2009 21:08:25 +0000 Subject: Clifford Wolf: Added support for dropping files git-svn-id: http://svn.clifford.at/openscad/trunk@125 b57f626f-c46c-0410-a088-ec61d464b74c diff --git a/mainwin.cc b/mainwin.cc index 08e1ce6..19f558a 100644 --- a/mainwin.cc +++ b/mainwin.cc @@ -34,6 +34,9 @@ #include #include #include +#include +#include +#include //for chdir #include @@ -252,6 +255,7 @@ MainWindow::MainWindow(const char *filename) #endif viewPerspective(); + setAcceptDrops(true); current_win = NULL; } @@ -1303,3 +1307,32 @@ void MainWindow::viewOrthogonal() screen->updateGL(); } +void MainWindow::dragEnterEvent(QDragEnterEvent *event) +{ + if (event->mimeData()->hasUrls()) + event->acceptProposedAction(); +} + +void MainWindow::dropEvent(QDropEvent *event) +{ + current_win = this; + const QList urls = event->mimeData()->urls(); + for (int i = 0; i < urls.size(); i++) { + if (urls[i].scheme() != "file") + continue; + QString fn = urls[i].path(); +#if ENABLE_MDI + if (!editor->toPlainText().isEmpty()) { + new MainWindow(fn.toAscii().data()); + break; + } +#endif + filename = fn; + setWindowTitle(filename); + maybe_change_dir(); + load(); + break; + } + current_win = NULL; +} + diff --git a/openscad.h b/openscad.h index 6682db8..65311b7 100644 --- a/openscad.h +++ b/openscad.h @@ -808,6 +808,8 @@ public slots: void viewPerspective(); void viewOrthogonal(); void animateUpdate(); + void dragEnterEvent(QDragEnterEvent *event); + void dropEvent(QDropEvent *event); }; extern AbstractModule *parse(const char *text, int debug); -- cgit v0.10.1