diff options
author | Marius Kintel <marius@kintel.net> | 2013-10-07 22:47:08 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2013-10-07 22:47:08 (GMT) |
commit | aa1752a3a00c25649b290102fad745af1d3b4887 (patch) | |
tree | 2b6df9683d1797286aaf4dec969d427603a9eeab /src/openscad.cc | |
parent | 4c06a4e78f1bf9cc86bd67ae792e2a54febd3d91 (diff) |
Mac needs to know if we're a GUI app in order to find bundled libraries, Use Qt to find application path if available
Diffstat (limited to 'src/openscad.cc')
-rw-r--r-- | src/openscad.cc | 30 |
1 files changed, 20 insertions, 10 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"); |