diff --git a/.github/workflows/conan-recipe-version.yml b/.github/workflows/conan-recipe-version.yml index a1f250d40e..3ee67835f0 100644 --- a/.github/workflows/conan-recipe-version.yml +++ b/.github/workflows/conan-recipe-version.yml @@ -165,7 +165,8 @@ jobs: actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{bump_up_patch}-alpha+{buildmetadata}{channel_metadata}" else: bump_up_minor = int(latest_branch_version.minor) + 1 - actual_version = f"{latest_branch_version.major}.{bump_up_minor}.{latest_branch_version.patch}-alpha+{buildmetadata}{channel_metadata}" + reset_patch = 0 + actual_version = f"{latest_branch_version.major}.{bump_up_minor}.{reset_patch}-alpha+{buildmetadata}{channel_metadata}" else: actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{latest_branch_version.prerelease.lower()}+{buildmetadata}{channel_metadata}" else: diff --git a/cura/Machines/Models/CompatibleMachineModel.py b/cura/Machines/Models/CompatibleMachineModel.py index 029567cdec..639bba88a0 100644 --- a/cura/Machines/Models/CompatibleMachineModel.py +++ b/cura/Machines/Models/CompatibleMachineModel.py @@ -31,6 +31,10 @@ class CompatibleMachineModel(ListModel): machine_manager.globalContainerChanged.connect(self._update) machine_manager.outputDevicesChanged.connect(self._update) + @pyqtSlot() + def forceUpdate(self): + self._update() + def _update(self) -> None: self.clear() diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index b15eaf2ae1..06ec247ae4 100644 --- a/cura/Scene/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -390,7 +390,7 @@ class ConvexHullDecorator(SceneNodeDecorator): if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time": # Find the root node that's placed in the scene; the root of the mesh group. ancestor = self.getNode() - while ancestor.getParent() != self._root: + while ancestor.getParent() != self._root and ancestor.getParent() is not None: ancestor = ancestor.getParent() center = ancestor.getBoundingBox().center else: diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 62e881628a..cc49213a6c 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2986,6 +2986,49 @@ "maximum_value_warning": "150", "settable_per_mesh": true }, + "wall_x_material_flow_layer_0": + { + "label": "Initial Layer Inner Wall Flow", + "description": "Flow compensation on wall lines for all wall lines except the outermost one, but only for the first layer", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow_layer_0", + "minimum_value": "0.0001", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "limit_to_extruder": "wall_x_extruder_nr", + "settable_per_mesh": true + }, + "wall_0_material_flow_layer_0": + { + "label": "Initial Layer Outer Wall Flow", + "description": "Flow compensation on the outermost wall line of the first layer.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow_layer_0", + "minimum_value": "0.0001", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "limit_to_extruder": "wall_0_extruder_nr", + "settable_per_mesh": true + }, + "skin_material_flow_layer_0": + { + "label": "Initial Layer Bottom Flow", + "description": "Flow compensation on bottom lines of the first layer", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow_layer_0", + "minimum_value": "0.0001", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "bottom_layers > 0", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, "material_standby_temperature": { "label": "Standby Temperature", @@ -4571,42 +4614,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "support_conical_enabled": { - "label": "Enable Conical Support", - "description": "Make support areas smaller at the bottom than at the overhang.", - "type": "bool", - "default_value": false, - "enabled": "support_enable and support_structure != 'tree'", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": true - }, - "support_conical_angle": { - "label": "Conical Support Angle", - "description": "The angle of the tilt of conical support. With 0 degrees being vertical, and 90 degrees being horizontal. Smaller angles cause the support to be more sturdy, but consist of more material. Negative angles cause the base of the support to be wider than the top.", - "unit": "°", - "type": "float", - "minimum_value": "-90", - "minimum_value_warning": "-45", - "maximum_value_warning": "45", - "maximum_value": "90", - "default_value": 30, - "enabled": "support_conical_enabled and support_enable and support_structure != 'tree'", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": true - }, - "support_conical_min_width": { - "label": "Conical Support Minimum Width", - "description": "Minimum width to which the base of the conical support area is reduced. Small widths can lead to unstable support structures.", - "unit": "mm", - "default_value": 5.0, - "minimum_value": "0", - "minimum_value_warning": "machine_nozzle_size * 3", - "maximum_value_warning": "100.0", - "type": "float", - "enabled": "support_conical_enabled and support_enable and support_structure != 'tree' and support_conical_angle > 0", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": true - }, "support_type": { "label": "Support Placement", @@ -6991,6 +6998,45 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "support_conical_enabled": + { + "label": "Enable Conical Support", + "description": "Make support areas smaller at the bottom than at the overhang.", + "type": "bool", + "default_value": false, + "enabled": "support_enable and support_structure != 'tree'", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": true + }, + "support_conical_angle": + { + "label": "Conical Support Angle", + "description": "The angle of the tilt of conical support. With 0 degrees being vertical, and 90 degrees being horizontal. Smaller angles cause the support to be more sturdy, but consist of more material. Negative angles cause the base of the support to be wider than the top.", + "unit": "°", + "type": "float", + "minimum_value": "-90", + "minimum_value_warning": "-45", + "maximum_value_warning": "45", + "maximum_value": "90", + "default_value": 30, + "enabled": "support_conical_enabled and support_enable and support_structure != 'tree'", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": true + }, + "support_conical_min_width": + { + "label": "Conical Support Minimum Width", + "description": "Minimum width to which the base of the conical support area is reduced. Small widths can lead to unstable support structures.", + "unit": "mm", + "default_value": 5.0, + "minimum_value": "0", + "minimum_value_warning": "machine_nozzle_size * 3", + "maximum_value_warning": "100.0", + "type": "float", + "enabled": "support_conical_enabled and support_enable and support_structure != 'tree' and support_conical_angle > 0", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": true + }, "magic_fuzzy_skin_enabled": { "label": "Fuzzy Skin", diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index aab796e0a8..c63169fc3a 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -293,12 +293,6 @@ "support_z_distance": { "value": "0" }, - "support_conical_enabled": { - "value": true - }, - "support_conical_min_width": { - "value": 10 - }, "top_bottom_pattern": { "value": "'zigzag'" } diff --git a/resources/qml/Dialogs/ChoosePrinterDialog.qml b/resources/qml/Dialogs/ChoosePrinterDialog.qml index b7079fcabd..69d9fc44cc 100644 --- a/resources/qml/Dialogs/ChoosePrinterDialog.qml +++ b/resources/qml/Dialogs/ChoosePrinterDialog.qml @@ -11,7 +11,7 @@ import Cura 1.0 as Cura UM.Dialog { property var manager - + property var compatible_machine_model: Cura.CompatibleMachineModel {} id: base title: catalog.i18nc("@title:window", "Select Printer") @@ -65,7 +65,11 @@ UM.Dialog color: UM.Theme.getColor("text_link") hoverColor: UM.Theme.getColor("text_scene_hover") - onClicked: manager.refresh() + onClicked: + { + manager.refresh() + base.compatible_machine_model.forceUpdate() + } } } @@ -73,7 +77,7 @@ UM.Dialog { id: contents - model: Cura.CompatibleMachineModel {} + model: base.compatible_machine_model delegate: Cura.PrintSelectorCard { diff --git a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml index c24c031e83..f0d09516b9 100644 --- a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml +++ b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml @@ -37,50 +37,6 @@ Item } } - // Printer type selector. - Item - { - id: printerTypeSelectorRow - visible: - { - return Cura.MachineManager.printerOutputDevices.length >= 1 //If connected... - && Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount != null //...and we have configuration information... - && Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount.length > 1; //...and there is more than one type of printer in the configuration list. - } - height: visible ? childrenRect.height : 0 - - anchors - { - left: parent.left - right: parent.right - top: header.bottom - topMargin: visible ? UM.Theme.getSize("default_margin").height : 0 - } - - UM.Label - { - text: catalog.i18nc("@label", "Printer") - width: Math.round(parent.width * 0.3) - UM.Theme.getSize("default_margin").width - height: contentHeight - anchors.verticalCenter: printerTypeSelector.verticalCenter - anchors.left: parent.left - } - - Button - { - id: printerTypeSelector - text: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.definition.name: "" - - height: UM.Theme.getSize("print_setup_big_item").height - width: Math.round(parent.width * 0.7) + UM.Theme.getSize("default_margin").width - anchors.right: parent.right - onClicked: menu.open() - //style: UM.Theme.styles.print_setup_header_button - - Cura.PrinterTypeMenu { id: menu} - } - } - UM.TabRow { id: tabBar diff --git a/resources/qml/PrinterSelector/PrintSelectorCard.qml b/resources/qml/PrinterSelector/PrintSelectorCard.qml index 517a0e164a..943ad8077c 100644 --- a/resources/qml/PrinterSelector/PrintSelectorCard.qml +++ b/resources/qml/PrinterSelector/PrintSelectorCard.qml @@ -15,6 +15,7 @@ Rectangle property var extruders property var manager + width: parent.width height: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height @@ -35,7 +36,7 @@ Rectangle Layout.preferredWidth: parent.width / 3 Layout.fillWidth: true - Layout.alignment: Qt.AlignTop + Layout.alignment: extruders[0].materials.length > 1 ? Qt.AlignTop: Qt.AlignCenter Layout.fillHeight: false source: UM.Theme.getIcon("Printer") @@ -50,7 +51,7 @@ Rectangle Layout.fillWidth: true Layout.preferredWidth: parent.width / 2 Layout.alignment: Qt.AlignTop - spacing: UM.Theme.getSize("default_margin").width + spacing: UM.Theme.getSize("narrow_margin").width Repeater { @@ -88,7 +89,6 @@ Rectangle text: modelData.materials.length == 1 ? `${modelData.materials[0].brand} ${modelData.materials[0].name}` : "" visible: modelData.materials.length == 1 } - ColumnLayout { id: multiMaterialText @@ -98,7 +98,7 @@ Rectangle visible: modelData.materials.length > 1 Repeater { - model: modelData.materials + model: modelData.materials.length > 1 ? modelData.materials: null UM.Label { text: `${modelData.brand} ${modelData.name}` @@ -113,9 +113,9 @@ Rectangle { id: printButton - implicitWidth: UM.Theme.getSize("medium_button").width + implicitWidth: UM.Theme.getSize("large_button").width implicitHeight: implicitWidth - Layout.alignment: Qt.AlignTop + Layout.alignment: extruders[0].materials.length > 1 ? Qt.AlignTop: Qt.AlignCenter padding: 0 background: Rectangle @@ -132,7 +132,7 @@ Rectangle anchors.centerIn: parent source: UM.Theme.getIcon("Printer") color: UM.Theme.getColor("border_accent_1") - width: UM.Theme.getSize("small_button_icon").width + width: UM.Theme.getSize("medium_button_icon").width height: width } }