Merge branch 'main' into CURA-11288

This commit is contained in:
Casper Lamboo 2023-12-07 10:31:23 +01:00 committed by GitHub
commit 31073b93d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 46 additions and 51 deletions

View File

@ -162,20 +162,7 @@ jobs:
- name: Set Environment variables for Cura (bash) - name: Set Environment variables for Cura (bash)
run: | run: |
. ./cura_inst/bin/activate_github_actions_env.sh . ./cura_inst/bin/activate_github_actions_env.sh
. ./cura_inst/bin/activate_github_actions_version_env.sh . ./cura_inst/bin/activate_github_actions_version_env.sh
# FIXME: This is a workaround to ensure that we use and pack a shared library for OpenSSL 1.1.1l. We currently compile
# OpenSSL statically for CPython, but our Python Dependenies (such as PyQt6) require a shared library.
# Because Conan won't allow for building the same library with two different options (easily) we need to install it explicitly
# and do a manual copy to the VirtualEnv, such that Pyinstaller can find it.
- name: Install OpenSSL shared
run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy
- name: Copy OpenSSL shared (Bash)
run: |
cp ./openssl/lib/*.so* ./cura_inst/bin/ || true
cp ./openssl/lib/*.dylib* ./cura_inst/bin/ || true
- name: Create the Cura dist - name: Create the Cura dist
run: pyinstaller ./cura_inst/UltiMaker-Cura.spec run: pyinstaller ./cura_inst/UltiMaker-Cura.spec

View File

@ -177,18 +177,6 @@ jobs:
env: env:
TEMP_KEYCHAIN_PASSWORD: ${{ steps.macos-keychain-developer-cert.outputs.keychain-password }} TEMP_KEYCHAIN_PASSWORD: ${{ steps.macos-keychain-developer-cert.outputs.keychain-password }}
# FIXME: This is a workaround to ensure that we use and pack a shared library for OpenSSL 1.1.1l. We currently compile
# OpenSSL statically for CPython, but our Python Dependenies (such as PyQt6) require a shared library.
# Because Conan won't allow for building the same library with two different options (easily) we need to install it explicitly
# and do a manual copy to the VirtualEnv, such that Pyinstaller can find it.
- name: Install OpenSSL shared
run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy
- name: Copy OpenSSL shared (Bash)
run: |
cp ./openssl/lib/*.so* ./cura_inst/bin/ || true
cp ./openssl/lib/*.dylib* ./cura_inst/bin/ || true
- name: Create the Cura dist - name: Create the Cura dist
run: pyinstaller ./cura_inst/UltiMaker-Cura.spec run: pyinstaller ./cura_inst/UltiMaker-Cura.spec

View File

@ -1,2 +1,2 @@
conan>=1.60.2,<2.0.0 conan>=1.60.2,<2.0.0
sip sip<=6.7.12

View File

@ -140,14 +140,6 @@ jobs:
.\cura_inst\Scripts\activate_github_actions_env.ps1 .\cura_inst\Scripts\activate_github_actions_env.ps1
.\cura_inst\Scripts\activate_github_actions_version_env.ps1 .\cura_inst\Scripts\activate_github_actions_version_env.ps1
# - name: Install OpenSSL shared
# run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy
#
# - name: Copy OpenSSL shared (Powershell)
# run: |
# cp openssl/bin/*.dll ./cura_inst/Scripts/
# cp openssl/lib/*.lib ./cura_inst/Lib/
- name: Create the Cura dist - name: Create the Cura dist
run: pyinstaller ./cura_inst/UltiMaker-Cura.spec run: pyinstaller ./cura_inst/UltiMaker-Cura.spec

View File

@ -72,7 +72,7 @@ class CuraConan(ConanFile):
self._cura_env.define("QML2_IMPORT_PATH", str(self._site_packages.joinpath("PyQt6", "Qt6", "qml"))) self._cura_env.define("QML2_IMPORT_PATH", str(self._site_packages.joinpath("PyQt6", "Qt6", "qml")))
self._cura_env.define("QT_PLUGIN_PATH", str(self._site_packages.joinpath("PyQt6", "Qt6", "plugins"))) self._cura_env.define("QT_PLUGIN_PATH", str(self._site_packages.joinpath("PyQt6", "Qt6", "plugins")))
if not self.in_local_cache: if not self.in_local_cache:
self._cura_env.define( "CURA_DATA_ROOT", str(self._share_dir.joinpath("cura"))) self._cura_env.define("CURA_DATA_ROOT", str(self._share_dir.joinpath("cura")))
if self.settings.os == "Linux": if self.settings.os == "Linux":
self._cura_env.define("QT_QPA_FONTDIR", "/usr/share/fonts") self._cura_env.define("QT_QPA_FONTDIR", "/usr/share/fonts")
@ -310,6 +310,9 @@ class CuraConan(ConanFile):
self.options["boost"].header_only = True self.options["boost"].header_only = True
if self.settings.os == "Linux": if self.settings.os == "Linux":
self.options["curaengine_grpc_definitions"].shared = True self.options["curaengine_grpc_definitions"].shared = True
self.options["openssl"].shared = True
if self.conf.get("user.curaengine:sentry_url", "", check_type=str) != "":
self.options["curaengine"].enable_sentry = True
def validate(self): def validate(self):
version = self.conf.get("user.cura:version", default = self.version, check_type = str) version = self.conf.get("user.cura:version", default = self.version, check_type = str)
@ -318,18 +321,21 @@ class CuraConan(ConanFile):
def requirements(self): def requirements(self):
self.requires("boost/1.82.0") self.requires("boost/1.82.0")
self.requires("fmt/9.0.0") self.requires("spdlog/1.12.0")
self.requires("fmt/10.1.1")
self.requires("curaengine_grpc_definitions/0.1.0") self.requires("curaengine_grpc_definitions/0.1.0")
self.requires("zlib/1.2.13") self.requires("zlib/1.2.13")
self.requires("pyarcus/5.3.0") self.requires("pyarcus/5.3.0")
self.requires("dulcificum/(latest)@ultimaker/testing") self.requires("dulcificum/(latest)@ultimaker/testing")
self.requires("dulcificum/(latest)@ultimaker/stable")
self.requires("curaengine/(latest)@ultimaker/testing") self.requires("curaengine/(latest)@ultimaker/testing")
self.requires("pysavitar/5.3.0") self.requires("pysavitar/5.3.0")
self.requires("pynest2d/5.3.0") self.requires("pynest2d/5.3.0")
self.requires("curaengine_plugin_gradual_flow/0.1.0") self.requires("curaengine_plugin_gradual_flow/0.1.0")
self.requires("uranium/latest@ultimaker/cura_11288") self.requires("uranium/latest@ultimaker/testing")
self.requires("cura_binary_data/(latest)@ultimaker/testing") self.requires("cura_binary_data/(latest)@ultimaker/testing")
self.requires("cpython/3.10.4") self.requires("cpython/3.10.4@ultimaker/stable")
self.requires("openssl/3.2.0")
if self.options.internal: if self.options.internal:
self.requires("cura_private_data/(latest)@internal/testing") self.requires("cura_private_data/(latest)@internal/testing")
self.requires("fdm_materials/(latest)@internal/testing") self.requires("fdm_materials/(latest)@internal/testing")

View File

@ -241,14 +241,8 @@ class GridArrange(Arranger):
center_grid_x = coord_grid_x + (0.5 * self._grid_width) center_grid_x = coord_grid_x + (0.5 * self._grid_width)
center_grid_y = coord_grid_y + (0.5 * self._grid_height) center_grid_y = coord_grid_y + (0.5 * self._grid_height)
bounding_box = node.getBoundingBox() return TranslateOperation(node, Vector(center_grid_x, node.getWorldPosition().y, center_grid_y),
center_node_x = (bounding_box.left + bounding_box.right) * 0.5 set_position=True)
center_node_y = (bounding_box.back + bounding_box.front) * 0.5
delta_x = center_grid_x - center_node_x
delta_y = center_grid_y - center_node_y
return TranslateOperation(node, Vector(delta_x, 0, delta_y))
def _getGridCornerPoints( def _getGridCornerPoints(
self, self,

View File

@ -163,6 +163,7 @@ class CuraEngineBackend(QObject, Backend):
self._is_disabled: bool = False self._is_disabled: bool = False
application.getPreferences().addPreference("general/auto_slice", False) application.getPreferences().addPreference("general/auto_slice", False)
application.getPreferences().addPreference("info/send_engine_crash", True)
self._use_timer: bool = False self._use_timer: bool = False
@ -173,6 +174,8 @@ class CuraEngineBackend(QObject, Backend):
self._change_timer.setSingleShot(True) self._change_timer.setSingleShot(True)
self._change_timer.setInterval(500) self._change_timer.setInterval(500)
self.determineAutoSlicing() self.determineAutoSlicing()
application.getPreferences().preferenceChanged.connect(self._onPreferencesChanged) application.getPreferences().preferenceChanged.connect(self._onPreferencesChanged)
self._slicing_error_message = Message( self._slicing_error_message = Message(
@ -193,6 +196,9 @@ class CuraEngineBackend(QObject, Backend):
application.initializationFinished.connect(self.initialize) application.initializationFinished.connect(self.initialize)
# Ensure that the initial value for send_engine_crash is handled correctly.
application.callLater(self._onPreferencesChanged, "info/send_engine_crash")
def startPlugins(self) -> None: def startPlugins(self) -> None:
""" """
Ensure that all backend plugins are started Ensure that all backend plugins are started
@ -1088,11 +1094,14 @@ class CuraEngineBackend(QObject, Backend):
self._change_timer.timeout.disconnect(self.slice) self._change_timer.timeout.disconnect(self.slice)
def _onPreferencesChanged(self, preference: str) -> None: def _onPreferencesChanged(self, preference: str) -> None:
if preference != "general/auto_slice": if preference != "general/auto_slice" and preference != "info/send_engine_crash":
return return
auto_slice = self.determineAutoSlicing() if preference == "general/auto_slice":
if auto_slice: auto_slice = self.determineAutoSlicing()
self._change_timer.start() if auto_slice:
self._change_timer.start()
elif preference == "info/send_engine_crash":
os.environ["use_sentry"] = "1" if CuraApplication.getInstance().getPreferences().getValue("info/send_engine_crash") else "0"
def tickle(self) -> None: def tickle(self) -> None:
"""Tickle the backend so in case of auto slicing, it starts the timer.""" """Tickle the backend so in case of auto slicing, it starts the timer."""

View File

@ -120,6 +120,10 @@ UM.PreferencesPage
UM.Preferences.resetPreference("info/send_slice_info") UM.Preferences.resetPreference("info/send_slice_info")
sendDataCheckbox.checked = boolCheck(UM.Preferences.getValue("info/send_slice_info")) sendDataCheckbox.checked = boolCheck(UM.Preferences.getValue("info/send_slice_info"))
UM.Preferences.resetPreference("info/send_engine_crash")
sendEngineCrashCheckbox.checked = boolCheck(UM.Preferences.getValue("info/send_engine_crash"))
UM.Preferences.resetPreference("info/automatic_update_check") UM.Preferences.resetPreference("info/automatic_update_check")
checkUpdatesCheckbox.checked = boolCheck(UM.Preferences.getValue("info/automatic_update_check")) checkUpdatesCheckbox.checked = boolCheck(UM.Preferences.getValue("info/automatic_update_check"))
@ -855,6 +859,21 @@ UM.PreferencesPage
font: UM.Theme.getFont("medium_bold") font: UM.Theme.getFont("medium_bold")
text: catalog.i18nc("@label", "Privacy") text: catalog.i18nc("@label", "Privacy")
} }
UM.TooltipArea
{
width: childrenRect.width
height: visible ? childrenRect.height : 0
text: catalog.i18nc("@info:tooltip", "Should slicing crashes be automatically reported to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored.")
UM.CheckBox
{
id: sendEngineCrashCheckbox
text: catalog.i18nc("@option:check","Send (anonymous) engine crash reports")
checked: boolCheck(UM.Preferences.getValue("info/send_engine_crash"))
onCheckedChanged: UM.Preferences.setValue("info/send_engine_crash", checked)
}
}
UM.TooltipArea UM.TooltipArea
{ {
width: childrenRect.width width: childrenRect.width