summaryrefslogtreecommitdiff
path: root/src/openscad.cc
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-23 20:47:54 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-23 20:47:54 (GMT)
commitf3d16e23b959be4eb05c50e09a880b1e642f3432 (patch)
tree9e27ce8f230fa3c8645c363a3823d82649839261 /src/openscad.cc
parent64c3be3fd7734f94f1057825ad66ba4ac2393134 (diff)
Multiple non-MDI assumptions were made, setting CWD and assuming it didn't change. Fix required to pass more context to nodes (functions). It's not totally clean, but it's a start. Fixes bugs: opening multiple files simultaneously only loaded the first file, refreshing an scad file referencing an external file failed if another scad file was opened in the meantime.
git-svn-id: http://svn.clifford.at/openscad/trunk@451 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'src/openscad.cc')
-rw-r--r--src/openscad.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/openscad.cc b/src/openscad.cc
index f23848b..71d0297 100644
--- a/src/openscad.cc
+++ b/src/openscad.cc
@@ -59,6 +59,7 @@ static void help(const char *progname)
QString commandline_commands;
const char *make_command = NULL;
QSet<QString> dependencies;
+QString currentdir;
QString examplesdir;
QString librarydir;
@@ -101,6 +102,7 @@ int main(int argc, char **argv)
#ifdef Q_WS_MAC
app.installEventFilter(new EventFilter(&app));
#endif
+ QDir original_path = QDir::current();
// set up groups for QSettings
QCoreApplication::setOrganizationName("OpenSCAD");
@@ -161,6 +163,8 @@ int main(int argc, char **argv)
help(argv[0]);
#endif
+ currentdir = QDir::currentPath();
+
QDir exdir(QApplication::instance()->applicationDirPath());
#ifdef Q_WS_MAC
exdir.cd("../Resources"); // Examples can be bundled
@@ -232,7 +236,6 @@ int main(int argc, char **argv)
root_module = parse((text+commandline_commands).toAscii().data(), fileInfo.absolutePath().toLocal8Bit(), false);
}
- QString original_path = QDir::currentPath();
QDir::setCurrent(fileInfo.absolutePath());
AbstractNode::resetIndexCounter();
@@ -241,7 +244,7 @@ int main(int argc, char **argv)
CGAL_Nef_polyhedron *root_N;
root_N = new CGAL_Nef_polyhedron(root_node->render_cgal_nef_polyhedron());
- QDir::setCurrent(original_path);
+ QDir::setCurrent(original_path.absolutePath());
if (deps_output_file) {
fp = fopen(deps_output_file, "wt");
@@ -279,6 +282,8 @@ int main(int argc, char **argv)
installAppleEventHandlers();
#endif
+ QString qfilename = QFileInfo(original_path, filename).absoluteFilePath();
+
#if 0 /*** disabled by clifford wolf: adds rendering artefacts with OpenCSG ***/
// turn on anti-aliasing
QGLFormat f;
@@ -287,12 +292,12 @@ int main(int argc, char **argv)
QGLFormat::setDefaultFormat(f);
#endif
#ifdef ENABLE_MDI
- new MainWindow(filename);
+ new MainWindow(qfilename);
while (optind < argc)
- new MainWindow(argv[optind++]);
+ new MainWindow(QFileInfo(original_path, argv[optind++]).absoluteFilePath());
app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
#else
- MainWindow *m = new MainWindow(filename);
+ MainWindow *m = new MainWindow(qfilename);
app.connect(m, SIGNAL(destroyed()), &app, SLOT(quit()));
#endif
rc = app.exec();
contact: Jan Huwald // Impressum