Merge remote-tracking branch 'origin/master' into c++11

master
Marius Kintel 2014-11-06 12:41:54 +01:00
commit 637244d59e
185 changed files with 3729 additions and 1214 deletions

BIN
Arrowhead-Right-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
Document-New-128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
Open-128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -88,6 +88,7 @@ are build scripts that download and compile the libraries from source.
Follow the instructions for the platform you're compiling on below.
* [Qt4 (4.4 - 5.3)](http://www.qt.nokia.com/)
* [QScintilla2 (2.7)](http://www.riverbankcomputing.co.uk/software/qscintilla/)
* [CGAL (3.6 - 4.4)](http://www.cgal.org/)
* [GMP (5.x)](http://www.gmplib.org/)
* [MPFR (3.x)](http://www.mpfr.org/)

BIN
Save-128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
axes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

BIN
back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 B

View File

@ -16,3 +16,4 @@ include(sparkle.pri)
include(harfbuzz.pri)
include(freetype.pri)
include(fontconfig.pri)
include(scintilla.pri)

BIN
down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,19 +1,19 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<alias binding="strong">
<family>sans-serif</family>
<prefer>
<family>Liberation Sans</family>
</prefer>
</alias>
<alias>
<alias binding="strong">
<family>serif</family>
<prefer>
<family>Liberation Serif</family>
</prefer>
</alias>
<alias>
<alias binding="strong">
<family>monospace</family>
<prefer>
<family>Liberation Mono</family>

BIN
front.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
grid.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="background.png"
width="4096"
height="2048">
<defs
id="defs4">
<linearGradient
id="linearGradient3866">
<stop
style="stop-color:#eeeeee;stop-opacity:1;"
offset="0"
id="stop3868" />
<stop
style="stop-color:#fafafa;stop-opacity:0.98039216;"
offset="1"
id="stop3870" />
</linearGradient>
<inkscape:path-effect
effect="spiro"
id="path-effect3864"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect3092"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect3088"
is_visible="true" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3866"
id="linearGradient3872"
x1="498.51535"
y1="-132.61803"
x2="485.61191"
y2="1079.5651"
gradientUnits="userSpaceOnUse"
spreadMethod="pad"
gradientTransform="matrix(1.6433895,0,0,1.7222108,0,-757.44619)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="0.27395613"
inkscape:cx="821.95355"
inkscape:cy="1254.6882"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2085"
inkscape:window-height="944"
inkscape:window-x="41"
inkscape:window-y="426"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,995.63782)">
<path
style="fill:url(#linearGradient3872);fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,-607.63782 c 573.64466,-587.12628 1686.5916,-78.13811 4095,1318.13894 l 0,341.86108 -4095,0 z"
id="path3090"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
icons/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
icons/button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -5,4 +5,4 @@ Name=OpenSCAD
Icon=openscad
Exec=openscad %f
MimeType=application/x-openscad;
Categories=Graphics;3DGraphics;Engineering;Development;
Categories=Graphics;3DGraphics;Engineering;

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Document-New-128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
images/Open-128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
images/Open-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Preview-32 (1).png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Preview-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Rotation-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Save-128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
images/Save-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Shape-Cube-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Zoom-In-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/Zoom-Out-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/animate.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 B

BIN
images/animate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
images/axes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

BIN
images/back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 B

BIN
images/blackNew.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/blackRender.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/blackUp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

BIN
images/blackUp1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 939 B

BIN
images/blackUp2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

BIN
images/blackUp4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 B

BIN
images/blackUp5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

BIN
images/blackaxes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

BIN
images/blackback.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
images/blackbottom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
images/blackbottom1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
images/blackfront.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 B

BIN
images/blackleft (copy).png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
images/blackleft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
images/bottom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

BIN
images/cross.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

BIN
images/crosswhite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

BIN
images/export-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

BIN
images/export.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
images/front.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
images/grid.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

BIN
images/left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

BIN
images/openscad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

BIN
images/orthogonal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

BIN
images/orthogonalwhite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

BIN
images/perspective1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

BIN
images/right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

BIN
images/rightright.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
images/surface.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
images/surfaceWhite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
images/up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

BIN
images/wireframe1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

BIN
images/wireframeWhite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

BIN
images/zoom-all-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 B

BIN
images/zoom-all.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

BIN
images/zoomin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

BIN
images/zoomout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 B

BIN
openscad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

View File

@ -1,14 +1,14 @@
# Environment variables which can be set to specify library locations:
# MPIRDIR
# MPFRDIR
# BOOSTDIR
# CGALDIR
# EIGENDIR
# GLEWDIR
# OPENCSGDIR
# OPENSCAD_LIBRARIES
# MPIRDIR
# MPFRDIR
# BOOSTDIR
# CGALDIR
# EIGENDIR
# GLEWDIR
# OPENCSGDIR
# OPENSCAD_LIBRARIES
#
# Please see the 'Building' sections of the OpenSCAD user manual
# Please see the 'Building' sections of the OpenSCAD user manual
# for updated tips & workarounds.
#
# http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
@ -151,13 +151,13 @@ netbsd* {
}
# Prevent LD_LIBRARY_PATH problems when running the openscad binary
# on systems where uni-build-dependencies.sh was used.
# on systems where uni-build-dependencies.sh was used.
# Will not affect 'normal' builds.
!isEmpty(OPENSCAD_LIBDIR) {
unix:!macx {
QMAKE_LFLAGS = -Wl,-R$$OPENSCAD_LIBDIR/lib $$QMAKE_LFLAGS
# need /lib64 beause GLEW installs itself there on 64 bit machines
QMAKE_LFLAGS = -Wl,-R$$OPENSCAD_LIBDIR/lib64 $$QMAKE_LFLAGS
QMAKE_LFLAGS = -Wl,-R$$OPENSCAD_LIBDIR/lib64 $$QMAKE_LFLAGS
}
}
@ -195,8 +195,8 @@ CONFIG += harfbuzz
CONFIG += freetype
CONFIG += fontconfig
#Uncomment the following line to enable QCodeEdit
#CONFIG += qcodeedit
#Uncomment the following line to enable the QScintilla editor
CONFIG += scintilla
# Make experimental features available
experimental {
@ -224,12 +224,14 @@ win* {
RESOURCES = openscad.qrc
FORMS += src/MainWindow.ui \
FORMS += src/MainWindow.ui \
src/Preferences.ui \
src/OpenCSGWarningDialog.ui \
src/AboutDialog.ui \
src/FontListDialog.ui \
src/ProgressWidget.ui
src/ProgressWidget.ui \
src/launchingscreen.ui \
src/LibraryInfoDialog.ui
HEADERS += src/typedefs.h \
src/version_check.h \
@ -299,9 +301,9 @@ HEADERS += src/typedefs.h \
src/GeometryEvaluator.h \
src/CSGTermEvaluator.h \
src/Tree.h \
src/DrawingCallback.h \
src/FreetypeRenderer.h \
src/FontCache.h \
src/DrawingCallback.h \
src/FreetypeRenderer.h \
src/FontCache.h \
src/mathc99.h \
src/memory.h \
src/linalg.h \
@ -321,7 +323,11 @@ HEADERS += src/typedefs.h \
src/system-gl.h \
src/CsgInfo.h \
\
src/AutoUpdater.h
src/Dock.h \
src/AutoUpdater.h \
src/launchingscreen.h \
src/legacyeditor.h \
src/LibraryInfoDialog.h
SOURCES += src/version_check.cc \
src/ProgressWidget.cc \
@ -407,7 +413,12 @@ SOURCES += src/version_check.cc \
\
src/openscad.cc \
src/mainwin.cc \
src/FontListDialog.cc
src/UIUtils.cc \
src/Dock.cc \
src/FontListDialog.cc \
src/launchingscreen.cc \
src/legacyeditor.cc \
src/LibraryInfoDialog.cc
# ClipperLib
SOURCES += src/polyclipping/clipper.cpp
@ -481,6 +492,10 @@ libraries.path = $$PREFIX/share/openscad/libraries/
libraries.files = libraries/*
INSTALLS += libraries
fonts.path = $$PREFIX/share/openscad/fonts/
fonts.files = fonts/*
INSTALLS += fonts
applications.path = $$PREFIX/share/applications
applications.files = icons/openscad.desktop
INSTALLS += applications
@ -504,4 +519,3 @@ INSTALLS += man
CONFIG(winconsole) {
include(winconsole.pri)
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by Qt Creator 2.4.1, 2012-02-15T08:41:23. -->
<!-- Written by QtCreator 3.0.1, 2014-08-11T22:59:13. -->
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@ -11,22 +11,24 @@
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QString" key="CurrentPreferences">CppGlobal</value>
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">System</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
@ -49,135 +51,34 @@
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.6 (qt4)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 4.8.6 (qt4)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{90222843-28c9-4a66-ac82-99bd31ae7263}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">INVALID</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory"></value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges">
<value type="QString">OPENSCAD_LIBRARIES=$$PWD/../libraries/install</value>
</valuelist>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MacPorts QT4 Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-build-desktop</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">-1</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-macos-generic-mach_o-64bit./usr/bin/gdb</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">-spec macx-g++</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-j4</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges">
<value type="QString">OPENSCAD_LIBRARIES=$$PWD/../libraries/install</value>
<value type="QString">CCACHE_BASEDIR=$$PWD/..</value>
<value type="QString">PATH=/opt/local/libexec/ccache:/usr/bin:$QTDIR/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</value>
<value type="QString">EIGEN2DIR=$$PWD/../libraries/install/include/eigen2</value>
</valuelist>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 4.7.4 for GCC (Qt SDK) Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">3</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">INVALID</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">CONFIG+=experimental</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
@ -189,9 +90,14 @@
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
<value type="QString">-w</value>
<value type="QString">-r</value>
</valuelist>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
@ -204,117 +110,13 @@
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">4.7.4 Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-build-desktop</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">-1</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">INVALID</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">4.7.4 Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-build-desktop</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">-1</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-macos-generic-mach_o-64bit./usr/bin/gdb</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clone of qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">-spec macx-g++</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clone of Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clone of Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clone of Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clone of Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges">
<value type="QString">OPENSCAD_LIBRARIES=$$PWD/../libraries/install</value>
</valuelist>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 4.7.4 for GCC (Qt SDK) Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 4.7.4 for GCC (Qt SDK)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-release-desktop</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">3</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">5</value>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
@ -323,39 +125,29 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Project.UseGlobal">true</value>
<value type="bool" key="Analyzer.Project.UseGlobal">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
@ -374,37 +166,22 @@
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">openscad</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/shaina/openscad/openscad.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">openscad.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
@ -415,10 +192,10 @@
</data>
<data>
<variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
<value type="QString">{b7a15081-01e1-47e4-b2e5-20f6404deb62}</value>
<value type="QByteArray">{56f57d1a-fe9b-42b2-a96b-3ac76cf7565f}</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">10</value>
<value type="int">15</value>
</data>
</qtcreator>

View File

@ -1,5 +1,8 @@
<RCC>
<qresource prefix="/">
<file>icons/openscad.png</file>
<file>icons/button.png</file>
<file>icons/background-welcome-screen.svg</file>
<file>icons/prefsFeatures.png</file>
<file>icons/stopbutton.png</file>
<file>icons/prefsAdvanced.png</file>
@ -8,5 +11,53 @@
<file>icons/prefsUpdate.png</file>
<file>icons/flattr.png</file>
<file>src/AboutDialog.html</file>
<file>images/Arrowhead-Right-32.png</file>
<file>images/export.png</file>
<file>images/axes.png</file>
<file>images/export-white.png</file>
<file>images/back.png</file>
<file>images/Document-New-128.png</file>
<file>images/front.png</file>
<file>images/grid.png</file>
<file>images/Open-128.png</file>
<file>images/openscad.png</file>
<file>images/right.png</file>
<file>images/Save-128.png</file>
<file>images/up.png</file>
<file>images/bottom.png</file>
<file>images/left.png</file>
<file>images/blackUp.png</file>
<file>images/blackNew.png</file>
<file>images/blackRender.png</file>
<file>images/Rotation-32.png</file>
<file>images/Shape-Cube-32.png</file>
<file>images/Open-32.png</file>
<file>images/Save-32.png</file>
<file>images/blackbottom.png</file>
<file>images/blackleft (copy).png</file>
<file>images/rightright.png</file>
<file>images/blackfront.png</file>
<file>images/blackback.png</file>
<file>images/blackaxes.png</file>
<file>images/zoomin.png</file>
<file>images/zoomout.png</file>
<file>images/wireframe1.png</file>
<file>images/surface.png</file>
<file>images/Zoom-In-32.png</file>
<file>images/Zoom-Out-32.png</file>
<file>images/zoom-all.png</file>
<file>images/zoom-all-white.png</file>
<file>images/surfaceWhite.png</file>
<file>images/wireframeWhite.png</file>
<file>images/orthogonal.png</file>
<file>images/cross.png</file>
<file>images/perspective1.png</file>
<file>images/Preview-32.png</file>
<file>images/animate.png</file>
<file>images/Preview-32 (1).png</file>
<file>images/orthogonalwhite.png</file>
<file>images/perspective1white.png</file>
<file>images/crosswhite.png</file>
<file>icons/background.png</file>
</qresource>
</RCC>

View File

@ -0,0 +1,31 @@
diff --git a/opencsg.pro b/opencsg.pro
index b56e622..5cf2d6d 100644
--- a/opencsg.pro
+++ b/opencsg.pro
@@ -1,2 +1,2 @@
TEMPLATE = subdirs
-SUBDIRS = src example
+SUBDIRS = src
diff --git a/src/src.pro b/src/src.pro
index 9091251..598112a 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -3,15 +3,14 @@ TARGET = opencsg
VERSION = 1.4.0
CONFIG += opengl warn_on release
+CONFIG += absolute_library_soname
INCLUDEPATH += ../include ../
CONFIG -= qt
LIBS += -lGLEW
-DESTDIR = ../lib
-INSTALLDIR = /usr/local
headers.files = ../include/opencsg.h
-headers.path = $$INSTALLDIR/include
-target.path = /usr/local/lib
+headers.path = $$DESTDIR/include
+target.path = $$DESTDIR/lib
INSTALLS += target headers
HEADERS = ../include/opencsg.h \

18
qscintilla2.prf Normal file
View File

@ -0,0 +1,18 @@
greaterThan(QT_MAJOR_VERSION, 4) {
QT += widgets printsupport
greaterThan(QT_MINOR_VERSION, 1) {
macx:QT += macextras
}
}
INCLUDEPATH += $$[QT_INSTALL_HEADERS]
LIBS += -L$$[QT_INSTALL_LIBS]
greaterThan(QT_MAJOR_VERSION, 4) {
win32|macx:LIBS += -lqscintilla2
else:LIBS += -lqt5scintilla2
} else {
LIBS += -lqscintilla2
}

BIN
right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

26
scintilla.pri Normal file
View File

@ -0,0 +1,26 @@
scintilla {
HEADERS += src/scintillaeditor.h src/scadlexer.h
SOURCES += src/scintillaeditor.cpp src/scadlexer.cpp
DEFINES += USE_SCINTILLA_EDITOR
# The qscintilla2.prf which ships with QScintilla is broken for Mac/Windows
# debug builds, so we supply our own
win32|macx: {
include(qscintilla2.prf)
}
else: {
load(qscintilla2) {
# All good, found installed *.prf file.
} else {
# Older scintilla libs (e.g. 2.7.2 on fedora20) do not provide the
# prf file.
#
# In addition Ubuntu (and maybe other distributions) have the Qt5
# prf file in the wrong location so it's not picked up by qmake
#
message("Using local copy of qscintilla2.prf instead.")
include(qscintilla2.prf)
}
}
}

View File

@ -83,6 +83,9 @@ glib2_sysver()
if [ ! -e $glib2path ]; then
glib2path=$1/lib/glib-2.0/include/glibconfig.h
fi
if [ ! -e $glib2path ]; then
glib2path=$1/lib64/glib-2.0/include/glibconfig.h
fi
if [ ! -e $glib2path ]; then
return
fi
@ -157,20 +160,67 @@ gmp_sysver()
gmp_sysver_result="$gmpmaj.$gmpmin.$gmppat"
}
qt4_sysver()
qt_sysver()
{
qt4path=$1/include/qt4/QtCore/qglobal.h
if [ ! -e $qt4path ]; then
qt4path=$1/include/QtCore/qglobal.h
if [ "`command -v qtchooser`" ]; then
if qtchooser -run-tool=qmake -qt=5 -v >/dev/null 2>&1 ; then
export QT_SELECT=5
qtpath="`qtchooser -run-tool=qmake -qt=5 -query QT_INSTALL_HEADERS`"/QtCore/qglobal.h
fi
if [ ! -e $qtpath ]; then
if qtchooser -run-tool=qmake -qt=4 -v >/dev/null 2>&1 ; then
export QT_SELECT=4
qtpath="`qtchooser -run-tool=qmake -qt=4 -query QT_INSTALL_HEADERS`"/QtCore/qglobal.h
fi
fi
else
export QT_SELECT=5
qtpath=$1/include/qt5/QtCore/qglobal.h
if [ ! -e $qtpath ]; then
qtpath=$1/include/i686-linux-gnu/qt5/QtCore/qglobal.h
fi
if [ ! -e $qtpath ]; then
qtpath=$1/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h
fi
if [ ! -e $qtpath ]; then
export QT_SELECT=4
qtpath=$1/include/qt4/QtCore/qglobal.h
fi
if [ ! -e $qtpath ]; then
qtpath=$1/include/QtCore/qglobal.h
fi
if [ ! -e $qtpath ]; then
# netbsd
qtpath=$1/qt4/include/QtCore/qglobal.h
fi
if [ ! -e $qtpath ]; then
unset QT_SELECT
return
fi
fi
if [ ! -e $qt4path ]; then
# netbsd
qt4path=$1/qt4/include/QtCore/qglobal.h
qtver=`grep 'define *QT_VERSION_STR *' $qtpath | awk '{print $3}'`
qtver=`echo $qtver | sed s/'"'//g`
qt_sysver_result=$qtver
}
qscintilla2_sysver()
{
# expecting the QT_SELECT already set in case we found qtchooser
if qmake -v >/dev/null 2>&1 ; then
QMAKE=qmake
elif [ "`command -v qmake-qt4`" ]; then
QMAKE=qmake-qt4
fi
if [ ! -e $qt4path ]; then return; fi
qt4ver=`grep 'define *QT_VERSION_STR *' $qt4path | awk '{print $3}'`
qt4ver=`echo $qt4ver | sed s/'"'//g`
qt4_sysver_result=$qt4ver
qtincdir="`$QMAKE -query QT_INSTALL_HEADERS`"
qscipath="$qtincdir/Qsci/qsciglobal.h"
if [ ! -e $qscipath ]; then
return
fi
qsciver=`grep define.*QSCINTILLA_VERSION_STR "$qscipath" | awk '{print $3}'`
qsciver=`echo $qsciver | sed s/'"'//g`
qscintilla2_sysver_result="$qsciver"
}
glew_sysver()
@ -586,7 +636,7 @@ checkargs()
main()
{
deps="qt4 cgal gmp mpfr boost opencsg glew eigen glib2 fontconfig freetype2 harfbuzz gcc bison flex make"
deps="qt qscintilla2 cgal gmp mpfr boost opencsg glew eigen glib2 fontconfig freetype2 harfbuzz gcc bison flex make"
#deps="$deps curl git" # not technically necessary for build
#deps="$deps python cmake imagemagick" # only needed for tests
#deps="cgal"

View File

@ -55,6 +55,7 @@ build_libxml2()
build_fontconfig()
{
version=$1
extra_config_flags="$2"
if [ -e $DEPLOYDIR/include/fontconfig ]; then
echo "fontconfig already installed. not building"
@ -70,10 +71,10 @@ build_fontconfig()
tar xzf "fontconfig-$version.tar.gz"
cd "fontconfig-$version"
export PKG_CONFIG_PATH="$DEPLOYDIR/lib/pkgconfig"
./configure --prefix="$DEPLOYDIR" --enable-libxml2 --disable-docs
./configure --prefix=/ --enable-libxml2 --disable-docs $extra_config_flags
unset PKG_CONFIG_PATH
make -j$NUMCPU
make install
DESTDIR="$DEPLOYDIR" make -j$NUMCPU
DESTDIR="$DEPLOYDIR" make install
}
build_libffi()

View File

@ -133,6 +133,22 @@ build_qt5()
make -j"$NUMCPU" install
}
build_qscintilla()
{
version=$1
echo "Building QScintilla" $version "..."
cd $BASEDIR/src
rm -rf QScintilla-gpl-$version
if [ ! -f QScintilla-gpl-$version.tar.gz ]; then
curl -LO http://downloads.sourceforge.net/project/pyqt/QScintilla2/QScintilla-$version/QScintilla-gpl-$version.tar.gz
fi
tar xzf QScintilla-gpl-$version.tar.gz
cd QScintilla-gpl-$version/Qt4Qt5
qmake qscintilla.pro
make -j6 install
install_name_tool -id $DEPLOYDIR/lib/libqscintilla2.dylib $DEPLOYDIR/lib/libqscintilla2.dylib
}
# Hack warning: gmplib is built separately in 32-bit and 64-bit mode
# and then merged afterwards. gmplib's header files are dependent on
# the CPU architecture on which configure was run and will be patched accordingly.
@ -340,8 +356,9 @@ build_cgal()
cd $BASEDIR/src
rm -rf CGAL-$version
if [ ! -f CGAL-$version.tar.gz ]; then
# 4.4
curl -O https://gforge.inria.fr/frs/download.php/file/33525/CGAL-$version.tar.gz
# 4.5
curl -O https://gforge.inria.fr/frs/download.php/file/34149/CGAL-$version.tar.gz
# 4.4 curl -O https://gforge.inria.fr/frs/download.php/file/33525/CGAL-$version.tar.gz
# 4.3 curl -O https://gforge.inria.fr/frs/download.php/32994/CGAL-$version.tar.gz
# 4.2 curl -O https://gforge.inria.fr/frs/download.php/32359/CGAL-$version.tar.gz
# 4.1 curl -O https://gforge.inria.fr/frs/download.php/31641/CGAL-$version.tar.gz
@ -410,7 +427,7 @@ build_opencsg()
if $OPTION_32BIT; then
OPENCSG_EXTRA_FLAGS="x86"
fi
OPENSCAD_LIBRARIES=$DEPLOYDIR qmake -r CONFIG+="x86_64 $OPENCSG_EXTRA_FLAGS"
qmake -r QMAKE_CXXFLAGS+="-I$DEPLOYDIR/include" QMAKE_LFLAGS+="-L$DEPLOYDIR/lib" CONFIG+="x86_64 $OPENCSG_EXTRA_FLAGS" DESTDIR=$DEPLOYDIR
make install
}
@ -638,7 +655,7 @@ build_ragel()
cd "$BASEDIR"/src
rm -rf "ragel-$version"
if [ ! -f "ragel-$version.tar.gz" ]; then
curl --insecure -LO "http://www.complang.org/ragel/ragel-$version.tar.gz"
curl --insecure -LO "http://www.colm.net/wp-content/uploads/2014/10/ragel-$version.tar.gz"
fi
tar xzf "ragel-$version.tar.gz"
cd "ragel-$version"
@ -754,21 +771,22 @@ fi
echo "Using basedir:" $BASEDIR
mkdir -p $SRCDIR $DEPLOYDIR
build_qt5 5.3.1
build_qscintilla 2.8.3
# NB! For eigen, also update the path in the function
build_eigen 3.2.1
build_gmp 5.1.3
build_mpfr 3.1.2
build_boost 1.54.0
# NB! For CGAL, also update the actual download URL in the function
build_cgal 4.4
build_cgal 4.5
build_glew 1.10.0
build_gettext 0.18.3.2
build_libffi 3.1
build_glib2 2.40.0
build_opencsg 1.3.2
build_opencsg 1.4.0
build_freetype 2.5.3 --without-png
build_ragel 6.8
build_harfbuzz 0.9.28 "--with-coretext=auto --with-glib=no"
build_ragel 6.9
build_harfbuzz 0.9.35 "--with-coretext=auto --with-glib=no"
export FREETYPE_CFLAGS="-I$DEPLOYDIR/include -I$DEPLOYDIR/include/freetype2"
export FREETYPE_LIBS="-L$DEPLOYDIR/lib -lfreetype"
build_libxml2 2.9.1

View File

@ -58,21 +58,21 @@ fi
echo "entering" $MXEDIR
cd $MXEDIR
echo 'checkout stable branch'
git checkout stable
echo 'checkout master branch'
git checkout master
if [ "`echo $* | grep 64`" ]; then
MXE_TARGETS='x86_64-w64-mingw32'
MXE_TARGETS='x86_64-w64-mingw32.static'
if [ "`echo $* | grep download`" ]; then
PACKAGES='download-mpfr download-eigen download-opencsg download-cgal download-qt download-qt5 download-glib download-freetype download-fontconfig download-harfbuzz'
PACKAGES='download-mpfr download-eigen download-opencsg download-cgal download-qtbase download-glib download-freetype download-fontconfig download-harfbuzz'
else
PACKAGES='qt qt5 mpfr eigen opencsg cgal glib freetype fontconfig harfbuzz'
PACKAGES='qtbase qscintilla2 mpfr eigen opencsg cgal glib freetype fontconfig harfbuzz'
fi
else
MXE_TARGETS='i686-pc-mingw32'
MXE_TARGETS='i686-w64-mingw32.static'
if [ "`echo $* | grep download`" ]; then
PACKAGES='download-mpfr download-eigen download-opencsg download-cgal download-qt download-qt5 download-nsis download-glib download-freetype download-fontconfig download-harfbuzz'
PACKAGES='download-mpfr download-eigen download-opencsg download-cgal download-qtbase download-nsis download-glib download-freetype download-fontconfig download-harfbuzz'
else
PACKAGES='qt qt5 mpfr eigen opencsg cgal nsis glib freetype fontconfig harfbuzz'
PACKAGES='qtbase qscintilla2 mpfr eigen opencsg cgal nsis glib freetype fontconfig harfbuzz'
fi
fi
echo make $PACKAGES MXE_TARGETS=$MXE_TARGETS -j $NUMCPU JOBS=$NUMJOBS

View File

@ -4,5 +4,6 @@ cd "$( dirname "$( type -p $0 )" )"
libdir=$PWD/../lib/openscad/
cd "$OLDPWD"
export LIBGL_DRIVERS_PATH="$libdir"/dri
export LD_LIBRARY_PATH="$libdir${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
exec $libdir/openscad "$@"

View File

@ -361,6 +361,9 @@ if [ -n $FONTDIR ]; then
MACOSX)
cp -a fonts-osx/* $FONTDIR
;;
UNIX_CROSS_WIN)
cp -a "$DEPLOYDIR"/mingw-cross-env/etc/fonts/. "$FONTDIR"
;;
esac
fi
if [ -n $LIBRARYDIR ]; then
@ -452,12 +455,26 @@ case $OS in
gcc -o chrpath_linux -DSIZEOF_VOID_P=4 scripts/chrpath_linux.c
fi
./chrpath_linux -d openscad-$VERSION/lib/openscad/openscad
ldd openscad | sed -re 's,.* => ,,; s,[\t ].*,,;' -e '/Qt|boost/ { p; d; };' \
-e '/lib(icu.*|stdc.*|audio|CGAL|GLEW|opencsg|png|gmp|gmpxx|mpfr)\.so/ { p; d; };' \
-e 'd;' | xargs cp -vt openscad-$VERSION/lib/openscad/
QTLIBDIR=$(dirname $(ldd openscad | grep Qt5Gui | head -n 1 | awk '{print $3;}'))
( ldd openscad ; ldd "$QTLIBDIR"/qt5/plugins/platforms/libqxcb.so ) \
| sed -re 's,.* => ,,; s,[\t ].*,,;' -e '/^$/d' -e '/libc\.so|libm\.so|libdl\.so|libgcc_|libpthread\.so/d' \
| sort -u \
| xargs cp -vt "openscad-$VERSION/lib/openscad/"
PLATFORMDIR="openscad-$VERSION/lib/openscad/platforms/"
mkdir -p "$PLATFORMDIR"
cp -av "$QTLIBDIR"/qt5/plugins/platforms/libqxcb.so "$PLATFORMDIR"
DRIDRIVERDIR=$(find /usr/lib -xdev -type d -name dri)
if [ -d "$DRIDRIVERDIR" ]
then
DRILIB="openscad-$VERSION/lib/openscad/dri/"
mkdir -p "$DRILIB"
cp -av "$DRIDRIVERDIR"/swrast_dri.so "$DRILIB"
fi
strip openscad-$VERSION/lib/openscad/*
mkdir -p openscad-$VERSION/share/appdata
cp openscad.appdata.xml openscad-$VERSION/share/appdata
cp icons/openscad.{desktop,png,xml} openscad-$VERSION/share/appdata
cp scripts/installer-linux.sh openscad-$VERSION/install.sh
chmod 755 -R openscad-$VERSION/
PACKAGEFILE=openscad-$VERSION.x86-$ARCH.tar.gz

View File

@ -56,9 +56,9 @@ if [ ! -e $DEPLOYDIR ]; then
fi
if [ "`echo $* | grep 64 `" ]; then
MXETARGETDIR=$MXEDIR/usr/x86_64-w64-mingw32
MXETARGETDIR=$MXEDIR/usr/x86_64-w64-mingw32.static
else
MXETARGETDIR=$MXEDIR/usr/i686-pc-mingw32
MXETARGETDIR=$MXEDIR/usr/i686-w64-mingw32.static
fi
if [ ! $MINGWX_SAVED_ORIGINAL_PATH ]; then

View File

@ -13,7 +13,7 @@ if [[ $? != 0 ]]; then
fi
# Exclude tests known the cause issues on Travis
# opencsgtest_rotate_extrude-tests - Fails on Ubuntu 12.04 using Gallium 0.4 drivers
ctest -j8 -E "opencsgtest_rotate_extrude-tests|opencsgtest_render-tests"
ctest -j8 -E "opencsgtest_rotate_extrude-tests|opencsgtest_render-tests|opencsgtest_rotate_extrude-hole|opencsgtest_internal-cavity|opencsgtest_internal-cavity-polyhedron|opencsgtest_minkowski3-erosion"
if [[ $? != 0 ]]; then
echo "Test failure"
exit 1

View File

@ -131,6 +131,56 @@ build_qt4()
echo "----------"
}
build_qt5()
{
version=$1
if [ -f $DEPLOYDIR/lib/libQt5Core.a ]; then
echo "Qt5 already installed. not building"
return
fi
echo "Building Qt" $version "..."
cd $BASEDIR/src
rm -rf qt-everywhere-opensource-src-$version
v=`echo "$version" | sed -e 's/\.[0-9]$//'`
if [ ! -f qt-everywhere-opensource-src-$version.tar.gz ]; then
curl -O -L http://download.qt-project.org/official_releases/qt/$v/$version/single/qt-everywhere-opensource-src-$version.tar.gz
fi
tar xzf qt-everywhere-opensource-src-$version.tar.gz
cd qt-everywhere-opensource-src-$version
./configure -prefix $DEPLOYDIR -release -static -opensource -confirm-license \
-nomake examples -nomake tests \
-qt-xcb -no-c++11 -no-glib -no-harfbuzz -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc \
-no-sql-psql -no-sql-sqlite2 -no-sql-tds -no-cups -no-qml-debug \
-skip activeqt -skip connectivity -skip declarative -skip doc \
-skip enginio -skip graphicaleffects -skip location -skip multimedia \
-skip quick1 -skip quickcontrols -skip script -skip sensors -skip serialport \
-skip svg -skip webkit -skip webkit-examples -skip websockets -skip xmlpatterns
make -j"$NUMCPU" install
}
build_qt5scintilla2()
{
version=$1
if [ -d $DEPLOYDIR/lib/libqt5scintilla2.a ]; then
echo "Qt5Scintilla2 already installed. not building"
return
fi
echo "Building Qt5Scintilla2" $version "..."
cd $BASEDIR/src
#rm -rf QScintilla-gpl-$version.tar.gz
if [ ! -f QScintilla-gpl-$version.tar.gz ]; then
curl -L -o "QScintilla-gpl-$version.tar.gz" "http://downloads.sourceforge.net/project/pyqt/QScintilla2/QScintilla-$version/QScintilla-gpl-$version.tar.gz?use_mirror=switch"
fi
tar xzf QScintilla-gpl-$version.tar.gz
cd QScintilla-gpl-$version/Qt4Qt5/
qmake CONFIG+=staticlib
make -j"$NUMCPU" install
}
build_bison()
{
version=$1
@ -210,7 +260,7 @@ build_gmp()
cd $BASEDIR/src
rm -rf gmp-$version
if [ ! -f gmp-$version.tar.bz2 ]; then
curl --insecure -O ftp://ftp.gmplib.org/pub/gmp-$version/gmp-$version.tar.bz2
curl --insecure -O https://gmplib.org/download/gmp/gmp-$version.tar.bz2
fi
tar xjf gmp-$version.tar.bz2
cd gmp-$version
@ -315,6 +365,7 @@ build_cgal()
echo "Building CGAL" $version "..."
cd $BASEDIR/src
rm -rf CGAL-$version
ver4_4="curl --insecure -O https://gforge.inria.fr/frs/download.php/file/33524/CGAL-4.4.tar.bz2"
ver4_2="curl --insecure -O https://gforge.inria.fr/frs/download.php/32360/CGAL-4.2.tar.bz2"
ver4_1="curl --insecure -O https://gforge.inria.fr/frs/download.php/31640/CGAL-4.1.tar.bz2"
ver4_0_2="curl --insecure -O https://gforge.inria.fr/frs/download.php/31174/CGAL-4.0.2.tar.bz2"
@ -509,6 +560,7 @@ build_eigen()
cd $BASEDIR/src
rm -rf eigen-$version
EIGENDIR="none"
if [ $version = "3.2.2" ]; then EIGENDIR=eigen-eigen-1306d75b4a21; fi
if [ $version = "3.1.1" ]; then EIGENDIR=eigen-eigen-43d9075b23ef; fi
if [ $EIGENDIR = "none" ]; then
echo Unknown eigen version. Please edit script.
@ -697,7 +749,7 @@ if [ $1 ]; then
exit $?
fi
if [ $1 = "cgal" ]; then
build_cgal 4.0.2 use-sys-libs
build_cgal 4.4 use-sys-libs
exit $?
fi
if [ $1 = "opencsg" ]; then
@ -709,6 +761,11 @@ if [ $1 ]; then
build_qt4 4.8.4
exit $?
fi
if [ $1 = "qt5" ]; then
build_qt5 5.3.1
build_qt5scintilla2 2.8.3
exit $?
fi
if [ $1 = "glu" ]; then
# Mesa and GLU split in late 2012, so it's not on some systems
build_glu 9.0.0
@ -741,21 +798,21 @@ fi
#
# Some of these are defined in scripts/common-build-dependencies.sh
build_eigen 3.1.1
build_eigen 3.2.2
build_gmp 5.0.5
build_mpfr 3.1.1
build_boost 1.53.0
build_boost 1.56.0
# NB! For CGAL, also update the actual download URL in the function
build_cgal 4.0.2
build_cgal 4.4
build_glew 1.9.0
build_opencsg 1.3.2
build_gettext 0.18.3.1
build_glib2 2.38.2
# the following are only needed for text()
build_freetype 2.5.0.1
build_freetype 2.5.0.1 --without-png
build_libxml2 2.9.1
build_fontconfig 2.11.0
build_fontconfig 2.11.0 --with-add-fonts=/usr/X11R6/lib/X11/fonts,/usr/local/share/fonts
build_ragel 6.8
build_harfbuzz 0.9.23 --with-glib=yes

View File

@ -57,14 +57,13 @@ get_mageia_deps()
get_debian_deps()
{
for pkg in build-essential libqt4-dev libqt4-opengl-dev \
apt-get -y install \
build-essential curl libffi-dev qtbase5-dev libqt5scintilla2-dev \
libxmu-dev cmake bison flex git-core libboost-all-dev \
libXi-dev libmpfr-dev libboost-dev libglew-dev \
libeigen3-dev libcgal-dev libopencsg-dev libgmp3-dev libgmp-dev \
imagemagick libfontconfig-dev libfreetype6-dev \
libharfbuzz-dev gtk-doc-tools libglib2.0-dev gettext; do
sudo apt-get -y install $pkg;
done
libharfbuzz-dev gtk-doc-tools libglib2.0-dev gettext
}
unknown()

View File

@ -1,4 +1,4 @@
export OPENSCAD_LIBRARIES=$PWD/../libraries/install
export OPENSCAD_LIBRARIES=$PWD/../libraries/install-qt4
export DYLD_LIBRARY_PATH=$OPENSCAD_LIBRARIES/lib
export DYLD_FRAMEWORK_PATH=$OPENSCAD_LIBRARIES/lib
export QMAKESPEC=unsupported/macx-clang

View File

@ -113,8 +113,10 @@ Response CSGTermEvaluator::visit(State &state, const AbstractPolyNode &node)
shared_ptr<CSGTerm> t1;
if (this->geomevaluator) {
shared_ptr<const Geometry> geom = this->geomevaluator->evaluateGeometry(node, false);
t1 = evaluate_csg_term_from_geometry(state, this->highlights, this->background,
geom, node.modinst, node);
if (geom) {
t1 = evaluate_csg_term_from_geometry(state, this->highlights, this->background,
geom, node.modinst, node);
}
node.progress_report();
}
this->stored_term[node.index()] = t1;
@ -178,8 +180,10 @@ Response CSGTermEvaluator::visit(State &state, const RenderNode &node)
shared_ptr<const Geometry> geom;
if (this->geomevaluator) {
geom = this->geomevaluator->evaluateGeometry(node, false);
t1 = evaluate_csg_term_from_geometry(state, this->highlights, this->background,
geom, node.modinst, node);
if (geom) {
t1 = evaluate_csg_term_from_geometry(state, this->highlights, this->background,
geom, node.modinst, node);
}
node.progress_report();
}
this->stored_term[node.index()] = t1;
@ -196,8 +200,10 @@ Response CSGTermEvaluator::visit(State &state, const CgaladvNode &node)
shared_ptr<const Geometry> geom;
if (this->geomevaluator) {
geom = this->geomevaluator->evaluateGeometry(node, false);
t1 = evaluate_csg_term_from_geometry(state, this->highlights, this->background,
geom, node.modinst, node);
if (geom) {
t1 = evaluate_csg_term_from_geometry(state, this->highlights, this->background,
geom, node.modinst, node);
}
node.progress_report();
}
this->stored_term[node.index()] = t1;

View File

@ -43,8 +43,8 @@ public:
CSGTermEvaluator evaluator(tree, &geomevaluator);
boost::shared_ptr<CSGTerm> root_raw_term = evaluator.evaluateCSGTerm( *root_node, this->highlight_terms, this->background_terms );
if (!root_raw_term) {
PRINT("Error: CSG generation failed! (no top level object found)");
if (!root_raw_term && this->background_terms.empty()) {
PRINT("Error: CSG generation failed! (no objects found)");
call_progress_function();
return false;
}
@ -52,16 +52,18 @@ public:
PRINT("Compiling design (CSG Products normalization)...");
call_progress_function();
CSGTermNormalizer normalizer( normalizelimit );
this->root_norm_term = normalizer.normalize(root_raw_term);
if (this->root_norm_term) {
this->root_chain = new CSGChain();
this->root_chain->import(this->root_norm_term);
PRINTB("Normalized CSG tree has %d elements", int(this->root_chain->objects.size()));
}
else {
this->root_chain = NULL;
PRINT("WARNING: CSG normalization resulted in an empty tree");
call_progress_function();
if (root_raw_term) {
this->root_norm_term = normalizer.normalize(root_raw_term);
if (this->root_norm_term) {
this->root_chain = new CSGChain();
this->root_chain->import(this->root_norm_term);
PRINTB("Normalized CSG tree has %d elements", int(this->root_chain->objects.size()));
}
else {
this->root_chain = NULL;
PRINT("WARNING: CSG normalization resulted in an empty tree");
call_progress_function();
}
}
if (this->highlight_terms.size() > 0) {

32
src/Dock.cc Normal file
View File

@ -0,0 +1,32 @@
#include <iostream>
#include <QSettings>
#include "Dock.h"
Dock::Dock(QWidget *parent) : QDockWidget(parent), action(NULL)
{
}
Dock::~Dock()
{
}
void Dock::setVisible(bool visible)
{
QSettings settings;
settings.setValue(configKey, !visible);
if (action != NULL) {
action->setChecked(!visible);
}
QDockWidget::setVisible(visible);
}
void Dock::setConfigKey(const QString configKey)
{
this->configKey = configKey;
}
void Dock::setAction(QAction *action)
{
this->action = action;
}

23
src/Dock.h Normal file
View File

@ -0,0 +1,23 @@
#pragma once
#include <QString>
#include <QAction>
#include <QDockWidget>
class Dock : public QDockWidget
{
Q_OBJECT
public:
Dock(QWidget *parent = NULL);
virtual ~Dock();
void setConfigKey(const QString configKey);
void setAction(QAction *action);
public slots:
void setVisible(bool visible);
private:
QString configKey;
QAction *action;
};

View File

@ -3,6 +3,7 @@
#include <QObject>
#include <QFileOpenEvent>
#include "MainWindow.h"
#include "launchingscreen.h"
class EventFilter : public QObject
{
@ -15,7 +16,16 @@ protected:
// Handle Apple event for opening files
if (event->type() == QEvent::FileOpen) {
QFileOpenEvent *foe = static_cast<QFileOpenEvent *>(event);
MainWindow::requestOpenFile(foe->file());
const QString &filename = foe->file();
if (LaunchingScreen *ls = LaunchingScreen::getDialog()) {
// We need to invoke the method since, apparently, we receive
// this event in another thread.
QMetaObject::invokeMethod(ls, "openFile", Qt::QueuedConnection,
Q_ARG(QString, filename));
}
else {
MainWindow::requestOpenFile(filename);
}
return true;
} else {
// standard event processing

View File

@ -45,7 +45,7 @@ static bool FontInfoSortPredicate(const FontInfo& fi1, const FontInfo& fi2)
return (fi1 < fi2);
}
FontInfo::FontInfo(std::string family, std::string style, std::string file) : family(family), style(style), file(file)
FontInfo::FontInfo(const std::string &family, const std::string &style, const std::string &file) : family(family), style(style), file(file)
{
}
@ -64,39 +64,39 @@ bool FontInfo::operator<(const FontInfo &rhs) const
return file < rhs.file;
}
std::string FontInfo::get_family() const
const std::string &FontInfo::get_family() const
{
return family;
}
std::string FontInfo::get_style() const
const std::string &FontInfo::get_style() const
{
return style;
}
std::string FontInfo::get_file() const
const std::string &FontInfo::get_file() const
{
return file;
}
FontCache * FontCache::self = NULL;
const std::string FontCache::DEFAULT_FONT("Liberation Sans:style=Regular");
const std::string FontCache::DEFAULT_FONT("XXX");
FontCache::FontCache()
{
init_ok = false;
this->init_ok = false;
// If we've got a bundled fonts.conf, initialize fontconfig with our own config
// by overriding the built-in fontconfig path.
// For system installs and dev environments, we leave this alone
fs::path fontdir(fs::path(PlatformUtils::resourcesPath()) / "fonts");
if (fs::is_regular_file(fontdir / "fonts.conf")) {
setenv("FONTCONFIG_PATH", boosty::stringy(boosty::absolute(fontdir)).c_str(), 0);
PlatformUtils::setenv("FONTCONFIG_PATH", boosty::stringy(boosty::absolute(fontdir)).c_str(), 0);
}
// Just load the configs. We'll build the fonts once all configs are loaded
config = FcInitLoadConfig();
if (!config) {
this->config = FcInitLoadConfig();
if (!this->config) {
PRINT("Can't initialize fontconfig library, text() objects will not be rendered");
return;
}
@ -104,20 +104,12 @@ FontCache::FontCache()
// Add the built-in fonts & config
fs::path builtinfontpath = fs::path(PlatformUtils::resourcesPath()) / "fonts";
if (fs::is_directory(builtinfontpath)) {
FcConfigParseAndLoad(this->config, reinterpret_cast<const FcChar8 *>(boosty::stringy(builtinfontpath).c_str()), false);
add_font_dir(boosty::stringy(boosty::canonical(builtinfontpath)));
FcConfigParseAndLoad(config, reinterpret_cast<const FcChar8 *>(boosty::stringy(builtinfontpath).c_str()), false);
}
const char *home = getenv("HOME");
#ifdef WIN32
// Add Window font folders.
const char *windir = getenv("WinDir");
if (windir) {
add_font_dir(std::string(windir) + "\\Fonts");
}
#endif
// Add Linux font folders, the system folders are expected to be
// configured by the system configuration for fontconfig.
if (home) {
@ -139,22 +131,22 @@ FontCache::FontCache()
}
// FIXME: Caching happens here. This would be a good place to notify the user
FcConfigBuildFonts(config);
FcConfigBuildFonts(this->config);
// For use by LibraryInfo
FcStrList *dirs = FcConfigGetFontDirs(config);
FcStrList *dirs = FcConfigGetFontDirs(this->config);
while (FcChar8 *dir = FcStrListNext(dirs)) {
fontpath.push_back(std::string((const char *)dir));
}
FcStrListDone(dirs);
const FT_Error error = FT_Init_FreeType(&library);
const FT_Error error = FT_Init_FreeType(&this->library);
if (error) {
PRINT("Can't initialize freetype library, text() objects will not be rendered");
return;
}
init_ok = true;
this->init_ok = true;
}
FontCache::~FontCache()
@ -169,29 +161,29 @@ FontCache * FontCache::instance()
return self;
}
void FontCache::register_font_file(const std::string path)
void FontCache::register_font_file(const std::string &path)
{
if (!FcConfigAppFontAddFile(config, reinterpret_cast<const FcChar8 *> (path.c_str()))) {
if (!FcConfigAppFontAddFile(this->config, reinterpret_cast<const FcChar8 *> (path.c_str()))) {
PRINTB("Can't register font '%s'", path);
}
}
void FontCache::add_font_dir(const std::string path)
void FontCache::add_font_dir(const std::string &path)
{
if (!fs::is_directory(path)) {
return;
}
if (!FcConfigAppFontAddDir(config, reinterpret_cast<const FcChar8 *> (path.c_str()))) {
if (!FcConfigAppFontAddDir(this->config, reinterpret_cast<const FcChar8 *> (path.c_str()))) {
PRINTB("Can't register font directory '%s'", path);
}
}
FontInfoList * FontCache::list_fonts()
FontInfoList *FontCache::list_fonts() const
{
FcObjectSet *object_set = FcObjectSetBuild(FC_FAMILY, FC_STYLE, FC_FILE, (char *) 0);
FcPattern *pattern = FcPatternCreate();
init_pattern(pattern);
FcFontSet *font_set = FcFontList(config, pattern, object_set);
FcFontSet *font_set = FcFontList(this->config, pattern, object_set);
FcObjectSetDestroy(object_set);
FcPatternDestroy(pattern);
@ -217,20 +209,20 @@ FontInfoList * FontCache::list_fonts()
return list;
}
bool FontCache::is_init_ok()
bool FontCache::is_init_ok() const
{
return init_ok;
return this->init_ok;
}
void FontCache::clear()
{
cache.clear();
this->cache.clear();
}
void FontCache::dump_cache(const std::string info)
void FontCache::dump_cache(const std::string &info)
{
std::cout << info << ":";
for (cache_t::iterator it = cache.begin(); it != cache.end(); it++) {
for (cache_t::iterator it = this->cache.begin(); it != this->cache.end(); it++) {
std::cout << " " << (*it).first << " (" << (*it).second.second << ")";
}
std::cout << std::endl;
@ -238,25 +230,25 @@ void FontCache::dump_cache(const std::string info)
void FontCache::check_cleanup()
{
if (cache.size() < MAX_NR_OF_CACHE_ENTRIES) {
if (this->cache.size() < MAX_NR_OF_CACHE_ENTRIES) {
return;
}
cache_t::iterator pos = cache.begin()++;
for (cache_t::iterator it = cache.begin(); it != cache.end(); it++) {
cache_t::iterator pos = this->cache.begin()++;
for (cache_t::iterator it = this->cache.begin(); it != this->cache.end(); it++) {
if ((*pos).second.second > (*it).second.second) {
pos = it;
}
}
FT_Done_Face((*pos).second.first);
cache.erase(pos);
this->cache.erase(pos);
}
FT_Face FontCache::get_font(const std::string font)
FT_Face FontCache::get_font(const std::string &font)
{
FT_Face face;
cache_t::iterator it = cache.find(font);
if (it == cache.end()) {
cache_t::iterator it = this->cache.find(font);
if (it == this->cache.end()) {
face = find_face(font);
if (!face) {
return NULL;
@ -265,11 +257,11 @@ FT_Face FontCache::get_font(const std::string font)
} else {
face = (*it).second.first;
}
cache[font] = cache_entry_t(face, time(NULL));
this->cache[font] = cache_entry_t(face, time(NULL));
return face;
}
FT_Face FontCache::find_face(const std::string font)
FT_Face FontCache::find_face(const std::string &font) const
{
std::string trimmed(font);
boost::algorithm::trim(trimmed);
@ -281,7 +273,7 @@ FT_Face FontCache::find_face(const std::string font)
return face;
}
void FontCache::init_pattern(FcPattern *pattern)
void FontCache::init_pattern(FcPattern *pattern) const
{
FcValue true_value;
true_value.type = FcTypeBool;
@ -291,16 +283,17 @@ void FontCache::init_pattern(FcPattern *pattern)
FcPatternAdd(pattern, FC_SCALABLE, true_value, true);
}
FT_Face FontCache::find_face_fontconfig(const std::string font)
FT_Face FontCache::find_face_fontconfig(const std::string &font) const
{
FcResult result;
FcPattern *pattern = FcNameParse((unsigned char *) font.c_str());
FcPattern *pattern = FcNameParse((unsigned char *)font.c_str());
init_pattern(pattern);
FcConfigSubstitute(this->config, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
FcConfigSubstitute(config, pattern, FcMatchFont);
FcPattern *match = FcFontMatch(config, pattern, &result);
FcPattern *match = FcFontMatch(this->config, pattern, &result);
FcValue file_value;
if (FcPatternGet(match, FC_FILE, 0, &file_value) != FcResultMatch) {
@ -313,7 +306,7 @@ FT_Face FontCache::find_face_fontconfig(const std::string font)
}
FT_Face face;
FT_Error error = FT_New_Face(library, (const char *) file_value.u.s, font_index.u.i, &face);
FT_Error error = FT_New_Face(this->library, (const char *) file_value.u.s, font_index.u.i, &face);
FcPatternDestroy(pattern);
FcPatternDestroy(match);
@ -348,7 +341,7 @@ FT_Face FontCache::find_face_fontconfig(const std::string font)
return error ? NULL : face;
}
bool FontCache::try_charmap(FT_Face face, int platform_id, int encoding_id)
bool FontCache::try_charmap(FT_Face face, int platform_id, int encoding_id) const
{
for (int idx = 0; idx < face->num_charmaps; idx++) {
FT_CharMap charmap = face->charmaps[idx];
@ -365,7 +358,7 @@ bool FontCache::try_charmap(FT_Face face, int platform_id, int encoding_id)
return false;
}
bool FontCache::is_windows_symbol_font(FT_Face face)
bool FontCache::is_windows_symbol_font(const FT_Face &face) const
{
if (face->charmap->platform_id != TT_PLATFORM_MICROSOFT) {
return false;

View File

@ -44,12 +44,12 @@
class FontInfo {
public:
FontInfo(std::string family, std::string style, std::string file);
FontInfo(const std::string &family, const std::string &style, const std::string &file);
virtual ~FontInfo();
std::string get_family() const;
std::string get_style() const;
std::string get_file() const;
const std::string &get_family() const;
const std::string &get_style() const;
const std::string &get_file() const;
bool operator<(const FontInfo &rhs) const;
private:
std::string family;
@ -67,14 +67,14 @@ public:
FontCache();
virtual ~FontCache();
bool is_init_ok();
FT_Face get_font(std::string font);
bool is_windows_symbol_font(FT_Face face);
void register_font_file(std::string path);
bool is_init_ok() const;
FT_Face get_font(const std::string &font);
bool is_windows_symbol_font(const FT_Face &face) const;
void register_font_file(const std::string &path);
void clear();
FontInfoList * list_fonts();
FontInfoList *list_fonts() const;
static FontCache * instance();
static FontCache *instance();
private:
typedef std::pair<FT_Face, time_t> cache_entry_t;
typedef std::map<std::string, cache_entry_t> cache_t;
@ -87,13 +87,13 @@ private:
FT_Library library;
void check_cleanup();
void dump_cache(const std::string info);
void dump_cache(const std::string &info);
void add_font_dir(const std::string path);
void init_pattern(FcPattern *pattern);
void add_font_dir(const std::string &path);
void init_pattern(FcPattern *pattern) const;
FT_Face find_face(const std::string font);
FT_Face find_face_fontconfig(const std::string font);
bool try_charmap(FT_Face face, int platform_id, int encoding_id);
FT_Face find_face(const std::string &font) const;
FT_Face find_face_fontconfig(const std::string &font) const;
bool try_charmap(FT_Face face, int platform_id, int encoding_id) const;
};

View File

@ -80,7 +80,7 @@ GeometryEvaluator::ResultObject GeometryEvaluator::applyToChildren(const Abstrac
{
unsigned int dim = 0;
BOOST_FOREACH(const Geometry::ChildItem &item, this->visitedchildren[node.index()]) {
if (item.second) {
if (!item.first->modinst->isBackground() && item.second) {
if (!dim) dim = item.second->getDimension();
else if (dim != item.second->getDimension()) {
PRINT("WARNING: Mixing 2D and 3D objects is not supported.");
@ -633,7 +633,8 @@ static void add_slice(PolySet *ps, const Polygon2d &poly,
*/
static Geometry *extrudePolygon(const LinearExtrudeNode &node, const Polygon2d &poly)
{
PolySet *ps = new PolySet(3);
bool cvx = poly.is_convex();
PolySet *ps = new PolySet(3, !cvx ? boost::tribool(false) : node.twist == 0 ? boost::tribool(true) : unknown);
ps->setConvexity(node.convexity);
if (node.height <= 0) return ps;

View File

@ -1,6 +1,9 @@
#include "LibraryInfo.h"
#include <glib.h>
#include <vector>
#ifdef USE_SCINTILLA_EDITOR
#include <Qsci/qsciglobal.h>
#endif
#include "version_check.h"
#define STRINGIFY(x) #x
@ -82,6 +85,9 @@ std::string LibraryInfo::info()
<< "\nCGAL version, kernels: " << TOSTRING(CGAL_VERSION) << ", " << cgal_3d_kernel << ", " << cgal_2d_kernel << ", " << cgal_2d_kernelEx
<< "\nOpenCSG version: " << OPENCSG_VERSION_STRING
<< "\nQt version: " << qtVersion
#ifdef USE_SCINTILLA_EDITOR
<< "\nQScintilla version: " << QSCINTILLA_VERSION_STR
#endif
<< "\nMingW build: " << mingwstatus
<< "\nGLib version: " << GLIB_MAJOR_VERSION << "." << GLIB_MINOR_VERSION << "." << GLIB_MICRO_VERSION
<< "\nOPENSCADPATH: " << (env_path == NULL ? "<not set>" : env_path)

59
src/LibraryInfoDialog.cc Normal file
View File

@ -0,0 +1,59 @@
#include "LibraryInfoDialog.h"
#include <QString>
#include <QStringRef>
#include <QTextEdit>
#include "LibraryInfo.h"
LibraryInfoDialog::LibraryInfoDialog(const QString& rendererInfo)
{
setupUi(this);
connect(this->okButton, SIGNAL(clicked()), this, SLOT(accept()));
update_library_info(rendererInfo);
}
LibraryInfoDialog::~LibraryInfoDialog()
{
}
void LibraryInfoDialog::update_library_info(const QString& rendererInfo)
{
//Get library infos
QString info(LibraryInfo::info().c_str());
info += rendererInfo;
//Parse infos and make it html
info = info.replace("\n", "<br/>");
bool end = false;
int startIndex = 0;
while(!end)
{
int endIndex = info.indexOf(":", startIndex);
if(endIndex != -1)
{
//add bold to property name
info = info.insert(startIndex, "<b>");
endIndex += 3;
info = info.replace(endIndex, 1, ":</b>");
startIndex = info.indexOf("<br/>", endIndex);
//handle property with multiple lines
int endInd = info.indexOf(":", startIndex);
if(endInd != -1)
{
QStringRef lines(&info, startIndex, endInd - startIndex);
int lastIndex = lines.lastIndexOf("<br/>");
startIndex = lastIndex != -1 ? lastIndex+startIndex : startIndex;
}
}
else
{
end = true;
}
}
this->infoTextBox->setHtml(info);
}

Some files were not shown because too many files have changed in this diff Show More