Accepting request 605255 from science

drop med-tools from adi project

- temporary disable FEM module
  * it works fine, but requires hdf5 version 1.8 via med-tools,
    which currently conflicts in openSUSE distro.
- Fix draft module crash
  (got merged upstream for 0.18 fix-draft-module-with-python3.patch)

- apply current 0.17 branch (branch_update.patch)
  In first place for occt 7.2 fixes

- fix crash in Draft module with python 3

- cleanup python qt deps (pyside2 only now)

- update to version 0.17
  2 years of work: https://www.freecadweb.org/wiki/Release_notes_0.17
- switching to Qt5
  (fix-build.diff 0001-find-openmpi2-include-files.patch)
  (the old 0.16 fork had obsolete temporary patches remove-qtwebkit.patch and
   remove-webgui.patch)

OBS-URL: https://build.opensuse.org/request/show/605255
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/FreeCAD?expand=0&rev=6
This commit is contained in:
Dominique Leuenberger 2018-05-08 11:39:22 +00:00 committed by Git OBS Bridge
commit 1d27eba39c
14 changed files with 819 additions and 216 deletions

View File

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ecfe23a6..1db9bf33e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -717,7 +717,7 @@ endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
add_compile_options(${OPENMPI_CFLAGS})
link_directories(${OPENMPI_LIBRARY_DIRS})
link_libraries(${OPENMPI_LIBRARIES})
- find_file(MpidotH mpi.h PATHS ${OPENMPI_INCLUDE_DIRS} NO_DEFAULT_PATH)
+ find_file(MpidotH mpi.h PATHS ${OPENMPI_INCLUDE_DIRS} /usr/lib64/mpi/gcc/openmpi2/include NO_DEFAULT_PATH)
if(NOT MpidotH)
message( WARNING "mpi.h was not found. Check for error above.")
endif()

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:66891dd8a208daa48024216e1dca6627b8ec90c6105cce7d33eaffc066b307ef
size 241548815

3
FreeCAD-0.17.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:15bf621edb984b0914fd7e5c1ce2e2469b3f031fbb4d2bd1f86c90f634e0829b
size 385050127

View File

@ -1,3 +1,38 @@
-------------------------------------------------------------------
Tue May 8 06:33:56 UTC 2018 - adrian@suse.de
- temporary disable FEM module
* it works fine, but requires hdf5 version 1.8 via med-tools,
which currently conflicts in openSUSE distro.
- Fix draft module crash
(got merged upstream for 0.18 fix-draft-module-with-python3.patch)
-------------------------------------------------------------------
Fri Apr 27 12:55:30 UTC 2018 - adrian@suse.de
- apply current 0.17 branch (branch_update.patch)
In first place for occt 7.2 fixes
-------------------------------------------------------------------
Tue Apr 17 06:46:23 UTC 2018 - adrian@suse.de
- fix crash in Draft module with python 3
-------------------------------------------------------------------
Mon Apr 16 06:51:06 UTC 2018 - adrian@suse.de
- cleanup python qt deps (pyside2 only now)
-------------------------------------------------------------------
Tue Apr 10 11:33:35 UTC 2018 - adrian@suse.de
- update to version 0.17
2 years of work: https://www.freecadweb.org/wiki/Release_notes_0.17
- switching to Qt5
(fix-build.diff 0001-find-openmpi2-include-files.patch)
(the old 0.16 fork had obsolete temporary patches remove-qtwebkit.patch and
remove-webgui.patch)
-------------------------------------------------------------------
Thu Jan 4 15:36:57 UTC 2018 - wbauer@tmo.at

View File

@ -1,5 +1,5 @@
name: FreeCAD
version: 0.16.6712
mtime: 1500312467
commit: da2d364457257a7a8c6fb2137cea12c45becd71a
version: 0.17
mtime: 1523004517
commit: 0258808ccb6ba3bd5ea9312f79cd023f1a8671b7

5
FreeCAD.sh Normal file
View File

@ -0,0 +1,5 @@
#!/bin/sh
# let Python pick up /usr/lib64/FreeCAD/bin/PySide
cd /usr/lib64/FreeCAD/bin
# temporary workaround for a bug somewhere around python3 in Factory leading to memory corruption
LC_ALL=C ./FreeCAD $@

View File

@ -1,7 +1,7 @@
#
# spec file for package FreeCAD
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -19,20 +19,33 @@
%define x_prefix %{_libdir}/%{name}
Name: FreeCAD
Version: 0.16.6712
Version: 0.17
Release: 0
Summary: General Purpose 3D CAD Modeler
License: LGPL-2.0+ and GPL-2.0+
License: LGPL-2.0-or-later AND GPL-2.0-or-later
Group: Productivity/Graphics/CAD
Url: http://www.freecadweb.org/
Source0: %{name}-%{version}.tar.xz
Source2: FreeCAD_shared_mimeinfo
# PATCH-FIX-OPENSUSE remove-qtwebkit.patch -- fix build without QtWebKit
Patch0: remove-qtwebkit.patch
# PATCH-FIX-OPENSUSE remove-webgui.patch -- remove browser view that would need QtWebKit
Patch1: remove-webgui.patch
Source0: %{name}-%version.tar.xz
Source1: FreeCAD.sh
Source2: FreeCADCmd.sh
Source3: FreeCAD_shared_mimeinfo
Patch0: branch_update.patch
# python3 and generic compile fixes
Patch1: fix-build.diff
# support for openmpi2 suse package
Patch2: 0001-find-openmpi2-include-files.patch
# runtime fix, submitted upstream
Patch3: fix-draft-module-with-python3.patch
BuildRequires: Coin-devel
BuildRequires: SoQt-devel
#BuildRequires: SoQt-devel
#BuildRequires: libmed-devel # needed for FEM module, but requires older hdf5 lib
# we use upstream OpenCASCADE instead of oce atm
BuildRequires: occt-devel
BuildRequires: vtk-devel
BuildRequires: vtk-java
BuildRequires: vtk-tcl
#BuildRequires: smesh-devel
%if 0%{?suse_version} >= 1330
BuildRequires: libboost_filesystem-devel >= 1.55
BuildRequires: libboost_graph-devel >= 1.55
@ -45,6 +58,7 @@ BuildRequires: libboost_thread-devel >= 1.55
%else
BuildRequires: boost-devel >= 1.55
%endif
BuildRequires: cmake
BuildRequires: dos2unix
BuildRequires: doxygen
@ -53,46 +67,74 @@ BuildRequires: fdupes
BuildRequires: freeglut-devel
BuildRequires: gcc-fortran
BuildRequires: git
BuildRequires: hdf5-devel
BuildRequires: libXerces-c-devel
BuildRequires: libeigen3-devel
BuildRequires: libqt4-devel
BuildRequires: pkg-config
# reported to break FreeCAD here
# https://forum.freecadweb.org/viewtopic.php?t=24610
Conflicts: python-pivy
%if 0%{?suse_version} >= 1330
# Qt5 & python3
BuildRequires: openmpi2-devel
BuildRequires: python3-devel
BuildRequires: python3-matplotlib
BuildRequires: python3-pyside2-devel
BuildRequires: python3-vtk
BuildRequires: python3-xml
BuildRequires: pkgconfig(Qt5Concurrent)
BuildRequires: pkgconfig(Qt5OpenGL)
BuildRequires: pkgconfig(Qt5PrintSupport)
BuildRequires: pkgconfig(Qt5ScriptTools)
BuildRequires: pkgconfig(Qt5Svg)
BuildRequires: pkgconfig(Qt5UiTools)
BuildRequires: pkgconfig(Qt5WebKit)
BuildRequires: pkgconfig(Qt5WebKitWidgets)
Requires: python3-pyside2
# For Arch & Draft workbench
Requires: python3-pivy
# core dump if PySide is installed
Conflicts: python3-pyside
Conflicts: python-pyside
%else
BuildRequires: libshiboken-devel
BuildRequires: libspnav-devel
BuildRequires: oce-devel
BuildRequires: opencv-devel
BuildRequires: pkgconfig
BuildRequires: python-CXX-devel
BuildRequires: python-devel
BuildRequires: python-matplotlib
BuildRequires: python-pyside
BuildRequires: python-pyside-devel
BuildRequires: python-pyside-tools
BuildRequires: pkgconfig(QtWebKit)
%if 0%{?suse_version} > 0
# Qt4 & python2
BuildRequires: libqt4-devel
BuildRequires: python-xml
%endif
%endif
%if 0%{?fedora} > 18
BuildRequires: eigen3-devel
BuildRequires: qt5-qtbase-devel
%endif
BuildRequires: libspnav-devel
BuildRequires: opencv-devel
BuildRequires: swig
%if 0%{?suse_version}
BuildRequires: libeigen3-devel
BuildRequires: update-desktop-files
%endif
BuildRequires: dos2unix
BuildRequires: make
BuildRequires: unzip
BuildRequires: update-desktop-files
BuildRequires: zlib-devel
%if 0%{?suse_version} < 1500
BuildRequires: pkgconfig(QtWebKit)
%endif
Requires: python-CXX
Requires: python-pyside
%if 0%{?suse_version} <= 1320
Requires(post): shared-mime-info
Requires(postun): shared-mime-info
%endif
Recommends: python-pivy
Recommends: ccx
%description
Note: This package contains the current development version and thus might
be unstable!
FreeCAD is a parametric 3D modeler made primarily to design real-life objects of any size. Parametric modeling allows you to easily modify your design by going back into your model history and changing its parameters. FreeCAD is open-source and highly customizable, scriptable and extensible.
FreeCAD is a general purpose 3D CAD modeler. The development will be completely
Open Source. As with many modern 3D CAD modelers it will have a 2D component in
order to extract design detail from the 3D model to create 2D production
drawings, although 2D (e.g. AutoCAD LT) is not the focus, neither are animation
and organic shapes (e.g. Maya, 3D StudioMAX and Cinema 4D).
%package devel
Summary: Development Files for %{name}
@ -104,15 +146,18 @@ This package contains the files needed for development with FreeCAD.
%prep
%setup -q
%if 0%{?suse_version} >= 1500
%patch0 -p1
%patch1 -p1
%endif
%patch2 -p1
%patch3 -p1
# fix env-script-interpreter
sed -i '1c#!%{__python2}' \
src/Mod/Test/testmakeWireString.py \
src/Mod/Test/unittestgui.py
# Fix "wrong-file-end-of-line-encoding" rpmlint warning
sed -i 's/\r$//' ChangeLog.txt
sed -i 's/\r$//' copying.lib
# Fix "wrong-script-end-of-line-encoding" rpmlint warning
sed -i 's/\r$//' src/Mod/PartDesign/Scripts/Spring.py
@ -122,36 +167,41 @@ sed -i 's/\r$//' src/Mod/Robot/MovieTool.py
rm src/3rdparty/Pivy -fr
rm src/3rdparty/Pivy-0.5 -fr
# fix env-script-interpreter
sed -i '1c#!%{__python2}' \
src/Mod/Test/testmakeWireString.py \
src/Mod/Test/unittestgui.py
%build
mkdir build && cd build
# cmake macro would set standard libdir
# it needs an older specific zipios version -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE
# it needs an older specific zipios version -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE
# -fpermissive should become $RPM_OPT_FLAGS , but bugs ...
printenv
cmake \
-DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \
-DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \
-DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \
-DCMAKE_INSTALL_INCLUDEDIR=%{_includedir}/%{name} \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \
-DOCC_INCLUDE_DIR=%{_includedir}/oce \
-DOCC_INCLUDE_DIR=%{_includedir}/opencascade \
-DRESOURCEDIR=%{_datadir}/%{name} \
-DCMAKE_BUILD_TYPE=Release \
%if %{with netgen}
-DBUILD_FEM_NETGEN=ON \
-DCMAKE_CXX_FLAGS="-fpermissive -fno-strict-aliasing" \
%if 0%{?suse_version} >= 1330
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DSHIBOKEN_INCLUDE_DIR=/usr/include/shiboken2/ \
-DPYSIDE_INCLUDE_DIR=/usr/include/PySide2/ \
-DBUILD_QT5=ON \
%else
-DBUILD_FEM_NETGEN=OFF \
-DPYCXX_INCLUDE_DIR:PATH=%{_includedir}/python2.7 \
-DPYCXX_SOURCE_DIR:PATH=%{_datadir}/python2.7/CXX \
%endif
%if 0%{?suse_version} >= 1500
-DBUILD_START=OFF \
-DBUILD_WEB=OFF \
%endif
../
-DFREECAD_USE_EXTERNAL_PIVY:BOOL=TRUE \
-DBUILD_MESH_PART:BOOL=ON \
-DBUILD_OPENSCAD:BOOL=ON \
-DBUILD_FEM:BOOL=OFF \
-DBUILD_FEM_NETGEN:BOOL=OFF \
-DFREECAD_USE_EXTERNAL_SMESH=OFF \
..
make VERBOSE=1 %{?_smp_mflags} all
make VERBOSE=1 %{?_smp_mflags} all || make VERBOSE=1 all
# # Build documentation last, somehow
# # this triggers a rebuild
@ -182,9 +232,6 @@ popd
# nice make VERBOSE=1 %%{?_smp_mflags} install DESTDIR=%%{buildroot}
# popd
# Install the Qt plugin
#install -Dpm 0755 src/Tools/plugins/widget/libFreeCAD_widgets.so %%{buildroot}/usr/%%{_lib}/qt4/plugins/designer/libFreeCAD_widgets.so
# Fix "non-executable-script" rpmlint warning
chmod 755 %{buildroot}%{x_prefix}/Mod/Robot/MovieTool.py \
%{buildroot}%{x_prefix}/Mod/Test/testmakeWireString.py \
@ -195,12 +242,12 @@ mkdir -p %{buildroot}%{_datadir}/pixmaps
mv %{buildroot}%{_datadir}/%{name}/freecad.xpm %{buildroot}%{_datadir}/pixmaps/freecad.xpm
# Install additional documentation files
install -pm 0644 ChangeLog.txt copying.lib %{buildroot}%{_docdir}/%{name}/
#install -pm 0644 ChangeLog.txt copying.lib %{buildroot}%{_docdir}/%{name}/
%suse_update_desktop_file -c %{name} "%{name}" "3D CAD Modeler" %{name} "freecad" Education Engineering
# Install mime type
install -Dpm 0644 %{SOURCE2} %{buildroot}/%{_datadir}/mime/packages/%{name}.xml
install -Dpm 0644 %{SOURCE3} %{buildroot}/usr/share/mime/packages/%{name}.xml
# Remove unneeded files
find %{buildroot} -type f -name "*.la" -delete -print
@ -219,9 +266,17 @@ dos2unix %{buildroot}%{x_prefix}/Mod/Test/unittestgui.py
dos2unix %{buildroot}%{x_prefix}/Mod/Part/MakeBottle.py
# Link binaries
mkdir -p %{buildroot}%{_bindir}
ln -s -t %{buildroot}%{_bindir} %{x_prefix}/bin/FreeCAD
ln -s -t %{buildroot}%{_bindir} %{x_prefix}/bin/FreeCADCmd
mkdir -p %{buildroot}/usr/bin
%if 0%{?suse_version} >= 91330
# disabled, hopefully not anymore needed
cp %{S:1} %{buildroot}/usr/bin/FreeCAD
chmod +x %{buildroot}/usr/bin/FreeCAD
cp %{S:2} %{buildroot}/usr/bin/FreeCADCmd
chmod +x %{buildroot}/usr/bin/FreeCADCmd
%else
ln -s -t %{buildroot}/usr/bin %{x_prefix}/bin/FreeCAD
ln -s -t %{buildroot}/usr/bin %{x_prefix}/bin/FreeCADCmd
%endif
%fdupes -s %{buildroot}

4
FreeCADCmd.sh Normal file
View File

@ -0,0 +1,4 @@
#!/bin/sh
# let Python pick up /usr/lib64/FreeCAD/bin/PySide
cd /usr/lib64/FreeCAD/bin
./FreeCADCmd

View File

@ -2,8 +2,8 @@
<service name="obs_scm" mode="disabled">
<param name="url">https://github.com/FreeCAD/FreeCAD.git</param>
<param name="scm">git</param>
<param name="revision">releases/FreeCAD-0-16</param>
<param name="version">0.16.6712</param>
<param name="revision">0.17</param>
<param name="version">0.17</param>
</service>
<service name="set_version" mode="disabled"/>

554
branch_update.patch Normal file
View File

@ -0,0 +1,554 @@
diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp
index 6f6fb6cba..471c07428 100644
--- a/src/App/Expression.cpp
+++ b/src/App/Expression.cpp
@@ -897,16 +897,13 @@ Expression * FunctionExpression::evalAggregate() const
throw Exception("Invalid property type for aggregate");
} while (range.next());
}
- else if (args[i]->isDerivedFrom(App::VariableExpression::getClassTypeId())) {
+ else {
std::unique_ptr<Expression> e(args[i]->eval());
NumberExpression * n(freecad_dynamic_cast<NumberExpression>(e.get()));
if (n)
c->collect(n->getQuantity());
}
- else if (args[i]->isDerivedFrom(App::NumberExpression::getClassTypeId())) {
- c->collect(static_cast<NumberExpression*>(args[i])->getQuantity());
- }
}
return new NumberExpression(owner, c->getQuantity());
diff --git a/src/App/FeaturePython.cpp b/src/App/FeaturePython.cpp
index 0a90b43a0..9d04fecad 100644
--- a/src/App/FeaturePython.cpp
+++ b/src/App/FeaturePython.cpp
@@ -108,17 +108,21 @@ void FeaturePythonImp::onBeforeChange(const Property* prop)
if (feature.hasAttr("__object__")) {
Py::Callable method(feature.getAttr(std::string("onBeforeChange")));
Py::Tuple args(1);
- std::string prop_name = object->getPropertyName(prop);
- args.setItem(0, Py::String(prop_name));
- method.apply(args);
+ const char* prop_name = object->getPropertyName(prop);
+ if (prop_name) {
+ args.setItem(0, Py::String(prop_name));
+ method.apply(args);
+ }
}
else {
Py::Callable method(feature.getAttr(std::string("onBeforeChange")));
Py::Tuple args(2);
args.setItem(0, Py::Object(object->getPyObject(), true));
- std::string prop_name = object->getPropertyName(prop);
- args.setItem(1, Py::String(prop_name));
- method.apply(args);
+ const char* prop_name = object->getPropertyName(prop);
+ if (prop_name) {
+ args.setItem(1, Py::String(prop_name));
+ method.apply(args);
+ }
}
}
}
@@ -141,17 +145,21 @@ void FeaturePythonImp::onChanged(const Property* prop)
if (feature.hasAttr("__object__")) {
Py::Callable method(feature.getAttr(std::string("onChanged")));
Py::Tuple args(1);
- std::string prop_name = object->getPropertyName(prop);
- args.setItem(0, Py::String(prop_name));
- method.apply(args);
+ const char* prop_name = object->getPropertyName(prop);
+ if (prop_name) {
+ args.setItem(0, Py::String(prop_name));
+ method.apply(args);
+ }
}
else {
Py::Callable method(feature.getAttr(std::string("onChanged")));
Py::Tuple args(2);
args.setItem(0, Py::Object(object->getPyObject(), true));
- std::string prop_name = object->getPropertyName(prop);
- args.setItem(1, Py::String(prop_name));
- method.apply(args);
+ const char* prop_name = object->getPropertyName(prop);
+ if (prop_name) {
+ args.setItem(1, Py::String(prop_name));
+ method.apply(args);
+ }
}
}
}
diff --git a/src/Gui/ViewProviderPythonFeature.cpp b/src/Gui/ViewProviderPythonFeature.cpp
index 927557068..2fe1c4fd1 100644
--- a/src/Gui/ViewProviderPythonFeature.cpp
+++ b/src/Gui/ViewProviderPythonFeature.cpp
@@ -643,17 +643,21 @@ void ViewProviderPythonFeatureImp::onChanged(const App::Property* prop)
if (vp.hasAttr("__object__")) {
Py::Callable method(vp.getAttr(std::string("onChanged")));
Py::Tuple args(1);
- std::string prop_name = object->getPropertyName(prop);
- args.setItem(0, Py::String(prop_name));
- method.apply(args);
+ const char* prop_name = object->getPropertyName(prop);
+ if (prop_name) {
+ args.setItem(0, Py::String(prop_name));
+ method.apply(args);
+ }
}
else {
Py::Callable method(vp.getAttr(std::string("onChanged")));
Py::Tuple args(2);
args.setItem(0, Py::Object(object->getPyObject(), true));
- std::string prop_name = object->getPropertyName(prop);
- args.setItem(1, Py::String(prop_name));
- method.apply(args);
+ const char* prop_name = object->getPropertyName(prop);
+ if (prop_name) {
+ args.setItem(1, Py::String(prop_name));
+ method.apply(args);
+ }
}
}
}
diff --git a/src/Mod/Arch/ArchStructure.py b/src/Mod/Arch/ArchStructure.py
index 1a442dff2..a0ec64d56 100644
--- a/src/Mod/Arch/ArchStructure.py
+++ b/src/Mod/Arch/ArchStructure.py
@@ -152,7 +152,7 @@ class _CommandStructure:
st = Draft.getObjectsOfType(sel,"Structure")
ax = Draft.getObjectsOfType(sel,"Axis")
if ax:
- FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Structural System")))
+ FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Structural System"))
FreeCADGui.addModule("Arch")
if st:
FreeCADGui.doCommand("obj = Arch.makeStructuralSystem(" + ArchCommands.getStringList(st) + "," + ArchCommands.getStringList(ax) + ")")
@@ -164,7 +164,7 @@ class _CommandStructure:
FreeCAD.ActiveDocument.recompute()
return
elif not(ax) and not(st):
- FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Structure")))
+ FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Structure"))
FreeCADGui.addModule("Arch")
for obj in sel:
FreeCADGui.doCommand("obj = Arch.makeStructure(FreeCAD.ActiveDocument." + obj.Name + ")")
@@ -194,7 +194,7 @@ class _CommandStructure:
self.tracker.finalize()
if point == None:
return
- FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Structure")))
+ FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Structure"))
FreeCADGui.addModule("Arch")
if self.Profile is not None:
if "Precast" in self.Profile:
diff --git a/src/Mod/Import/Gui/AppImportGuiPy.cpp b/src/Mod/Import/Gui/AppImportGuiPy.cpp
index b83092d9e..6c20eb94c 100644
--- a/src/Mod/Import/Gui/AppImportGuiPy.cpp
+++ b/src/Mod/Import/Gui/AppImportGuiPy.cpp
@@ -541,7 +541,12 @@ private:
// the App Code.
std::vector< std::vector<App::Color> > Colors;
get_parts_colors(hierarchical_part,FreeLabels,part_id,Colors);
- ocaf.reallocateFreeShape(hierarchical_part,FreeLabels,part_id,Colors);
+ ocaf.reallocateFreeShape(hierarchical_part,FreeLabels,part_id,Colors);
+
+#if OCC_VERSION_HEX >= 0x070200
+ // Update is not performed automatically anymore: https://tracker.dev.opencascade.org/view.php?id=28055
+ XCAFDoc_DocumentTool::ShapeTool(hDoc->Main())->UpdateAssemblies();
+#endif
Base::FileInfo file(Utf8Name.c_str());
if (file.hasExtension("stp") || file.hasExtension("step")) {
diff --git a/src/Mod/Mesh/App/MeshPy.xml b/src/Mod/Mesh/App/MeshPy.xml
index c71944df6..76bc4618a 100644
--- a/src/Mod/Mesh/App/MeshPy.xml
+++ b/src/Mod/Mesh/App/MeshPy.xml
@@ -520,7 +520,7 @@ for p in mesh.Facets:
</Attribute>
<ClassDeclarations>private:
friend class PropertyMeshKernel;
- class PropertyMeshKernel* parentProperty;
+ class PropertyMeshKernel* parentProperty = nullptr;
</ClassDeclarations>
</PythonExport>
</GenerateModel>
diff --git a/src/Mod/PartDesign/App/DatumPoint.cpp b/src/Mod/PartDesign/App/DatumPoint.cpp
index 297d56276..5a65f09a6 100644
--- a/src/Mod/PartDesign/App/DatumPoint.cpp
+++ b/src/Mod/PartDesign/App/DatumPoint.cpp
@@ -99,12 +99,12 @@ void Point::onChanged(const App::Property* prop)
Superclass::onChanged(prop);
}
-void Point::Restore(Base::XMLReader& r)
+void Point::onDocumentRestored()
{
- Superclass::Restore(r);
//fix for #0002758 Datum point moves to (0,0,0) when reopening the file.
//recreate shape, as the restored one has old Placement burned into it.
this->makeShape();
+ Superclass::onDocumentRestored();
}
void Point::makeShape()
@@ -114,7 +114,9 @@ void Point::makeShape()
BRepBuilderAPI_MakeVertex builder(gp_Pnt(0,0,0));
if (!builder.IsDone())
return;
- Shape.setValue(builder.Shape());
+ Part::TopoShape tshape(builder.Shape());
+ tshape.setPlacement(this->Placement.getValue());
+ Shape.setValue(tshape);
}
Base::Vector3d Point::getPoint()
diff --git a/src/Mod/PartDesign/App/DatumPoint.h b/src/Mod/PartDesign/App/DatumPoint.h
index 19dfdbeb4..e00cf6434 100644
--- a/src/Mod/PartDesign/App/DatumPoint.h
+++ b/src/Mod/PartDesign/App/DatumPoint.h
@@ -50,9 +50,11 @@ public:
protected:
virtual void onChanged(const App::Property* prop);
- virtual void Restore(Base::XMLReader& r);
+ virtual void onDocumentRestored() override;
+
private:
void makeShape();
+
};
} //namespace PartDesign
diff --git a/src/Mod/Path/PathScripts/post/grbl_post.py b/src/Mod/Path/PathScripts/post/grbl_post.py
index 536c2cf54..9ad099243 100644
--- a/src/Mod/Path/PathScripts/post/grbl_post.py
+++ b/src/Mod/Path/PathScripts/post/grbl_post.py
@@ -261,7 +261,7 @@ def parse(pathobj):
if param in c.Parameters:
if param == 'F':
if command not in RAPID_MOVES:
- outstring.append(param + format(c.Parameters['F'], '.2f'))
+ outstring.append(param + format(c.Parameters['F'] * 60, '.2f'))
elif param == 'T':
outstring.append(param + str(c.Parameters['T']))
else:
diff --git a/src/Mod/Path/libarea/CMakeLists.txt b/src/Mod/Path/libarea/CMakeLists.txt
index ef95c29d3..087c911dd 100644
--- a/src/Mod/Path/libarea/CMakeLists.txt
+++ b/src/Mod/Path/libarea/CMakeLists.txt
@@ -16,13 +16,17 @@ OPTION(USE_BOOST_PYTHON "use BOOST_PYTHON, otherwise use PYBIND11" ON)
if(USE_BOOST_PYTHON)
if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER)
- if(NOT PYTHON_VERSION_MAJOR LESS 3)
- find_package( Boost COMPONENTS python3)
- if (NOT Boost_PYTHON3_FOUND)
+ # boost-python >= 1.67 on some platforms has suffix
+ set(BOOST_PY_SUFFIX ${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
+
+ find_package( Boost COMPONENTS python${BOOST_PY_SUFFIX} )
+ if (NOT Boost_PYTHON${BOOST_PY_SUFFIX}_FOUND)
+ # try just the major version
+ find_package( Boost COMPONENTS python${PYTHON_VERSION_MAJOR} )
+ if (NOT Boost_PYTHON${PYTHON_VERSION_MAJOR}_FOUND)
+ # unversioned
find_package( Boost COMPONENTS python REQUIRED)
endif()
- else()
- find_package( Boost COMPONENTS python REQUIRED) # find BOOST and boost-python
endif()
if(Boost_FOUND)
diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp
index 83c6c6007..3d9709603 100644
--- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp
+++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp
@@ -4867,7 +4867,7 @@ CmdSketcherCreatePeriodicBSpline::CmdSketcherCreatePeriodicBSpline()
void CmdSketcherCreatePeriodicBSpline::activated(int iMsg)
{
Q_UNUSED(iMsg);
- ActivateHandler(getActiveGuiDocument(),new DrawSketchHandlerEllipse(1) );
+ ActivateHandler(getActiveGuiDocument(),new DrawSketchHandlerBSpline(1) );
}
bool CmdSketcherCreatePeriodicBSpline::isActive(void)
diff --git a/src/Mod/Spreadsheet/TestSpreadsheet.py b/src/Mod/Spreadsheet/TestSpreadsheet.py
index 56a0acf92..19ed6be8d 100644
--- a/src/Mod/Spreadsheet/TestSpreadsheet.py
+++ b/src/Mod/Spreadsheet/TestSpreadsheet.py
@@ -851,6 +851,16 @@ class SpreadsheetCases(unittest.TestCase):
self.assertEqual(sheet.getContents('B1'), '=A1 == 1 ? 11 : (A1 == 2 ? 12 : 13)')
self.assertEqual(sheet.getContents('C1'), '=A1 == 1 ? (A1 == 2 ? 12 : 13) : 11')
+ def testIssue3432(self):
+ """ Regression test for issue 3432; numbers with units are ignored from aggregates"""
+ sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
+ sheet.set('A1', '1mm')
+ sheet.set('B1', '2mm')
+ sheet.set('C1', '=max(A1:B1;3mm)')
+ self.doc.recompute()
+ self.assertEqual(sheet.get('C1'), Units.Quantity('3 mm'))
+
+
def tearDown(self):
#closing doc
FreeCAD.closeDocument(self.doc.Name)
diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp
index 02f0103d2..de4f5ff8e 100644
--- a/src/Mod/TechDraw/Gui/Command.cpp
+++ b/src/Mod/TechDraw/Gui/Command.cpp
@@ -78,6 +78,16 @@
using namespace TechDrawGui;
using namespace std;
+bool isArchSection(App::DocumentObject* obj)
+{
+ bool result = true;
+ App::Property* prop1 = obj->getPropertyByName("Objects");
+ App::Property* prop2 = obj->getPropertyByName("OnlySolids");
+ if ( (!prop1) || (!prop2) ) {
+ result = false;
+ }
+ return result;
+}
//===========================================================================
// TechDraw_NewPageDef (default template)
@@ -92,7 +102,7 @@ CmdTechDrawNewPageDef::CmdTechDrawNewPageDef()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert new default drawing page");
sToolTipText = QT_TR_NOOP("Insert new default drawing page");
- sWhatsThis = "TechDraw_NewPageDef";
+ sWhatsThis = "TechDraw_New_Default";
sStatusTip = sToolTipText;
sPixmap = "actions/techdraw-new-default";
}
@@ -162,7 +172,7 @@ CmdTechDrawNewPage::CmdTechDrawNewPage()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert new drawing page from template");
sToolTipText = QT_TR_NOOP("Insert new drawing page from template");
- sWhatsThis = "TechDraw_NewPage";
+ sWhatsThis = "TechDraw_New_Pick";
sStatusTip = sToolTipText;
sPixmap = "actions/techdraw-new-pick";
}
@@ -302,7 +312,7 @@ CmdTechDrawNewViewSection::CmdTechDrawNewViewSection()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert section view in drawing");
sToolTipText = QT_TR_NOOP("Insert a new Section View of a Part in the active drawing");
- sWhatsThis = "TechDraw_NewViewSecton";
+ sWhatsThis = "TechDraw_NewSection";
sStatusTip = sToolTipText;
sPixmap = "actions/techdraw-viewsection";
}
@@ -371,7 +381,7 @@ CmdTechDrawNewViewDetail::CmdTechDrawNewViewDetail()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert detail view in drawing");
sToolTipText = QT_TR_NOOP("Insert a new Detail View of a Part in the active drawing");
- sWhatsThis = "TechDraw_NewViewDetail";
+ sWhatsThis = "TechDraw_NewProjGroup";
sStatusTip = sToolTipText;
sPixmap = "actions/techdraw-viewdetail";
}
@@ -562,7 +572,7 @@ CmdTechDrawAnnotation::CmdTechDrawAnnotation()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("&Annotation");
sToolTipText = QT_TR_NOOP("Inserts an Annotation in the active drawing");
- sWhatsThis = "TechDraw_Annotation";
+ sWhatsThis = "TechDraw_NewAnnotation";
sStatusTip = QT_TR_NOOP("Inserts an Annotation in the active drawing");
sPixmap = "actions/techdraw-annotation";
}
@@ -855,7 +865,7 @@ CmdTechDrawDraftView::CmdTechDrawDraftView()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert a DraftView");
sToolTipText = QT_TR_NOOP("Inserts a Draft WB object into the active drawing");
- sWhatsThis = "TechDraw_DraftView";
+ sWhatsThis = "TechDraw_NewDraft";
sStatusTip = QT_TR_NOOP("Inserts a Draft WB object into the active drawing");
sPixmap = "actions/techdraw-draft-view";
}
@@ -869,6 +879,7 @@ void CmdTechDrawDraftView::activated(int iMsg)
}
//TODO: shouldn't this be checking for a Draft object only?
+// there is no obvious way of check for a Draft object. Could be App::FeaturePython, Part::Part2DObject, ???
std::vector<App::DocumentObject*> objects = getSelection().getObjectsOfType(App::DocumentObject::getClassTypeId());
if (objects.empty()) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
@@ -894,7 +905,6 @@ bool CmdTechDrawDraftView::isActive(void)
return DrawGuiUtil::needPage(this);
}
-//TODO: shouldn't this be checking for an Arch object only?
//===========================================================================
// TechDraw_ArchView
//===========================================================================
@@ -908,7 +918,7 @@ CmdTechDrawArchView::CmdTechDrawArchView()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert an ArchView");
sToolTipText = QT_TR_NOOP("Inserts a view of an Arch Section Plane into the active drawing");
- sWhatsThis = "TechDraw_ArchView";
+ sWhatsThis = "TechDraw_NewArch";
sStatusTip = QT_TR_NOOP("Inserts a view of an Arch Section Plane into the active drawing");
sPixmap = "actions/techdraw-arch-view";
}
@@ -922,23 +932,33 @@ void CmdTechDrawArchView::activated(int iMsg)
}
std::vector<App::DocumentObject*> objects = getSelection().getObjectsOfType(App::DocumentObject::getClassTypeId());
- if (objects.size() != 1) {
+ if (objects.empty()) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
- QObject::tr("Select exactly one Arch Section Plane object."));
+ QObject::tr("Select at least one object."));
return;
}
- App::Property* prop1 = objects[0]->getPropertyByName("Objects");
- App::Property* prop2 = objects[0]->getPropertyByName("OnlySolids");
- if ( (!prop1) || (!prop2) ) {
+ int ifound = 0;
+ bool found = false;
+ for (auto& obj: objects) {
+ if (isArchSection(obj)) {
+ found = true;
+ break;
+ }
+ ifound++;
+ }
+ App::DocumentObject* archObj;
+ if (found) {
+ archObj = objects[ifound];
+ } else {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
- QObject::tr("The selected object is not an Arch Section Plane."));
+ QObject::tr("There is no Arch Section Plane in selection."));
return;
}
std::string PageName = page->getNameInDocument();
std::string FeatName = getUniqueObjectName("ArchView");
- std::string SourceName = objects[0]->getNameInDocument();
+ std::string SourceName = archObj->getNameInDocument();
openCommand("Create ArchView");
doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewArch','%s')",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Source = App.activeDocument().%s",FeatName.c_str(),SourceName.c_str());
@@ -1024,7 +1044,7 @@ CmdTechDrawExportPage::CmdTechDrawExportPage()
sGroup = QT_TR_NOOP("File");
sMenuText = QT_TR_NOOP("&Export page...");
sToolTipText = QT_TR_NOOP("Export a page to an SVG file");
- sWhatsThis = "TechDraw_ExportPage";
+ sWhatsThis = "TechDraw_SaveSVG";
sStatusTip = QT_TR_NOOP("Export a page to an SVG file");
sPixmap = "actions/techdraw-saveSVG";
}
diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp
index f5324cc3b..5fa0b0bf9 100644
--- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp
+++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp
@@ -236,7 +236,7 @@ CmdTechDrawNewRadiusDimension::CmdTechDrawNewRadiusDimension()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert a new radius dimension into the drawing");
sToolTipText = QT_TR_NOOP("Insert a new radius dimension feature for the selected view");
- sWhatsThis = "TechDraw_NewRadiusDimension";
+ sWhatsThis = "TechDraw_Dimension_Radius";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Dimension_Radius";
}
@@ -323,7 +323,7 @@ CmdTechDrawNewDiameterDimension::CmdTechDrawNewDiameterDimension()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert a new diameter dimension into the drawing");
sToolTipText = QT_TR_NOOP("Insert a new diameter dimension feature for the selected view");
- sWhatsThis = "TechDraw_NewDiameterDimension";
+ sWhatsThis = "TechDraw_Dimension_Diameter";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Dimension_Diameter";
}
@@ -410,7 +410,7 @@ CmdTechDrawNewLengthDimension::CmdTechDrawNewLengthDimension()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert a new length dimension into the drawing");
sToolTipText = QT_TR_NOOP("Insert a new length dimension");
- sWhatsThis = "TechDraw_NewLengthDimension";
+ sWhatsThis = "TechDraw_Dimension_Length";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Dimension_Length";
}
@@ -518,7 +518,7 @@ CmdTechDrawNewDistanceXDimension::CmdTechDrawNewDistanceXDimension()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert a new horizontal dimension into the drawing");
sToolTipText = QT_TR_NOOP("Insert a new horizontal-distance dimension");
- sWhatsThis = "TechDraw_NewDistanceXDimension";
+ sWhatsThis = "TechDraw_Dimension_Horizontal";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Dimension_Horizontal";
}
@@ -626,7 +626,7 @@ CmdTechDrawNewDistanceYDimension::CmdTechDrawNewDistanceYDimension()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert a new vertical dimension into the drawing");
sToolTipText = QT_TR_NOOP("Insert a new vertical distance dimension");
- sWhatsThis = "TechDraw_NewDistanceYDimension";
+ sWhatsThis = "TechDraw_Dimension_Vertical";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Dimension_Vertical";
}
@@ -733,7 +733,7 @@ CmdTechDrawNewAngleDimension::CmdTechDrawNewAngleDimension()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Insert a new angle dimension into the drawing");
sToolTipText = QT_TR_NOOP("Insert a new angle dimension");
- sWhatsThis = "TechDraw_NewAngleDimension";
+ sWhatsThis = "TechDraw_Dimension_Angle";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Dimension_Angle";
}
@@ -822,7 +822,7 @@ CmdTechDrawLinkDimension::CmdTechDrawLinkDimension()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Link a dimension to 3D geometry");
sToolTipText = QT_TR_NOOP("Link a dimension to 3D geometry");
- sWhatsThis = "TechDraw_LinkDimension";
+ sWhatsThis = "TechDraw_Dimension_Link";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Dimension_Link";
}
diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp
index 9edf97d00..b6cb5dab0 100644
--- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp
+++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp
@@ -80,7 +80,7 @@ CmdTechDrawNewHatch::CmdTechDrawNewHatch()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Hatch a Face using image file");
sToolTipText = QT_TR_NOOP("Hatch a Face using image file");
- sWhatsThis = "TechDraw_NewHatch";
+ sWhatsThis = "TechDraw_Hatch";
sStatusTip = sToolTipText;
sPixmap = "actions/techdraw-hatch";
}
@@ -142,7 +142,7 @@ CmdTechDrawNewGeomHatch::CmdTechDrawNewGeomHatch()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Apply geometric hatch to a Face");
sToolTipText = QT_TR_NOOP("Apply geometric hatch to a Face");
- sWhatsThis = "TechDraw_NewGeomHatch";
+ sWhatsThis = "TechDraw_GeomHatch";
sStatusTip = sToolTipText;
sPixmap = "actions/techdraw-geomhatch";
}
@@ -264,7 +264,7 @@ CmdTechDrawToggleFrame::CmdTechDrawToggleFrame()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Turn View Frames on or off");
sToolTipText = QT_TR_NOOP("Turn View Frames on or off");
- sWhatsThis = "TechDraw_ToggleFrame";
+ sWhatsThis = "TechDraw_Toggle";
sStatusTip = sToolTipText;
sPixmap = "actions/techdraw-toggleframe";
}
@@ -311,7 +311,7 @@ CmdTechDrawRedrawPage::CmdTechDrawRedrawPage()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Redraw a page");
sToolTipText = QT_TR_NOOP("Redraw a page");
- sWhatsThis = "TechDraw_RedrawPage";
+ sWhatsThis = "TechDraw_Redraw";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_Tree_Page_Sync";
}

36
fix-build.diff Normal file
View File

@ -0,0 +1,36 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ecfe23a6..246bb15a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -445,7 +445,6 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER)
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=677598
# Acceptable versions of Python
-set(Python_ADDITIONAL_VERSIONS "2.7")
# For building on OS X
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
diff --git a/src/3rdParty/salomesmesh/CMakeLists.txt b/src/3rdParty/salomesmesh/CMakeLists.txt
index 303ae6e0a..9c10046e6 100644
--- a/src/3rdParty/salomesmesh/CMakeLists.txt
+++ b/src/3rdParty/salomesmesh/CMakeLists.txt
@@ -379,6 +379,7 @@ if (BUILD_FEM_NETGEN)
FILE(GLOB NETGENPlugin_source_files src/NETGENPlugin/*.cpp inc/NETGENPlugin_*.h* )
ADD_LIBRARY(NETGENPlugin SHARED ${NETGENPlugin_source_files})
TARGET_LINK_LIBRARIES(NETGENPlugin SMDS SMESHDS SMESH StdMeshers ${SMESH_LIBS} )
+set_property(TARGET NETGENPlugin PROPERTY CXX_STANDARD 14)
SET_BIN_DIR(NETGENPlugin NETGENPlugin)
if(WIN32)
diff --git a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
index 3b66ec663..3d4bc8afd 100644
--- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
+++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
@@ -38,6 +38,7 @@
#include <GC_MakeSegment.hxx>
#include <GeomAPI_ExtremaCurveCurve.hxx>
#include <Geom_Line.hxx>
+#include <Quantity_Parameter.hxx>
#include <IntAna_IntConicQuad.hxx>
#include <IntAna_Quadric.hxx>
#include <gp_Lin.hxx>

View File

@ -0,0 +1,48 @@
commit 338630b951abab1e44b01c80fbe2d07aba415daf
Author: Adrian Schröter <adrian@suse.de>
Date: Tue Apr 17 08:39:39 2018 +0200
fix runtime error creating a wire from string with python3
Tested against version 0.17
diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py
index 4c27018c4..da8db2895 100644
--- a/src/Mod/Draft/Draft.py
+++ b/src/Mod/Draft/Draft.py
@@ -6133,8 +6133,10 @@ class _ShapeString(_DraftObject):
ff8 = obj.FontFile.encode('utf8') # 1947 accents in filepath
# TODO: change for Py3?? bytes?
# Part.makeWireString uses FontFile as char* string
-# CharList = Part.makeWireString(obj.String,obj.FontFile,obj.Size,obj.Tracking)
- CharList = Part.makeWireString(obj.String,ff8,obj.Size,obj.Tracking)
+ if sys.version_info.major < 3:
+ CharList = Part.makeWireString(obj.String,ff8,obj.Size,obj.Tracking)
+ else:
+ CharList = Part.makeWireString(obj.String,obj.FontFile,obj.Size,obj.Tracking)
if len(CharList) == 0:
msg(translate("draft","ShapeString: string has no wires\n"), 'warning')
return
@@ -6142,8 +6144,7 @@ class _ShapeString(_DraftObject):
# test a simple letter to know if we have a sticky font or not
sticky = False
-# testWire = Part.makeWireString("L",obj.FontFile,obj.Size,obj.Tracking)[0][0]
- testWire = Part.makeWireString("L",ff8,obj.Size,obj.Tracking)[0][0]
+ testWire = Part.makeWireString("L",obj.FontFile,obj.Size,obj.Tracking)[0][0]
if testWire.isClosed:
try:
testFace = Part.Face(testWire)
diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py
index a007d03e6..1de205bbf 100644
--- a/src/Mod/Draft/DraftTools.py
+++ b/src/Mod/Draft/DraftTools.py
@@ -2204,7 +2204,7 @@ class ShapeString(Creator):
#print("debug: D_T ShapeString.createObject type(self.SString): " str(type(self.SString)))
dquote = '"'
- if type(self.SString) == unicode: # Python3: no more unicode
+ if sys.version_info.major < 3: # Python3: no more unicode
String = 'u' + dquote + self.SString.encode('unicode_escape') + dquote
else:
String = dquote + self.SString + dquote

View File

@ -1,23 +0,0 @@
diff -Naur FreeCAD-0.16.orig/src/Gui/DownloadManager.cpp FreeCAD-0.16/src/Gui/DownloadManager.cpp
--- FreeCAD-0.16.orig/src/Gui/DownloadManager.cpp 2016-04-07 03:39:34.000000000 +0200
+++ FreeCAD-0.16/src/Gui/DownloadManager.cpp 2017-02-07 17:05:51.753657498 +0100
@@ -33,7 +33,6 @@
#include <QMetaEnum>
#include <QSettings>
#include <QFileIconProvider>
-#include <QWebSettings>
#include "DownloadItem.h"
#include "DownloadManager.h"
@@ -224,11 +223,6 @@
ui->downloadsView->setRowHeight(row, item->minimumSizeHint().height());
bool remove = false;
- QWebSettings *globalSettings = QWebSettings::globalSettings();
- if (!item->downloading()
- && globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled))
- remove = true;
-
if (item->downloadedSuccessfully()
&& removePolicy() == DownloadManager::SuccessFullDownload) {
remove = true;

View File

@ -1,124 +0,0 @@
diff -Naur FreeCAD-0.16.orig/src/Mod/Arch/ArchServer.py FreeCAD-0.16/src/Mod/Arch/ArchServer.py
--- FreeCAD-0.16.orig/src/Mod/Arch/ArchServer.py 2016-04-07 03:39:34.000000000 +0200
+++ FreeCAD-0.16/src/Mod/Arch/ArchServer.py 2017-02-07 18:55:34.918643280 +0100
@@ -36,20 +36,6 @@
__url__ = "http://www.freecadweb.org"
-class _CommandBimserver:
- "the Arch Bimserver command definition"
- def GetResources(self):
- return {'Pixmap' : 'Arch_Bimserver',
- 'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Bimserver","BIM server"),
- 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Bimserver","Opens a browser window and connects to a BIM server instance")}
-
- def Activated(self):
- p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
- url = p.GetString("BimServerUrl","http://localhost:8082")
- FreeCADGui.addModule("WebGui")
- FreeCADGui.doCommand("WebGui.openBrowser(\""+url+"\")")
-
-
class _CommandGit:
"the Arch Git Commit command definition"
def GetResources(self):
@@ -161,5 +147,4 @@
if FreeCAD.GuiUp:
- FreeCADGui.addCommand('Arch_Bimserver',_CommandBimserver())
FreeCADGui.addCommand('Arch_Git',_CommandGit())
diff -Naur FreeCAD-0.16.orig/src/Mod/Arch/InitGui.py FreeCAD-0.16/src/Mod/Arch/InitGui.py
--- FreeCAD-0.16.orig/src/Mod/Arch/InitGui.py 2016-04-07 03:39:34.000000000 +0200
+++ FreeCAD-0.16/src/Mod/Arch/InitGui.py 2017-02-07 18:54:19.949158114 +0100
@@ -44,7 +44,7 @@
"Arch_SelectNonSolidMeshes","Arch_RemoveShape",
"Arch_CloseHoles","Arch_MergeWalls","Arch_Check",
"Arch_IfcExplorer","Arch_ToggleIfcBrepFlag","Arch_3Views",
- "Arch_Bimserver","Arch_Git","Arch_IfcSpreadsheet"]
+ "Arch_Git","Arch_IfcSpreadsheet"]
# draft tools
self.drafttools = ["Draft_Line","Draft_Wire","Draft_Circle","Draft_Arc","Draft_Ellipse",
diff -Naur FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Command.cpp FreeCAD-0.16/src/Mod/Drawing/Gui/Command.cpp
--- FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Command.cpp 2016-04-07 03:39:34.000000000 +0200
+++ FreeCAD-0.16/src/Mod/Drawing/Gui/Command.cpp 2017-02-07 18:52:19.077843909 +0100
@@ -427,43 +427,6 @@
//===========================================================================
-// Drawing_OpenBrowserView
-//===========================================================================
-
-DEF_STD_CMD_A(CmdDrawingOpenBrowserView);
-
-CmdDrawingOpenBrowserView::CmdDrawingOpenBrowserView()
- : Command("Drawing_OpenBrowserView")
-{
- // seting the
- sGroup = QT_TR_NOOP("Drawing");
- sMenuText = QT_TR_NOOP("Open &browser view");
- sToolTipText = QT_TR_NOOP("Opens the selected page in a browser view");
- sWhatsThis = "Drawing_OpenBrowserView";
- sStatusTip = QT_TR_NOOP("Opens the selected page in a browser view");
- sPixmap = "actions/drawing-openbrowser";
-}
-
-void CmdDrawingOpenBrowserView::activated(int iMsg)
-{
- unsigned int n = getSelection().countObjectsOfType(Drawing::FeaturePage::getClassTypeId());
- if (n != 1) {
- QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
- QObject::tr("Select one Page object."));
- return;
- }
- std::vector<Gui::SelectionSingleton::SelObj> Sel = getSelection().getSelection();
- doCommand(Doc,"PageName = App.activeDocument().%s.PageResult",Sel[0].FeatName);
- doCommand(Doc,"import WebGui");
- doCommand(Doc,"WebGui.openBrowser(PageName)");
-}
-
-bool CmdDrawingOpenBrowserView::isActive(void)
-{
- return (getActiveGuiDocument() ? true : false);
-}
-
-//===========================================================================
// Drawing_Annotation
//===========================================================================
@@ -786,7 +749,6 @@
rcCmdMgr.addCommand(new CmdDrawingNewA3Landscape());
rcCmdMgr.addCommand(new CmdDrawingNewView());
rcCmdMgr.addCommand(new CmdDrawingOrthoViews());
- rcCmdMgr.addCommand(new CmdDrawingOpenBrowserView());
rcCmdMgr.addCommand(new CmdDrawingAnnotation());
rcCmdMgr.addCommand(new CmdDrawingClip());
rcCmdMgr.addCommand(new CmdDrawingSymbol());
diff -Naur FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Workbench.cpp FreeCAD-0.16/src/Mod/Drawing/Gui/Workbench.cpp
--- FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Workbench.cpp 2016-04-07 03:39:34.000000000 +0200
+++ FreeCAD-0.16/src/Mod/Drawing/Gui/Workbench.cpp 2017-02-07 19:10:18.512913826 +0100
@@ -61,7 +61,6 @@
*part << "Drawing_NewPage";
*part << "Drawing_NewView";
*part << "Drawing_OrthoViews";
- *part << "Drawing_OpenBrowserView";
*part << "Drawing_Annotation";
*part << "Drawing_Clip";
*part << "Drawing_Symbol";
@@ -84,7 +83,6 @@
*part << "Drawing_NewPage";
*part << "Drawing_NewView";
*part << "Drawing_OrthoViews";
- *part << "Drawing_OpenBrowserView";
*part << "Drawing_Annotation";
*part << "Drawing_Clip";
*part << "Drawing_Symbol";
@@ -106,7 +104,6 @@
//*img << "Drawing_NewA3Landscape";
*img << "Drawing_NewPage";
*img << "Drawing_OrthoViews";
- *img << "Drawing_OpenBrowserView";
*img << "Drawing_Annotation";
*img << "Drawing_Clip";
*img << "Drawing_DraftView";