diff options
-rw-r--r-- | MainWindow.h | 2 | ||||
-rw-r--r-- | MainWindow.ui | 6 | ||||
-rw-r--r-- | mainwin.cc | 23 |
3 files changed, 31 insertions, 0 deletions
diff --git a/MainWindow.h b/MainWindow.h index f344711..17269ae 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -46,6 +46,7 @@ public: static const int maxRecentFiles = 10; QAction *actionRecentFile[maxRecentFiles]; + QString examplesdir; MainWindow(const char *filename = 0); ~MainWindow(); @@ -70,6 +71,7 @@ private slots: void actionNew(); void actionOpen(); void actionOpenRecent(); + void actionOpenExample(); void clearRecentFiles(); void updateRecentFileActions(); void actionSave(); diff --git a/MainWindow.ui b/MainWindow.ui index 24c0903..93428da 100644 --- a/MainWindow.ui +++ b/MainWindow.ui @@ -130,9 +130,15 @@ <string>Open Recent</string> </property> </widget> + <widget class="QMenu" name="menuExamples"> + <property name="title"> + <string>Examples</string> + </property> + </widget> <addaction name="fileActionNew"/> <addaction name="fileActionOpen"/> <addaction name="menuOpenRecent"/> + <addaction name="menuExamples"/> <addaction name="separator"/> <addaction name="fileActionClose"/> <addaction name="fileActionSave"/> @@ -175,6 +175,21 @@ MainWindow::MainWindow(const char *filename) connect(this->fileActionClearRecent, SIGNAL(triggered()), this, SLOT(clearRecentFiles())); + QDir examplesdir(QApplication::instance()->applicationDirPath()); +#ifdef Q_WS_MAC + examplesdir.cd("../Resources"); // Examples can be bundled + if (!examplesdir.exists("examples")) examplesdir.cd("../../.."); +#endif + if (examplesdir.cd("examples")) { + this->examplesdir = examplesdir.path(); + + QStringList examples = examplesdir.entryList(QStringList("*.scad"), + QDir::Files | QDir::Readable, QDir::Name); + foreach (const QString &ex, examples) { + this->menuExamples->addAction(ex, this, SLOT(actionOpenExample())); + } + } + // Edit menu connect(this->editActionUndo, SIGNAL(triggered()), editor, SLOT(undo())); connect(this->editActionRedo, SIGNAL(triggered()), editor, SLOT(redo())); @@ -723,6 +738,14 @@ void MainWindow::updateRecentFileActions() settings.setValue("recentFileList", files); } +void MainWindow::actionOpenExample() +{ + QAction *action = qobject_cast<QAction *>(sender()); + if (action) { + openFile(this->examplesdir + QDir::separator() + action->text()); + } +} + void MainWindow::actionSave() { if (this->fileName.isEmpty()) { |