diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 629f7ba6d8..56fa8d7b3b 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -721,7 +721,12 @@ class BuildVolume(SceneNode): # # \return A sequence of setting values, one for each extruder. def _getSettingFromAllExtruders(self, setting_key, property = "value"): - return ExtruderManager.getInstance().getAllExtruderSettings(setting_key, property) + all_values = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, property) + all_types = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, "type") + for i in range(len(all_values)): + if not all_values[i] and (all_types[i] == "int" or all_types[i] == "float"): + all_values[i] = 0 + return all_values ## Private convenience function to get a setting from the support infill # extruder. @@ -745,16 +750,21 @@ class BuildVolume(SceneNode): multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 if not multi_extrusion: - return self._global_container_stack.getProperty(setting_key, property) + stack = self._global_container_stack + else: + extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value") - extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value") + if extruder_index == "-1": # If extruder index is -1 use global instead + stack = self._global_container_stack + else: + extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)] + stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] - if extruder_index == "-1": # If extruder index is -1 use global instead - return self._global_container_stack.getProperty(setting_key, property) - - extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)] - stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] - return stack.getProperty(setting_key, property) + value = stack.getProperty(setting_key, property) + setting_type = stack.getProperty(setting_key, "type") + if not value and (setting_type == "int" or setting_type == "float"): + return 0 + return value ## Convenience function to calculate the disallowed radius around the edge. # diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index cb8e667872..f1fba4c5de 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -200,7 +200,7 @@ UM.Dialog } Label { - text: catalog.i18nc("@action:label", "%1 override(s)").arg(manager.numUserSettings) + text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings) width: parent.width / 3 } visible: manager.numUserSettings != 0 @@ -216,7 +216,7 @@ UM.Dialog } Label { - text: catalog.i18nc("@action:label", "%1, %2 override(s)" ).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) + text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) width: parent.width / 3 } visible: manager.numSettingsOverridenByQualityChanges != 0 diff --git a/resources/qml/Settings/SettingTextField.qml b/resources/qml/Settings/SettingTextField.qml index d89f540aa3..427b482cea 100644 --- a/resources/qml/Settings/SettingTextField.qml +++ b/resources/qml/Settings/SettingTextField.qml @@ -100,7 +100,7 @@ SettingItem maximumLength: 10; - validator: RegExpValidator { regExp: (definition.type == "int") ? /^-?[0-9]{0,10}/ : /^-?[0-9.,]{0,10}/ } // definition.type property from parent loader used to disallow fractional number entry + validator: RegExpValidator { regExp: (definition.type == "int") ? /^-?[0-9]{0,10}$/ : /^-?[0-9]?[.,]?[0-9]{0,10}$/ } // definition.type property from parent loader used to disallow fractional number entry Binding { @@ -113,7 +113,8 @@ SettingItem // 2: quality // 3: material -> user changed material in materialspage // 4: variant - // 5: machine + // 5: machine_changes + // 6: machine if ((base.resolve != "None" && base.resolve) && (stackLevel != 0) && (stackLevel != 1)) { // We have a resolve function. Indicates that the setting is not settable per extruder and that // we have to choose between the resolved value (default) and the global value diff --git a/resources/qml/WorkspaceSummaryDialog.qml b/resources/qml/WorkspaceSummaryDialog.qml index 2eb919414e..2072ddb1e7 100644 --- a/resources/qml/WorkspaceSummaryDialog.qml +++ b/resources/qml/WorkspaceSummaryDialog.qml @@ -182,7 +182,7 @@ UM.Dialog } Label { - text: catalog.i18nc("@action:label", "%1 override(s)").arg(Cura.MachineManager.numUserSettings) + text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", Cura.MachineManager.numUserSettings).arg(Cura.MachineManager.numUserSettings) width: parent.width / 3 } visible: Cura.MachineManager.numUserSettings @@ -203,37 +203,6 @@ UM.Dialog } } - /*Item // Spacer - { - height: spacerHeight - width: height - } - - Label - { - text: catalog.i18nc("@action:label", "Material settings") - font.bold: true - } - - Repeater - { - model: Cura.MachineManager.activeMaterialNames - delegate: Row - { - width: parent.width - height: childrenRect.height - Label - { - text: catalog.i18nc("@action:label", "Name") - width: parent.width / 3 - } - Label - { - text: modelData - width: parent.width / 3 - } - } - }*/ Item // Spacer {