diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 10556096b0..07216a158b 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -131,9 +131,9 @@ class ExtruderManager(QObject): # Make sure the next stack is a stack that contains only the machine definition if not extruder_train.getNextStack(): - shallowStack = UM.Settings.ContainerStack(machine_id + "_shallow") - shallowStack.addContainer(machine_definition) - extruder_train.setNextStack(shallowStack) + shallow_stack = UM.Settings.ContainerStack(machine_id + "_shallow") + shallow_stack.addContainer(machine_definition) + extruder_train.setNextStack(shallow_stack) changed = True if changed: self.extrudersChanged.emit(machine_id) @@ -248,9 +248,9 @@ class ExtruderManager(QObject): # Make sure the next stack is a stack that contains only the machine definition if not container_stack.getNextStack(): - shallowStack = UM.Settings.ContainerStack(machine_id + "_shallow") - shallowStack.addContainer(machine_definition) - container_stack.setNextStack(shallowStack) + shallow_stack = UM.Settings.ContainerStack(machine_id + "_shallow") + shallow_stack.addContainer(machine_definition) + container_stack.setNextStack(shallow_stack) container_registry.addContainer(container_stack) diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index 04c8aadcc9..e379d978a9 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -17,8 +17,8 @@ "preferred_quality": "*normal*", "machine_extruder_trains": { - "0": "ultimaker_original_dual_left", - "1": "ultimaker_original_dual_right" + "0": "ultimaker_original_dual_1st", + "1": "ultimaker_original_dual_2nd" }, "first_start_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"], "supported_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel", "UpgradeFirmware"] @@ -65,12 +65,22 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nT1 ;Switch to the 2nd extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F200 E-{switch_extruder_retraction_amount}\nT0 ;Switch to the 1st extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + "default_value": "M104 T0 S0 ;1st extruder heater off\nM104 T1 S0 ;2nd extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "machine_extruder_count": { "default_value": 2 }, - "print_sequence": {"enabled": false} + "machine_extruder_count": { + "default_value": 2 + }, + "print_sequence": { + "enabled": false + }, + "prime_tower_position_x": { + "default_value": 185 + }, + "prime_tower_position_y": { + "default_value": 175 + } } } diff --git a/resources/extruders/ultimaker_original_dual_1st.def.json b/resources/extruders/ultimaker_original_dual_1st.def.json new file mode 100644 index 0000000000..058dbf3028 --- /dev/null +++ b/resources/extruders/ultimaker_original_dual_1st.def.json @@ -0,0 +1,26 @@ +{ + "id": "ultimaker_original_dual_1st", + "version": 2, + "name": "1st Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "ultimaker_original_dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/ultimaker_original_dual_2nd.def.json b/resources/extruders/ultimaker_original_dual_2nd.def.json new file mode 100644 index 0000000000..4b600d0281 --- /dev/null +++ b/resources/extruders/ultimaker_original_dual_2nd.def.json @@ -0,0 +1,26 @@ +{ + "id": "ultimaker_original_dual_2nd", + "version": 2, + "name": "2nd Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "ultimaker_original_dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 21.6 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/ultimaker_original_dual_left.def.json b/resources/extruders/ultimaker_original_dual_left.def.json deleted file mode 100644 index 51268dd8b7..0000000000 --- a/resources/extruders/ultimaker_original_dual_left.def.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "id": "ultimaker_original_dual_left", - "version": 2, - "name": "Left Extruder", - "inherits": "fdmextruder", - "metadata": { - "machine": "ultimaker_original_dual", - "position": "0" - }, - - "overrides": { - "extruder_nr": { - "default_value": 0, - "maximum_value": "1" - }, - "machine_nozzle_offset_x": { "default_value": 0.0 }, - "machine_nozzle_offset_y": { "default_value": 0.0 } - } -} diff --git a/resources/extruders/ultimaker_original_dual_right.def.json b/resources/extruders/ultimaker_original_dual_right.def.json deleted file mode 100644 index 9a0cd089fe..0000000000 --- a/resources/extruders/ultimaker_original_dual_right.def.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "id": "ultimaker_original_dual_right", - "version": 2, - "name": "Right Extruder", - "inherits": "fdmextruder", - "metadata": { - "machine": "ultimaker_original_dual", - "position": "1" - }, - - "overrides": { - "extruder_nr": { - "default_value": 1, - "maximum_value": "1" - }, - "machine_nozzle_offset_x": { "default_value": 0.0 }, - "machine_nozzle_offset_y": { "default_value": 21.6 } - } -} diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 77cf7f595e..79168ed6df 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -235,12 +235,12 @@ Rectangle text: { var result = ""; - var jobState = Cura.MachineManager.printerOutputDevices[0].jobState; if (!printerConnected) { return ""; } - if (lastJobState !== jobState) { + var jobState = Cura.MachineManager.printerOutputDevices[0].jobState; + if (lastJobState != jobState) { // the userClicked message must disappear when an "automated" jobState comes by userClicked = false; lastJobState = jobState; diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index 9ea6e181bb..9b63fccf94 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -14,9 +14,7 @@ Rectangle { property real progress: UM.Backend.progress; property int backendState: UM.Backend.state; - property bool activity: Printer.getPlatformActivity; - //Behavior on progress { NumberAnimation { duration: 250; } } property int totalHeight: childrenRect.height + UM.Theme.getSize("default_margin").height property string fileBaseName property string statusText: @@ -26,21 +24,18 @@ Rectangle { return catalog.i18nc("@label:PrintjobStatus", "Please load a 3d model"); } - if(base.backendState == 1) + switch(base.backendState) { - return catalog.i18nc("@label:PrintjobStatus", "Preparing to slice..."); - } - else if(base.backendState == 2) - { - return catalog.i18nc("@label:PrintjobStatus", "Slicing..."); - } - else if(base.backendState == 3) - { - return catalog.i18nc("@label:PrintjobStatus %1 is target operation","Ready to %1").arg(UM.OutputDeviceManager.activeDeviceShortDescription); - } - else if(base.backendState == 4) - { - return catalog.i18nc("@label:PrintjobStatus", "Unable to Slice") + case 1: + return catalog.i18nc("@label:PrintjobStatus", "Preparing to slice..."); + case 2: + return catalog.i18nc("@label:PrintjobStatus", "Slicing..."); + case 3: + return catalog.i18nc("@label:PrintjobStatus %1 is target operation","Ready to %1").arg(UM.OutputDeviceManager.activeDeviceShortDescription); + case 4: + return catalog.i18nc("@label:PrintjobStatus", "Unable to Slice"); + default: + return ""; } } @@ -126,12 +121,29 @@ Rectangle { background: Rectangle { border.width: UM.Theme.getSize("default_lining").width - border.color: !control.enabled ? UM.Theme.getColor("action_button_disabled_border") : - control.pressed ? UM.Theme.getColor("action_button_active_border") : - control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") - color: !control.enabled ? UM.Theme.getColor("action_button_disabled") : - control.pressed ? UM.Theme.getColor("action_button_active") : - control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") + border.color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled_border"); + else if(control.pressed) + return UM.Theme.getColor("action_button_active_border"); + else if(control.hovered) + return UM.Theme.getColor("action_button_hovered_border"); + else + return UM.Theme.getColor("action_button_border"); + } + color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled"); + else if(control.pressed) + return UM.Theme.getColor("action_button_active"); + else if(control.hovered) + return UM.Theme.getColor("action_button_hovered"); + else + return UM.Theme.getColor("action_button"); + } + Behavior on color { ColorAnimation { duration: 50; } } implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("default_margin").width * 2) @@ -139,9 +151,17 @@ Rectangle { Label { id: actualLabel anchors.centerIn: parent - color: !control.enabled ? UM.Theme.getColor("action_button_disabled_text") : - control.pressed ? UM.Theme.getColor("action_button_active_text") : - control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") + color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled_text"); + else if(control.pressed) + return UM.Theme.getColor("action_button_active_text"); + else if(control.hovered) + return UM.Theme.getColor("action_button_hovered_text"); + else + return UM.Theme.getColor("action_button_text"); + } font: UM.Theme.getFont("action_button") text: control.text; } @@ -167,12 +187,28 @@ Rectangle { background: Rectangle { id: deviceSelectionIcon border.width: UM.Theme.getSize("default_lining").width - border.color: !control.enabled ? UM.Theme.getColor("action_button_disabled_border") : - control.pressed ? UM.Theme.getColor("action_button_active_border") : - control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") - color: !control.enabled ? UM.Theme.getColor("action_button_disabled") : - control.pressed ? UM.Theme.getColor("action_button_active") : - control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") + border.color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled_border"); + else if(control.pressed) + return UM.Theme.getColor("action_button_active_border"); + else if(control.hovered) + return UM.Theme.getColor("action_button_hovered_border"); + else + return UM.Theme.getColor("action_button_border"); + } + color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled"); + else if(control.pressed) + return UM.Theme.getColor("action_button_active"); + else if(control.hovered) + return UM.Theme.getColor("action_button_hovered"); + else + return UM.Theme.getColor("action_button"); + } Behavior on color { ColorAnimation { duration: 50; } } anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("save_button_text_margin").width / 2; @@ -186,9 +222,17 @@ Rectangle { height: UM.Theme.getSize("standard_arrow").height sourceSize.width: width sourceSize.height: height - color: !control.enabled ? UM.Theme.getColor("action_button_disabled_text") : - control.pressed ? UM.Theme.getColor("action_button_active_text") : - control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text"); + color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled_text"); + else if(control.pressed) + return UM.Theme.getColor("action_button_active_text"); + else if(control.hovered) + return UM.Theme.getColor("action_button_hovered_text"); + else + return UM.Theme.getColor("action_button_text"); + } source: UM.Theme.getIcon("arrow_bottom"); } }