diff options
author | don bright <hugh.m.bright@gmail.com> | 2013-02-24 03:54:53 (GMT) |
---|---|---|
committer | don bright <hugh.m.bright@gmail.com> | 2013-02-24 03:54:53 (GMT) |
commit | ca41979ee514f642c506e4f4d81461f19b587bf2 (patch) | |
tree | f31feb004d0b724d5240c8a227c7f0c886939a1b /src | |
parent | eff16283358217b43b310269a72e0cb47357a8b3 (diff) | |
parent | abc9da96c89b337377ee62ac29ee54e4e7b0a514 (diff) |
Merge branch 'master' of github.com:openscad/openscad into issue11_2
Conflicts:
RELEASE_NOTES
openscad.pro
src/mainwin.cc
Diffstat (limited to 'src')
-rw-r--r-- | src/AutoUpdater.cc | 3 | ||||
-rw-r--r-- | src/AutoUpdater.h | 25 | ||||
-rw-r--r-- | src/CocoaUtils.h | 13 | ||||
-rw-r--r-- | src/CocoaUtils.mm | 15 | ||||
-rw-r--r-- | src/GLView.cc | 23 | ||||
-rw-r--r-- | src/GLView.h | 6 | ||||
-rw-r--r-- | src/MainWindow.h | 1 | ||||
-rw-r--r-- | src/MainWindow.ui | 12 | ||||
-rw-r--r-- | src/OffscreenView.cc | 16 | ||||
-rw-r--r-- | src/OffscreenView.h | 15 | ||||
-rw-r--r-- | src/Preferences.cc | 47 | ||||
-rw-r--r-- | src/Preferences.h | 3 | ||||
-rw-r--r-- | src/Preferences.ui | 170 | ||||
-rw-r--r-- | src/QGLView.h | 7 | ||||
-rw-r--r-- | src/SparkleAutoUpdater.h | 32 | ||||
-rw-r--r-- | src/SparkleAutoUpdater.mm | 72 | ||||
-rw-r--r-- | src/mainwin.cc | 24 | ||||
-rw-r--r-- | src/openscad.cc | 9 | ||||
-rw-r--r-- | src/parsersettings.cc | 23 | ||||
-rw-r--r-- | src/qglview.cc | 19 |
20 files changed, 467 insertions, 68 deletions
diff --git a/src/AutoUpdater.cc b/src/AutoUpdater.cc new file mode 100644 index 0000000..b64cc82 --- /dev/null +++ b/src/AutoUpdater.cc @@ -0,0 +1,3 @@ +#include "AutoUpdater.h" + +AutoUpdater *AutoUpdater::updater_instance = NULL; diff --git a/src/AutoUpdater.h b/src/AutoUpdater.h new file mode 100644 index 0000000..18527c8 --- /dev/null +++ b/src/AutoUpdater.h @@ -0,0 +1,25 @@ +#ifndef AUTOUPDATER_H_ +#define AUTOUPDATER_H_ + +#include <QString> + +class AutoUpdater +{ +public: + virtual ~AutoUpdater() {} + + virtual void checkForUpdates() = 0; + virtual void setAutomaticallyChecksForUpdates(bool on) = 0; + virtual bool automaticallyChecksForUpdates() = 0; + virtual void setEnableSnapshots(bool on) = 0; + virtual bool enableSnapshots() = 0; + virtual QString lastUpdateCheckDate() = 0; + + static AutoUpdater *updater() { return updater_instance; } + static void setUpdater(AutoUpdater *updater) { updater_instance = updater; } + +protected: + static AutoUpdater *updater_instance; +}; + +#endif diff --git a/src/CocoaUtils.h b/src/CocoaUtils.h new file mode 100644 index 0000000..ad5518b --- /dev/null +++ b/src/CocoaUtils.h @@ -0,0 +1,13 @@ +#ifndef COCOAUTILS_H_ +#define COCOAUTILS_H_ + +#include <string> + +class CocoaUtils +{ +public: + static void endApplication(); + static std::string documentsPath(); +}; + +#endif diff --git a/src/CocoaUtils.mm b/src/CocoaUtils.mm new file mode 100644 index 0000000..295ceb9 --- /dev/null +++ b/src/CocoaUtils.mm @@ -0,0 +1,15 @@ +#include "CocoaUtils.h" +#import <Foundation/Foundation.h> +#include <stdio.h> + +void CocoaUtils::endApplication() +{ + [[NSNotificationCenter defaultCenter] + postNotificationName:@"NSApplicationWillTerminateNotification" + object:nil]; +} + +std::string CocoaUtils::documentsPath() +{ + return std::string([[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] UTF8String]); +} diff --git a/src/GLView.cc b/src/GLView.cc index c851497..2f6d69f 100644 --- a/src/GLView.cc +++ b/src/GLView.cc @@ -5,14 +5,29 @@ GLView::GLView() { - std::cout << "glview();" << std::endl; - this->renderer = NULL; + viewer_distance = 500; + object_trans << 0, 0, 0; + camera_eye << 0, 0, 0; + camera_center << 0, 0, 0; + showedges = false; + showfaces = true; + orthomode = false; + showaxes = false; + showcrosshairs = false; + renderer = NULL; +#ifdef ENABLE_OPENCSG + is_opencsg_capable = false; + has_shaders = false; + opencsg_support = true; + static int sId = 0; + this->opencsg_id = sId++; + for (int i = 0; i < 10; i++) this->shaderinfo[i] = 0; +#endif } void GLView::setRenderer(Renderer* r) { - std::cout << "setr " << r << "\n" << std::endl; - this->renderer = r; + renderer = r; } void GLView::resizeGL(int w, int h) diff --git a/src/GLView.h b/src/GLView.h index 39ec0a6..f7ae5a7 100644 --- a/src/GLView.h +++ b/src/GLView.h @@ -54,6 +54,7 @@ public: bool showaxes; bool showfaces; bool showedges; + bool showcrosshairs; Eigen::Vector3d object_trans; Eigen::Vector3d object_rot; Eigen::Vector3d camera_eye; @@ -61,6 +62,11 @@ public: #ifdef ENABLE_OPENCSG GLint shaderinfo[11]; + bool is_opencsg_capable; + bool has_shaders; +// void enable_opencsg_shaders(); + bool opencsg_support; + int opencsg_id; #endif /* void paintGL(); // diff --git a/src/MainWindow.h b/src/MainWindow.h index 4848db6..8745b8b 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -90,6 +90,7 @@ private: class QMessageBox *openglbox; private slots: + void actionUpdateCheck(); void actionNew(); void actionOpen(); void actionOpenRecent(); diff --git a/src/MainWindow.ui b/src/MainWindow.ui index 9dfc5dc..8e995cd 100644 --- a/src/MainWindow.ui +++ b/src/MainWindow.ui @@ -223,6 +223,7 @@ <addaction name="helpActionHomepage"/> <addaction name="helpActionManual"/> <addaction name="helpActionLibraryInfo"/> + <addaction name="appActionUpdateCheck"/> </widget> <addaction name="menu_File"/> <addaction name="menu_Edit"/> @@ -611,6 +612,9 @@ </property> </action> <action name="helpActionAbout"> + <property name="enabled"> + <bool>true</bool> + </property> <property name="text"> <string>About</string> </property> @@ -676,6 +680,14 @@ <string>Library info</string> </property> </action> + <action name="appActionUpdateCheck"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Check for Update..</string> + </property> + </action> </widget> <customwidgets> <customwidget> diff --git a/src/OffscreenView.cc b/src/OffscreenView.cc index b7d1deb..aa8570e 100644 --- a/src/OffscreenView.cc +++ b/src/OffscreenView.cc @@ -16,25 +16,9 @@ OffscreenView::OffscreenView(size_t width, size_t height) { - orthomode = false; - showaxes = false; - showfaces = true; - showedges = false; object_rot << 35, 0, 25; - camera_eye << 0, 0, 0; - camera_center << 0, 0, 0; - -#ifdef ENABLE_OPENCSG - is_opencsg_capable = false; - has_shaders = false; - opencsg_support = true; - static int sId = 0; - this->opencsg_id = sId++; - for (int i = 0; i < 10; i++) this->shaderinfo[i] = 0; -#endif this->ctx = create_offscreen_context(width, height); if ( this->ctx == NULL ) throw -1; - initializeGL(); GLView::resizeGL(width, height); } diff --git a/src/OffscreenView.h b/src/OffscreenView.h index 69bda4c..81fa88d 100644 --- a/src/OffscreenView.h +++ b/src/OffscreenView.h @@ -17,22 +17,15 @@ class OffscreenView : public GLView public: OffscreenView(size_t width, size_t height); // not ~OffscreenView(); // not - + void enable_opencsg_shaders(); void initializeGL(); // void paintGL(); // - - bool save(const char *filename); bool save(std::ostream &output); - std::string getRendererInfo() const; OffscreenContext *ctx; // not -#ifdef ENABLE_OPENCSG - bool is_opencsg_capable; - bool has_shaders; - void enable_opencsg_shaders(); - bool opencsg_support; - int opencsg_id; -#endif + // overrides + bool save(const char *filename); + std::string getRendererInfo() const; }; #endif diff --git a/src/Preferences.cc b/src/Preferences.cc index ec66094..7c7aee4 100644 --- a/src/Preferences.cc +++ b/src/Preferences.cc @@ -26,10 +26,13 @@ #include "Preferences.h" +#include <QMessageBox> #include <QFontDatabase> #include <QKeyEvent> #include <QSettings> +#include <QStatusBar> #include "PolySetCache.h" +#include "AutoUpdater.h" #ifdef ENABLE_CGAL #include "CGALCache.h" #endif @@ -88,6 +91,7 @@ Preferences::Preferences(QWidget *parent) : QMainWindow(parent) QActionGroup *group = new QActionGroup(this); group->addAction(prefsAction3DView); group->addAction(prefsActionEditor); + group->addAction(prefsActionUpdate); group->addAction(prefsActionAdvanced); connect(group, SIGNAL(triggered(QAction*)), this, SLOT(actionTriggered(QAction*))); @@ -155,6 +159,9 @@ Preferences::actionTriggered(QAction *action) else if (action == this->prefsActionEditor) { this->stackedWidget->setCurrentWidget(this->pageEditor); } + else if (action == this->prefsActionUpdate) { + this->stackedWidget->setCurrentWidget(this->pageUpdate); + } else if (action == this->prefsActionAdvanced) { this->stackedWidget->setCurrentWidget(this->pageAdvanced); } @@ -186,6 +193,40 @@ void Preferences::on_fontSize_editTextChanged(const QString &size) emit fontChanged(getValue("editor/fontfamily").toString(), intsize); } +void unimplemented_msg() +{ + QMessageBox mbox; + mbox.setText("Sorry, this feature is not implemented on your Operating System"); + mbox.exec(); +} + +void Preferences::on_updateCheckBox_toggled(bool on) +{ + if (AutoUpdater *updater =AutoUpdater::updater()) { + updater->setAutomaticallyChecksForUpdates(on); + } else { + unimplemented_msg(); + } +} + +void Preferences::on_snapshotCheckBox_toggled(bool on) +{ + if (AutoUpdater *updater =AutoUpdater::updater()) { + updater->setEnableSnapshots(on); + } else { + unimplemented_msg(); + } +} + +void Preferences::on_checkNowButton_clicked() +{ + if (AutoUpdater *updater =AutoUpdater::updater()) { + updater->checkForUpdates(); + } else { + unimplemented_msg(); + } +} + void Preferences::on_openCSGWarningBox_toggled(bool state) { @@ -289,6 +330,12 @@ void Preferences::updateGUI() this->fontSize->setEditText(fontsize); } + if (AutoUpdater *updater = AutoUpdater::updater()) { + this->updateCheckBox->setChecked(updater->automaticallyChecksForUpdates()); + this->snapshotCheckBox->setChecked(updater->enableSnapshots()); + this->lastCheckedLabel->setText(updater->lastUpdateCheckDate()); + } + this->openCSGWarningBox->setChecked(getValue("advanced/opencsg_show_warning").toBool()); this->enableOpenCSGBox->setChecked(getValue("advanced/enable_opencsg_opengl1x").toBool()); this->cgalCacheSizeEdit->setText(getValue("advanced/cgalCacheSize").toString()); diff --git a/src/Preferences.h b/src/Preferences.h index 48e07b4..4656793 100644 --- a/src/Preferences.h +++ b/src/Preferences.h @@ -30,6 +30,9 @@ public slots: void on_polysetCacheSizeEdit_textChanged(const QString &); void on_opencsgLimitEdit_textChanged(const QString &); void on_forceGoldfeatherBox_toggled(bool); + void on_updateCheckBox_toggled(bool); + void on_snapshotCheckBox_toggled(bool); + void on_checkNowButton_clicked(); signals: void requestRedraw() const; diff --git a/src/Preferences.ui b/src/Preferences.ui index 9b4671a..d67db6a 100644 --- a/src/Preferences.ui +++ b/src/Preferences.ui @@ -6,10 +6,16 @@ <rect> <x>0</x> <y>0</y> - <width>531</width> - <height>418</height> + <width>473</width> + <height>320</height> </rect> </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="windowTitle"> <string>Preferences</string> </property> @@ -173,6 +179,150 @@ </item> </layout> </widget> + <widget class="QWidget" name="pageUpdate"> + <layout class="QVBoxLayout" name="verticalLayout_16"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_9"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QCheckBox" name="updateCheckBox"> + <property name="text"> + <string>Automatically check for updates</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="snapshotCheckBox"> + <property name="text"> + <string>Include development snapshots</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <property name="spacing"> + <number>0</number> + </property> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_11"> + <item> + <spacer name="horizontalSpacer_10"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="checkNowButton"> + <property name="text"> + <string>Check Now</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_9"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_10"> + <item> + <spacer name="horizontalSpacer_11"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="lastCheckedLabel"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="font"> + <font> + <pointsize>11</pointsize> + </font> + </property> + <property name="text"> + <string>Last checked: </string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_12"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </item> + <item> + <spacer name="verticalSpacer_7"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>89</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> <widget class="QWidget" name="pageAdvanced"> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> @@ -227,9 +377,6 @@ </widget> </item> </layout> - <zorder>openCSGWarningBox</zorder> - <zorder>enableOpenCSGBox</zorder> - <zorder>forceGoldfeatherBox</zorder> </widget> </item> <item> @@ -317,6 +464,7 @@ </attribute> <addaction name="prefsAction3DView"/> <addaction name="prefsActionEditor"/> + <addaction name="prefsActionUpdate"/> <addaction name="prefsActionAdvanced"/> </widget> <action name="prefsAction3DView"> @@ -355,6 +503,18 @@ <string>Editor</string> </property> </action> + <action name="prefsActionUpdate"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="icon"> + <iconset resource="../openscad.qrc"> + <normaloff>:/icons/prefsUpdate.png</normaloff>:/icons/prefsUpdate.png</iconset> + </property> + <property name="text"> + <string>Update</string> + </property> + </action> </widget> <resources> <include location="../openscad.qrc"/> diff --git a/src/QGLView.h b/src/QGLView.h index 77c5baf..5cb1872 100644 --- a/src/QGLView.h +++ b/src/QGLView.h @@ -43,11 +43,6 @@ public: public: QLabel *statusLabel; -#ifdef ENABLE_OPENCSG - bool opencsg_support; - int opencsg_id; -#endif - private: void init(); @@ -71,8 +66,6 @@ private: void normalizeAngle(GLdouble& angle); #ifdef ENABLE_OPENCSG - bool is_opencsg_capable; - bool has_shaders; private slots: void display_opencsg_warning(); #endif diff --git a/src/SparkleAutoUpdater.h b/src/SparkleAutoUpdater.h new file mode 100644 index 0000000..786a190 --- /dev/null +++ b/src/SparkleAutoUpdater.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2008 Remko Troncon. BSD license + * Copyright (C) 2013 Marius Kintel. BSD license + */ +#ifndef SPARKLEAUTOUPDATER_H +#define SPARKLEAUTOUPDATER_H + +#include <QString> + +#include "AutoUpdater.h" + +class SparkleAutoUpdater : public AutoUpdater +{ +public: + SparkleAutoUpdater(); + ~SparkleAutoUpdater(); + + void checkForUpdates(); + void setAutomaticallyChecksForUpdates(bool on); + bool automaticallyChecksForUpdates(); + void setEnableSnapshots(bool on); + bool enableSnapshots(); + QString lastUpdateCheckDate(); + +private: + void updateFeed(); + + class Private; + Private *d; +}; + +#endif diff --git a/src/SparkleAutoUpdater.mm b/src/SparkleAutoUpdater.mm new file mode 100644 index 0000000..c52e2bb --- /dev/null +++ b/src/SparkleAutoUpdater.mm @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2008 Remko Troncon. BSD license + * Copyright (C) 2013 Marius Kintel. BSD license + */ + +#include "SparkleAutoUpdater.h" + +#include <Cocoa/Cocoa.h> +#include <Sparkle/Sparkle.h> + +NSString *const SUEnableSnapshotsKey = @"SUEnableSnapshots"; + +class SparkleAutoUpdater::Private +{ +public: + SUUpdater* updater; +}; + +SparkleAutoUpdater::SparkleAutoUpdater() +{ + d = new Private; + + d->updater = [SUUpdater sharedUpdater]; + [d->updater retain]; + + updateFeed(); +} + +SparkleAutoUpdater::~SparkleAutoUpdater() +{ + [d->updater release]; + delete d; +} + +void SparkleAutoUpdater::checkForUpdates() +{ + [d->updater checkForUpdatesInBackground]; +} + +void SparkleAutoUpdater::setAutomaticallyChecksForUpdates(bool on) +{ + [d->updater setAutomaticallyChecksForUpdates:on]; +} + +bool SparkleAutoUpdater::automaticallyChecksForUpdates() +{ + return [d->updater automaticallyChecksForUpdates]; +} + +void SparkleAutoUpdater::setEnableSnapshots(bool on) +{ + [[NSUserDefaults standardUserDefaults] setBool:on forKey:SUEnableSnapshotsKey]; + updateFeed(); +} + +bool SparkleAutoUpdater::enableSnapshots() +{ + return [[NSUserDefaults standardUserDefaults] boolForKey:SUEnableSnapshotsKey]; +} + +QString SparkleAutoUpdater::lastUpdateCheckDate() +{ + NSDate *date = [d->updater lastUpdateCheckDate]; + NSString *datestring = date ? [NSString stringWithFormat:@"Last checked: %@", date] : @""; + return QString::fromUtf8([datestring UTF8String]); +} + +void SparkleAutoUpdater::updateFeed() +{ + NSString *urlstring = [NSString stringWithFormat:@"http://openscad.org/appcast%@.xml", enableSnapshots() ? @"-snapshots" : @""]; + [d->updater setFeedURL:[NSURL URLWithString:urlstring]]; +} diff --git a/src/mainwin.cc b/src/mainwin.cc index b603113..0280bbe 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -49,6 +49,10 @@ #include "ThrownTogetherRenderer.h" #include "csgtermnormalizer.h" #include "QGLView.h" +#include "AutoUpdater.h" +#ifdef Q_OS_MAC +#include "CocoaUtils.h" +#endif #include <QMenu> #include <QTime> @@ -206,6 +210,16 @@ MainWindow::MainWindow(const QString &filename) animate_panel->hide(); + // Application menu +#ifdef DEBUG + this->appActionUpdateCheck->setEnabled(false); +#else +#ifdef Q_OS_MAC + this->appActionUpdateCheck->setMenuRole(QAction::ApplicationSpecificRole); + this->appActionUpdateCheck->setEnabled(true); + connect(this->appActionUpdateCheck, SIGNAL(triggered()), this, SLOT(actionUpdateCheck())); +#endif +#endif // File menu connect(this->fileActionNew, SIGNAL(triggered()), this, SLOT(actionNew())); connect(this->fileActionOpen, SIGNAL(triggered()), this, SLOT(actionOpen())); @@ -773,6 +787,13 @@ void MainWindow::compileCSG(bool procevents) } } +void MainWindow::actionUpdateCheck() +{ + if (AutoUpdater *updater =AutoUpdater::updater()) { + updater->checkForUpdates(); + } +} + void MainWindow::actionNew() { #ifdef ENABLE_MDI @@ -1815,6 +1836,9 @@ void MainWindow::quit() QApplication::sendEvent(QApplication::instance(), &ev); if (ev.isAccepted()) QApplication::instance()->quit(); // FIXME: Cancel any CGAL calculations +#ifdef Q_OS_MAC + CocoaUtils::endApplication(); +#endif } void MainWindow::consoleOutput(const std::string &msg, void *userdata) diff --git a/src/openscad.cc b/src/openscad.cc index 0baba24..0b5466e 100644 --- a/src/openscad.cc +++ b/src/openscad.cc @@ -54,6 +54,7 @@ #ifdef Q_WS_MAC #include "EventFilter.h" #include "AppleEvents.h" +#include "SparkleAutoUpdater.h" #endif #include <boost/program_options.hpp> @@ -412,6 +413,14 @@ int main(int argc, char **argv) installAppleEventHandlers(); #endif +#ifndef DEBUG +#ifdef Q_WS_MAC + AutoUpdater *updater = new SparkleAutoUpdater; + AutoUpdater::setUpdater(updater); + if (updater->automaticallyChecksForUpdates()) updater->checkForUpdates(); +#endif +#endif + QString qfilename; if (filename) qfilename = QString::fromStdString(boosty::stringy(boosty::absolute(filename))); diff --git a/src/parsersettings.cc b/src/parsersettings.cc index 3dda132..54f9713 100644 --- a/src/parsersettings.cc +++ b/src/parsersettings.cc @@ -2,7 +2,9 @@ #include <boost/filesystem.hpp> #include <boost/foreach.hpp> #include "boosty.h" +#include <boost/algorithm/string.hpp> #include <qglobal.h> // Needed for Q_ defines - move the offending code somewhere else +#include "CocoaUtils.h" namespace fs = boost::filesystem; @@ -28,15 +30,24 @@ std::string locate_file(const std::string &filename) void parser_init(const std::string &applicationpath) { - // Add path from OPENSCADPATH before adding built-in paths - const char *openscadpath = getenv("OPENSCADPATH"); - if (openscadpath) { - add_librarydir(boosty::absolute(fs::path(openscadpath)).string()); + // Add paths from OPENSCADPATH before adding built-in paths + const char *openscadpaths = getenv("OPENSCADPATH"); + if (openscadpaths) { + std::string paths(openscadpaths); + typedef boost::split_iterator<std::string::iterator> string_split_iterator; + for (string_split_iterator it = + make_split_iterator(paths, first_finder(":", boost::is_iequal())); + it != string_split_iterator(); + ++it) { + add_librarydir(boosty::absolute(fs::path(boost::copy_range<std::string>(*it))).string()); + } } - // FIXME: Support specifying more than one path in OPENSCADPATH // FIXME: Add ~/.openscad/libraries - // FIXME: Add ~/Documents/OpenSCAD/libraries on Mac? +#ifdef __APPLE__ + fs::path docdir(CocoaUtils::documentsPath()); + add_librarydir(boosty::stringy(docdir / "OpenSCAD" / "libraries")); +#endif std::string librarydir; fs::path libdir(applicationpath); diff --git a/src/qglview.cc b/src/qglview.cc index 0e07b52..8e228e4 100644 --- a/src/qglview.cc +++ b/src/qglview.cc @@ -71,31 +71,12 @@ static bool running_under_wine = false; void QGLView::init() { - this->viewer_distance = 500; this->object_rot << 35, 0, -25; - this->object_trans << 0, 0, 0; this->mouse_drag_active = false; - - this->showedges = false; - this->showfaces = true; - this->orthomode = false; - this->showaxes = false; - this->showcrosshairs = false; - - for (int i = 0; i < 10; i++) - this->shaderinfo[i] = 0; - this->statusLabel = NULL; setMouseTracking(true); -#ifdef ENABLE_OPENCSG - this->is_opencsg_capable = false; - this->has_shaders = false; - this->opencsg_support = true; - static int sId = 0; - this->opencsg_id = sId++; -#endif // see paintGL() + issue160 + wine FAQ #ifdef _WIN32 |