From nobody Wed Sep 04 21:03:17 2024 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4WzZhk2Pqqz5VNNH; Wed, 04 Sep 2024 21:03:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4WzZhk1y9Xz4VVJ; Wed, 4 Sep 2024 21:03:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1725483798; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BY5mGUHDeID/X13yvtjwtAcTb5nrnmp+qxRzKggFvAU=; b=ZjvJqEejJCBjoYpBDH82/BXR4Pb0ednhax4zNKO15Fo4S78qCh3yu9d92BzyCjBaoq/mwO LNpO5XLeq1tIvKuIxiKY3lvRDUMvaNFy9DiB2/9Y/pqWWMSzz5jmapVCGSVCx/MRxXQZ31 xpBcaDerw5UNRv9iU+/ztyCUI8DFPhUjN7HtDVttQYqGhZkSoMtsHDx5yMRflGSwyC1U1z 28k3pvV+GuLXZFVP0GJLjgnEBvY+tQInpGHMWyFs4xKgWRzHRrDdKnuo7tsVfQs/EyyMUM ShTqHRK0EBEUx6qYmgaL7FOzx7Co5jh0D/CfvtBC7Waf1l0WVAYNuMZNIobeYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1725483798; a=rsa-sha256; cv=none; b=REOwIjuBk9h7OXbhalq3+FTZVtbJdsBCe6oMHZh/8Jk0+IDi2wXIq0kdaZHGfcqq/H4i4l +3MXJNIJdvV4koTRyDJTKoOo67lZs2Nl0WlwOJNz3VGxb5lAp5XEfZkk6Q/7oInq82zc+m ariwFxHVz9YbgkPLzEqX7jALDYNZdlRgu/cQsBXgBLzKIFk1VCpIvFoIgNxQPccCR0JFl0 pKec2/2D1FmTTokuBvuVeeejv51VXNANfv1nvAbatgQe51x8JJ/3Hi3SXTgbsNSfetmDOC drAp/z6oW97629RAPbsM20Ie1j361dSCd5KOIH5afHXctUdlhlmfABYZ2g1xTw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1725483798; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BY5mGUHDeID/X13yvtjwtAcTb5nrnmp+qxRzKggFvAU=; b=BkY3Mt5pBpXnePDZvJ4gvYE+a7ewW3AnM2z4P4BtLn0cKe6GS7u/s4Q71IcPvRb/AoW1ue HYYiDP4/o1GoSchDJaa/FPwysrT3M7OExY4vbSyRpKG7FGKLDIo0UQxO4C08xaDsFIl2Ay CMwzKSFggPh+bp/fJgM+dFu/KTS750Lahx6WissZ2AOwXKMbaOBlaJYdm9sL/QHjzhwZai jL8U/DvEp7ybKAAFvvRNBF8aeyg1dTjIxbkhWf/fKQ15ekKBrB4JkbeVOK5wuh4H84upBH W1noXgLASHvOEkG1tOHzWvDugtvO+kslfAP6ZtZWg9Jjak5L8zoKdHU3cZurow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4WzZhk1DlCzgZY; Wed, 4 Sep 2024 21:03:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 484L3IHg052315; Wed, 4 Sep 2024 21:03:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 484L3HOY052312; Wed, 4 Sep 2024 21:03:17 GMT (envelope-from git) Date: Wed, 4 Sep 2024 21:03:17 GMT Message-Id: <202409042103.484L3HOY052312@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Diane Bruce Subject: git: 1054fc2ae4a8 - main - cad/cura: upgrade to 5.7.0 List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-main@freebsd.org Sender: owner-dev-commits-ports-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: db X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1054fc2ae4a857c574d61b83e67aab3e723318b6 Auto-Submitted: auto-generated The branch main has been updated by db: URL: https://cgit.FreeBSD.org/ports/commit/?id=1054fc2ae4a857c574d61b83e67aab3e723318b6 commit 1054fc2ae4a857c574d61b83e67aab3e723318b6 Author: Matthieu Volat AuthorDate: 2024-09-04 21:01:44 +0000 Commit: Diane Bruce CommitDate: 2024-09-04 21:01:44 +0000 cad/cura: upgrade to 5.7.0 - rework build system PR: ports/272857 --- cad/cura/Makefile | 51 +- cad/cura/distinfo | 6 +- cad/cura/files/CMakeLists.txt | 104 + cad/cura/files/CuraPluginInstall.cmake | 105 + cad/cura/files/CuraTests.cmake | 84 + cad/cura/files/CuraVersion.py.in | 13 + cad/cura/files/com.ultimaker.cura.appdata.xml | 33 + cad/cura/files/com.ultimaker.cura.desktop.in | 19 + cad/cura/files/mod_bundled_packages_json.py | 73 + cad/cura/files/patch-CMakeLists.txt | 11 - .../files/patch-cura_OAuth2_KeyringAttribute.py | 11 - cad/cura/files/patch-cura__app.py | 8 - ...ns_USBPrinting_USBPrinterOutputDeviceManager.py | 14 - cad/cura/pkg-plist | 6571 +++++++++++++++----- 14 files changed, 5516 insertions(+), 1587 deletions(-) diff --git a/cad/cura/Makefile b/cad/cura/Makefile index d9439b86d05a..86e7e0149e2a 100644 --- a/cad/cura/Makefile +++ b/cad/cura/Makefile @@ -1,6 +1,5 @@ PORTNAME= Cura -DISTVERSION= 4.13.1 -PORTREVISION= 4 +DISTVERSION= 5.7.0 PORTEPOCH= 2 CATEGORIES= cad DIST_SUBDIR= Ultimaker @@ -12,46 +11,50 @@ WWW= https://github.com/Ultimaker/Cura/wiki LICENSE= AGPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE -DEPRECATED= Depends on expired devel/libsavitar and devel/py-pynest2d -EXPIRATION_DATE=2024-07-31 - BUILD_DEPENDS= Uranium>0,1:cad/uranium RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}zeroconf>0:net/py-zeroconf@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyserial>0:comms/py-pyserial@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}shapely>0:devel/py-shapely@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}numpy-stl>0:math/py-numpy-stl@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}keyring>0:security/py-keyring@${PY_FLAVOR} \ - qt5-graphicaleffects>0:graphics/qt5-graphicaleffects \ - qt5-quickcontrols>0:x11-toolkits/qt5-quickcontrols \ - qt5-quickcontrols2>0:x11-toolkits/qt5-quickcontrols2 \ Uranium>=${DISTVERSION}:cad/uranium \ - libCharon>=4.13.0:net/libcharon \ + libCharon>=5.0.0:net/libcharon \ CuraEngine>=${DISTVERSION}:cad/cura-engine \ - fdm_materials>=4.13.0:cad/fdm_materials \ + fdm_materials>=${DISTVERSION}:cad/fdm_materials \ ${PYTHON_PKGNAMEPREFIX}trimesh>0:devel/py-trimesh@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pynest2d>=4.12.1:devel/py-pynest2d@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pynest2d>=5.3.0:devel/py-pynest2d@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}sentry-sdk>0:devel/py-sentry-sdk@${PY_FLAVOR} \ - libArcus>=${DISTVERSION}:net/libarcus \ - libSavitar>=${DISTVERSION}:devel/libsavitar + libArcus>=5.3.0:net/libarcus \ + libSavitar>=5.3.0:devel/libsavitar LIB_DEPENDS= libArcus.so:net/libarcus \ libSavitar.so:devel/libsavitar -USES= cmake gettext shebangfix python pyqt:5 \ +USES= cmake gettext shebangfix python pyqt:6 \ desktop-file-utils shared-mime-info -USE_PYQT= pyqt5 -CMAKE_ARGS+= -DURANIUM_SCRIPTS_DIR:STRING="${LOCALBASE}/share/uranium/scripts" \ - -DCURA_VERSION=${DISTVERSION} +USE_PYQT= pyqt6 +CMAKE_ARGS+= -DURANIUM_DIR:STRING="${LOCALBASE}/share/uranium" \ + -DCURA_VERSION:STRING=${DISTVERSION} USE_GITHUB= yes GH_ACCOUNT= Ultimaker NO_ARCH= yes SHEBANG_FILES= cura_app.py -pre-configure: - ${REINPLACE_CMD} -e 's|%%DISTVERSION%%|${DISTVERSION}|' \ - ${WRKSRC}/CMakeLists.txt - -post-patch: - ${REINPLACE_CMD} -e 's|%%PYTHON_CMD%%|${PYTHON_CMD}|' \ - ${WRKSRC}/cura_app.py +#pre-configure: +# ${REINPLACE_CMD} -e 's|%%DISTVERSION%%|${DISTVERSION}|' \ +# ${WRKSRC}/CMakeLists.txt +# +#post-patch: +# ${REINPLACE_CMD} -e 's|%%PYTHON_CMD%%|${PYTHON_CMD}|' \ +# ${WRKSRC}/cura_app.py + +post-extract: + @${MKDIR} ${WRKSRC}/cmake + @for f in CuraPluginInstall.cmake CuraTests.cmake mod_bundled_packages_json.py; do \ + ${CP} ${FILESDIR}/$$f ${WRKSRC}/cmake; \ + done + @for f in CMakeLists.txt com.ultimaker.cura.desktop.in com.ultimaker.cura.appdata.xml; do \ + ${CP} ${FILESDIR}/$$f ${WRKSRC}; \ + done + @${CP} ${FILESDIR}/CuraVersion.py.in ${WRKSRC}/cura .include diff --git a/cad/cura/distinfo b/cad/cura/distinfo index fe51e1450d13..f1b5d4a41cfa 100644 --- a/cad/cura/distinfo +++ b/cad/cura/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1645697504 -SHA256 (Ultimaker/Ultimaker-Cura-4.13.1_GH0.tar.gz) = bda67f620a6245d0ddfbf6df7c2dcfdec88be152dfb7290ae06d8dcb35c4459c -SIZE (Ultimaker/Ultimaker-Cura-4.13.1_GH0.tar.gz) = 42339030 +TIMESTAMP = 1713952778 +SHA256 (Ultimaker/Ultimaker-Cura-5.7.0_GH0.tar.gz) = 95c9abcb3688cae6349a83dadec3e31dead0698a22ec68d93430a0fd4c15d130 +SIZE (Ultimaker/Ultimaker-Cura-5.7.0_GH0.tar.gz) = 53143171 diff --git a/cad/cura/files/CMakeLists.txt b/cad/cura/files/CMakeLists.txt new file mode 100644 index 000000000000..36a71efa0974 --- /dev/null +++ b/cad/cura/files/CMakeLists.txt @@ -0,0 +1,104 @@ +project(cura) +cmake_minimum_required(VERSION 3.6) + +include(GNUInstallDirs) + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) + +set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE PATH "The location of the Uranium repository") +set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE PATH "The location of the scripts directory of the Uranium repository") + +# Tests +include(CuraTests) + +option(CURA_DEBUGMODE "Enable debug dialog and other debug features" OFF) +if(CURA_DEBUGMODE) + set(_cura_debugmode "ON") +endif() + +option(GENERATE_TRANSLATIONS "Should the translations be generated?" ON) + +set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder") +set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura") +set(CURA_VERSION "master" CACHE STRING "Version name of Cura") +set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'") +set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root") +set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version") +set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version") +set(CURA_MARKETPLACE_ROOT "" CACHE STRING "Alternative Marketplace location") +set(CURA_DIGITAL_FACTORY_URL "" CACHE STRING "Alternative Digital Factory location") + +configure_file(${CMAKE_SOURCE_DIR}/com.ultimaker.cura.desktop.in ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop @ONLY) + +configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY) + + +# FIXME: The new FindPython3 finds the system's Python3.6 rather than the Python3.5 that we built for Cura's environment. +# So we're using the old method here, with FindPythonInterp for now. +#find_package(PythonInterp 3 REQUIRED) +# +#set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) +# +#set(Python3_VERSION ${PYTHON_VERSION_STRING}) +#set(Python3_VERSION_MAJOR ${PYTHON_VERSION_MAJOR}) +#set(Python3_VERSION_MINOR ${PYTHON_VERSION_MINOR}) +#set(Python3_VERSION_PATCH ${PYTHON_VERSION_PATCH}) +find_package(Python3 REQUIRED) + +if(NOT ${URANIUM_DIR} STREQUAL "") + set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake") +endif() +if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "") + list(APPEND CMAKE_MODULE_PATH ${URANIUM_DIR}/cmake) + include(UraniumTranslationTools) + # Extract Strings + add_custom_target(extract-messages ${URANIUM_SCRIPTS_DIR}/extract-messages ${CMAKE_SOURCE_DIR} cura) + # Build Translations + if(${GENERATE_TRANSLATIONS}) + CREATE_TRANSLATION_TARGETS() + endif() +endif() + + +install(DIRECTORY resources + DESTINATION ${CMAKE_INSTALL_DATADIR}/cura) + +include(CuraPluginInstall) + +if(NOT APPLE AND NOT WIN32) + install(FILES cura_app.py + DESTINATION ${CMAKE_INSTALL_BINDIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + RENAME cura) + if(EXISTS /etc/debian_version) + install(DIRECTORY cura + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}/dist-packages + FILES_MATCHING PATTERN *.py) + install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}/dist-packages/cura) + else() + install(DIRECTORY cura + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages + FILES_MATCHING PATTERN *.py) + install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages/cura) + endif() + install(FILES ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop + DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) + install(FILES ${CMAKE_SOURCE_DIR}/resources/images/cura-icon.png + DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/) + install(FILES com.ultimaker.cura.appdata.xml + DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) + install(FILES cura.sharedmimeinfo + DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/ + RENAME cura.xml ) +else() + install(FILES cura_app.py + DESTINATION ${CMAKE_INSTALL_BINDIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + install(DIRECTORY cura + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages + FILES_MATCHING PATTERN *.py) + install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages/cura) +endif() diff --git a/cad/cura/files/CuraPluginInstall.cmake b/cad/cura/files/CuraPluginInstall.cmake new file mode 100644 index 000000000000..8d9efe1f1207 --- /dev/null +++ b/cad/cura/files/CuraPluginInstall.cmake @@ -0,0 +1,105 @@ +# Copyright (c) 2019 Ultimaker B.V. +# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher. + +# +# This module detects all plugins that need to be installed and adds them using the CMake install() command. +# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it. +# +# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the +# form of "a;b;c" or "a,b,c". By default all plugins will be installed. +# + +option(PRINT_PLUGIN_LIST "Should the list of plugins that are installed be printed?" ON) + +# FIXME: Remove the code for CMake <3.12 once we have switched over completely. +# FindPython3 is a new module since CMake 3.12. It deprecates FindPythonInterp and FindPythonLibs. The FindPython3 +# module is copied from the CMake repository here so in CMake <3.12 we can still use it. +if(${CMAKE_VERSION} VERSION_LESS 3.12) + # Use FindPythonInterp and FindPythonLibs for CMake <3.12 + find_package(PythonInterp 3 REQUIRED) + + set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) +else() + # Use FindPython3 for CMake >=3.12 + find_package(Python3 REQUIRED COMPONENTS Interpreter) +endif() + +# Options or configuration variables +set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.") + +file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json) +list(LENGTH _plugin_json_list _plugin_json_list_len) + +# Sort the lists alphabetically so we can handle cases like this: +# - plugins/my_plugin/plugin.json +# - plugins/my_plugin/my_module/plugin.json +# In this case, only "plugins/my_plugin" should be added via install(). +set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS}) +# Sanitize the string so the comparison will be case-insensitive. +string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list) +string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list) + +# WORKAROUND counterpart of what's in cura-build. +string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}") + +list(LENGTH _no_install_plugin_list _no_install_plugin_list_len) + +if(_no_install_plugin_list_len GREATER 0) + list(SORT _no_install_plugin_list) +endif() +if(_plugin_json_list_len GREATER 0) + list(SORT _plugin_json_list) +endif() + +# Check all plugin directories and add them via install() if needed. +set(_install_plugin_list "") +foreach(_plugin_json_path ${_plugin_json_list}) + get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY) + file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir}) + get_filename_component(_plugin_dir_name ${_plugin_dir} NAME) + + # Make plugin name comparison case-insensitive + string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase) + + # Check if this plugin needs to be skipped for installation + set(_add_plugin ON) # Indicates if this plugin should be added to the build or not. + set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is + # specified in the NO_INSTALL_PLUGINS list. + if(_no_install_plugin_list) + if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list) + set(_add_plugin OFF) + set(_is_no_install_plugin ON) + endif() + endif() + + # Make sure this is not a subdirectory in a plugin that's already in the install list + if(_add_plugin) + foreach(_known_install_plugin_dir ${_install_plugin_list}) + if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+") + set(_add_plugin OFF) + break() + endif() + endforeach() + endif() + + if(_add_plugin) + if(${PRINT_PLUGIN_LIST}) + message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}") + endif() + get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY) + install(DIRECTORY ${_rel_plugin_dir} + DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir} + PATTERN "__pycache__" EXCLUDE + PATTERN "*.qmlc" EXCLUDE + ) + list(APPEND _install_plugin_list ${_plugin_dir}) + elseif(_is_no_install_plugin) + if(${PRINT_PLUGIN_LIST}) + message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}") + endif() + execute_process(COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py + -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages + ${_plugin_dir_name} + RESULT_VARIABLE _mod_json_result) + endif() +endforeach() diff --git a/cad/cura/files/CuraTests.cmake b/cad/cura/files/CuraTests.cmake new file mode 100644 index 000000000000..69b13c6a3224 --- /dev/null +++ b/cad/cura/files/CuraTests.cmake @@ -0,0 +1,84 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +include(CTest) +include(CMakeParseArguments) + +# FIXME: The new FindPython3 finds the system's Python3.6 rather than the Python3.5 that we built for Cura's environment. +# So we're using the old method here, with FindPythonInterp for now. +#find_package(PythonInterp 3 REQUIRED) +# +#set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) +find_package(Python3 REQUIRED) + +add_custom_target(test-verbose COMMAND ${CMAKE_CTEST_COMMAND} --verbose) + +function(cura_add_test) + set(_single_args NAME DIRECTORY PYTHONPATH) + cmake_parse_arguments("" "" "${_single_args}" "" ${ARGN}) + + if(NOT _NAME) + message(FATAL_ERROR "cura_add_test requires a test name argument") + endif() + + if(NOT _DIRECTORY) + message(FATAL_ERROR "cura_add_test requires a directory to test") + endif() + + if(NOT _PYTHONPATH) + set(_PYTHONPATH ${_DIRECTORY}) + endif() + + if(WIN32) + string(REPLACE "|" "\\;" _PYTHONPATH ${_PYTHONPATH}) + set(_PYTHONPATH "${_PYTHONPATH}\\;$ENV{PYTHONPATH}") + else() + string(REPLACE "|" ":" _PYTHONPATH ${_PYTHONPATH}) + set(_PYTHONPATH "${_PYTHONPATH}:$ENV{PYTHONPATH}") + endif() + + get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves). + if (NOT ${test_exists}) + add_test( + NAME ${_NAME} + COMMAND ${Python3_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} + ) + set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) + set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") + else() + message(WARNING "Duplicate test ${_NAME}!") + endif() +endfunction() + + +#Add code style test. +add_test( + NAME "code-style" + COMMAND ${Python3_EXECUTABLE} run_mypy.py + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +) + +#Add test for import statements which are not compatible with all builds +add_test( + NAME "invalid-imports" + COMMAND ${Python3_EXECUTABLE} scripts/check_invalid_imports.py + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +) + +cura_add_test(NAME pytest-main DIRECTORY ${CMAKE_SOURCE_DIR}/tests PYTHONPATH "${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") + +file(GLOB_RECURSE _plugins plugins/*/__init__.py) +foreach(_plugin ${_plugins}) + get_filename_component(_plugin_directory ${_plugin} DIRECTORY) + if(EXISTS ${_plugin_directory}/tests) + get_filename_component(_plugin_name ${_plugin_directory} NAME) + cura_add_test(NAME pytest-${_plugin_name} DIRECTORY ${_plugin_directory} PYTHONPATH "${_plugin_directory}|${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") + endif() +endforeach() + +#Add test for whether the shortcut alt-keys are unique in every translation. +add_test( + NAME "shortcut-keys" + COMMAND ${Python3_EXECUTABLE} scripts/check_shortcut_keys.py + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +) diff --git a/cad/cura/files/CuraVersion.py.in b/cad/cura/files/CuraVersion.py.in new file mode 100644 index 000000000000..ce2264f5fc9c --- /dev/null +++ b/cad/cura/files/CuraVersion.py.in @@ -0,0 +1,13 @@ +# Copyright (c) 2020 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +CuraAppName = "@CURA_APP_NAME@" +CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@" +CuraVersion = "@CURA_VERSION@" +CuraBuildType = "@CURA_BUILDTYPE@" +CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False +CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@" +CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@" +CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@" +CuraMarketplaceRoot = "@CURA_MARKETPLACE_ROOT@" +CuraDigitalFactoryURL = "@CURA_DIGITAL_FACTORY_URL@" diff --git a/cad/cura/files/com.ultimaker.cura.appdata.xml b/cad/cura/files/com.ultimaker.cura.appdata.xml new file mode 100644 index 000000000000..bdd25e5242a4 --- /dev/null +++ b/cad/cura/files/com.ultimaker.cura.appdata.xml @@ -0,0 +1,33 @@ + + + + com.ultimaker.cura.desktop + CC0-1.0 + LGPL-3.0 and CC-BY-SA-4.0 + Cura + The world's most advanced 3d printer software + +

+ Cura creates a seamless integration between hardware, software and + materials for the best 3D printing experience around. + Cura supports the 3MF, OBJ and STL file formats and is available on + Windows, Mac and Linux. +

+
    +
  • Novices can start printing right away
  • +
  • Experts are able to customize 300 settings to achieve the best results
  • +
  • Optimized profiles for Ultimaker materials
  • +
  • Supported by a global network of Ultimaker certified service partners
  • +
  • Print multiple objects at once with different settings for each object
  • +
  • Cura supports STL, 3MF and OBJ file formats
  • +
  • Open source and completely free
  • +
+
+ + + https://raw.githubusercontent.com/Ultimaker/Cura/master/screenshot.png + + + https://ultimaker.com/software/ultimaker-cura?utm_source=cura&utm_medium=software&utm_campaign=cura-update-linux + Cura +
diff --git a/cad/cura/files/com.ultimaker.cura.desktop.in b/cad/cura/files/com.ultimaker.cura.desktop.in new file mode 100644 index 000000000000..1e17e30f4e0c --- /dev/null +++ b/cad/cura/files/com.ultimaker.cura.desktop.in @@ -0,0 +1,19 @@ +[Desktop Entry] +Name=Ultimaker Cura +Name[de]=Ultimaker Cura +Name[nl]=Ultimaker Cura +GenericName=3D Printing Software +GenericName[de]=3D-Druck-Software +GenericName[nl]=3D-printsoftware +Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great. +Comment[de]=Cura wandelt 3D-Modelle in Pfade für einen 3D-Drucker um. Es bereitet Ihren Druck für maximale Genauigkeit, minimale Druckzeit und guter Zuverlässigkeit mit vielen zusätzlichen Funktionen vor, damit Ihr Druck großartig wird. +Comment[nl]=Cura converteert 3D-modellen naar paden voor een 3D printer. Het bereidt je print voor om zeer precies, snel en betrouwbaar te kunnen printen, met veel extra functionaliteit om je print er goed uit te laten komen. +Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F +TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura +Icon=cura-icon +Terminal=false +Type=Application +MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip; +Categories=Graphics; +Keywords=3D;Printing;Slicer; +StartupWMClass=cura.real diff --git a/cad/cura/files/mod_bundled_packages_json.py b/cad/cura/files/mod_bundled_packages_json.py new file mode 100644 index 000000000000..e03261b4799b --- /dev/null +++ b/cad/cura/files/mod_bundled_packages_json.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +# +# This script removes the given package entries in the bundled_packages JSON files. This is used by the PluginInstall +# CMake module. +# + +import argparse +import collections +import json +import os +import sys + + +def find_json_files(work_dir: str) -> list: + """Finds all JSON files in the given directory recursively and returns a list of those files in absolute paths. + + :param work_dir: The directory to look for JSON files recursively. + :return: A list of JSON files in absolute paths that are found in the given directory. + """ + + json_file_list = [] + for root, dir_names, file_names in os.walk(work_dir): + for file_name in file_names: + abs_path = os.path.abspath(os.path.join(root, file_name)) + json_file_list.append(abs_path) + return json_file_list + + +def remove_entries_from_json_file(file_path: str, entries: list) -> None: + """Removes the given entries from the given JSON file. The file will modified in-place. + + :param file_path: The JSON file to modify. + :param entries: A list of strings as entries to remove. + :return: None + """ + + try: + with open(file_path, "r", encoding = "utf-8") as f: + package_dict = json.load(f, object_hook = collections.OrderedDict) + except Exception as e: + msg = "Failed to load '{file_path}' as a JSON file. This file will be ignored Exception: {e}"\ + .format(file_path = file_path, e = e) + sys.stderr.write(msg + os.linesep) + return + + for entry in entries: + if entry in package_dict: + del package_dict[entry] + print("[INFO] Remove entry [{entry}] from [{file_path}]".format(file_path = file_path, entry = entry)) + + try: + with open(file_path, "w", encoding = "utf-8", newline = "\n") as f: + json.dump(package_dict, f, indent = 4) + except Exception as e: + msg = "Failed to write '{file_path}' as a JSON file. Exception: {e}".format(file_path = file_path, e = e) + raise IOError(msg) + + +def main() -> None: + parser = argparse.ArgumentParser("mod_bundled_packages_json") + parser.add_argument("-d", "--dir", dest = "work_dir", + help = "The directory to look for bundled packages JSON files, recursively.") + parser.add_argument("entries", metavar = "ENTRIES", type = str, nargs = "+") + + args = parser.parse_args() + + json_file_list = find_json_files(args.work_dir) + for json_file_path in json_file_list: + remove_entries_from_json_file(json_file_path, args.entries) + + +if __name__ == "__main__": + main() diff --git a/cad/cura/files/patch-CMakeLists.txt b/cad/cura/files/patch-CMakeLists.txt deleted file mode 100644 index f3a947f4cfa8..000000000000 --- a/cad/cura/files/patch-CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ ---- CMakeLists.txt.orig 2020-12-25 04:46:02 UTC -+++ CMakeLists.txt -@@ -20,7 +20,7 @@ option(GENERATE_TRANSLATIONS "Should the translations - - set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder") - set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura") --set(CURA_VERSION "master" CACHE STRING "Version name of Cura") -+set(CURA_VERSION "%%DISTVERSION%%" CACHE STRING "Version name of Cura") - set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'") - set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root") - set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version") diff --git a/cad/cura/files/patch-cura_OAuth2_KeyringAttribute.py b/cad/cura/files/patch-cura_OAuth2_KeyringAttribute.py deleted file mode 100644 index d38210f76b94..000000000000 --- a/cad/cura/files/patch-cura_OAuth2_KeyringAttribute.py +++ /dev/null @@ -1,11 +0,0 @@ ---- cura/OAuth2/KeyringAttribute.py.orig 2022-04-28 04:59:10 UTC -+++ cura/OAuth2/KeyringAttribute.py -@@ -5,7 +5,7 @@ from typing import Type, TYPE_CHECKING, Optional, List - from io import BlockingIOError - import keyring - from keyring.backend import KeyringBackend --from keyring.errors import NoKeyringError, PasswordSetError, KeyringLocked -+from keyring.errors import PasswordSetError, KeyringLocked - - from UM.Logger import Logger - diff --git a/cad/cura/files/patch-cura__app.py b/cad/cura/files/patch-cura__app.py deleted file mode 100644 index 519db7713567..000000000000 --- a/cad/cura/files/patch-cura__app.py +++ /dev/null @@ -1,8 +0,0 @@ ---- cura_app.py.orig 2020-02-28 16:06:57 UTC -+++ cura_app.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python3.8 -+#!/usr/bin/env %%PYTHON_CMD%% - - # Copyright (c) 2022 Ultimaker B.V. - # Cura is released under the terms of the LGPLv3 or higher. diff --git a/cad/cura/files/patch-plugins_USBPrinting_USBPrinterOutputDeviceManager.py b/cad/cura/files/patch-plugins_USBPrinting_USBPrinterOutputDeviceManager.py deleted file mode 100644 index 553286321d79..000000000000 --- a/cad/cura/files/patch-plugins_USBPrinting_USBPrinterOutputDeviceManager.py +++ /dev/null @@ -1,14 +0,0 @@ -We cannot really distinguish between USB and non-USB here, -as port[2] is 'n/a' on FreeBSD. - ---- plugins/USBPrinting/USBPrinterOutputDeviceManager.py.orig 2020-07-23 19:29:25 UTC -+++ plugins/USBPrinting/USBPrinterOutputDeviceManager.py -@@ -123,8 +123,6 @@ - port = (port.device, port.description, port.hwid) - if not port[2]: # HWID may be None if the device is not USB or the system doesn't report the type. - continue -- if only_list_usb and not port[2].startswith("USB"): -- continue - - # To prevent cura from messing with serial ports of other devices, - # filter by regular expressions passed in as environment variables. diff --git a/cad/cura/pkg-plist b/cad/cura/pkg-plist index 91c63c37cc88..efbb18c24866 100644 --- a/cad/cura/pkg-plist +++ b/cad/cura/pkg-plist @@ -1,15 +1,25 @@ bin/cura +lib/cura/plugins/3MFReader/SpecificSettingsModel.py lib/cura/plugins/3MFReader/ThreeMFReader.py lib/cura/plugins/3MFReader/ThreeMFWorkspaceReader.py -lib/cura/plugins/3MFReader/UpdatableMachinesModel.py lib/cura/plugins/3MFReader/WorkspaceDialog.py lib/cura/plugins/3MFReader/WorkspaceDialog.qml +lib/cura/plugins/3MFReader/WorkspaceRow.qml +lib/cura/plugins/3MFReader/WorkspaceSection.qml lib/cura/plugins/3MFReader/__init__.py lib/cura/plugins/3MFReader/plugin.json +lib/cura/plugins/3MFWriter/SettingExport.py +lib/cura/plugins/3MFWriter/SettingSelection.qml +lib/cura/plugins/3MFWriter/SettingsExportGroup.py +lib/cura/plugins/3MFWriter/SettingsExportModel.py +lib/cura/plugins/3MFWriter/SettingsSelectionGroup.qml lib/cura/plugins/3MFWriter/ThreeMFWorkspaceWriter.py lib/cura/plugins/3MFWriter/ThreeMFWriter.py +lib/cura/plugins/3MFWriter/UCPDialog.py +lib/cura/plugins/3MFWriter/UCPDialog.qml lib/cura/plugins/3MFWriter/__init__.py lib/cura/plugins/3MFWriter/plugin.json +lib/cura/plugins/3MFWriter/tests/TestMFWriter.py lib/cura/plugins/AMFReader/AMFReader.py lib/cura/plugins/AMFReader/__init__.py lib/cura/plugins/AMFReader/plugin.json @@ -26,7 +36,7 @@ lib/cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml lib/cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml lib/cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml lib/cura/plugins/CuraDrive/src/qml/components/BackupListItemDetailsRow.qml -lib/cura/plugins/CuraDrive/src/qml/images/icon.png +lib/cura/plugins/CuraDrive/src/qml/images/backup.svg lib/cura/plugins/CuraDrive/src/qml/main.qml lib/cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml lib/cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml @@ -135,6 +145,52 @@ lib/cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml lib/cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml lib/cura/plugins/MachineSettingsAction/__init__.py lib/cura/plugins/MachineSettingsAction/plugin.json +lib/cura/plugins/MakerbotWriter/MakerbotWriter.py +lib/cura/plugins/MakerbotWriter/__init__.py +lib/cura/plugins/MakerbotWriter/plugin.json +lib/cura/plugins/Marketplace/CloudApiModel.py +lib/cura/plugins/Marketplace/CloudSync/CloudApiClient.py +lib/cura/plugins/Marketplace/CloudSync/CloudPackageChecker.py +lib/cura/plugins/Marketplace/CloudSync/DiscrepanciesPresenter.py +lib/cura/plugins/Marketplace/CloudSync/DownloadPresenter.py +lib/cura/plugins/Marketplace/CloudSync/LicenseModel.py +lib/cura/plugins/Marketplace/CloudSync/LicensePresenter.py +lib/cura/plugins/Marketplace/CloudSync/RestartApplicationPresenter.py +lib/cura/plugins/Marketplace/CloudSync/SubscribedPackagesModel.py +lib/cura/plugins/Marketplace/CloudSync/SyncOrchestrator.py +lib/cura/plugins/Marketplace/CloudSync/__init__.py +lib/cura/plugins/Marketplace/Constants.py +lib/cura/plugins/Marketplace/InstallMissingPackagesDialog.py +lib/cura/plugins/Marketplace/LocalPackageList.py +lib/cura/plugins/Marketplace/Marketplace.py +lib/cura/plugins/Marketplace/MissingPackageList.py +lib/cura/plugins/Marketplace/PackageList.py +lib/cura/plugins/Marketplace/PackageModel.py +lib/cura/plugins/Marketplace/RemotePackageList.py +lib/cura/plugins/Marketplace/__init__.py +lib/cura/plugins/Marketplace/plugin.json +lib/cura/plugins/Marketplace/resources/images/Plugin.svg +lib/cura/plugins/Marketplace/resources/images/Spool.svg +lib/cura/plugins/Marketplace/resources/images/placeholder.svg +lib/cura/plugins/Marketplace/resources/qml/CompatibilityDialog.qml +lib/cura/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml +lib/cura/plugins/Marketplace/resources/qml/LicenseDialog.qml +lib/cura/plugins/Marketplace/resources/qml/ManageButton.qml +lib/cura/plugins/Marketplace/resources/qml/ManagePackagesButton.qml +lib/cura/plugins/Marketplace/resources/qml/ManagedPackages.qml +lib/cura/plugins/Marketplace/resources/qml/Marketplace.qml +lib/cura/plugins/Marketplace/resources/qml/Materials.qml +lib/cura/plugins/Marketplace/resources/qml/MissingPackages.qml +lib/cura/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml +lib/cura/plugins/Marketplace/resources/qml/OnboardBanner.qml +lib/cura/plugins/Marketplace/resources/qml/PackageCard.qml +lib/cura/plugins/Marketplace/resources/qml/PackageCardHeader.qml +lib/cura/plugins/Marketplace/resources/qml/PackageDetails.qml +lib/cura/plugins/Marketplace/resources/qml/PackagePage.qml +lib/cura/plugins/Marketplace/resources/qml/PackageTypeTab.qml +lib/cura/plugins/Marketplace/resources/qml/Packages.qml +lib/cura/plugins/Marketplace/resources/qml/Plugins.qml +lib/cura/plugins/Marketplace/resources/qml/VerifiedIcon.qml lib/cura/plugins/ModelChecker/ModelChecker.py lib/cura/plugins/ModelChecker/ModelChecker.qml lib/cura/plugins/ModelChecker/__init__.py @@ -160,14 +216,17 @@ lib/cura/plugins/PostProcessingPlugin/Script.py lib/cura/plugins/PostProcessingPlugin/Script.svg lib/cura/plugins/PostProcessingPlugin/__init__.py lib/cura/plugins/PostProcessingPlugin/plugin.json +lib/cura/plugins/PostProcessingPlugin/scripts/AddCoolingProfile.py lib/cura/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py lib/cura/plugins/PostProcessingPlugin/scripts/ColorMix.py lib/cura/plugins/PostProcessingPlugin/scripts/CreateThumbnail.py lib/cura/plugins/PostProcessingPlugin/scripts/DisplayFilenameAndLayerOnLCD.py +lib/cura/plugins/PostProcessingPlugin/scripts/DisplayInfoOnLCD.py lib/cura/plugins/PostProcessingPlugin/scripts/DisplayProgressOnLCD.py lib/cura/plugins/PostProcessingPlugin/scripts/ExampleScript.md lib/cura/plugins/PostProcessingPlugin/scripts/FilamentChange.py lib/cura/plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py +lib/cura/plugins/PostProcessingPlugin/scripts/LimitXYAccelJerk.py lib/cura/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py lib/cura/plugins/PostProcessingPlugin/scripts/RetractContinue.py lib/cura/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -227,55 +286,6 @@ lib/cura/plugins/SolidView/xray_overlay.shader lib/cura/plugins/SupportEraser/SupportEraser.py lib/cura/plugins/SupportEraser/__init__.py lib/cura/plugins/SupportEraser/plugin.json -lib/cura/plugins/Toolbox/__init__.py -lib/cura/plugins/Toolbox/plugin.json -lib/cura/plugins/Toolbox/resources/images/Shop.svg -lib/cura/plugins/Toolbox/resources/images/installed_check.svg -lib/cura/plugins/Toolbox/resources/images/placeholder.svg -lib/cura/plugins/Toolbox/resources/qml/Toolbox.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxActionButtonStyle.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxBackColumn.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxCompatibilityChart.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxDetailList.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxDetailTile.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxDetailTileActions.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGrid.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGridTile.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcaseTile.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxFooter.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxInstalledTile.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxInstalledTileActions.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxProgressButton.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxShadow.qml -lib/cura/plugins/Toolbox/resources/qml/components/ToolboxTabButton.qml -lib/cura/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml -lib/cura/plugins/Toolbox/resources/qml/dialogs/ToolboxConfirmUninstallResetDialog.qml -lib/cura/plugins/Toolbox/resources/qml/dialogs/ToolboxLicenseDialog.qml -lib/cura/plugins/Toolbox/resources/qml/pages/ToolboxAuthorPage.qml -lib/cura/plugins/Toolbox/resources/qml/pages/ToolboxDetailPage.qml -lib/cura/plugins/Toolbox/resources/qml/pages/ToolboxDownloadsPage.qml -lib/cura/plugins/Toolbox/resources/qml/pages/ToolboxErrorPage.qml -lib/cura/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml -lib/cura/plugins/Toolbox/resources/qml/pages/ToolboxLoadingPage.qml -lib/cura/plugins/Toolbox/resources/qml/pages/WelcomePage.qml -lib/cura/plugins/Toolbox/src/AuthorsModel.py -lib/cura/plugins/Toolbox/src/CloudApiModel.py -lib/cura/plugins/Toolbox/src/CloudSync/CloudApiClient.py -lib/cura/plugins/Toolbox/src/CloudSync/CloudPackageChecker.py -lib/cura/plugins/Toolbox/src/CloudSync/DiscrepanciesPresenter.py -lib/cura/plugins/Toolbox/src/CloudSync/DownloadPresenter.py -lib/cura/plugins/Toolbox/src/CloudSync/LicenseModel.py -lib/cura/plugins/Toolbox/src/CloudSync/LicensePresenter.py -lib/cura/plugins/Toolbox/src/CloudSync/RestartApplicationPresenter.py -lib/cura/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py -lib/cura/plugins/Toolbox/src/CloudSync/SyncOrchestrator.py -lib/cura/plugins/Toolbox/src/CloudSync/__init__.py -lib/cura/plugins/Toolbox/src/ConfigsModel.py -lib/cura/plugins/Toolbox/src/PackagesModel.py -lib/cura/plugins/Toolbox/src/Toolbox.py -lib/cura/plugins/Toolbox/src/__init__.py lib/cura/plugins/TrimeshReader/TrimeshReader.py lib/cura/plugins/TrimeshReader/__init__.py lib/cura/plugins/TrimeshReader/plugin.json @@ -288,16 +298,19 @@ lib/cura/plugins/UFPWriter/kitten.png lib/cura/plugins/UFPWriter/plugin.json lib/cura/plugins/UM3NetworkPrinting/__init__.py lib/cura/plugins/UM3NetworkPrinting/plugin.json +lib/cura/plugins/UM3NetworkPrinting/resources/png/MakerBot Method X.png +lib/cura/plugins/UM3NetworkPrinting/resources/png/MakerBot Method XL.png +lib/cura/plugins/UM3NetworkPrinting/resources/png/MakerBot Method.png lib/cura/plugins/UM3NetworkPrinting/resources/png/Ultimaker 2+ Connect.png lib/cura/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3 Extended.png lib/cura/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3.png lib/cura/plugins/UM3NetworkPrinting/resources/png/Ultimaker S3.png lib/cura/plugins/UM3NetworkPrinting/resources/png/Ultimaker S5.png +lib/cura/plugins/UM3NetworkPrinting/resources/png/Ultimaker S7.png lib/cura/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml lib/cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml lib/cura/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml lib/cura/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml -lib/cura/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml lib/cura/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml lib/cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml lib/cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml @@ -331,28 +344,34 @@ lib/cura/plugins/UM3NetworkPrinting/resources/svg/Warning.svg lib/cura/plugins/UM3NetworkPrinting/resources/svg/icons/CameraPhoto.svg lib/cura/plugins/UM3NetworkPrinting/resources/svg/icons/Extruder.svg lib/cura/plugins/UM3NetworkPrinting/resources/svg/ultibot.svg +lib/cura/plugins/UM3NetworkPrinting/src/Cloud/AbstractCloudOutputDevice.py lib/cura/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py lib/cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py lib/cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py lib/cura/plugins/UM3NetworkPrinting/src/Cloud/ToolPathUploader.py lib/cura/plugins/UM3NetworkPrinting/src/Cloud/__init__.py +lib/cura/plugins/UM3NetworkPrinting/src/Cloud/machine_id_to_name.json lib/cura/plugins/UM3NetworkPrinting/src/ClusterOutputController.py lib/cura/plugins/UM3NetworkPrinting/src/ExportFileJob.py lib/cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py +lib/cura/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py +lib/cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobAwaitingApprovalMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadQueueFullMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py +lib/cura/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py lib/cura/plugins/UM3NetworkPrinting/src/Messages/__init__.py lib/cura/plugins/UM3NetworkPrinting/src/Models/BaseModel.py lib/cura/plugins/UM3NetworkPrinting/src/Models/ConfigurationChangeModel.py lib/cura/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterResponse.py lib/cura/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterStatus.py +lib/cura/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterWithConfigResponse.py lib/cura/plugins/UM3NetworkPrinting/src/Models/Http/CloudError.py lib/cura/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobResponse.py lib/cura/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobUploadRequest.py @@ -445,6 +464,9 @@ lib/cura/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json lib/cura/plugins/VersionUpgrade/VersionUpgrade411to412/VersionUpgrade411to412.py lib/cura/plugins/VersionUpgrade/VersionUpgrade411to412/__init__.py lib/cura/plugins/VersionUpgrade/VersionUpgrade411to412/plugin.json +lib/cura/plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade413to50/plugin.json lib/cura/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py lib/cura/plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py lib/cura/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json @@ -477,6 +499,18 @@ lib/cura/plugins/VersionUpgrade/VersionUpgrade48to49/plugin.json lib/cura/plugins/VersionUpgrade/VersionUpgrade49to410/VersionUpgrade49to410.py lib/cura/plugins/VersionUpgrade/VersionUpgrade49to410/__init__.py lib/cura/plugins/VersionUpgrade/VersionUpgrade49to410/plugin.json +lib/cura/plugins/VersionUpgrade/VersionUpgrade52to53/VersionUpgrade52to53.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade52to53/__init__.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade52to53/plugin.json +lib/cura/plugins/VersionUpgrade/VersionUpgrade53to54/VersionUpgrade53to54.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade53to54/__init__.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade53to54/plugin.json +lib/cura/plugins/VersionUpgrade/VersionUpgrade54to55/VersionUpgrade54to55.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade54to55/__init__.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade54to55/plugin.json +lib/cura/plugins/VersionUpgrade/VersionUpgrade56to57/VersionUpgrade56to57.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade56to57/__init__.py +lib/cura/plugins/VersionUpgrade/VersionUpgrade56to57/plugin.json lib/cura/plugins/X3DReader/X3DReader.py lib/cura/plugins/X3DReader/__init__.py lib/cura/plugins/X3DReader/plugin.json @@ -498,13 +532,14 @@ lib/cura/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py %%PYTHON_SITELIBDIR%%/cura/API/Interface/__init__.py %%PYTHON_SITELIBDIR%%/cura/API/__init__.py %%PYTHON_SITELIBDIR%%/cura/ApplicationMetadata.py -%%PYTHON_SITELIBDIR%%/cura/Arranging/Arrange.py -%%PYTHON_SITELIBDIR%%/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py %%PYTHON_SITELIBDIR%%/cura/Arranging/ArrangeObjectsJob.py +%%PYTHON_SITELIBDIR%%/cura/Arranging/Arranger.py +%%PYTHON_SITELIBDIR%%/cura/Arranging/GridArrange.py %%PYTHON_SITELIBDIR%%/cura/Arranging/Nest2DArrange.py %%PYTHON_SITELIBDIR%%/cura/Arranging/ShapeArray.py %%PYTHON_SITELIBDIR%%/cura/Arranging/__init__.py %%PYTHON_SITELIBDIR%%/cura/AutoSave.py +%%PYTHON_SITELIBDIR%%/cura/BackendPlugin.py %%PYTHON_SITELIBDIR%%/cura/Backups/Backup.py %%PYTHON_SITELIBDIR%%/cura/Backups/BackupsManager.py %%PYTHON_SITELIBDIR%%/cura/Backups/__init__.py @@ -516,6 +551,7 @@ lib/cura/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py %%PYTHON_SITELIBDIR%%/cura/CuraPackageManager.py %%PYTHON_SITELIBDIR%%/cura/CuraVersion.py %%PYTHON_SITELIBDIR%%/cura/CuraView.py +%%PYTHON_SITELIBDIR%%/cura/HitChecker.py %%PYTHON_SITELIBDIR%%/cura/Layer.py %%PYTHON_SITELIBDIR%%/cura/LayerData.py %%PYTHON_SITELIBDIR%%/cura/LayerDataBuilder.py @@ -529,8 +565,10 @@ lib/cura/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py %%PYTHON_SITELIBDIR%%/cura/Machines/MachineNode.py %%PYTHON_SITELIBDIR%%/cura/Machines/MaterialGroup.py %%PYTHON_SITELIBDIR%%/cura/Machines/MaterialNode.py +%%PYTHON_SITELIBDIR%%/cura/Machines/Models/ActiveIntentQualitiesModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/BaseMaterialsModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/BuildPlateModel.py +%%PYTHON_SITELIBDIR%%/cura/Machines/Models/CompatibleMachineModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/DiscoveredCloudPrintersModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/DiscoveredPrintersModel.py @@ -541,7 +579,9 @@ lib/cura/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/GlobalStacksModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/IntentCategoryModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/IntentModel.py +%%PYTHON_SITELIBDIR%%/cura/Machines/Models/IntentSelectionModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/IntentTranslations.py +%%PYTHON_SITELIBDIR%%/cura/Machines/Models/MachineListModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/MachineModelUtils.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/MaterialBrandsModel.py %%PYTHON_SITELIBDIR%%/cura/Machines/Models/MaterialManagementModel.py @@ -577,6 +617,7 @@ lib/cura/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py %%PYTHON_SITELIBDIR%%/cura/PlatformPhysics.py %%PYTHON_SITELIBDIR%%/cura/PreviewPass.py %%PYTHON_SITELIBDIR%%/cura/PrintJobPreviewImageProvider.py +%%PYTHON_SITELIBDIR%%/cura/PrintOrderManager.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/FirmwareUpdater.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/GenericOutputController.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/Models/ExtruderConfigurationModel.py @@ -592,10 +633,8 @@ lib/cura/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/PrintJobOutputModel.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/PrinterOutputController.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/PrinterOutputDevice.py -%%PYTHON_SITELIBDIR%%/cura/PrinterOutput/PrinterOutputModel.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/UploadMaterialsJob.py %%PYTHON_SITELIBDIR%%/cura/PrinterOutput/__init__.py -%%PYTHON_SITELIBDIR%%/cura/PrinterOutputDevice.py %%PYTHON_SITELIBDIR%%/cura/ReaderWriters/ProfileReader.py %%PYTHON_SITELIBDIR%%/cura/ReaderWriters/ProfileWriter.py %%PYTHON_SITELIBDIR%%/cura/ReaderWriters/__init__.py @@ -609,6 +648,7 @@ lib/cura/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py *** 7865 LINES SKIPPED ***