From 84e32be87f4b1d830c2f0cb11ac86143b40aaab6 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2019 12:01:37 +0100 Subject: [PATCH 01/13] fix typo in German translation --- .../Gui/Resources/translations/TechDraw_de.qm | Bin 55669 -> 55671 bytes .../Gui/Resources/translations/TechDraw_de.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.qm index 0879d572f660b0aba23dba12512418d22b0a171e..96ff0b7e86aeaf0dba2f2a8e5048f239cbf61d70 100644 GIT binary patch delta 3700 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 MqzcJ<>6oOW}{>6t3g%U+<^PQ<%LP7&RU!?g9MG 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 P;KY;8F8ME=m*xHsA#G=A diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts index bb3055d315..b24e630988 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.ts @@ -406,7 +406,7 @@ Insert a new vertical distance dimension - Eine vertikale Abstans-Bemaßung einfügen + Eine vertikale Abstands-Bemaßung einfügen From dccfc474b4ed123ca3748929495284c5d9852aa5 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2019 13:38:06 +0100 Subject: [PATCH 02/13] Add option to copy required plugins from LibPack to build directory --- .../InitializeFreeCADBuildOptions.cmake | 2 ++ cMake/FreeCAD_Helpers/PrintFinalReport.cmake | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake index 6733826ee1..25344a4c3f 100644 --- a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake +++ b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake @@ -59,6 +59,8 @@ macro(InitializeFreeCADBuildOptions) if (NOT EXISTS ${CMAKE_BINARY_DIR}/bin/DLLs) set(COPY_LIBPACK_BIN_TO_BUILD ON ) option(FREECAD_COPY_LIBPACK_BIN_TO_BUILD "Copy larger libpack dependency 'bin' folder to the build directory." OFF) + # Copy only the minimum number of files to get a working application + option(FREECAD_COPY_PLUGINS_BIN_TO_BUILD "Copy plugins to the build directory." OFF) endif() else() message("Libpack NOT found.\nIf you intend to use a Windows libpack, set the FREECAD_LIBPACK_DIR to the libpack directory.") diff --git a/cMake/FreeCAD_Helpers/PrintFinalReport.cmake b/cMake/FreeCAD_Helpers/PrintFinalReport.cmake index d9da38dea6..d464ae1585 100644 --- a/cMake/FreeCAD_Helpers/PrintFinalReport.cmake +++ b/cMake/FreeCAD_Helpers/PrintFinalReport.cmake @@ -234,6 +234,18 @@ macro(PrintFinalReport) file(COPY ${FREECAD_LIBPACK_DIR}/bin DESTINATION ${CMAKE_BINARY_DIR}) message("... done copying libpack 'bin' directory.\n=======================================\n") endif() + if(FREECAD_COPY_PLUGINS_BIN_TO_BUILD) + message(STATUS "=======================================\n" + "Copying plugins to build directory.") + file(COPY ${FREECAD_LIBPACK_DIR}/plugins/imageformats DESTINATION ${CMAKE_BINARY_DIR}/bin) + file(COPY ${FREECAD_LIBPACK_DIR}/plugins/platforms DESTINATION ${CMAKE_BINARY_DIR}/bin) + file(COPY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_BINARY_DIR}/bin) + file(COPY ${FREECAD_LIBPACK_DIR}/bin/QtWebEngineProcess.exe DESTINATION ${CMAKE_BINARY_DIR}/bin) + file(COPY ${FREECAD_LIBPACK_DIR}/bin/QtWebEngineProcessd.exe DESTINATION ${CMAKE_BINARY_DIR}/bin) + file(COPY ${FREECAD_LIBPACK_DIR}/translations/qtwebengine_locales DESTINATION ${CMAKE_BINARY_DIR}/translations) + file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR}) + file(WRITE ${CMAKE_BINARY_DIR}/bin/qt.conf "[Paths]\nPrefix=..\n") + endif() endif() if(FREECAD_INSTALL_DEPEND_DIRS) From df8e09196d68e9cb6175d88b94de26e3906c8839 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2019 13:46:30 +0100 Subject: [PATCH 03/13] set default deflection of 0.01 when exporting shape as STL --- src/Mod/Part/App/TopoShape.cpp | 2 +- src/Mod/Part/App/TopoShapePyImp.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/Part/App/TopoShape.cpp b/src/Mod/Part/App/TopoShape.cpp index a58e821ab1..60c180ade0 100644 --- a/src/Mod/Part/App/TopoShape.cpp +++ b/src/Mod/Part/App/TopoShape.cpp @@ -832,7 +832,7 @@ void TopoShape::write(const char *FileName) const } else if (File.hasExtension("stl")) { // read brep-file - exportStl(File.filePath().c_str(),0); + exportStl(File.filePath().c_str(), 0.01); } else{ throw Base::FileException("Unknown extension"); diff --git a/src/Mod/Part/App/TopoShapePyImp.cpp b/src/Mod/Part/App/TopoShapePyImp.cpp index 665b2c750d..3144b8d4a2 100644 --- a/src/Mod/Part/App/TopoShapePyImp.cpp +++ b/src/Mod/Part/App/TopoShapePyImp.cpp @@ -580,7 +580,7 @@ PyObject* TopoShapePy::__setstate__(PyObject *args) { PyObject* TopoShapePy::exportStl(PyObject *args) { - double deflection = 0; + double deflection = 0.01; char* Name; if (!PyArg_ParseTuple(args, "et|d","utf-8",&Name,&deflection)) return NULL; From f6f9d15917bdcc257ec33cb8c6cdf2008d4cc2a5 Mon Sep 17 00:00:00 2001 From: triplus Date: Wed, 27 Nov 2019 09:56:08 +0100 Subject: [PATCH 04/13] Travis - upgrade to GCC 9 and Clang 9 Use latest and greatest compilers in the toolchain. --- .travis.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.travis.yml b/.travis.yml index 24c5feb1f4..34994a3ed8 100755 --- a/.travis.yml +++ b/.travis.yml @@ -47,10 +47,36 @@ matrix: - os: linux dist: bionic compiler: clang + addons: + apt: + sources: + - sourceline: 'ppa:ubuntu-toolchain-r/test' + - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main' + key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' + packages: + - clang-9 env: + - CC=clang-9 + - CXX=clang++-9 - CMAKE_OPTS="-DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_FEM_NETGEN=ON -DBUILD_QT5=ON" - PYTHON_MAJOR_VERSION=3 + # - os: linux + # dist: bionic + # compiler: gcc + # addons: + # apt: + # sources: + # - sourceline: 'ppa:ubuntu-toolchain-r/test' + # packages: + # - gcc-9 + # - g++-9 + # env: + # - CC=gcc-9 + # - CXX=g++-9 + # - CMAKE_OPTS="-DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_FEM_NETGEN=ON -DBUILD_QT5=ON" + # - PYTHON_MAJOR_VERSION=3 + - os: linux dist: bionic compiler: gcc From 27bb49b646a039f6b6ca9274eaac7b759f553520 Mon Sep 17 00:00:00 2001 From: triplus Date: Thu, 28 Nov 2019 20:14:28 +0100 Subject: [PATCH 05/13] Travis - create a unique cache entry https://forum.freecadweb.org/viewtopic.php?f=10&t=40324&start=30#p350421 https://docs.travis-ci.com/user/caching#caches-and-build-matrices --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 34994a3ed8..5c5b954e24 100755 --- a/.travis.yml +++ b/.travis.yml @@ -60,6 +60,7 @@ matrix: - CXX=clang++-9 - CMAKE_OPTS="-DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_FEM_NETGEN=ON -DBUILD_QT5=ON" - PYTHON_MAJOR_VERSION=3 + - CACHE_NAME=JOB1 # - os: linux # dist: bionic @@ -76,6 +77,7 @@ matrix: # - CXX=g++-9 # - CMAKE_OPTS="-DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_FEM_NETGEN=ON -DBUILD_QT5=ON" # - PYTHON_MAJOR_VERSION=3 + # - CACHE_NAME=JOB2 - os: linux dist: bionic @@ -83,12 +85,14 @@ matrix: env: - CMAKE_OPTS="-DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_FEM_NETGEN=ON -DBUILD_QT5=ON" - PYTHON_MAJOR_VERSION=3 + - CACHE_NAME=JOB3 - os: linux dist: bionic compiler: gcc env: - PYTHON_MAJOR_VERSION=2 + - CACHE_NAME=JOB4 - os: windows language: cpp @@ -104,6 +108,7 @@ matrix: - CCACHE_TEMPDIR=/tmp/.ccache-temp - CCACHE_COMPRESS=1 - CCACHE_DIR=$HOME/.ccache + - CACHE_NAME=JOB5 # enable this if clcache extended log is needed #- CLCACHE_LOG=1 cache: From ccb5f1e6f7f4c3e77c0a4871ec54c54b49f2f5b2 Mon Sep 17 00:00:00 2001 From: triplus Date: Thu, 28 Nov 2019 20:36:45 +0100 Subject: [PATCH 06/13] Travis - re-enable incremental ccache builds Each build job should now have an unique cache entry. This should increase the reliability and success rate for build jobs, when the maximum time limit is exceeded. --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5c5b954e24..fab2ec052b 100755 --- a/.travis.yml +++ b/.travis.yml @@ -303,11 +303,11 @@ script: winpty.exe -Xallow-non-tty -Xplain /C/Users/travis/build/FreeCAD/FreeCAD/build/bin/FreeCADCmd.exe --run-test 0 | tee runlog.txt grep -q FAILED runlog.txt ; [ $? == 1 ] && echo "Build succeeded and tests passed!" || ( echo "Tests failed!" && false ) else - # Stop compiling (GCC) after 2 hrs 15 min (2 hrs 30 min limit). Extended to 180 min. + # Stop compiling (GCC) after 2 hrs 50 min (3 hrs limit). # Preserves created ccache for the next build job. - # if [ "${TRAVIS_OS_NAME}" == "linux" ]; then sudo timeout -k 140m 135m make -j2 install || true; fi - # if [ "${TRAVIS_OS_NAME}" == "osx" ]; then sudo make -j2 install; fi - sudo make -j2 install + if [ "${TRAVIS_OS_NAME}" == "linux" ]; then sudo timeout -k 175m 170m make -j2 install || true; fi + if [ "${TRAVIS_OS_NAME}" == "osx" ]; then sudo make -j2 install; fi + # sudo make -j2 install ${INSTALLED_APP_PATH} --console --run-test 0 || travis_terminate 1 ${INSTALLED_APP_PATH} --log-file /tmp/FreeCAD_installed.log & sleep 10 && pkill FreeCAD From b41c6a4113650d43e9782df9be6f44e9766a0157 Mon Sep 17 00:00:00 2001 From: donovaly Date: Tue, 26 Nov 2019 03:48:08 +0100 Subject: [PATCH 07/13] InstallerStructure: update according to current state --- .../information/InstallerStructure.odg | Bin 16850 -> 16064 bytes .../information/InstallerStructure.pdf | Bin 35017 -> 18001 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/WindowsInstaller/information/InstallerStructure.odg b/src/WindowsInstaller/information/InstallerStructure.odg index c24fa122022cad4159cc504e21becb2f7cc4451f..9b2b1b82ac8a1df17000681269c1e50996bada57 100644 GIT binary patch delta 14508 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 NZqB8u>gw;t1pqa*P>%or literal 35017 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%0AT1t0CRhEZ1gEnhW?x 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 YawY-e?i<}I0wIY&fcW{9w3R{s2XglhAOHXW From 82931b4368c984269cf8c64efdde8113a255a472 Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Sun, 24 Nov 2019 15:03:07 +0100 Subject: [PATCH 08/13] Fix bad 'pt' unit definition 'pt' unit has been defined as 1.25 px while it is 4/3 px (~1.33 px). Relates to issue #4200 Relates to Syres916@469e01d (despite bug always existed, even before this commit) Source : https://oreillymedia.github.io/Using_SVG/guide/units.html --- src/Mod/Draft/importSVG.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Mod/Draft/importSVG.py b/src/Mod/Draft/importSVG.py index 347209c98c..fb19737a30 100644 --- a/src/Mod/Draft/importSVG.py +++ b/src/Mod/Draft/importSVG.py @@ -356,7 +356,7 @@ def getsize(length, mode='discard', base=1): tomm = { '': 25.4/90, # default 'px': 25.4/90, - 'pt': 1.25 * 25.4/90, + 'pt': 4/3 * 25.4/90, 'pc': 15 * 25.4/90, 'mm': 1.0, 'cm': 10.0, @@ -369,7 +369,7 @@ def getsize(length, mode='discard', base=1): tomm = { '': 25.4/96, # default 'px': 25.4/96, - 'pt': 1.25 * 25.4/96, + 'pt': 4/3 * 25.4/96, 'pc': 15 * 25.4/96, 'mm': 1.0, 'cm': 10.0, @@ -382,7 +382,7 @@ def getsize(length, mode='discard', base=1): topx = { '': 1.0, # default 'px': 1.0, - 'pt': 1.25, + 'pt': 4/3, 'pc': 15, 'mm': 90.0/25.4, 'cm': 90.0/254.0, @@ -395,7 +395,7 @@ def getsize(length, mode='discard', base=1): topx = { '': 1.0, # default 'px': 1.0, - 'pt': 1.25, + 'pt': 4/3, 'pc': 15, 'mm': 96.0/25.4, 'cm': 96.0/254.0, From 47dfe708d943a01121ed998267d7af2c3d89098d Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Sun, 24 Nov 2019 21:04:31 +0100 Subject: [PATCH 09/13] Improve Python compatibility According remark which I agree with --- src/Mod/Draft/importSVG.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Mod/Draft/importSVG.py b/src/Mod/Draft/importSVG.py index fb19737a30..18ab27f7e8 100644 --- a/src/Mod/Draft/importSVG.py +++ b/src/Mod/Draft/importSVG.py @@ -356,7 +356,7 @@ def getsize(length, mode='discard', base=1): tomm = { '': 25.4/90, # default 'px': 25.4/90, - 'pt': 4/3 * 25.4/90, + 'pt': 4.0/3 * 25.4/90, 'pc': 15 * 25.4/90, 'mm': 1.0, 'cm': 10.0, @@ -369,7 +369,7 @@ def getsize(length, mode='discard', base=1): tomm = { '': 25.4/96, # default 'px': 25.4/96, - 'pt': 4/3 * 25.4/96, + 'pt': 4.0/3 * 25.4/96, 'pc': 15 * 25.4/96, 'mm': 1.0, 'cm': 10.0, @@ -382,7 +382,7 @@ def getsize(length, mode='discard', base=1): topx = { '': 1.0, # default 'px': 1.0, - 'pt': 4/3, + 'pt': 4.0/3, 'pc': 15, 'mm': 90.0/25.4, 'cm': 90.0/254.0, @@ -395,7 +395,7 @@ def getsize(length, mode='discard', base=1): topx = { '': 1.0, # default 'px': 1.0, - 'pt': 4/3, + 'pt': 4.0/3, 'pc': 15, 'mm': 96.0/25.4, 'cm': 96.0/254.0, From 3bbd41552384fd7e39c5c86b4558968edad57f4e Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2019 16:15:16 +0100 Subject: [PATCH 10/13] Build option: do not force PCL to be always enabled on Win32, add option to allow to disable it --- .../InitializeFreeCADBuildOptions.cmake | 1 + cMake/UseLibPackCLbundler.cmake | 62 ------------------- 2 files changed, 1 insertion(+), 62 deletions(-) diff --git a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake index 25344a4c3f..4d42e54755 100644 --- a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake +++ b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake @@ -158,6 +158,7 @@ macro(InitializeFreeCADBuildOptions) if(MSVC) option(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" ON) + option(FREECAD_USE_PCL "Build the features that use PCL libs" ON) option(FREECAD_USE_3DCONNEXION "Use the 3D connexion SDK to support 3d mouse." ON) elseif(APPLE) find_library(3DCONNEXIONCLIENT_FRAMEWORK 3DconnexionClient) diff --git a/cMake/UseLibPackCLbundler.cmake b/cMake/UseLibPackCLbundler.cmake index ec0aef8a2f..7787a0ed68 100644 --- a/cMake/UseLibPackCLbundler.cmake +++ b/cMake/UseLibPackCLbundler.cmake @@ -67,65 +67,3 @@ if(FREECAD_USE_FREETYPE) endif(FREECAD_USE_FREETYPE) link_directories(${FREECAD_LIBPACK_DIR}/lib) -find_package(PCL QUIET) -if(NOT EXISTS ${PCL_INCLUDE_DIRS}) - set(PCL_INCLUDE_DIRS ${FREECAD_LIBPACK_DIR}/include/pcl-1.7) - set(PCL_LIBRARY_DIRS ${FREECAD_LIBPACK_DIR}/lib) - - set(PCL_COMMON_LIBRARIES optimized pcl_common_release debug pcl_common_debug) - set(PCL_FEATURES_LIBRARIES optimized pcl_features_release debug pcl_features_debug) - set(PCL_FILTERS_LIBRARIES optimized pcl_filters_release debug pcl_filters_debug) - set(PCL_IO_LIBRARIES optimized pcl_io_release debug pcl_io_debug) - set(PCL_IO_PLY_LIBRARIES optimized pcl_io_ply_release debug pcl_io_ply_debug) - set(PCL_KDTREE_LIBRARIES optimized pcl_kdtree_release debug pcl_kdtree_debug) - set(PCL_KEYPOINTS_LIBRARIES optimized pcl_keypoints_release debug pcl_keypoints_debug) - set(PCL_ML_LIBRARIES optimized pcl_ml_release debug pcl_ml_debug) - set(PCL_OCTREE_LIBRARIES optimized pcl_octree_release debug pcl_octree_debug) - set(PCL_RECOGNITION_LIBRARIES optimized pcl_recognition_release debug pcl_recognition_debug) - set(PCL_REGISTRATION_LIBRARIES optimized pcl_registration_release debug pcl_registration_debug) - set(PCL_SAMPLE_CONSENSUS_LIBRARIES optimized pcl_sample_consensus_release debug pcl_sample_consensus_debug) - set(PCL_SEARCH_LIBRARIES optimized pcl_search_release debug pcl_search_debug) - set(PCL_SEGMENTATION_LIBRARIES optimized pcl_segmentation_release debug pcl_segmentation_debug) - set(PCL_STEREO_LIBRARIES optimized pcl_stereo_release debug pcl_stereo_debug) - set(PCL_SURFACE_LIBRARIES optimized pcl_surface_release debug pcl_surface_debug) - set(PCL_TRACKING_LIBRARIES optimized pcl_tracking_release debug pcl_tracking_debug) - - set(PCL_LIBRARIES - ${PCL_COMMON_LIBRARIES} - ${PCL_FEATURES_LIBRARIES} - ${PCL_FILTERS_LIBRARIES} - ${PCL_IO_LIBRARIES} - ${PCL_IO_PLY_LIBRARIES} - ${PCL_KDTREE_LIBRARIES} - ${PCL_KEYPOINTS_LIBRARIES} - ${PCL_ML_LIBRARIES} - ${PCL_OCTREE_LIBRARIES} - ${PCL_RECOGNITION_LIBRARIES} - ${PCL_REGISTRATION_LIBRARIES} - ${PCL_SAMPLE_CONSENSUS_LIBRARIES} - ${PCL_SEARCH_LIBRARIES} - ${PCL_SEGMENTATION_LIBRARIES} - ${PCL_STEREO_LIBRARIES} - ${PCL_SURFACE_LIBRARIES} - ${PCL_TRACKING_LIBRARIES} - ) - set(PCL_FOUND TRUE) - set(PCL_COMMON_FOUND TRUE) - set(PCL_FEATURES_FOUND TRUE) - set(PCL_FILTERS_FOUND TRUE) - set(PCL_IO_FOUND TRUE) - set(PCL_IO_PLY_FOUND TRUE) - set(PCL_KDTREE_FOUND TRUE) - set(PCL_KEYPOINTS_FOUND TRUE) - set(PCL_ML_FOUND TRUE) - set(PCL_OCTREE_FOUND TRUE) - set(PCL_RECOGNITION_FOUND TRUE) - set(PCL_REGISTRATION_FOUND TRUE) - set(PCL_SAMPLE_CONSENSUS_FOUND TRUE) - set(PCL_SEARCH_FOUND TRUE) - set(PCL_SEGMENTATION_FOUND TRUE) - set(PCL_STEREO_FOUND TRUE) - set(PCL_SURFACE_FOUND TRUE) - set(PCL_TRACKING_FOUND TRUE) -endif() - From a4724b3e691446a124d0164cad873efc6f327386 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2019 20:02:34 +0100 Subject: [PATCH 11/13] Fix some regressions in Python editor: * show again asterisk when modifying the content * show still only filename in tab when modifying from outside --- src/Gui/DlgMacroExecuteImp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gui/DlgMacroExecuteImp.cpp b/src/Gui/DlgMacroExecuteImp.cpp index 030d1db476..5900d50c21 100644 --- a/src/Gui/DlgMacroExecuteImp.cpp +++ b/src/Gui/DlgMacroExecuteImp.cpp @@ -326,10 +326,10 @@ void DlgMacroExecuteImp::on_editButton_clicked() PythonEditor* editor = new PythonEditor(); editor->setWindowIcon(Gui::BitmapFactory().iconFromTheme("applications-python")); PythonEditorView* edit = new PythonEditorView(editor, getMainWindow()); + edit->setDisplayName(PythonEditorView::FileName); edit->open(file); edit->resize(400, 300); getMainWindow()->addWindow(edit); - edit->setWindowTitle(item->text(0)); if (mitem->systemWide) { editor->setReadOnly(true); From e96cf55949360a80aa3b6377aa476a3e865dc2f0 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2019 20:46:38 +0100 Subject: [PATCH 12/13] fetch undo/redo stack for active MDI view, not active document --- src/Gui/DlgUndoRedo.cpp | 52 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/Gui/DlgUndoRedo.cpp b/src/Gui/DlgUndoRedo.cpp index f746c8afe4..b7a6b0f125 100644 --- a/src/Gui/DlgUndoRedo.cpp +++ b/src/Gui/DlgUndoRedo.cpp @@ -58,20 +58,20 @@ UndoDialog::~UndoDialog() void UndoDialog::onFetchInfo() { clear(); // Remove first all items - Gui::Document* pcDoc = Application::Instance->activeDocument(); - if (pcDoc) - { - std::vector vecUndos = pcDoc->getUndoVector(); - for (std::vector::iterator i=vecUndos.begin(); i!=vecUndos.end(); ++i) - addAction(QString::fromUtf8((*i).c_str()), this, SLOT(onSelected())); + + MDIView* mdi = getMainWindow()->activeWindow(); + EditorView* view = qobject_cast(mdi); + if (view) { + QStringList vecUndos = view->undoActions(); + for (QStringList::Iterator i = vecUndos.begin(); i != vecUndos.end(); ++i) + addAction(*i, this, SLOT(onSelected())); } - else - { - EditorView* view = qobject_cast(getMainWindow()->activeWindow()); - if (view) { - QStringList vecUndos = view->undoActions(); - for (QStringList::Iterator i=vecUndos.begin(); i!=vecUndos.end(); ++i) - addAction(*i, this, SLOT(onSelected())); + else if (mdi) { + Gui::Document* pcDoc = mdi->getGuiDocument(); + if (pcDoc) { + std::vector vecUndos = pcDoc->getUndoVector(); + for (std::vector::iterator i = vecUndos.begin(); i != vecUndos.end(); ++i) + addAction(QString::fromUtf8((*i).c_str()), this, SLOT(onSelected())); } } } @@ -115,20 +115,20 @@ RedoDialog::~RedoDialog() void RedoDialog::onFetchInfo() { clear(); // Remove first all items - Gui::Document* pcDoc = Application::Instance->activeDocument(); - if (pcDoc) - { - std::vector vecRedos = pcDoc->getRedoVector(); - for (std::vector::iterator i=vecRedos.begin(); i!=vecRedos.end(); ++i) - addAction(QString::fromUtf8((*i).c_str()), this, SLOT(onSelected())); + + MDIView* mdi = getMainWindow()->activeWindow(); + EditorView* view = qobject_cast(mdi); + if (view) { + QStringList vecRedos = view->redoActions(); + for (QStringList::Iterator i = vecRedos.begin(); i != vecRedos.end(); ++i) + addAction(*i, this, SLOT(onSelected())); } - else - { - EditorView* view = qobject_cast(getMainWindow()->activeWindow()); - if (view) { - QStringList vecRedos = view->redoActions(); - for (QStringList::Iterator i=vecRedos.begin(); i!=vecRedos.end(); ++i) - addAction(*i, this, SLOT(onSelected())); + else if (mdi) { + Gui::Document* pcDoc = mdi->getGuiDocument(); + if (pcDoc) { + std::vector vecRedos = pcDoc->getRedoVector(); + for (std::vector::iterator i = vecRedos.begin(); i != vecRedos.end(); ++i) + addAction(QString::fromUtf8((*i).c_str()), this, SLOT(onSelected())); } } } From 11e64ed3dfbcfc1406abf9f2cffda52827e13f75 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2019 22:24:16 +0100 Subject: [PATCH 13/13] for restored view providers of a redo again call handleChildren3D() to update scene graph --- src/Gui/Document.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index b7d5687d94..38e6514709 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -104,6 +104,7 @@ struct DocumentP std::map _ViewProviderMap; std::map _CoinMap; std::map _ViewProviderMapAnnotation; + std::list _redoViewProviders; typedef boost::signals2::connection Connection; Connection connectNewObject; @@ -690,6 +691,9 @@ void Document::slotNewObject(const App::DocumentObject& Obj) // it is possible that a new viewprovider already claims children handleChildren3D(pcProvider); + if (d->_isTransacting) { + d->_redoViewProviders.push_back(pcProvider); + } } } @@ -2152,6 +2156,10 @@ void Document::redo(int iSteps) getDocument()->redo(); } App::GetApplication().signalRedo(); + + for (auto it : d->_redoViewProviders) + handleChildren3D(it); + d->_redoViewProviders.clear(); } PyObject* Document::getPyObject(void)