summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2013-10-07 22:49:08 (GMT)
committerMarius Kintel <marius@kintel.net>2013-10-07 22:49:08 (GMT)
commit80e5d42f474919641af3b01d0d317a8365e16e1e (patch)
tree3f6f6b860b1042671f6d7a65a1b3b136c5bede10
parent4381743ca998d651735b6569de2f6f01fc36be42 (diff)
parentaa1752a3a00c25649b290102fad745af1d3b4887 (diff)
Merge branch 'master' of ../openscad into steelman-bom-tree-std-stack
-rw-r--r--src/openscad.cc30
-rw-r--r--src/parsersettings.cc9
-rw-r--r--src/parsersettings.h2
-rw-r--r--tests/CMakeLists.txt17
-rw-r--r--tests/cgalcachetest.cc2
-rw-r--r--tests/csgtexttest.cc2
-rw-r--r--tests/modulecachetest.cc2
7 files changed, 40 insertions, 24 deletions
diff --git a/src/openscad.cc b/src/openscad.cc
index f4f4014..e5eb69f 100644
--- a/src/openscad.cc
+++ b/src/openscad.cc
@@ -190,9 +190,9 @@ Camera get_camera( po::variables_map vm )
return camera;
}
-int cmdline(const char *deps_output_file, const std::string &filename, Camera &camera, const char *output_file, const fs::path &original_path, Render::type renderer, char ** argv )
+int cmdline(const std::string &application_path, const char *deps_output_file, const std::string &filename, Camera &camera, const char *output_file, const fs::path &original_path, Render::type renderer, char ** argv )
{
- parser_init(boosty::stringy(boost::filesystem::path( argv[0] ).parent_path()));
+ parser_init(application_path, false);
Tree tree;
#ifdef ENABLE_CGAL
CGALEvaluator cgalevaluator(tree);
@@ -454,7 +454,7 @@ bool QtUseGUI()
return useGUI;
}
-int gui(vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv)
+int gui(const std::string &application_path, vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv)
{
QApplication app(argc, argv, true); //useGUI);
#ifdef Q_WS_MAC
@@ -465,7 +465,7 @@ int gui(vector<string> &inputFiles, const fs::path &original_path, int argc, cha
QCoreApplication::setOrganizationDomain("openscad.org");
QCoreApplication::setApplicationName("OpenSCAD");
QCoreApplication::setApplicationVersion(TOSTRING(OPENSCAD_VERSION));
-
+
QDir exdir(QApplication::instance()->applicationDirPath());
QString qexamplesdir;
#ifdef Q_WS_MAC
@@ -486,8 +486,7 @@ int gui(vector<string> &inputFiles, const fs::path &original_path, int argc, cha
qexamplesdir = exdir.path();
}
MainWindow::setExamplesDir(qexamplesdir);
-
- parser_init(QApplication::instance()->applicationDirPath().toLocal8Bit().constData());
+ parser_init(application_path, true);
#ifdef Q_WS_MAC
installAppleEventHandlers();
@@ -520,7 +519,7 @@ int gui(vector<string> &inputFiles, const fs::path &original_path, int argc, cha
}
#else // OPENSCAD_QTGUI
bool QtUseGUI() { return false; }
-int gui(const vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv)
+int gui(const std::string &application_path, const vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv)
{
fprintf(stderr,"Error: compiled without QT, but trying to run GUI\n");
return 1;
@@ -641,12 +640,23 @@ int main(int argc, char **argv)
NodeCache nodecache;
NodeDumper dumper(nodecache);
- if (output_file) {
+ bool cmdlinemode = false;
+ if (output_file) { // cmd-line mode
+ cmdlinemode = true;
if (!inputFiles.size()) help(argv[0]);
- rc = cmdline(deps_output_file, inputFiles[0], camera, output_file, original_path, renderer, argv);
+ }
+ const std::string application_path =
+#ifdef OPENSCAD_QTGUI
+ QApplication::instance()->applicationDirPath().toLocal8Bit().constData();
+#else
+ boosty::stringy(boosty::absolute(boost::filesystem::path(argv[0]).parent_path()));
+#endif
+
+ if (cmdlinemode) {
+ rc = cmdline(application_path, deps_output_file, inputFiles[0], camera, output_file, original_path, renderer, argv);
}
else if (QtUseGUI()) {
- rc = gui(inputFiles, original_path, argc, argv);
+ rc = gui(application_path, inputFiles, original_path, argc, argv);
}
else {
fprintf(stderr, "Requested GUI mode but can't open display!\n");
diff --git a/src/parsersettings.cc b/src/parsersettings.cc
index 63a7713..de1ff98 100644
--- a/src/parsersettings.cc
+++ b/src/parsersettings.cc
@@ -88,7 +88,7 @@ fs::path find_valid_path(const fs::path &sourcepath,
return fs::path();
}
-void parser_init(const std::string &applicationpath)
+void parser_init(const std::string &applicationpath, bool isgui)
{
// Add paths from OPENSCADPATH before adding built-in paths
const char *openscadpaths = getenv("OPENSCADPATH");
@@ -116,8 +116,11 @@ void parser_init(const std::string &applicationpath)
fs::path libdir(applicationpath);
fs::path tmpdir;
#ifdef __APPLE__
- libdir /= "../Resources"; // Libraries can be bundled
- if (!is_directory(libdir / "libraries")) libdir /= "../../..";
+ // Libraries can be bundled on Mac. If not, fall back to development layout
+ if (isgui) {
+ libdir /= "../Resources";
+ if (!is_directory(libdir / "libraries")) libdir /= "../../..";
+ }
#elif !defined(WIN32)
if (is_directory(tmpdir = libdir / "../share/openscad/libraries")) {
librarydir = boosty::stringy(tmpdir);
diff --git a/src/parsersettings.h b/src/parsersettings.h
index 52172b6..2aef85b 100644
--- a/src/parsersettings.h
+++ b/src/parsersettings.h
@@ -6,7 +6,7 @@
extern int parser_error_pos;
-void parser_init(const std::string &applicationpath);
+void parser_init(const std::string &applicationpath, bool isgui);
void add_librarydir(const std::string &libdir);
fs::path search_libs(const fs::path &localpath);
fs::path find_valid_path(const fs::path &sourcepath,
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index ab94e64..1523e23 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -437,6 +437,9 @@ include_directories(../src)
add_definitions(-DOPENSCAD_VERSION=test -DOPENSCAD_YEAR=2011 -DOPENSCAD_MONTH=10)
add_definitions(-DOPENSCAD_TESTING)
+# Search for MCAD in correct place
+set(CTEST_ENVIRONMENT "${CTEST_ENVIRONMENT};OPENSCADPATH=${CMAKE_CURRENT_SOURCE_DIR}/../libraries")
+
# Platform specific settings
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@@ -937,31 +940,31 @@ add_cmdline_test(openscad-imgstretch2 EXE ${OPENSCAD_BINPATH}
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-camdist EXE ${OPENSCAD_BINPATH}
- ARGS --imgsize=500,500 --camera=0,0,0,90,0,90,300 examples/example001.scad -o
+ ARGS --imgsize=500,500 --camera=0,0,0,90,0,90,300 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-camrot EXE ${OPENSCAD_BINPATH}
- ARGS --imgsize=500,500 --camera=0,0,0,440,337.5,315,300 examples/example001.scad -o
+ ARGS --imgsize=500,500 --camera=0,0,0,440,337.5,315,300 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-camtrans EXE ${OPENSCAD_BINPATH}
- ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,300 examples/example001.scad -o
+ ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,300 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-camortho EXE ${OPENSCAD_BINPATH}
- ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,300 examples/example001.scad --projection=o -o
+ ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,300 --projection=o -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-cameye EXE ${OPENSCAD_BINPATH}
- ARGS --imgsize=500,500 --camera=60,40,30,0,0,0 examples/example001.scad -o
+ ARGS --imgsize=500,500 --camera=60,40,30,0,0,0 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-cameye2 EXE ${OPENSCAD_BINPATH}
- ARGS --imgsize=500,500 --camera=160,140,130,0,0,0 examples/example001.scad -o
+ ARGS --imgsize=500,500 --camera=160,140,130,0,0,0 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-cameyeortho EXE ${OPENSCAD_BINPATH}
- ARGS --imgsize=500,500 --camera=160,140,130,0,0,0 examples/example001.scad --projection=o -o
+ ARGS --imgsize=500,500 --camera=160,140,130,0,0,0 --projection=o -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad)
add_cmdline_test(openscad-camcenter EXE ${OPENSCAD_BINPATH}
diff --git a/tests/cgalcachetest.cc b/tests/cgalcachetest.cc
index 67d3313..598879c 100644
--- a/tests/cgalcachetest.cc
+++ b/tests/cgalcachetest.cc
@@ -126,7 +126,7 @@ int main(int argc, char **argv)
currentdir = boosty::stringy(fs::current_path());
- parser_init(boosty::stringy(fs::path(argv[0]).branch_path()));
+ parser_init(boosty::stringy(fs::path(argv[0]).branch_path()), false);
add_librarydir(boosty::stringy(fs::path(argv[0]).branch_path() / "../libraries"));
ModuleContext top_ctx;
diff --git a/tests/csgtexttest.cc b/tests/csgtexttest.cc
index 97902f6..0be3123 100644
--- a/tests/csgtexttest.cc
+++ b/tests/csgtexttest.cc
@@ -77,7 +77,7 @@ int main(int argc, char **argv)
currentdir = boosty::stringy( fs::current_path() );
- parser_init(boosty::stringy(fs::path(argv[0]).branch_path()));
+ parser_init(boosty::stringy(fs::path(argv[0]).branch_path()), false);
add_librarydir(boosty::stringy(fs::path(argv[0]).branch_path() / "../libraries"));
ModuleContext top_ctx;
diff --git a/tests/modulecachetest.cc b/tests/modulecachetest.cc
index 5531461..423cffc 100644
--- a/tests/modulecachetest.cc
+++ b/tests/modulecachetest.cc
@@ -73,7 +73,7 @@ int main(int argc, char **argv)
currentdir = boosty::stringy( fs::current_path() );
- parser_init(boosty::stringy(fs::path(argv[0]).branch_path()));
+ parser_init(boosty::stringy(fs::path(argv[0]).branch_path()), false);
add_librarydir(boosty::stringy(fs::path(argv[0]).branch_path() / "../libraries"));
ModuleContext top_ctx;
contact: Jan Huwald // Impressum