It was using a bit of programmer jargon there that was very hard to understand. Initially I was coming in here to remove the space at the end of the translated string but I'm now changing all of it to make it more clear to the user as well.
Done as a 5 minute fix.
This happens when the printer is changed, such as when changing the Machine Width in the machine settings dialogue. It updates these menus then and if not all extruders are defined it'll give the following errors:
2020-03-20 16:56:57,839 - WARNING - [MainThread] UM.Qt.QtApplication.__onQmlWarning [406]: file:///home/trin/Gedeeld/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:51: TypeError: Cannot read property 'isEnabled' of undefined
2020-03-20 16:56:57,840 - WARNING - [MainThread] UM.Qt.QtApplication.__onQmlWarning [406]: file:///home/trin/Gedeeld/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:44: TypeError: Cannot read property 'isEnabled' of undefined
2020-03-20 16:56:57,841 - WARNING - [MainThread] UM.Qt.QtApplication.__onQmlWarning [406]: file:///home/trin/Gedeeld/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:26: TypeError: Cannot read property 'isEnabled' of undefined
2020-03-20 16:56:57,841 - WARNING - [MainThread] UM.Qt.QtApplication.__onQmlWarning [406]: file:///home/trin/Gedeeld/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:28: TypeError: Cannot read property 'material' of undefined
Done during Turbo Testing and Tooling.
This then updates in a fraction of a millisecond later before things even appear on the screen, so it's not so bad to not have a tooltip or to have it show 0 then.
Done during Turbo Testing and Tooling.
This prevents a QML warning when the ListModel is created before the property provider is. This QML warning looked like this:
2020-03-20 15:04:30,012 - WARNING - [MainThread] UM.Qt.QtApplication.__onQmlWarning [406]: file:///home/trin/Gedeeld/Projects/Cura/cura/../resources/qml/MachineSettings/ComboBoxWithOptions.qml:74: TypeError: Cannot call method 'match' of undefined
Done during Turbo Testing and Tooling.
This widget can't set its width to the width of its children, since its children anchor to its right-hand side which depends on the width.
This fixes the following warning in the log:
2020-03-20 14:25:20,351 - WARNING - [MainThread] UM.Qt.QtApplication.__onQmlWarning [406]: file:///home/trin/Gedeeld/Projects/Cura/plugins/PrepareStage/PrepareMain.qml:16:5: QML ActionPanelWidget: Binding loop detected for property width
Done during Turbo Testing and Tooling.
Fixes the following QML warning in the logs:
2020-03-20 14:02:13,482 - WARNING - [MainThread] UM.Qt.QtApplication.__onQmlWarning [406]: file:///home/trin/Gedeeld/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:125:13: Unable to assign [undefined] to int
Instead it now assigns the first extruder before a printer has been created. The first extruder also doesn't exist yet at this point, but this doesn't really matter because there is no interface to show yet at this point.
Done during Turbo Testing and Tooling.
To do this, I'm giving more power to the NumericTextFieldWithUnit QML element, to allow an arbitrary minimum and maximum. Enforcing this minimum and maximum is fairly simple with a JavaScript hook. This hook is necessary because the DoubleValidator allows intermediary values which defeats the purpose, essentially allowing any number as long as it has the correct number of digits.
Printers larger than 2km would start to give overflow errors in its X and Y coordinates. Z is okay up to about 9 billion kilometres in theory, since we don't need to do any squaring math on those coordinates afaik. In practice I'm doing this because at very high values the Arranger also gives errors because Numpy can't handle those extremely big arrays (since the arranger creates a 2mm grid).
Fixes Sentry issue CURA-CB.
These translations weren't updated this round, so we'll disable them from the interface. The files are still available if someone else wants to translate them.
Contributes to issue CURA-7201.
There are multiple issues with that line:
* Other languages might have the application name before their version of 'About'. The previous line can't account for those languages because the application name is always appended at the end.
* The old one was trying to translate CuraApplication.applicationDisplayName which can't be statically determined.
* The old one had no explanation towards the translator.
Now that we subscribe for all situations where a package is installed,
it makes sense to watch package installs and create a 1:1 relation that
way. Prevents code duplication.
CURA-7099