summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-22 15:20:52 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-22 15:20:52 (GMT)
commit5533114cb5c140ec654d75a3e26a266eba10e94b (patch)
tree743f50d11c4cbcc890c7029da2b5d77494ac0183
parent109df704bae87a1b24c1101c304d93e6ce0d9e20 (diff)
Added examples menu
git-svn-id: http://svn.clifford.at/openscad/trunk@338 b57f626f-c46c-0410-a088-ec61d464b74c
-rw-r--r--MainWindow.h2
-rw-r--r--MainWindow.ui6
-rw-r--r--mainwin.cc23
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"/>
diff --git a/mainwin.cc b/mainwin.cc
index 09b5c5e..0797a46 100644
--- a/mainwin.cc
+++ b/mainwin.cc
@@ -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()) {
contact: Jan Huwald // Impressum