Merge branch 'main' into CURA-9365

# Conflicts:
#	.github/workflows/ci.yml
#	.github/workflows/cura-installer.yml
#	.github/workflows/requirements-conan-package.txt
#	resources/definitions/Mark2_for_Ultimaker2.def.json
#	resources/definitions/elegoo_neptune_2.def.json
#	resources/definitions/elegoo_neptune_2D.def.json
This commit is contained in:
jspijker 2022-07-08 12:37:32 +02:00
commit f9d4628b95
9 changed files with 75 additions and 57 deletions

View file

@ -1,2 +1,2 @@
conan
sip==6.5.1
sip==6.5.1

View file

@ -1,5 +1,6 @@
# Copyright (c) 2021 Ultimaker B.V.
# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import json
import threading
from json import JSONDecodeError
@ -135,6 +136,9 @@ class DFFileExportAndUploadManager:
else:
Logger.log("e", "Wrong response type received. Aborting uploading file to the Digital Library")
return
if file_name not in self._file_upload_job_metadata:
Logger.error(f"API response for uploading doesn't match the file name we just uploaded: {file_name} was never uploaded.")
return
with self._message_lock:
self.progress_message.show()
self._file_upload_job_metadata[file_name]["file_upload_response"] = file_upload_response
@ -335,10 +339,11 @@ class DFFileExportAndUploadManager:
self._handleNextUploadJob()
def _handleNextUploadJob(self):
match self._upload_jobs:
case [job, *jobs]:
job.start()
self._upload_jobs = jobs
try:
job = self._upload_jobs.pop(0)
job.start()
except IndexError:
pass # Empty list, do nothing.
def initializeFileUploadJobMetadata(self) -> Dict[str, Any]:
metadata = {}

View file

@ -22,7 +22,6 @@ class Marketplace(Extension, QObject):
QObject.__init__(self, parent)
Extension.__init__(self)
self._window: Optional["QObject"] = None # If the window has been loaded yet, it'll be cached in here.
self._plugin_registry: Optional[PluginRegistry] = None
self._package_manager = CuraApplication.getInstance().getPackageManager()
self._material_package_list: Optional[RemotePackageList] = None
@ -81,9 +80,9 @@ class Marketplace(Extension, QObject):
If the window hadn't been loaded yet into Qt, it will be created lazily.
"""
if self._window is None:
self._plugin_registry = PluginRegistry.getInstance()
self._plugin_registry.pluginsEnabledOrDisabledChanged.connect(self.checkIfRestartNeeded)
plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId())
plugin_registry = PluginRegistry.getInstance()
plugin_registry.pluginsEnabledOrDisabledChanged.connect(self.checkIfRestartNeeded)
plugin_path = plugin_registry.getPluginPath(self.getPluginId())
if plugin_path is None:
plugin_path = os.path.dirname(__file__)
path = os.path.join(plugin_path, "resources", "qml", "Marketplace.qml")
@ -108,7 +107,7 @@ class Marketplace(Extension, QObject):
return
if self._package_manager.hasPackagesToRemoveOrInstall or \
cast(PluginRegistry, self._plugin_registry).getCurrentSessionActivationChangedPlugins():
PluginRegistry.getInstance().getCurrentSessionActivationChangedPlugins():
self._restart_needed = True
else:
self._restart_needed = False
@ -116,7 +115,7 @@ class Marketplace(Extension, QObject):
showRestartNotificationChanged = pyqtSignal()
@pyqtProperty(bool, notify=showRestartNotificationChanged)
@pyqtProperty(bool, notify = showRestartNotificationChanged)
def showRestartNotification(self) -> bool:
return self._restart_needed

View file

@ -158,8 +158,10 @@
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" },
"jerk_enabled": { "value": true },
"jerk_print": {"value": 12 },
"jerk_enabled":
{
"default_value": true
},
"jerk_travel":
{
"value": "jerk_print if magic_spiralize else 20"

View file

@ -38,7 +38,6 @@
"raft_airgap":{"default_value": 0.25},
"brim_width":{"default_value": 5},
"skin_angles":{"default_value": [45, 135]},
"infill_pattern":{"value": "gyroid"},
"machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"},
"machine_start_gcode": {"default_value": ";simage\n;gimage\nG28 ;home\nG92 E0 ;Reset Extruder\nG1 Z4.0 F3000 ;Move Z Axis up\nG92 E0 ;Reset Extruder\nG1 X1.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X1.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X1.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X1.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up"},
"machine_end_gcode": {"default_value": "G91 ;Relative positionning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F1600 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z"}

View file

@ -47,7 +47,6 @@
"raft_airgap":{"default_value": 0.25},
"brim_width":{"default_value": 5},
"skin_angles":{"default_value": [45, 135]},
"infill_pattern":{"value": "gyroid"},
"machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"},
"machine_start_gcode": {"default_value": ";simage\n;gimage\nG28 ;home\n;G29 ;Run ABL\n;M420 S1 ;Enable ABL mesh\nG92 E0 ;Reset Extruder\nG1 Z4.0 F3000 ;Move Z Axis up\nG92 E0 ;Reset Extruder\nG1 X2.0 Y20 Z0.28 F5000.0 ;Move to start position\nG1 E90 F1200 ;Load filament\nG92 E0 ;Reset Extruder\nG1 X2.0 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X2.3 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X2.3 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up"},
"machine_end_gcode": {"default_value": "G91 ;Relative positionning\nG1 E-2 F2700 ;Retract a bit\nG1 E-80 Z0.2 F1600 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z"}

View file

@ -3457,7 +3457,7 @@ msgid ""
"- Back-up and sync your material profiles and plug-ins\n"
"- Share ideas and get help from 48,000+ users in the Ultimaker community"
msgstr ""
"- Voeg materiaalprofielen en plug-ins toe uit de Marktplaats\n"
"- Voeg materiaalprofielen en plug-ins toe uit de Marketplace\n"
"- Maak back-ups van uw materiaalprofielen en plug-ins en synchroniseer deze\n"
"- Deel ideeën met 48.000+ gebruikers in de Ultimaker-community of vraag hen om ondersteuning"
@ -4288,7 +4288,7 @@ msgstr "Weet u zeker dat u een nieuw project wilt starten? Hiermee wordt het pla
#: /home/trin/Gedeeld/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:135
msgctxt "@action:button"
msgid "Marketplace"
msgstr "Marktplaats"
msgstr "Marketplace"
#: /home/trin/Gedeeld/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18
msgctxt "@header"
@ -4303,7 +4303,7 @@ msgstr "Deze configuratie is niet beschikbaar omdat %1 niet wordt herkend. Ga na
#: /home/trin/Gedeeld/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:138
msgctxt "@label"
msgid "Marketplace"
msgstr "Marktplaats"
msgstr "Marketplace"
#: /home/trin/Gedeeld/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:52
msgctxt "@label"
@ -5995,7 +5995,7 @@ msgstr "Release notes"
#: /home/trin/Gedeeld/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:123
msgctxt "@text"
msgid "Add material settings and plugins from the Marketplace"
msgstr "Voeg materiaalinstellingen en plugins uit de Marktplaats toe"
msgstr "Voeg materiaalinstellingen en plugins uit de Marketplace toe"
#: /home/trin/Gedeeld/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:149
msgctxt "@text"
@ -6297,7 +6297,7 @@ msgstr "Beheert extensies voor de toepassing en staat browsingextensies toe van
#: Marketplace/plugin.json
msgctxt "name"
msgid "Marketplace"
msgstr "Marktplaats"
msgstr "Marketplace"
#: MonitorStage/plugin.json
msgctxt "description"
@ -6777,7 +6777,7 @@ msgstr "Röntgenweergave"
#~ msgctxt "@title"
#~ msgid "Marketplace"
#~ msgstr "Marktplaats"
#~ msgstr "Marketplace"
#~ msgctxt "@info"
#~ msgid "You will need to restart Cura before changes in packages have effect."
@ -7055,7 +7055,7 @@ msgstr "Röntgenweergave"
#~ msgctxt "@action:menu"
#~ msgid "&Marketplace"
#~ msgstr "&Marktplaats"
#~ msgstr "&Marketplace"
#~ msgctxt "description"
#~ msgid "Find, manage and install new Cura packages."

View file

@ -135,49 +135,49 @@ UM.Dialog
{
//Do NOT add dependencies of our dependencies here, nor CI-dependencies!
//Ultimaker's own projects and forks.
projectsModel.append({ name: "Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" });
projectsModel.append({ name: "Uranium", description: catalog.i18nc("@label", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" });
projectsModel.append({ name: "CuraEngine", description: catalog.i18nc("@label", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" });
projectsModel.append({ name: "libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" });
projectsModel.append({ name: "pynest2d", description: catalog.i18nc("@label", "Python bindings for libnest2d"), license: "LGPL", url: "https://github.com/Ultimaker/pynest2d" });
projectsModel.append({ name: "libnest2d", description: catalog.i18nc("@label", "Polygon packing library, developed by Prusa Research"), license: "LGPL", url: "https://github.com/tamasmeszaros/libnest2d" });
projectsModel.append({ name: "libSavitar", description: catalog.i18nc("@label", "Support library for handling 3MF files"), license: "LGPLv3", url: "https://github.com/ultimaker/libsavitar" });
projectsModel.append({ name: "libCharon", description: catalog.i18nc("@label", "Support library for file metadata and streaming"), license: "LGPLv3", url: "https://github.com/ultimaker/libcharon" });
projectsModel.append({ name: "Cura", description: catalog.i18nc("@label Description for application component", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" });
projectsModel.append({ name: "Uranium", description: catalog.i18nc("@label Description for application component", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" });
projectsModel.append({ name: "CuraEngine", description: catalog.i18nc("@label Description for application component", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" });
projectsModel.append({ name: "libArcus", description: catalog.i18nc("@label Description for application component", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" });
projectsModel.append({ name: "pynest2d", description: catalog.i18nc("@label Description for application component", "Python bindings for libnest2d"), license: "LGPL", url: "https://github.com/Ultimaker/pynest2d" });
projectsModel.append({ name: "libnest2d", description: catalog.i18nc("@label Description for application component", "Polygon packing library, developed by Prusa Research"), license: "LGPL", url: "https://github.com/tamasmeszaros/libnest2d" });
projectsModel.append({ name: "libSavitar", description: catalog.i18nc("@label Description for application component", "Support library for handling 3MF files"), license: "LGPLv3", url: "https://github.com/ultimaker/libsavitar" });
projectsModel.append({ name: "libCharon", description: catalog.i18nc("@label Description for application component", "Support library for file metadata and streaming"), license: "LGPLv3", url: "https://github.com/ultimaker/libcharon" });
//Direct dependencies of the front-end.
projectsModel.append({ name: "Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" });
projectsModel.append({ name: "Qt6", description: catalog.i18nc("@label", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" });
projectsModel.append({ name: "PyQt", description: catalog.i18nc("@label", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" });
projectsModel.append({ name: "SIP", description: catalog.i18nc("@label", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" });
projectsModel.append({ name: "Protobuf", description: catalog.i18nc("@label", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" });
projectsModel.append({ name: "Python", description: catalog.i18nc("@label Description for application dependency", "Programming language"), license: "Python", url: "http://python.org/" });
projectsModel.append({ name: "Qt6", description: catalog.i18nc("@label Description for application dependency", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" });
projectsModel.append({ name: "PyQt", description: catalog.i18nc("@label Description for application dependency", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" });
projectsModel.append({ name: "SIP", description: catalog.i18nc("@label Description for application dependency", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" });
projectsModel.append({ name: "Protobuf", description: catalog.i18nc("@label Description for application dependency", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" });
projectsModel.append({ name: "Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" });
//CuraEngine's dependencies.
projectsModel.append({ name: "Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" });
projectsModel.append({ name: "RapidJSON", description: catalog.i18nc("@label", "JSON parser"), license: "MIT", url: "https://rapidjson.org/" });
projectsModel.append({ name: "STB", description: catalog.i18nc("@label", "Utility functions, including an image loader"), license: "Public Domain", url: "https://github.com/nothings/stb" });
projectsModel.append({ name: "Boost", description: catalog.i18nc("@label", "Utility library, including Voronoi generation"), license: "Boost", url: "https://www.boost.org/" });
projectsModel.append({ name: "Clipper", description: catalog.i18nc("@label Description for application dependency", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" });
projectsModel.append({ name: "RapidJSON", description: catalog.i18nc("@label Description for application dependency", "JSON parser"), license: "MIT", url: "https://rapidjson.org/" });
projectsModel.append({ name: "STB", description: catalog.i18nc("@label Description for application dependency", "Utility functions, including an image loader"), license: "Public Domain", url: "https://github.com/nothings/stb" });
projectsModel.append({ name: "Boost", description: catalog.i18nc("@label Description for application dependency", "Utility library, including Voronoi generation"), license: "Boost", url: "https://www.boost.org/" });
//Python modules.
projectsModel.append({ name: "Certifi", description: catalog.i18nc("@label", "Root Certificates for validating SSL trustworthiness"), license: "MPL", url: "https://github.com/certifi/python-certifi" });
projectsModel.append({ name: "Cryptography", description: catalog.i18nc("@label", "Root Certificates for validating SSL trustworthiness"), license: "APACHE and BSD", url: "https://cryptography.io/" });
projectsModel.append({ name: "Future", description: catalog.i18nc("@label", "Compatibility between Python 2 and 3"), license: "MIT", url: "https://python-future.org/" });
projectsModel.append({ name: "keyring", description: catalog.i18nc("@label", "Support library for system keyring access"), license: "MIT", url: "https://github.com/jaraco/keyring" });
projectsModel.append({ name: "NumPy", description: catalog.i18nc("@label", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" });
projectsModel.append({ name: "NumPy-STL", description: catalog.i18nc("@label", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" });
projectsModel.append({ name: "PyClipper", description: catalog.i18nc("@label", "Python bindings for Clipper"), license: "MIT", url: "https://github.com/fonttools/pyclipper" });
projectsModel.append({ name: "PySerial", description: catalog.i18nc("@label", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" });
projectsModel.append({ name: "SciPy", description: catalog.i18nc("@label", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" });
projectsModel.append({ name: "Sentry", description: catalog.i18nc("@Label", "Python Error tracking library"), license: "BSD 2-Clause 'Simplified'", url: "https://sentry.io/for/python/" });
projectsModel.append({ name: "Trimesh", description: catalog.i18nc("@label", "Support library for handling triangular meshes"), license: "MIT", url: "https://trimsh.org" });
projectsModel.append({ name: "python-zeroconf", description: catalog.i18nc("@label", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" });
projectsModel.append({ name: "Certifi", description: catalog.i18nc("@label Description for application dependency", "Root Certificates for validating SSL trustworthiness"), license: "MPL", url: "https://github.com/certifi/python-certifi" });
projectsModel.append({ name: "Cryptography", description: catalog.i18nc("@label Description for application dependency", "Root Certificates for validating SSL trustworthiness"), license: "APACHE and BSD", url: "https://cryptography.io/" });
projectsModel.append({ name: "Future", description: catalog.i18nc("@label Description for application dependency", "Compatibility between Python 2 and 3"), license: "MIT", url: "https://python-future.org/" });
projectsModel.append({ name: "keyring", description: catalog.i18nc("@label Description for application dependency", "Support library for system keyring access"), license: "MIT", url: "https://github.com/jaraco/keyring" });
projectsModel.append({ name: "NumPy", description: catalog.i18nc("@label Description for application dependency", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" });
projectsModel.append({ name: "NumPy-STL", description: catalog.i18nc("@label Description for application dependency", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" });
projectsModel.append({ name: "PyClipper", description: catalog.i18nc("@label Description for application dependency", "Python bindings for Clipper"), license: "MIT", url: "https://github.com/fonttools/pyclipper" });
projectsModel.append({ name: "PySerial", description: catalog.i18nc("@label Description for application dependency", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" });
projectsModel.append({ name: "SciPy", description: catalog.i18nc("@label Description for application dependency", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" });
projectsModel.append({ name: "Sentry", description: catalog.i18nc("@Label Description for application dependency", "Python Error tracking library"), license: "BSD 2-Clause 'Simplified'", url: "https://sentry.io/for/python/" });
projectsModel.append({ name: "Trimesh", description: catalog.i18nc("@label Description for application dependency", "Support library for handling triangular meshes"), license: "MIT", url: "https://trimsh.org" });
projectsModel.append({ name: "python-zeroconf", description: catalog.i18nc("@label Description for application dependency", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" });
//Building/packaging.
projectsModel.append({ name: "CMake", description: catalog.i18nc("@label", "Universal build system configuration"), license: "BSD 3-Clause", url: "https://cmake.org/" });
projectsModel.append({ name: "Conan", description: catalog.i18nc("@label", "Dependency and package manager"), license: "MIT", url: "https://conan.io/" });
projectsModel.append({ name: "Pyinstaller", description: catalog.i18nc("@label", "Packaging Python-applications"), license: "GPLv2", url: "https://pyinstaller.org/" });
projectsModel.append({ name: "AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" });
projectsModel.append({ name: "NSIS", description: catalog.i18nc("@label", "Generating Windows installers"), license: "Zlib", url: "https://nsis.sourceforge.io/" });
projectsModel.append({ name: "CMake", description: catalog.i18nc("@label Description for development tool", "Universal build system configuration"), license: "BSD 3-Clause", url: "https://cmake.org/" });
projectsModel.append({ name: "Conan", description: catalog.i18nc("@label Description for development tool", "Dependency and package manager"), license: "MIT", url: "https://conan.io/" });
projectsModel.append({ name: "Pyinstaller", description: catalog.i18nc("@label Description for development tool", "Packaging Python-applications"), license: "GPLv2", url: "https://pyinstaller.org/" });
projectsModel.append({ name: "AppImageKit", description: catalog.i18nc("@label Description for development tool", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" });
projectsModel.append({ name: "NSIS", description: catalog.i18nc("@label Description for development tool", "Generating Windows installers"), license: "Zlib", url: "https://nsis.sourceforge.io/" });
}
}

View file

@ -0,0 +1,14 @@
#Renames tags that were for Legacy Cura to a newer versioning system.
#Those Cura versions used tags based on the year of release.
#We'd like to rename them to be "Cura 1" and have the original version number as sub-version-numbers.
#So Cura 14.04 becomes Cura 1.14.04.
for i in $(git tag -l)
do
if [[ $i =~ ^1[2-5]\.[0-9][0-9] ]]; then #E.g. 12.04 or 15.06. Note that there is no end-match so anything that starts with this matches.
echo "Renaming tag $i to 1.$i";
git tag 1.$i $i; #Create new tag (1.x instead of x).
git tag -d $i; #Delete old tag.
git push origin 1.$i :$i #Rename the tag remotely too.
fi
done