summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-03 04:15:34 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-03 04:15:34 (GMT)
commitb1fc6c2d6d2ae9605ae0cde7fd4fe376639a1c40 (patch)
tree24f5846fd694cfd961e4c5982b215337663fbc4b /src
parenteaedac975ca01b28cb4cf35c270bbca820452831 (diff)
Look for includes in <openscaddir>/libraries/
git-svn-id: http://svn.clifford.at/openscad/trunk@414 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'src')
-rw-r--r--src/MainWindow.h1
-rw-r--r--src/lexer.l7
-rw-r--r--src/mainwin.cc16
-rw-r--r--src/openscad.cc21
-rw-r--r--src/openscad.h3
5 files changed, 33 insertions, 15 deletions
diff --git a/src/MainWindow.h b/src/MainWindow.h
index 3c966b7..de738ca 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -50,7 +50,6 @@ public:
static const int maxRecentFiles = 10;
QAction *actionRecentFile[maxRecentFiles];
- QString examplesdir;
MainWindow(const char *filename = 0);
~MainWindow();
diff --git a/src/lexer.l b/src/lexer.l
index 5820107..b051a5d 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -70,8 +70,11 @@ extern const char *parser_source_path;
"<"[^ \t\n>]+">" {
char *filename = strdup(yytext+1);
filename[strlen(filename)-1] = 0;
- QFileInfo finfo(QDir(parser_source_path), filename);
-
+ QFileInfo finfo(QDir(parser_source_path), filename);
+ if (!finfo.exists()) {
+ finfo = QFileInfo(QDir(librarydir), filename);
+ }
+
handle_dep(finfo.absoluteFilePath());
yyin = fopen(finfo.absoluteFilePath().toLocal8Bit(), "r");
if (!yyin) {
diff --git a/src/mainwin.cc b/src/mainwin.cc
index a0ce9b0..296c417 100644
--- a/src/mainwin.cc
+++ b/src/mainwin.cc
@@ -24,6 +24,7 @@
*/
#include "MainWindow.h"
+#include "openscad.h" // examplesdir
#include "Preferences.h"
#include "printutils.h"
#include "node.h"
@@ -188,16 +189,9 @@ 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);
+ if (!examplesdir.isEmpty()) {
+ QStringList examples = QDir(examplesdir).entryList(QStringList("*.scad"),
+ QDir::Files | QDir::Readable, QDir::Name);
foreach (const QString &ex, examples) {
this->menuExamples->addAction(ex, this, SLOT(actionOpenExample()));
}
@@ -757,7 +751,7 @@ void MainWindow::actionOpenExample()
{
QAction *action = qobject_cast<QAction *>(sender());
if (action) {
- openFile(this->examplesdir + QDir::separator() + action->text());
+ openFile(examplesdir + QDir::separator() + action->text());
}
}
diff --git a/src/openscad.cc b/src/openscad.cc
index 0cd7455..44c4e3c 100644
--- a/src/openscad.cc
+++ b/src/openscad.cc
@@ -59,6 +59,8 @@ static void help(const char *progname)
QString commandline_commands;
const char *make_command = NULL;
QSet<QString> dependencies;
+QString examplesdir;
+QString librarydir;
void handle_dep(QString filename)
{
@@ -97,7 +99,6 @@ int main(int argc, char **argv)
#endif
QApplication app(argc, argv, useGUI);
#ifdef Q_WS_MAC
- app.setLibraryPaths(QStringList(app.applicationDirPath() + "/../PlugIns"));
app.installEventFilter(new EventFilter(&app));
#endif
@@ -160,6 +161,24 @@ int main(int argc, char **argv)
help(argv[0]);
#endif
+ QDir exdir(QApplication::instance()->applicationDirPath());
+#ifdef Q_WS_MAC
+ exdir.cd("../Resources"); // Examples can be bundled
+ if (!exdir.exists("examples")) exdir.cd("../../..");
+#endif
+ if (exdir.cd("examples")) {
+ examplesdir = exdir.path();
+ }
+
+ QDir libdir(QApplication::instance()->applicationDirPath());
+#ifdef Q_WS_MAC
+ libdir.cd("../Resources"); // Libraries can be bundled
+ if (!libdir.exists("libraries")) libdir.cd("../../..");
+#endif
+ if (libdir.cd("libraries")) {
+ librarydir = libdir.path();
+ }
+
if (stl_output_file || off_output_file || dxf_output_file)
{
if (!filename)
diff --git a/src/openscad.h b/src/openscad.h
index e256433..125cc0c 100644
--- a/src/openscad.h
+++ b/src/openscad.h
@@ -46,5 +46,8 @@ extern int parser_error_pos;
extern void handle_dep(QString filename);
+extern QString examplesdir;
+extern QString librarydir;
+
#endif
contact: Jan Huwald // Impressum