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()) { | 
