From 326e0b2fbd3130468d04e8d1a5be888178960e69 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 23 Aug 2017 11:28:58 +0100 Subject: [PATCH 01/80] Add relative_extrusion setting to special modes category. Default value is true for RepRap firmware, otherwise false. --- resources/definitions/fdmprinter.def.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 21de5524cf..6b2f3d9c90 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4919,6 +4919,16 @@ "enabled": "magic_spiralize", "settable_per_mesh": false, "settable_per_extruder": false + }, + "relative_extrusion": + { + "label": "Use Relative Extrusion", + "description": "Use relative extrusion rather than absolute extrusion. Before, Cura always used absolute extrusion. Most printers can cope with either relative or absolute extrusion.", + "type": "bool", + "default_value": "machine_gcode_flavor==\"RepRap (RepRap)\"", + "enabled": true, + "settable_per_mesh": false, + "settable_per_extruder": false } } }, From d536630501d0f7f73c7005f6667fe0b78049f55a Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 23 Aug 2017 11:45:35 +0100 Subject: [PATCH 02/80] Fix initial value for relative_extrusion. --- resources/definitions/fdmprinter.def.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6b2f3d9c90..b20c43be83 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4925,7 +4925,8 @@ "label": "Use Relative Extrusion", "description": "Use relative extrusion rather than absolute extrusion. Before, Cura always used absolute extrusion. Most printers can cope with either relative or absolute extrusion.", "type": "bool", - "default_value": "machine_gcode_flavor==\"RepRap (RepRap)\"", + "default_value": false, + "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", "enabled": true, "settable_per_mesh": false, "settable_per_extruder": false From 6656cd0c36bc687af0f84a7ecc96c015518adada Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 23 Aug 2017 13:26:47 +0200 Subject: [PATCH 03/80] Hide adhesion & support options if they are disabled for the current printer --- resources/qml/SidebarSimple.qml | 94 ++++++++++++++------------------- 1 file changed, 39 insertions(+), 55 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index f988ae0e8b..f3917fb444 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -248,25 +248,30 @@ Item } } - Item + Grid { id: helpersCell anchors.top: infillCellRight.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right - height: childrenRect.height + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + columns: 2 + columnSpacing: UM.Theme.getSize("default_margin").width + rowSpacing: UM.Theme.getSize("default_lining").height Text { id: enableSupportLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: enableSupportCheckBox.verticalCenter - width: parent.width * .45 - 3 * UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label", "Generate Support"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + visible: enableSupportCheckBox.visible + height: enableSupportCheckBox.height + width: base.width * .45 - 3 * UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Generate Support") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter } CheckBox @@ -274,14 +279,11 @@ Item id: enableSupportCheckBox property alias _hovered: enableSupportMouseArea.containsMouse - anchors.top: parent.top - anchors.left: enableSupportLabel.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - - style: UM.Theme.styles.checkbox; + style: UM.Theme.styles.checkbox enabled: base.settingsEnabled + visible: supportEnabled.properties.enabled == "True" - checked: supportEnabled.properties.value == "True"; + checked: supportEnabled.properties.value == "True" MouseArea { @@ -296,7 +298,7 @@ Item } onEntered: { - base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportCheckBox.x, 0), + base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportCheckBox.x - UM.Theme.getSize("default_margin").width, 0), catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.")); } onExited: @@ -309,20 +311,20 @@ Item Text { id: supportExtruderLabel - visible: (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1) - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: supportExtruderCombobox.verticalCenter - width: parent.width * .45 - 3 * UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label", "Support Extruder"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + visible: supportExtruderCombobox.visible + height: supportExtruderCombobox.height + + width: base.width * .45 - 3 * UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Support Extruder") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter } ComboBox { id: supportExtruderCombobox - visible: (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1) + visible: height > 0 model: extruderModel property string color_override: "" // for manually setting values @@ -339,20 +341,6 @@ Item textRole: 'text' // this solves that the combobox isn't populated in the first time Cura is started - anchors.top: enableSupportCheckBox.bottom - anchors.topMargin: - { - if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) - { - return UM.Theme.getSize("default_margin").height; - } - else - { - return 0; - } - } - anchors.left: supportExtruderLabel.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width width: parent.width * .55 height: { @@ -387,7 +375,7 @@ Item acceptedButtons: Qt.NoButton onEntered: { - base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x, 0), + base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x - UM.Theme.getSize("default_margin").width, 0), catalog.i18nc("@label", "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air.")); } onExited: @@ -409,14 +397,14 @@ Item Text { id: adhesionHelperLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: adhesionCheckBox.verticalCenter - width: parent.width * .45 - 3 * UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label", "Build Plate Adhesion"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + visible: adhesionCheckBox.visible + height: adhesionCheckBox.height + width: base.width * .45 - 3 * UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Build Plate Adhesion") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter } CheckBox @@ -424,14 +412,10 @@ Item id: adhesionCheckBox property alias _hovered: adhesionMouseArea.containsMouse - anchors.top: supportExtruderCombobox.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 - anchors.left: adhesionHelperLabel.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - //: Setting enable printing build-plate adhesion helper checkbox style: UM.Theme.styles.checkbox; enabled: base.settingsEnabled + visible: platformAdhesionType.properties.enabled == "True" checked: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" @@ -459,7 +443,7 @@ Item } onEntered: { - base.showTooltip(adhesionCheckBox, Qt.point(-adhesionCheckBox.x, 0), + base.showTooltip(adhesionCheckBox, Qt.point(-adhesionCheckBox.x - UM.Theme.getSize("default_margin").width, 0), catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards.")); } onExited: @@ -582,7 +566,7 @@ Item containerStackId: Cura.MachineManager.activeMachineId key: "adhesion_type" - watchedProperties: [ "value" ] + watchedProperties: [ "value", "enabled" ] storeIndex: 0 } @@ -592,7 +576,7 @@ Item containerStackId: Cura.MachineManager.activeMachineId key: "support_enable" - watchedProperties: [ "value", "description" ] + watchedProperties: [ "value", "enabled", "description" ] storeIndex: 0 } From 2e60a4a5899e836e687307eb2cb41d4bde40cab6 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 23 Aug 2017 13:57:46 +0100 Subject: [PATCH 04/80] Tweak relative_extrusion label and blurb. --- resources/definitions/fdmprinter.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b20c43be83..6386e20c91 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4922,8 +4922,8 @@ }, "relative_extrusion": { - "label": "Use Relative Extrusion", - "description": "Use relative extrusion rather than absolute extrusion. Before, Cura always used absolute extrusion. Most printers can cope with either relative or absolute extrusion.", + "label": "Relative Extrusion", + "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", From 58e2d07cbd2ae4857eb8c9925b39eb688f17e8f8 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Thu, 31 Aug 2017 10:55:52 +0100 Subject: [PATCH 05/80] Add comment that absolute extrusion mode will always be set before start and end gcode. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6386e20c91..a4e3511688 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4923,7 +4923,7 @@ "relative_extrusion": { "label": "Relative Extrusion", - "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps.", + "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before the start and end Gcode are output.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", From 125dc75a0fd46ab84a9942f9a8f9a93cc9d869d6 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Fri, 1 Sep 2017 07:54:56 +0100 Subject: [PATCH 06/80] Now blurb for relative_extrusion says absolute extrusion mode will be set before any gcode script is output. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a4e3511688..7f0aea874c 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4923,7 +4923,7 @@ "relative_extrusion": { "label": "Relative Extrusion", - "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before the start and end Gcode are output.", + "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", From 93c56a9d47b8f0229264a85e72f886ec193b3465 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Fri, 1 Sep 2017 15:58:26 +0200 Subject: [PATCH 07/80] rewording of skin preshrink (CURA-4270) now it is worded as being the close operation which includes the skin expansion in the opposite direction --- resources/definitions/fdmprinter.def.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 4220fec011..762419a3aa 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1531,8 +1531,8 @@ }, "skin_preshrink": { - "label": "Skin Pre-Shrink Distance", - "description": "The distance the skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.", + "label": "Skin Removal Width", + "description": "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 0, @@ -1543,8 +1543,8 @@ { "top_skin_preshrink": { - "label": "Top Skin Pre-Shrink Distance", - "description": "The distance the top skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.", + "label": "Top Skin Removal Width", + "description": "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 0, @@ -1555,8 +1555,8 @@ }, "bottom_skin_preshrink": { - "label": "Bottom Skin Pre-Shrink Distance", - "description": "The distance the bottom skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.", + "label": "Bottom Skin Removal Width", + "description": "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 0, From 837a0b190b838c5ffc4deca89b1a14493b5816ab Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Fri, 1 Sep 2017 16:00:19 +0200 Subject: [PATCH 08/80] feat: split skin_expand_distance into children and collapse expand_skins checkboxes (CURA-4270) --- resources/definitions/fdmprinter.def.json | 57 ++++++++----------- .../um3_aa0.8_PP_Draft_Print.inst.cfg | 3 +- .../um3_aa0.8_PP_Superdraft_Print.inst.cfg | 3 +- .../um3_aa0.8_PP_Verydraft_Print.inst.cfg | 3 +- .../um3_aa0.8_TPU_Draft_Print.inst.cfg | 3 +- .../um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 3 +- .../um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 3 +- 7 files changed, 31 insertions(+), 44 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 762419a3aa..b7b5c0108b 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1567,51 +1567,44 @@ } } }, - "expand_skins_into_infill": + "expand_skins_expand_distance": { - "label": "Expand Skins Into Infill", - "description": "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin.", - "type": "bool", - "default_value": false, + "label": "Skin Expand Distance", + "description": "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used.", + "unit": "mm", + "type": "float", + "default_value": 0, + "minimum_value": "-skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { - "expand_upper_skins": + "top_skin_expand_distance": { - "label": "Expand Top Skins Into Infill", - "description": "Expand the top skin areas (areas with air above) so that they support infill above.", - "type": "bool", - "default_value": false, - "value": "expand_skins_into_infill", + "label": "Top Skin Expand Distance", + "description": "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used.", + "unit": "mm", + "type": "float", + "default_value": 0, + "value": "expand_skins_expand_distance", + "minimum_value": "-top_skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "expand_lower_skins": + "bottom_skin_expand_distance": { - "label": "Expand Bottom Skins Into Infill", - "description": "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below.", - "type": "bool", - "default_value": false, + "label": "Bottom Skin Expand Distance", + "description": "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used.", + "unit": "mm", + "type": "float", + "default_value": 0, + "value": "expand_skins_expand_distance", + "minimum_value": "-bottom_skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", - "value": "expand_skins_into_infill", "settable_per_mesh": true } } }, - "expand_skins_expand_distance": - { - "label": "Skin Expand Distance", - "description": "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient.", - "unit": "mm", - "type": "float", - "default_value": 2.8, - "value": "infill_line_distance * 1.4", - "minimum_value": "0", - "enabled": "expand_upper_skins or expand_lower_skins", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, "max_skin_angle_for_expansion": { "label": "Maximum Skin Angle for Expansion", @@ -1623,7 +1616,7 @@ "maximum_value_warning": "45", "maximum_value": "90", "default_value": 20, - "enabled": "expand_upper_skins or expand_lower_skins", + "enabled": "top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": @@ -1637,7 +1630,7 @@ "default_value": 2.24, "value": "top_layers * layer_height / math.tan(math.radians(max_skin_angle_for_expansion))", "minimum_value": "0", - "enabled": "expand_upper_skins or expand_lower_skins", + "enabled": "top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 8b85d6d7fb..e186a3edc2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -14,8 +14,7 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) infill_pattern = tetrahedral diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index f1042df045..ae9a87623b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -14,8 +14,7 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) infill_pattern = tetrahedral diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 2ddb591127..f687aaabc9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -14,8 +14,7 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) infill_pattern = tetrahedral diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 97deea6740..7902ba5d16 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -13,8 +13,7 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 infill_before_walls = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 7871f330cc..cec4749892 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -13,8 +13,7 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 infill_before_walls = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 9da9e3945f..577b5cb711 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -13,8 +13,7 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 infill_before_walls = True From e9551d2173f7e3cc3d7cf565e3bad73a7c89b86c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 4 Sep 2017 15:39:07 +0200 Subject: [PATCH 09/80] Add upgrade script for 2.7 to 3.0 CURA-4270 Changes for the Skin Pre-shrink settings requires upgrade. --- cura/CuraApplication.py | 2 +- .../VersionUpgrade27to30.py | 75 ++++++++++++++++++- .../VersionUpgrade27to30/__init__.py | 35 ++++++++- 3 files changed, 108 insertions(+), 4 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ee1c1aeec6..a4c77a53e3 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -104,7 +104,7 @@ class CuraApplication(QtApplication): # SettingVersion represents the set of settings available in the machine/extruder definitions. # You need to make sure that this version number needs to be increased if there is any non-backwards-compatible # changes of the settings. - SettingVersion = 2 + SettingVersion = 3 class ResourceTypes: QmlFiles = Resources.UserType + 1 diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py index a6e541be6d..0388c8820a 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py @@ -10,6 +10,7 @@ _renamed_themes = { "cura": "cura-light" } + class VersionUpgrade27to30(VersionUpgrade): ## Gets the version number from a CFG file in Uranium's 2.7 format. # @@ -43,14 +44,84 @@ class VersionUpgrade27to30(VersionUpgrade): parser["general"]["version"] = "5" if "metadata" not in parser: parser["metadata"] = {} - parser["metadata"]["setting_version"] = "2" + parser["metadata"]["setting_version"] = "3" #Renamed themes. if "theme" in parser["general"]: if parser["general"]["theme"] in _renamed_themes: parser["general"]["theme"] = _renamed_themes[parser["general"]["theme"]] + # Renamed settings for skin pre-shrink settings + if parser.has_section("general") and "visible_settings" in parser["general"]: + visible_settings = parser["general"]["visible_settings"].split(";") + new_visible_settings = [] + renamed_skin_preshrink_names = {"expand_upper_skins": "top_skin_expand_distance", + "expand_lower_skins": "bottom_skin_expand_distance"} + for setting in visible_settings: + if setting == "expand_skins_into_infill": + continue # this one is removed + if setting in renamed_skin_preshrink_names: + new_visible_settings.append(renamed_skin_preshrink_names[setting]) + continue #Don't add the original. + new_visible_settings.append(setting) #No special handling, so just add the original visible setting back. + parser["general"]["visible_settings"] = ";".join(new_visible_settings) + # Re-serialise the file. output = io.StringIO() parser.write(output) - return [filename], [output.getvalue()] \ No newline at end of file + return [filename], [output.getvalue()] + + ## Upgrades the given instance container file from version 2.7 to 3.0. + # + # \param serialised The serialised form of the container file. + # \param filename The name of the file to upgrade. + def upgradeOtherContainer(self, serialised, filename): + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(serialised) + + # Update the skin pre-shrink settings: + # - Remove the old ones + # - Do not add the new ones. The default values will be used for them. + if parser.has_section("values"): + for remove_key in ["expand_skins_into_infill", "expand_upper_skins", "expand_lower_skins"]: + if remove_key in parser["values"]: + del parser["values"][remove_key] + + for each_section in ("general", "metadata"): + if not parser.has_section(each_section): + parser.add_section(each_section) + + # Update version numbers + parser["general"]["version"] = "2" + parser["metadata"]["setting_version"] = "3" + + # Re-serialise the file. + output = io.StringIO() + parser.write(output) + return [filename], [output.getvalue()] + + ## Upgrades a container stack from version 2.7 to 3.0. + # + # \param serialised The serialised form of a container stack. + # \param filename The name of the file to upgrade. + def upgradeStack(self, serialised, filename): + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(serialised) + + for each_section in ("general", "metadata"): + if not parser.has_section(each_section): + parser.add_section(each_section) + + # Update version numbers + if "general" not in parser: + parser["general"] = {} + parser["general"]["version"] = "3" + + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "3" + + # Re-serialise the file. + output = io.StringIO() + parser.write(output) + return [filename], [output.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py index 73e1246360..ece6cb83f2 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py @@ -9,13 +9,46 @@ def getMetaData(): return { "version_upgrade": { # From To Upgrade function - ("preferences", 4000002): ("preferences", 5000002, upgrade.upgradePreferences), + ("preferences", 4000002): ("preferences", 5000003, upgrade.upgradePreferences), + + ("machine_stack", 3000002): ("machine_stack", 3000003, upgrade.upgradeStack), + ("extruder_train", 3000002): ("extruder_train", 3000003, upgrade.upgradeStack), + + ("quality_changes", 2000002): ("quality_changes", 2000003, upgrade.upgradeOtherContainer), + ("user", 2000002): ("user", 2000003, upgrade.upgradeOtherContainer), + ("quality", 2000002): ("quality", 2000003, upgrade.upgradeOtherContainer), + ("definition_changes", 2000002): ("definition_changes", 2000003, upgrade.upgradeOtherContainer), + ("variant", 2000002): ("variant", 2000003, upgrade.upgradeOtherContainer) }, "sources": { "preferences": { "get_version": upgrade.getCfgVersion, "location": {"."} }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "variant": { + "get_version": upgrade.getCfgVersion, + "location": {"./variants"} + } } } From fdf5dc049e34c5aa2f8ab2699b7537e8f5a90ccf Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 4 Sep 2017 15:47:01 +0200 Subject: [PATCH 10/80] Update all containers to setting_version 3 CURA-4270 --- plugins/XmlMaterialProfile/__init__.py | 1 + resources/quality/abax_pri3/apri3_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_high.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_normal.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_high.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_normal.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_fast.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_high.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg | 2 +- .../quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg | 2 +- .../quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg | 2 +- .../cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg | 2 +- .../cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg | 2 +- .../quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg | 2 +- .../cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg | 2 +- .../quality/cartesio/cartesio_global_High_Quality.inst.cfg | 2 +- .../quality/cartesio/cartesio_global_Normal_Quality.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg | 2 +- resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg | 2 +- .../cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg | 2 +- .../cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg | 2 +- .../quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg | 2 +- resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg | 2 +- .../cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg | 2 +- .../quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg | 2 +- .../quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg | 2 +- .../quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg | 2 +- .../quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg | 2 +- resources/quality/coarse.inst.cfg | 2 +- resources/quality/draft.inst.cfg | 2 +- resources/quality/extra_coarse.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_abs_high.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_pla_high.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg | 2 +- resources/quality/high.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg | 2 +- .../imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg | 2 +- .../imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg | 2 +- .../quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg | 2 +- .../quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg | 2 +- .../quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg | 2 +- resources/quality/low.inst.cfg | 2 +- resources/quality/normal.inst.cfg | 2 +- resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg | 2 +- resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg | 2 +- resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg | 2 +- resources/quality/ultimaker2/um2_draft.inst.cfg | 2 +- resources/quality/ultimaker2/um2_high.inst.cfg | 2 +- resources/quality/ultimaker2/um2_low.inst.cfg | 2 +- resources/quality/ultimaker2/um2_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg | 2 +- resources/variants/cartesio_0.25.inst.cfg | 2 +- resources/variants/cartesio_0.4.inst.cfg | 2 +- resources/variants/cartesio_0.8.inst.cfg | 2 +- resources/variants/fabtotum_hyb35.inst.cfg | 2 +- resources/variants/fabtotum_lite04.inst.cfg | 2 +- resources/variants/fabtotum_lite06.inst.cfg | 2 +- resources/variants/fabtotum_pro02.inst.cfg | 2 +- resources/variants/fabtotum_pro04.inst.cfg | 2 +- resources/variants/fabtotum_pro06.inst.cfg | 2 +- resources/variants/fabtotum_pro08.inst.cfg | 2 +- resources/variants/imade3d_jellybox_0.4.inst.cfg | 2 +- resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg | 2 +- resources/variants/ultimaker2_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_0.8.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.8.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.8.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.8.inst.cfg | 2 +- resources/variants/ultimaker3_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_aa04.inst.cfg | 2 +- resources/variants/ultimaker3_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker3_bb04.inst.cfg | 2 +- resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_aa04.inst.cfg | 2 +- resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_bb04.inst.cfg | 2 +- 308 files changed, 308 insertions(+), 307 deletions(-) diff --git a/plugins/XmlMaterialProfile/__init__.py b/plugins/XmlMaterialProfile/__init__.py index 6ad4a279d0..f38b5ca0ef 100644 --- a/plugins/XmlMaterialProfile/__init__.py +++ b/plugins/XmlMaterialProfile/__init__.py @@ -20,6 +20,7 @@ def getMetaData(): }, "version_upgrade": { ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), + ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), }, "sources": { "materials": { diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index b002ef1e4d..d0c09692db 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index 38036404d9..d3df991d53 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index 02d564e8cb..326e35e251 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 23baec151b..1484dd33b0 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index d7996f9578..dfa265d360 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index a0cc6dc00c..81fbf2a42d 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index 2208ad2fb5..abd58cadb8 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 91a3bffea6..2cffe3ce8a 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -7,7 +7,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index 4ff47e9c65..f1b6237e07 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg index f6f461f73d..3abcc16f39 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg index a86f734c8a..a47fc2b8bf 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg index 53e36c4a88..c37b5c677c 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg index 1422663537..ec0fdfa07b 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg index edd337bb88..211e78357b 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_abs_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg index 78493a273b..319c0748af 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_abs_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg index 0b7d6dd8d8..fc3b1e49f0 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg index 393a419cdc..0c453ed6b0 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg index 7595ae104e..4052520597 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg index f899082e9c..a8a5e22a3b 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index f44b33b1d1..30c03d26b5 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index 6b0a379eb2..2decd9dad3 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.6 diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index 944f8a1d97..e05392c6fa 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index c0d1a301f3..182ae137e7 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg index 24610a3332..1a51725339 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg index af419719b1..fa845592fa 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg index cfc9c0e331..56b5e7ef38 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg index e26fcaa037..cad4b5255f 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg index d7d1d8aa4d..b52f4df1fa 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_hips_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg index 68c282fd7d..7eba4c99c4 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_hips_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg index 33289e0cf2..06ddcc0959 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg index 1388e9bee1..534d63115b 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg index f592894188..ba2c95043c 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg index 73c1d7010b..fb9393577f 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg index 8108a48c53..92c00bc5df 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg index 89114b1a79..389a01fcb4 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg index 5a35735d11..f8ed2fbf41 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_nylon_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg index 4a20f2e0e7..607069e4db 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_nylon_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg index 15e3834090..3c1bbffa83 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg index 34c0d66899..e964ab95b2 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index 3de6c83fb8..86f2dbf91f 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index 0361b789ba..f24f3caed0 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 94b3fe9278..3d44cfd39f 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index 11723cc92b..fe873f537a 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index 070f73fa0e..4e802a4e9b 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_pc_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 26662accf5..21153fce38 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_pc_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index 64a137abf5..a8cc757fbb 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index a30c4ea884..9574471b1c 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg index b8d2da9500..2efa3ca0da 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg index 11e55362ae..377520f471 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg index 85560ff953..c31c18b192 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg index d1fa4d40ca..1bf8c4a4d6 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg index f728848461..599ba08eaa 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_petg_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg index 851b893a96..2f1a138115 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_petg_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg index 9c9aa56dab..1a804307c9 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg index 2e7d86c378..6eca142191 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg index 5f53ffe133..9cfa09aee7 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index 311d287cdc..e87d956a87 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg index e73581cdd6..3d97fdbae8 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index dfa47d2ebb..b99d030c27 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index a17454ba87..6835150283 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_pla_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index 3f4db2d40a..6b4a87d9ec 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_pla_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg index 5de8fd3aa8..b017fb9d5d 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index 1071a139f9..1e3b82dfb8 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg index 222a3d7438..bd170cfccc 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg index e074b1f1b7..23ba53078b 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg index a0df1df247..de12e2987d 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg index 1e69f794a8..3418cce66c 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg index 2ac1aff331..17c9f81d2d 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_pva_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg index 14602d4e95..ffd4e34204 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_pva_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg index b21d8b85f6..bd32e91b20 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg index 61eb2f89d9..6d309464a6 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index bdeda58626..3f197bb50c 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse global_quality = True weight = -3 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 15df2f2f08..00932feb68 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -9,7 +9,7 @@ type = quality quality_type = draft global_quality = True weight = -2 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 921cfbb981..183fa825e8 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = Extra coarse global_quality = True weight = -4 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.6 diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index 0e8ae3b840..d38323a180 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -5,7 +5,7 @@ name = Fast Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_abs quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index 3aefc3a701..5333512e4c 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -5,7 +5,7 @@ name = High Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_abs quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index 81d38cf880..fd0fca7887 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -5,7 +5,7 @@ name = Normal Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_abs quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index 81a95fc26d..1c9e384e77 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = fabtotum_nylon quality_type = fast weight = -1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index 035ad5b968..cffa1f0e86 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = fabtotum_nylon quality_type = high weight = 1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index fccdf42555..c2bec3396e 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = fabtotum_nylon quality_type = normal weight = 0 -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index debe8165e2..4adda21b5a 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -5,7 +5,7 @@ name = Fast Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_pla quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index c59ecf75bb..e3aed0ab0e 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -5,7 +5,7 @@ name = High Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_pla quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 97351e4e92..81a75283a5 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -5,7 +5,7 @@ name = Normal Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_pla quality_type = normal weight = 0 diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 695d500198..846dc58827 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high global_quality = True weight = 1 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg index 2c0dc434ee..ad22aacc18 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg index f9327873dd..35268229b3 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm_2-fans weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg index 16ec2d9f1e..ca5f8b5a28 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg index 3302402233..a2b540dc7f 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm_2-fans weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg index 8ed78edfed..b3472a0cf5 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg index 845f03873d..c7dd462a74 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg index b587b64fef..7035deab6e 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg index c4a4b4f465..73e33a74fb 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg index 7f2c4ce316..8a14eab5c6 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg index 43bb14577b..64917bc37d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg index 253a3a2dc3..15be25bb1b 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 2 quality_type = ultrahigh -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg index 8152b9a0c8..b4f0db9cb6 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 2 quality_type = ultrahigh -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg index d2b7968813..5d3bf86b90 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -3 material = generic_abs quality_type = coarse -setting_version = 2 +setting_version = 3 [values] layer_height = 0.35 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg index eba5bd3e6d..e29c38f225 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 1 material = generic_abs quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg index 01972c482c..552ad8901e 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 0 material = generic_abs quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg index c51dd5794e..a63f9065ef 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -2 material = generic_abs quality_type = draft -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg index 2c0eb0b51e..1449961b6c 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -1 material = generic_abs quality_type = low -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg index 400c45de94..2b3e64c67b 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -3 material = generic_pla quality_type = coarse -setting_version = 2 +setting_version = 3 [values] layer_height = 0.35 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg index d6fe06a5a3..2c14044484 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg index b23d86c931..48617d23df 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 0 material = generic_pla quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg index 5065794ac8..724c52b40d 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -2 material = generic_pla quality_type = draft -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg index a62b7f1254..7c6f7d5e05 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -1 material = generic_pla quality_type = low -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index 00a7fa6173..105cf0b199 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -3 material = generic_pla quality_type = coarse -setting_version = 2 +setting_version = 3 [values] layer_height = 0.35 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg index a01298ce58..35aef2e19e 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg index fc03449351..06ec265152 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 0 material = generic_pla quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg index aa78035704..db47c47fc4 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -2 material = generic_pla quality_type = draft -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg index 70e16a9bea..1ad63191a4 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -1 material = generic_pla quality_type = low -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/low.inst.cfg b/resources/quality/low.inst.cfg index 466d741d5f..21e4d0d404 100644 --- a/resources/quality/low.inst.cfg +++ b/resources/quality/low.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = low global_quality = True weight = -1 -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 10 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index 0b4cec96d9..acbdf1033e 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -8,6 +8,6 @@ type = quality quality_type = normal global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index d5e02e6c71..deefea63dd 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -7,7 +7,7 @@ definition = peopoly_moai type = quality weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg index a3c4913e5f..f9ed09afca 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg @@ -7,7 +7,7 @@ definition = peopoly_moai type = quality weight = 2 quality_type = extra_high -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index a9c52b0c27..7cbd9a84fe 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -7,7 +7,7 @@ definition = peopoly_moai type = quality weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 70 diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index 6236c34a2c..11bdf03e92 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -7,7 +7,7 @@ definition = ultimaker2 type = quality quality_type = draft weight = -2 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 84d6b4219a..63b820479a 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -7,7 +7,7 @@ definition = ultimaker2 type = quality quality_type = high weight = 1 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker2/um2_low.inst.cfg b/resources/quality/ultimaker2/um2_low.inst.cfg index b9c486b61b..bb8ef2fa87 100644 --- a/resources/quality/ultimaker2/um2_low.inst.cfg +++ b/resources/quality/ultimaker2/um2_low.inst.cfg @@ -7,7 +7,7 @@ definition = ultimaker2 type = quality quality_type = low weight = -1 -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 10 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index 7de0b2eaf6..0673ba9eb4 100644 --- a/resources/quality/ultimaker2/um2_normal.inst.cfg +++ b/resources/quality/ultimaker2/um2_normal.inst.cfg @@ -7,6 +7,6 @@ definition = ultimaker2 type = quality quality_type = normal weight = 0 -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg index d96af5a2db..ba94d1a008 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index 67bb88d190..fa91cb12e5 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index 78a4f8affd..97253fb753 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index 1489b60916..2b63b8e8be 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index 0bd094345d..6d4dc257bf 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla_ultimaker2_plus_0.6_mm type = quality weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index 1fb5e9e3ea..88d95ebc3f 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla_ultimaker2_plus_0.8_mm type = quality weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg index e9c50b6512..e2b7f34549 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index fa3dbaa7b7..aa4918b0c7 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index c125eb7193..0c8b8233fb 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index bac5e2ed6c..de5ddb9726 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 0683e6c8dd..bff307740a 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.5 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg index 072ea6e61f..510494c0c6 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.8_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.5 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg index afc0d2f301..f47437eb58 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.25_mm weight = -1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index d3fb7fabf5..7e3dc1a39e 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg index 7ff03a4f4e..4be015ce35 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index 6773ea2ad4..9b5ac3c163 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg index bd118793bc..acac263691 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg index 840876899e..a3b15628dd 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.8_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index 63b65343a9..4c81178592 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.4_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg index b588b572c2..216c8568d1 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg index e901295acd..b718af40d9 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.6_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg index 3120eec993..4e8de61ad6 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg index 1f532ae167..1e9f1029c6 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg index 07f1c73544..f64cd2cf1a 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index 3a59a51085..e136dad3b8 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index e5bad30383..e963f8b438 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg index 4fec2d54bd..134c1d033b 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index c8ade1ce20..04469385a0 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg index 8d804390b1..20662c3e21 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg index 4f16ed5962..b8cd3a1a3a 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index bff383cfa3..c615480917 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg index 40f8895a39..af20b564e4 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg index 0ca3e8aedb..0498e5a81f 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg index 39044de32e..e4a08a5bb1 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index 57374e0c56..c3d3626380 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index b2c4b7e2a3..705dfb175a 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index 73a2324261..5eb29eba57 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index c5183c1dde..82a3e56013 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg index 05fc16958f..890a08608c 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg index b6283d4e71..0456166d70 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg index 4fc0e56abf..13b05df085 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 supported = False [values] diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 6b0cd0b200..ce7e90c039 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index 1c596ab98d..381ac499c1 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 88814ba2a4..6cbd8a29e5 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.6_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index da1b928482..c322411606 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index b4e2ddfa96..aab59cf009 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.8_mm weight = -2 quality_type = fast -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index f31e0dd192..f2453c6752 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.8_mm weight = -3 quality_type = draft -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index d3e4ad515a..bbb4002d0b 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index 7955807721..22fe2566f9 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index 5d0f84ecd8..12a8f6521b 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index e9a2667261..ea95ac161b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_abs_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index 96099347bd..6db50fe270 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_abs_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 7 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 47c3602277..305de52ea6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 12 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index dcb29b48c6..fc23b25e3e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 2ae57b6333..46a406515c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index 6fbc466b61..8af2930986 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 58719ca037..6641e0f4ed 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 89dc4e5df5..c22d6eda31 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index 354efee6ef..96065673d6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index ceab77fc4f..e866877b0e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_cpe_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 7 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index edfe91c8a1..971c222ef7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_cpe_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 12 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index 1487d476f0..d77b673721 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_cpe_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 6d33e4298a..5f3680c391 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_nylon_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 189d8efbae..c5dc2c37f9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_nylon_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 70a72beb50..cb39a20918 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index 324300d11f..0e3467d901 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index a88e38b560..2a2e7a1010 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pc_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 242cca1ecf..8887895e46 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_pc_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 51b025c7c6..07c372f9dc 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 23449bcda2..9a7daeed93 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index 46f043ce65..f2d76753b0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pla_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index 10a04ed47b..b78d1598cd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_pla_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index 27d4b20815..0fa518546f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index 94e82ede57..ca4a3bf27b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 4228c718c6..7be9425947 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pp_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index 850ead9120..132a4e6303 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_pp_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index e68f13364a..780ad8b2a1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pp_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg index 2ce06b2de2..121d9c92bb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ type = quality quality_type = normal material = generic_pva_ultimaker3_AA_0.4 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 7450e7112d..f1825240cf 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_tpu_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 2d07cd8b31..d223a83554 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_tpu_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index 1d8467482f..c0b5065f53 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_tpu_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg index 41dee1edf4..b55678643d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_abs_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] line_width = =machine_nozzle_size * 0.875 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg index d757ca32a0..3c21c74d8e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_abs_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg index 9f5fddf21b..9c4352043b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_abs_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index feae4a5217..795d224a65 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 8a16b26682..58723d05fe 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index bd5b8972b1..e125ec9f0b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index d920d76417..3c303fc9c2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 480d63a698..6525e0452f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_cpe_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index c1d48f2555..195598e0f9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_cpe_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index ec8ba37518..fec8232b59 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_nylon_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 90f04b1e8a..8a0004309d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_nylon_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index 7980541f32..d3729b22d9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_nylon_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg index 18c82b1e2c..dfc3d3ce72 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pc_ultimaker3_AA_0.8 weight = 0 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg index 328c5d9f1d..3f9864b72e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_pc_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg index 27ecd7343f..2fe51a392e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_pc_ultimaker3_AA_0.8 weight = -1 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index c528a2523f..eebe1a8e38 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pla_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index f0f375c7ee..c35bf05908 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_pla_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index aabdf1213d..984a825085 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_pla_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index e186a3edc2..0eb264a9db 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pp_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 25 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index ae9a87623b..cb12f4aedc 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_pp_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 25 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index f687aaabc9..3ceb547378 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_pp_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 25 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg index 9da6595ec8..071a72da0d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ type = quality quality_type = normal material = generic_pva_ultimaker3_AA_0.8 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg index ddecefa938..485226fe3d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ type = quality quality_type = superdraft material = generic_pva_ultimaker3_AA_0.8 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 7902ba5d16..0514a22b95 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_tpu_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index cec4749892..805f12ef81 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_tpu_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 577b5cb711..3d1f29ee21 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_tpu_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg index c1271f68e8..65fbb4aa22 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_abs_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg index 3d4843a07a..d92791970e 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_abs_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg index 355b9fd390..3aa8fc43e0 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_plus_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg index 3b5c086e13..c3bfa7a731 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_plus_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg index 695185da03..6594cd4403 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg index 4cd4dd4c18..4eda6ce767 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg index 29f550fe59..ca4589f150 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_nylon_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg index c40458ecbe..94dcfe2aff 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_nylon_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg index 78c4413c5e..46334b219c 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pc_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg index 1f0a724e55..37998b3346 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pla_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg index 6c84ab05a6..51ea4d609a 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pla_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg index a73cfd2332..be9f93c662 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pp_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg index dbfbd58f9c..d2f54e3137 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pp_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 4c0c97c3d3..ee57d2b177 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft weight = -2 material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 65f06d51ac..90280ed2ee 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ weight = -1 type = quality quality_type = fast material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index 154371470d..b8d7dd3ada 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -8,7 +8,7 @@ weight = 1 type = quality quality_type = high material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_standby_temperature = 100 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 9818f508e6..32591a38b7 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ weight = 0 type = quality quality_type = normal material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_standby_temperature = 100 diff --git a/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg index f71989d851..ba1eaaf548 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_tpu_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg index 13734f3947..783d1dfa80 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_tpu_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg index 55026ddcbc..7f4dc9f23e 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_abs_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg index 2b2aa5acd2..c0fe6216c2 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_abs_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg index 1165d6ab2c..4aa96f3a02 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_plus_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg index 7a309e4abc..5e2d079f20 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_plus_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg index 97fc8408d0..384d44cf93 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg index 543ce9fcc6..87bdedb204 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg index 3030decc57..699bb575d2 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_nylon_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg index ff2b83a685..261d63e6e7 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_nylon_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg index 30c55627fa..ac8515a1ea 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pc_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg index 7496e68bf6..12d82993e6 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pc_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg index 2acbc9713a..f93273a33a 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pla_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg index 2c64ccef98..499af56b4b 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pla_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg index 92921030ca..5ffda57b8b 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pp_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg index 534efa78e0..aa50edcf55 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pp_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index 677d13d9d9..a46218f31f 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft weight = -2 material = generic_pva_ultimaker3_BB_0.8 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index 8e28e39ef7..4e2f13af07 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft weight = -4 material = generic_pva_ultimaker3_BB_0.8 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index e816446f6d..c2d66f59bb 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft weight = -3 material = generic_pva_ultimaker3_BB_0.8 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.3 diff --git a/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg index 17e2bf7ba1..6be3b596f9 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_tpu_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg index 1369ee6d41..e3484b3556 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_tpu_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index e564a6ee56..f9976d0fbc 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft global_quality = True weight = -2 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 435d8cc84f..0a30227322 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast global_quality = True weight = -1 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index 5917a4bd41..a7028590af 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index fd16913dcf..c8bf165b55 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index a2ed2c55ff..f3ab433e92 100644 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft global_quality = True weight = -4 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index 0e12596a8d..46199fcece 100644 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft global_quality = True weight = -3 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.3 diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index 23179b5c7e..a266b10b24 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index ad8d98519e..fe52e83622 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index c5bc386558..8a260c1e17 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index 572ece232b..9d46205941 100644 --- a/resources/variants/fabtotum_hyb35.inst.cfg +++ b/resources/variants/fabtotum_hyb35.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.35 diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index 11c35fa779..9209b2fffc 100644 --- a/resources/variants/fabtotum_lite04.inst.cfg +++ b/resources/variants/fabtotum_lite04.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 1576aed8b3..8c03f33794 100644 --- a/resources/variants/fabtotum_lite06.inst.cfg +++ b/resources/variants/fabtotum_lite06.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index b5f44d1965..84e1583701 100644 --- a/resources/variants/fabtotum_pro02.inst.cfg +++ b/resources/variants/fabtotum_pro02.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.2 diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 8358accaaf..3e136e951a 100644 --- a/resources/variants/fabtotum_pro04.inst.cfg +++ b/resources/variants/fabtotum_pro04.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index 304e1ea7a6..7aa789fd17 100644 --- a/resources/variants/fabtotum_pro06.inst.cfg +++ b/resources/variants/fabtotum_pro06.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index dd1dd69e18..f1b9d195e7 100644 --- a/resources/variants/fabtotum_pro08.inst.cfg +++ b/resources/variants/fabtotum_pro08.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index b590dec264..e487b6abdc 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg index 419506c908..2db00fa0e3 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg @@ -6,7 +6,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index d2d4abc7d4..b0e860cd57 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_0.4.inst.cfg index 325eb04040..b074214138 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_0.6.inst.cfg index 6fb8005ed0..6bd3b06d22 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_0.8.inst.cfg index 7c256b9416..66d05219b1 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_0.25.inst.cfg index 4e248c55c4..6496025820 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_0.4.inst.cfg index 01adecceeb..47be42efd7 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_0.6.inst.cfg index a93ce8f628..cac05731e8 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_0.8.inst.cfg index 9588d017ec..5baaf53163 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index fa5861ea6d..173e69d893 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index ef0bed8305..88e3d291d6 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index 643b0d3d8c..54b6b90b62 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index a282b288a2..5616f01699 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 14d8d5d899..9aea2e8700 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index ccc1d246a0..ab3dd807ab 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index 40c1f523a8..c3324bd7a8 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index 563b955063..d0cd2424bd 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 1e8366c765..980cfd1a59 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index dfdd57a075..01299f0853 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 8ed7c92511..24c175c2b8 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index a5aa03f1fa..cd05c9c247 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 59b057186e..6bd491032e 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index 94a13f2e74..15c53b5930 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index 886167f714..e75545b7f9 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index eb9eefed0c..ffcdc0d4c0 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) From 51547bf37a03e53506714daec3f53611f28348fe Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 4 Sep 2017 15:49:54 +0200 Subject: [PATCH 11/80] Update setting_version to 3 for XMLMaterial CURA-4270 Technically, this is not right. This is just to postpone a time bomb... The XML material profile needs a setting number instead of getting it derived from the schema version. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 2 +- plugins/XmlMaterialProfile/__init__.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index c81e23b219..a9acf9bec9 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -35,7 +35,7 @@ class XmlMaterialProfile(InstanceContainer): # \return The corresponding setting_version. def xmlVersionToSettingVersion(self, xml_version: str) -> int: if xml_version == "1.3": - return 2 + return 3 return 0 #Older than 1.3. def getInheritedFiles(self): diff --git a/plugins/XmlMaterialProfile/__init__.py b/plugins/XmlMaterialProfile/__init__.py index f38b5ca0ef..69c64193b7 100644 --- a/plugins/XmlMaterialProfile/__init__.py +++ b/plugins/XmlMaterialProfile/__init__.py @@ -19,8 +19,7 @@ def getMetaData(): "mimetype": "application/x-ultimaker-material-profile" }, "version_upgrade": { - ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), - ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), + ("materials", 1000000): ("materials", 1000003, upgrader.upgradeMaterial), }, "sources": { "materials": { From 308e1793bcff4afca8b81e3ec88787d8268797f5 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 4 Sep 2017 16:55:36 +0200 Subject: [PATCH 12/80] Fix simple mode adhesion checkbox --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index b8c476e24e..5b65f948a2 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -449,7 +449,7 @@ Item // Remove the "user" setting to see if the rest of the stack prescribes a brim or a raft platformAdhesionType.removeFromContainer(0); adhesionType = platformAdhesionType.properties.value; - if(adhesionType == "skirt") + if(adhesionType == "skirt" || adhesionType == "none") { // If the rest of the stack doesn't prescribe an adhesion-type, default to a brim adhesionType = "brim"; From 3b4460feb0d274245ff38f883b2b38d193bcd3aa Mon Sep 17 00:00:00 2001 From: Brecht Nuyttens Date: Tue, 5 Sep 2017 15:24:02 +0200 Subject: [PATCH 13/80] Added vertex delta k8800 --- .../definitions/vertex_delta_k8800.def.json | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 resources/definitions/vertex_delta_k8800.def.json diff --git a/resources/definitions/vertex_delta_k8800.def.json b/resources/definitions/vertex_delta_k8800.def.json new file mode 100644 index 0000000000..1c5cfab59b --- /dev/null +++ b/resources/definitions/vertex_delta_k8800.def.json @@ -0,0 +1,65 @@ +{ + "id": "K8800", + "name": "Vertex Delta K8800", + "version": 1, + "inherits": "fdmprinter.json", + "machine_settings": { + "machine_width": { + "default": 200 + }, + "machine_height": { + "default": 225 + }, + "machine_depth": { + "default": 200 + }, + "machine_center_is_zero": { + "default": true + }, + "machine_shape": { + "default": "elliptic" + }, + "machine_nozzle_size": { + "default": 0.35 + }, + "machine_head_shape_min_x": { + "default": 0 + }, + "machine_head_shape_min_y": { + "default": 0 + }, + "machine_head_shape_max_x": { + "default": 0 + }, + "machine_head_shape_max_y": { + "default": 0 + }, + "machine_nozzle_gantry_distance": { + "default": 0 + }, + "machine_nozzle_offset_x_1": { + "default": 0 + }, + "machine_nozzle_offset_y_1": { + "default": 0 + }, + "machine_gcode_flavor": { + "default": "RepRap" + }, + "machine_start_gcode": { + "default": "; Vertex Delta Start Gcode\nM0 Is my nozzle clean?\nM400\nG28 ; Home extruder\nM106 S128 ; Start fan\nM104 T0 R130 ; Set cold nozzle\nM109 T0 R130 ; Wait for cold nozzle\nM117 Leveling bed...\nG29 ; Level Bed\nG1 X0 Y100 Z1 F2000\nG92 Z0.9 ; Set Z position (SET Z OFFSET HERE -> 1 - OFFSET)\nM107 ; Stop fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM104 T0 S{material_print_temperature}\nG92 E0 ; Reset extruder position\nM109 T0 S{material_print_temperature}\nM117 Priming nozzle...\nM83\nG1 E20 F100 ; purge/prime nozzle\nM82\nG92 E0 ; Reset extruder position\nG4 S3 ; Wait 3 seconds\nG1 Z5 F2000\nM117 Vertex Delta printing" + }, + "machine_end_gcode": { + "default": "; Vertex Delta end code\nM107 ; Turn off fan\nG91 ; Relative positioning\nT0\nG1 E-1 F1500; Reduce filament pressure\nM104 T0 S0\nG90 ; Absolute positioning\nG92 E0 ; Reset extruder position\nM300 S4000 P500\nM300 S3000 P500\nM300 S2000 P800\nG28\nM84 ; Turn steppers off" + } + }, + "categories": { + "material": { + "settings": { + "material_bed_temperature": { + "visible": true + } + } + } + } +} \ No newline at end of file From 371ca360470fd2f2521037fba489e20dddcd449f Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 6 Sep 2017 13:21:17 +0200 Subject: [PATCH 14/80] Remove home bed from abort sequence On printers that home the bed to the bottom (ie: printhead moves towards the bed), homing the bed when aborting a print could cause the printhead to crash into the aborted print. --- plugins/USBPrinting/USBPrinterOutputDevice.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 8ecb503ed8..529783acb8 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -622,8 +622,9 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._sendCommand("M140 S0") self._sendCommand("M104 S0") self._sendCommand("M107") + # Home XY to prevent nozzle resting on aborted print + # Don't home bed because it may crash the printhead into the print on printers that home on the bottom self.homeHead() - self.homeBed() self._sendCommand("M84") self._is_printing = False self._is_paused = False From dd62367937d355191d5d6ec9e05b9e4477799d5e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 15:32:19 +0200 Subject: [PATCH 15/80] Move View mode button and LayerView panel to top right CURA-4212 --- plugins/LayerView/LayerView.qml | 2 +- resources/qml/Cura.qml | 37 --------------------------------- resources/qml/Topbar.qml | 35 +++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 53f44f3f03..1cf901a0bd 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -33,7 +33,7 @@ Item UM.PointingRectangle { id: layerViewMenu - anchors.left: parent.left + anchors.right: parent.right anchors.top: parent.top width: parent.width height: parent.height diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 094e138fbd..37c481defc 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -319,24 +319,6 @@ UM.MainWindow } } - Loader - { - id: view_panel - - property bool hugBottom: parent.height < viewModeButton.y + viewModeButton.height + height + UM.Theme.getSize("default_margin").height - - anchors.bottom: parent.bottom // panel is always anchored to the bottom only, because dynamically switching between bottom and top results in stretching the height - anchors.bottomMargin: hugBottom ? 0 : parent.height - (viewModeButton.y + viewModeButton.height + height + UM.Theme.getSize("default_margin").height) - anchors.left: viewModeButton.left; - anchors.leftMargin: hugBottom ? viewModeButton.width + UM.Theme.getSize("default_margin").width : 0 - - property var buttonTarget: Qt.point(viewModeButton.x + viewModeButton.width / 2, viewModeButton.y + viewModeButton.height / 2) - - height: childrenRect.height; - - source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : ""; - } - Button { id: openFileButton; @@ -393,25 +375,6 @@ UM.MainWindow monitoringPrint: base.showPrintMonitor } - Button - { - id: viewModeButton - - anchors - { - top: toolbar.bottom; - topMargin: UM.Theme.getSize("window_margin").height; - left: parent.left; - } - text: catalog.i18nc("@action:button","View Mode"); - iconSource: UM.Theme.getIcon("viewmode"); - - style: UM.Theme.styles.tool_button; - tooltip: ""; - enabled: !PrintInformation.preSliced - menu: ViewMenu { } - } - Rectangle { id: viewportOverlay diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 1b9f6cad65..e0001cb5cd 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -196,4 +196,39 @@ Rectangle menu: PrinterMenu { } } + + Button + { + id: viewModeButton + + anchors + { + verticalCenter: parent.verticalCenter + right: parent.right + rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width + } + text: catalog.i18nc("@action:button", "View Mode") + iconSource: UM.Theme.getIcon("viewmode") + + style: UM.Theme.styles.tool_button + tooltip: ""; + enabled: !PrintInformation.preSliced + menu: ViewMenu { } + } + + Loader + { + id: view_panel + + anchors.top: viewModeButton.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.right: viewModeButton.right + + property var buttonTarget: Qt.point(viewModeButton.x + viewModeButton.width / 2, viewModeButton.y + viewModeButton.height / 2) + + height: childrenRect.height; + + source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : ""; + } + } From d89fc220fcaf9f974a4cd495886ea9358fc75fa3 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 15:40:30 +0200 Subject: [PATCH 16/80] Make LayerView panel vertically longer CURA-4212 --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d4d12c24cd..4ccebc5c91 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -332,7 +332,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], - "layerview_menu_size": [16.5, 21.0], + "layerview_menu_size": [16.5, 22.0], "layerview_menu_size_compatibility": [22, 23.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], From 750f1ce158902fc7a2b75b88c9b5e0f657e7692b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 15:40:45 +0200 Subject: [PATCH 17/80] Make extruder icons on LayerView panel round CURA-4212 --- plugins/LayerView/LayerView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 1cf901a0bd..f74a48745f 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -199,6 +199,7 @@ Item width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height color: model.color + radius: width / 2 border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") visible: !view_settings.show_legend From c59bd6cc09f80467ec0e33ea7dbdb8c67ec95622 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 16:21:26 +0200 Subject: [PATCH 18/80] Change LayView Mode button to a dropdown CURA-4212 --- resources/qml/Topbar.qml | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index e0001cb5cd..799942f0f6 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -197,23 +197,40 @@ Rectangle menu: PrinterMenu { } } - Button + ComboBox { id: viewModeButton - anchors { verticalCenter: parent.verticalCenter right: parent.right rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width } - text: catalog.i18nc("@action:button", "View Mode") - iconSource: UM.Theme.getIcon("viewmode") + style: UM.Theme.styles.combobox - style: UM.Theme.styles.tool_button - tooltip: ""; - enabled: !PrintInformation.preSliced - menu: ViewMenu { } + model: UM.ViewModel { } + textRole: "name" + onCurrentIndexChanged: + { + UM.Controller.setActiveView(model.getItem(currentIndex).id); + // Update the active flag + for (var i = 0; i < model.rowCount; ++i) + { + const is_active = i == currentIndex; + model.getItem(i).active = is_active; + } + } + currentIndex: + { + for (var i = 0; i < model.rowCount; ++i) + { + if (model.getItem(i).active) + { + return i; + } + } + return 0; + } } Loader From c8a92f2c59cdf00325db861e355e7cb1d78b6bca Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 16:56:13 +0200 Subject: [PATCH 19/80] Move LayerView slider down CURA-4212 --- plugins/LayerView/LayerView.qml | 27 ++++---------------------- resources/themes/cura-light/theme.json | 4 ++-- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index f74a48745f..6f95e6694e 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -64,26 +64,7 @@ Item anchors.leftMargin: UM.Theme.getSize("default_margin").width spacing: UM.Theme.getSize("layerview_row_spacing").height anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 - - Label - { - id: layersLabel - anchors.left: parent.left - text: catalog.i18nc("@label","View Mode: Layers") - font: UM.Theme.getFont("default_bold"); - color: UM.Theme.getColor("text") - Layout.fillWidth: true - elide: Text.ElideMiddle; - } - - Label - { - id: spaceLabel - anchors.left: parent.left - text: " " - font.pointSize: 0.5 - } + anchors.rightMargin: UM.Theme.getSize("default_margin").width Label { @@ -355,7 +336,7 @@ Item id: slider width: handleSize height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height - anchors.top: parent.top + anchors.top: parent.bottom anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height anchors.right: layerViewMenu.right anchors.rightMargin: UM.Theme.getSize("slider_layerview_margin").width @@ -569,10 +550,10 @@ Item UM.PointingRectangle { - x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2; + x: parent.width - UM.Theme.getSize("slider_layerview_background").width / 2 - width; y: Math.floor(slider.activeHandle.y + slider.activeHandle.height / 2 - height / 2); - target: Qt.point(0, slider.activeHandle.y + slider.activeHandle.height / 2) + target: Qt.point(parent.width, slider.activeHandle.y + slider.activeHandle.height / 2) arrowSize: UM.Theme.getSize("default_arrow").width height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 4ccebc5c91..b5b840d939 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -332,8 +332,8 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], - "layerview_menu_size": [16.5, 22.0], - "layerview_menu_size_compatibility": [22, 23.0], + "layerview_menu_size": [15, 19.5], + "layerview_menu_size_compatibility": [22, 22.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5], From 3b12e39ba85052d00f610e5edc9501ea73f73c61 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 8 Sep 2017 16:35:08 +0200 Subject: [PATCH 20/80] Selected state font is not bold anymore for custom and recommended CURA-4148 --- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarHeader.qml | 1 - resources/themes/cura-light/theme.json | 4 ++++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index b5a52e1341..27b5b23aa6 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -181,7 +181,7 @@ Rectangle color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: (control.checked || control.pressed) ? UM.Theme.getFont("default_bold") : UM.Theme.getFont("default") + font: (control.checked || control.pressed) ? UM.Theme.getFont("default_little_big") : UM.Theme.getFont("default") text: control.text; } } diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index e2d1ef9559..3cb5ae156f 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -400,7 +400,6 @@ Column } onEntered: { - var content = catalog.i18nc("@tooltip", "Click to check the material compatibility on Ultimaker.com."); base.showTooltip( materialInfoRow, diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index c1c855513f..36b43c27fb 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -17,6 +17,10 @@ "size": 1.15, "family": "Open Sans" }, + "default_little_big": { + "size": 1.17, + "family": "Open Sans" + }, "default_bold": { "size": 1.15, "bold": true, From 32c5583a3d6b56cbaae1f58fa56d525d84bc2796 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 13:52:27 +0200 Subject: [PATCH 21/80] Reduce minimum jerk value to 0 A jerk of 0 is very possible, because Jerk in 3D printing doesn't mean the derivative of acceleration but rather the maximum instantaneous change in velocity on an axis. Fixes #2338. --- resources/definitions/fdmprinter.def.json | 49 ++++++++++++----------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 817da65247..c74bd79211 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -566,6 +566,7 @@ "unit": "mm/s", "type": "float", "default_value": 20.0, + "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -577,6 +578,7 @@ "unit": "mm/s", "type": "float", "default_value": 0.4, + "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -588,6 +590,7 @@ "unit": "mm/s", "type": "float", "default_value": 5.0, + "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -2677,7 +2680,7 @@ "description": "The maximum instantaneous velocity change of the print head.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "enabled": "resolveOrValue('jerk_enabled')", @@ -2690,7 +2693,7 @@ "description": "The maximum instantaneous velocity change with which infill is printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2704,7 +2707,7 @@ "description": "The maximum instantaneous velocity change with which the walls are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2718,7 +2721,7 @@ "description": "The maximum instantaneous velocity change with which the outermost walls are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall", @@ -2732,7 +2735,7 @@ "description": "The maximum instantaneous velocity change with which all inner walls are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall", @@ -2748,7 +2751,7 @@ "description": "The maximum instantaneous velocity change with which top surface skin layers are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_topbottom", @@ -2762,7 +2765,7 @@ "description": "The maximum instantaneous velocity change with which top/bottom layers are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2776,7 +2779,7 @@ "description": "The maximum instantaneous velocity change with which the support structure is printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2794,7 +2797,7 @@ "type": "float", "default_value": 20, "value": "jerk_support", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_enable", "limit_to_extruder": "support_infill_extruder_nr", @@ -2809,7 +2812,7 @@ "type": "float", "default_value": 20, "value": "jerk_support", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and support_enable", "limit_to_extruder": "support_interface_extruder_nr", @@ -2825,7 +2828,7 @@ "type": "float", "default_value": 20, "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and support_enable", "limit_to_extruder": "support_roof_extruder_nr", @@ -2840,7 +2843,7 @@ "type": "float", "default_value": 20, "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and support_enable", "limit_to_extruder": "support_bottom_extruder_nr", @@ -2857,7 +2860,7 @@ "description": "The maximum instantaneous velocity change with which the prime tower is printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2873,7 +2876,7 @@ "unit": "mm/s", "type": "float", "default_value": 30, - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "value": "jerk_print if magic_spiralize else 30", "enabled": "resolveOrValue('jerk_enabled')", @@ -2887,7 +2890,7 @@ "type": "float", "default_value": 20, "value": "jerk_print", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, @@ -2901,7 +2904,7 @@ "type": "float", "default_value": 20, "value": "jerk_layer_0", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true @@ -2914,7 +2917,7 @@ "type": "float", "default_value": 20, "value": "jerk_layer_0 * jerk_travel / jerk_print", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_extruder": true, @@ -2929,7 +2932,7 @@ "unit": "mm/s", "type": "float", "default_value": 20, - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "value": "jerk_layer_0", "enabled": "resolveOrValue('jerk_enabled')", @@ -4448,7 +4451,7 @@ "unit": "mm/s", "type": "float", "default_value": 20, - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "50", "value": "jerk_print", @@ -4465,7 +4468,7 @@ "type": "float", "default_value": 20, "value": "raft_jerk", - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "100", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", @@ -4480,7 +4483,7 @@ "type": "float", "default_value": 20, "value": "raft_jerk", - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "50", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", @@ -4495,7 +4498,7 @@ "type": "float", "default_value": 20, "value": "raft_jerk", - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "50", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", @@ -5803,7 +5806,7 @@ "description": "The maximum instantaneous velocity change while performing ironing.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_topbottom", From e394811ce1907296a3b5390777eefd212fbe13c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Wed, 30 Aug 2017 18:01:03 +0200 Subject: [PATCH 22/80] Relocate locales to proper locations Fixes https://github.com/Ultimaker/Uranium/issues/246 Fixes https://github.com/Ultimaker/Uranium/issues/277 --- resources/i18n/{jp => ja}/cura.po | 0 resources/i18n/{jp => ja}/fdmextruder.def.json.po | 0 resources/i18n/{jp => ja}/fdmprinter.def.json.po | 0 resources/i18n/{ptbr => pt_BR}/cura.po | 0 resources/i18n/{ptbr => pt_BR}/fdmextruder.def.json.po | 0 resources/i18n/{ptbr => pt_BR}/fdmprinter.def.json.po | 0 resources/qml/Preferences/GeneralPage.qml | 4 ++-- 7 files changed, 2 insertions(+), 2 deletions(-) rename resources/i18n/{jp => ja}/cura.po (100%) rename resources/i18n/{jp => ja}/fdmextruder.def.json.po (100%) rename resources/i18n/{jp => ja}/fdmprinter.def.json.po (100%) rename resources/i18n/{ptbr => pt_BR}/cura.po (100%) rename resources/i18n/{ptbr => pt_BR}/fdmextruder.def.json.po (100%) rename resources/i18n/{ptbr => pt_BR}/fdmprinter.def.json.po (100%) diff --git a/resources/i18n/jp/cura.po b/resources/i18n/ja/cura.po similarity index 100% rename from resources/i18n/jp/cura.po rename to resources/i18n/ja/cura.po diff --git a/resources/i18n/jp/fdmextruder.def.json.po b/resources/i18n/ja/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/jp/fdmextruder.def.json.po rename to resources/i18n/ja/fdmextruder.def.json.po diff --git a/resources/i18n/jp/fdmprinter.def.json.po b/resources/i18n/ja/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/jp/fdmprinter.def.json.po rename to resources/i18n/ja/fdmprinter.def.json.po diff --git a/resources/i18n/ptbr/cura.po b/resources/i18n/pt_BR/cura.po similarity index 100% rename from resources/i18n/ptbr/cura.po rename to resources/i18n/pt_BR/cura.po diff --git a/resources/i18n/ptbr/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ptbr/fdmextruder.def.json.po rename to resources/i18n/pt_BR/fdmextruder.def.json.po diff --git a/resources/i18n/ptbr/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ptbr/fdmprinter.def.json.po rename to resources/i18n/pt_BR/fdmprinter.def.json.po diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index e3c10071af..38ad26b3c6 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -154,11 +154,11 @@ UM.PreferencesPage append({ text: "Suomi", code: "fi" }) append({ text: "Français", code: "fr" }) append({ text: "Italiano", code: "it" }) - append({ text: "日本語", code: "jp" }) + append({ text: "日本語", code: "ja" }) append({ text: "한국어", code: "ko" }) append({ text: "Nederlands", code: "nl" }) append({ text: "Polski", code: "pl" }) - append({ text: "Português do Brasil", code: "ptbr" }) + append({ text: "Português do Brasil", code: "pt_BR" }) append({ text: "Русский", code: "ru" }) append({ text: "Türkçe", code: "tr" }) append({ text: "简体中文", code: "zh_CN" }) From 28192f5b14818324bec3ed518e7d2c179198aa11 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:13:22 +0200 Subject: [PATCH 23/80] Rename all languages to full xx_XX locale This is just moving the files. The preferences, etc. still has to be changed. Contributes to issue CURA-4263. --- resources/i18n/{de => de_DE}/cura.po | 0 resources/i18n/{de => de_DE}/fdmextruder.def.json.po | 0 resources/i18n/{de => de_DE}/fdmprinter.def.json.po | 0 resources/i18n/{en => en_US}/cura.po | 0 resources/i18n/{es => es_ES}/cura.po | 0 resources/i18n/{es => es_ES}/fdmextruder.def.json.po | 0 resources/i18n/{es => es_ES}/fdmprinter.def.json.po | 0 resources/i18n/{fi => fi_FI}/cura.po | 0 resources/i18n/{fi => fi_FI}/fdmextruder.def.json.po | 0 resources/i18n/{fi => fi_FI}/fdmprinter.def.json.po | 0 resources/i18n/{fr => fr_FR}/cura.po | 0 resources/i18n/{fr => fr_FR}/fdmextruder.def.json.po | 0 resources/i18n/{fr => fr_FR}/fdmprinter.def.json.po | 0 resources/i18n/{it => it_IT}/cura.po | 0 resources/i18n/{it => it_IT}/fdmextruder.def.json.po | 0 resources/i18n/{it => it_IT}/fdmprinter.def.json.po | 0 resources/i18n/{ja => ja_JP}/cura.po | 0 resources/i18n/{ja => ja_JP}/fdmextruder.def.json.po | 0 resources/i18n/{ja => ja_JP}/fdmprinter.def.json.po | 0 resources/i18n/{ko => ko_KR}/cura.po | 0 resources/i18n/{ko => ko_KR}/fdmextruder.def.json.po | 0 resources/i18n/{ko => ko_KR}/fdmprinter.def.json.po | 0 resources/i18n/{nl => nl_NL}/cura.po | 0 resources/i18n/{nl => nl_NL}/fdmextruder.def.json.po | 0 resources/i18n/{nl => nl_NL}/fdmprinter.def.json.po | 0 resources/i18n/{pl => pl_PL}/cura.po | 0 resources/i18n/{pl => pl_PL}/fdmextruder.def.json.po | 0 resources/i18n/{pl => pl_PL}/fdmprinter.def.json.po | 0 resources/i18n/{ru => ru_RU}/cura.po | 0 resources/i18n/{ru => ru_RU}/fdmextruder.def.json.po | 0 resources/i18n/{ru => ru_RU}/fdmprinter.def.json.po | 0 resources/i18n/{tr => tr_TR}/cura.po | 0 resources/i18n/{tr => tr_TR}/fdmextruder.def.json.po | 0 resources/i18n/{tr => tr_TR}/fdmprinter.def.json.po | 0 34 files changed, 0 insertions(+), 0 deletions(-) rename resources/i18n/{de => de_DE}/cura.po (100%) rename resources/i18n/{de => de_DE}/fdmextruder.def.json.po (100%) rename resources/i18n/{de => de_DE}/fdmprinter.def.json.po (100%) rename resources/i18n/{en => en_US}/cura.po (100%) rename resources/i18n/{es => es_ES}/cura.po (100%) rename resources/i18n/{es => es_ES}/fdmextruder.def.json.po (100%) rename resources/i18n/{es => es_ES}/fdmprinter.def.json.po (100%) rename resources/i18n/{fi => fi_FI}/cura.po (100%) rename resources/i18n/{fi => fi_FI}/fdmextruder.def.json.po (100%) rename resources/i18n/{fi => fi_FI}/fdmprinter.def.json.po (100%) rename resources/i18n/{fr => fr_FR}/cura.po (100%) rename resources/i18n/{fr => fr_FR}/fdmextruder.def.json.po (100%) rename resources/i18n/{fr => fr_FR}/fdmprinter.def.json.po (100%) rename resources/i18n/{it => it_IT}/cura.po (100%) rename resources/i18n/{it => it_IT}/fdmextruder.def.json.po (100%) rename resources/i18n/{it => it_IT}/fdmprinter.def.json.po (100%) rename resources/i18n/{ja => ja_JP}/cura.po (100%) rename resources/i18n/{ja => ja_JP}/fdmextruder.def.json.po (100%) rename resources/i18n/{ja => ja_JP}/fdmprinter.def.json.po (100%) rename resources/i18n/{ko => ko_KR}/cura.po (100%) rename resources/i18n/{ko => ko_KR}/fdmextruder.def.json.po (100%) rename resources/i18n/{ko => ko_KR}/fdmprinter.def.json.po (100%) rename resources/i18n/{nl => nl_NL}/cura.po (100%) rename resources/i18n/{nl => nl_NL}/fdmextruder.def.json.po (100%) rename resources/i18n/{nl => nl_NL}/fdmprinter.def.json.po (100%) rename resources/i18n/{pl => pl_PL}/cura.po (100%) rename resources/i18n/{pl => pl_PL}/fdmextruder.def.json.po (100%) rename resources/i18n/{pl => pl_PL}/fdmprinter.def.json.po (100%) rename resources/i18n/{ru => ru_RU}/cura.po (100%) rename resources/i18n/{ru => ru_RU}/fdmextruder.def.json.po (100%) rename resources/i18n/{ru => ru_RU}/fdmprinter.def.json.po (100%) rename resources/i18n/{tr => tr_TR}/cura.po (100%) rename resources/i18n/{tr => tr_TR}/fdmextruder.def.json.po (100%) rename resources/i18n/{tr => tr_TR}/fdmprinter.def.json.po (100%) diff --git a/resources/i18n/de/cura.po b/resources/i18n/de_DE/cura.po similarity index 100% rename from resources/i18n/de/cura.po rename to resources/i18n/de_DE/cura.po diff --git a/resources/i18n/de/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/de/fdmextruder.def.json.po rename to resources/i18n/de_DE/fdmextruder.def.json.po diff --git a/resources/i18n/de/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/de/fdmprinter.def.json.po rename to resources/i18n/de_DE/fdmprinter.def.json.po diff --git a/resources/i18n/en/cura.po b/resources/i18n/en_US/cura.po similarity index 100% rename from resources/i18n/en/cura.po rename to resources/i18n/en_US/cura.po diff --git a/resources/i18n/es/cura.po b/resources/i18n/es_ES/cura.po similarity index 100% rename from resources/i18n/es/cura.po rename to resources/i18n/es_ES/cura.po diff --git a/resources/i18n/es/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/es/fdmextruder.def.json.po rename to resources/i18n/es_ES/fdmextruder.def.json.po diff --git a/resources/i18n/es/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/es/fdmprinter.def.json.po rename to resources/i18n/es_ES/fdmprinter.def.json.po diff --git a/resources/i18n/fi/cura.po b/resources/i18n/fi_FI/cura.po similarity index 100% rename from resources/i18n/fi/cura.po rename to resources/i18n/fi_FI/cura.po diff --git a/resources/i18n/fi/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/fi/fdmextruder.def.json.po rename to resources/i18n/fi_FI/fdmextruder.def.json.po diff --git a/resources/i18n/fi/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/fi/fdmprinter.def.json.po rename to resources/i18n/fi_FI/fdmprinter.def.json.po diff --git a/resources/i18n/fr/cura.po b/resources/i18n/fr_FR/cura.po similarity index 100% rename from resources/i18n/fr/cura.po rename to resources/i18n/fr_FR/cura.po diff --git a/resources/i18n/fr/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/fr/fdmextruder.def.json.po rename to resources/i18n/fr_FR/fdmextruder.def.json.po diff --git a/resources/i18n/fr/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/fr/fdmprinter.def.json.po rename to resources/i18n/fr_FR/fdmprinter.def.json.po diff --git a/resources/i18n/it/cura.po b/resources/i18n/it_IT/cura.po similarity index 100% rename from resources/i18n/it/cura.po rename to resources/i18n/it_IT/cura.po diff --git a/resources/i18n/it/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/it/fdmextruder.def.json.po rename to resources/i18n/it_IT/fdmextruder.def.json.po diff --git a/resources/i18n/it/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/it/fdmprinter.def.json.po rename to resources/i18n/it_IT/fdmprinter.def.json.po diff --git a/resources/i18n/ja/cura.po b/resources/i18n/ja_JP/cura.po similarity index 100% rename from resources/i18n/ja/cura.po rename to resources/i18n/ja_JP/cura.po diff --git a/resources/i18n/ja/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ja/fdmextruder.def.json.po rename to resources/i18n/ja_JP/fdmextruder.def.json.po diff --git a/resources/i18n/ja/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ja/fdmprinter.def.json.po rename to resources/i18n/ja_JP/fdmprinter.def.json.po diff --git a/resources/i18n/ko/cura.po b/resources/i18n/ko_KR/cura.po similarity index 100% rename from resources/i18n/ko/cura.po rename to resources/i18n/ko_KR/cura.po diff --git a/resources/i18n/ko/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ko/fdmextruder.def.json.po rename to resources/i18n/ko_KR/fdmextruder.def.json.po diff --git a/resources/i18n/ko/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ko/fdmprinter.def.json.po rename to resources/i18n/ko_KR/fdmprinter.def.json.po diff --git a/resources/i18n/nl/cura.po b/resources/i18n/nl_NL/cura.po similarity index 100% rename from resources/i18n/nl/cura.po rename to resources/i18n/nl_NL/cura.po diff --git a/resources/i18n/nl/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/nl/fdmextruder.def.json.po rename to resources/i18n/nl_NL/fdmextruder.def.json.po diff --git a/resources/i18n/nl/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/nl/fdmprinter.def.json.po rename to resources/i18n/nl_NL/fdmprinter.def.json.po diff --git a/resources/i18n/pl/cura.po b/resources/i18n/pl_PL/cura.po similarity index 100% rename from resources/i18n/pl/cura.po rename to resources/i18n/pl_PL/cura.po diff --git a/resources/i18n/pl/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/pl/fdmextruder.def.json.po rename to resources/i18n/pl_PL/fdmextruder.def.json.po diff --git a/resources/i18n/pl/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/pl/fdmprinter.def.json.po rename to resources/i18n/pl_PL/fdmprinter.def.json.po diff --git a/resources/i18n/ru/cura.po b/resources/i18n/ru_RU/cura.po similarity index 100% rename from resources/i18n/ru/cura.po rename to resources/i18n/ru_RU/cura.po diff --git a/resources/i18n/ru/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ru/fdmextruder.def.json.po rename to resources/i18n/ru_RU/fdmextruder.def.json.po diff --git a/resources/i18n/ru/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ru/fdmprinter.def.json.po rename to resources/i18n/ru_RU/fdmprinter.def.json.po diff --git a/resources/i18n/tr/cura.po b/resources/i18n/tr_TR/cura.po similarity index 100% rename from resources/i18n/tr/cura.po rename to resources/i18n/tr_TR/cura.po diff --git a/resources/i18n/tr/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/tr/fdmextruder.def.json.po rename to resources/i18n/tr_TR/fdmextruder.def.json.po diff --git a/resources/i18n/tr/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/tr/fdmprinter.def.json.po rename to resources/i18n/tr_TR/fdmprinter.def.json.po From 46e4902df39956916d6ed660a04a6bdac2026684 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:16:31 +0200 Subject: [PATCH 24/80] Ignore new en_US locale Contributes to issue CURA-4263. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6a33e104a9..2993d64447 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ __pycache__ *.mo docs/html *.log -resources/i18n/en +resources/i18n/en_US resources/i18n/7s resources/i18n/x-test resources/firmware From 91c5da7054715b6d55be69db5b53c8a46326b141 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:17:18 +0200 Subject: [PATCH 25/80] Remove auto-generated file It should never have been committed. Contributes to issue CURA-4263. --- resources/i18n/en_US/cura.po | 3786 ---------------------------------- 1 file changed, 3786 deletions(-) delete mode 100644 resources/i18n/en_US/cura.po diff --git a/resources/i18n/en_US/cura.po b/resources/i18n/en_US/cura.po deleted file mode 100644 index 3da9b321d1..0000000000 --- a/resources/i18n/en_US/cura.po +++ /dev/null @@ -1,3786 +0,0 @@ -# Cura -# Copyright (C) 2017 Ultimaker -# This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Cura 2.7\n" -"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-02 16:53+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: en_US\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 -msgctxt "@action" -msgid "Machine Settings" -msgstr "Machine Settings" - -#: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 -msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "X-Ray" - -#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "X3D File" -msgstr "X3D File" - -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:16 -msgctxt "@item:inlistbox" -msgid "GCode File" -msgstr "GCode File" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D printing" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 -msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Print with Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 -msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Print with " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Enable Scan devices..." - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Show Changelog" - -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Flatten active settings" - -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profile has been flattened & activated." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 -msgctxt "@item:inmenu" -msgid "USB printing" -msgstr "USB printing" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print via USB" -msgstr "Print via USB" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 -msgctxt "@info:tooltip" -msgid "Print via USB" -msgstr "Print via USB" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 -msgctxt "@info:status" -msgid "Connected via USB" -msgstr "Connected via USB" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 -msgctxt "@info:status" -msgid "Unable to start a new job because the printer is busy or not connected." -msgstr "Unable to start a new job because the printer is busy or not connected." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 -msgctxt "@info:status" -msgid "This printer does not support USB printing because it uses UltiGCode flavor." -msgstr "This printer does not support USB printing because it uses UltiGCode flavor." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 -msgctxt "@info:status" -msgid "Unable to start a new job because the printer does not support usb printing." -msgstr "Unable to start a new job because the printer does not support usb printing." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 -msgctxt "@info" -msgid "Unable to update firmware because there are no printers connected." -msgstr "Unable to update firmware because there are no printers connected." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 -#, python-format -msgctxt "@info" -msgid "Could not find firmware required for the printer at %s." -msgstr "Could not find firmware required for the printer at %s." - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G File" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Save to Removable Drive" -msgstr "Save to Removable Drive" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 -#, python-brace-format -msgctxt "@item:inlistbox" -msgid "Save to Removable Drive {0}" -msgstr "Save to Removable Drive {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 -#, python-brace-format -msgctxt "@info:progress" -msgid "Saving to Removable Drive {0}" -msgstr "Saving to Removable Drive {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 -#, python-brace-format -msgctxt "@info:status" -msgid "Could not save to {0}: {1}" -msgstr "Could not save to {0}: {1}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Saved to Removable Drive {0} as {1}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Eject" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Eject removable device {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 -#, python-brace-format -msgctxt "@info:status" -msgid "Could not save to removable drive {0}: {1}" -msgstr "Could not save to removable drive {0}: {1}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 -#, python-brace-format -msgctxt "@info:status" -msgid "Ejected {0}. You can now safely remove the drive." -msgstr "Ejected {0}. You can now safely remove the drive." - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to eject {0}. Another program may be using the drive." -msgstr "Failed to eject {0}. Another program may be using the drive." - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:68 -msgctxt "@item:intext" -msgid "Removable Drive" -msgstr "Removable Drive" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Print over network" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Print over network" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Access to the printer requested. Please approve the request on the printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -msgctxt "@info:status" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -msgctxt "@action:button" -msgid "Retry" -msgstr "Retry" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Re-send the access request" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Access to the printer accepted" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "No access to print with this printer. Unable to send print job." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Request Access" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Send access request to the printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Connected over the network. Please approve the access request on the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Connected over the network." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Connected over the network. No access to control the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 -msgctxt "@info:status" -msgid "Access request was denied on the printer." -msgstr "Access request was denied on the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 -msgctxt "@info:status" -msgid "Access request failed due to a timeout." -msgstr "Access request failed due to a timeout." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 -msgctxt "@info:status" -msgid "The connection with the network was lost." -msgstr "The connection with the network was lost." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 -msgctxt "@info:status" -msgid "The connection with the printer was lost. Check your printer to see if it is connected." -msgstr "The connection with the printer was lost. Check your printer to see if it is connected." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 -#, python-format -msgctxt "@info:status" -msgid "Unable to start a new print job, printer is busy. Current printer status is %s." -msgstr "Unable to start a new print job, printer is busy. Current printer status is %s." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 -#, python-brace-format -msgctxt "@info:status" -msgid "Unable to start a new print job. No Printcore loaded in slot {0}" -msgstr "Unable to start a new print job. No Printcore loaded in slot {0}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 -#, python-brace-format -msgctxt "@info:status" -msgid "Unable to start a new print job. No material loaded in slot {0}" -msgstr "Unable to start a new print job. No material loaded in slot {0}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 -#, python-brace-format -msgctxt "@label" -msgid "Not enough material for spool {0}." -msgstr "Not enough material for spool {0}." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 -#, python-brace-format -msgctxt "@label" -msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." -msgstr "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Are you sure you wish to print with the selected configuration?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Mismatched configuration" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Sending data to printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancel" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 -msgctxt "@info:status" -msgid "Unable to send data to printer. Is another job still active?" -msgstr "Unable to send data to printer. Is another job still active?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Aborting print..." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 -msgctxt "@label:MonitorStatus" -msgid "Print aborted. Please check the printer" -msgstr "Print aborted. Please check the printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 -msgctxt "@label:MonitorStatus" -msgid "Pausing print..." -msgstr "Pausing print..." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 -msgctxt "@label:MonitorStatus" -msgid "Resuming print..." -msgstr "Resuming print..." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sync with your printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Would you like to use your current printer configuration in Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 -msgctxt "@action" -msgid "Connect via Network" -msgstr "Connect via Network" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 -msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 -msgctxt "@item:inlistbox" -msgid "SolidWorks part file" -msgstr "SolidWorks part file" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 -msgctxt "@item:inlistbox" -msgid "SolidWorks assembly file" -msgstr "SolidWorks assembly file" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 -msgid "Configure" -msgstr "Configure" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Error while starting %s!" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 -msgid "Modify G-Code" -msgstr "Modify G-Code" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 -msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura collects anonymised slicing statistics. You can disable this in the preferences." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 -msgctxt "@action:button" -msgid "Dismiss" -msgstr "Dismiss" - -#: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "Cura 15.04 profiles" -msgstr "Cura 15.04 profiles" - -#: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "G-code File" -msgstr "G-code File" - -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Layers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 -msgctxt "@info:status" -msgid "Cura does not accurately display layers when Wire Printing is enabled" -msgstr "Cura does not accurately display layers when Wire Printing is enabled" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "JPG Image" -msgstr "JPG Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "JPEG Image" -msgstr "JPEG Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:22 -msgctxt "@item:inlistbox" -msgid "PNG Image" -msgstr "PNG Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:26 -msgctxt "@item:inlistbox" -msgid "BMP Image" -msgstr "BMP Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:30 -msgctxt "@item:inlistbox" -msgid "GIF Image" -msgstr "GIF Image" - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 -msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "The selected material is incompatible with the selected machine or configuration." - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 -#, python-brace-format -msgctxt "@info:status" -msgid "Unable to slice with the current settings. The following settings have errors: {0}" -msgstr "Unable to slice with the current settings. The following settings have errors: {0}" - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 -msgctxt "@info:status" -msgid "Unable to slice because the prime tower or prime position(s) are invalid." -msgstr "Unable to slice because the prime tower or prime position(s) are invalid." - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 -msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 -msgctxt "@info:status" -msgid "Processing Layers" -msgstr "Processing Layers" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 -msgctxt "@label" -msgid "Per Model Settings" -msgstr "Per Model Settings" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 -msgctxt "@info:tooltip" -msgid "Configure Per Model Settings" -msgstr "Configure Per Model Settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 -msgctxt "@title:tab" -msgid "Recommended" -msgstr "Recommended" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 -msgctxt "@title:tab" -msgid "Custom" -msgstr "Custom" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/__init__.py:30 -#: /home/ruben/Projects/Cura/plugins/3MFReader/__init__.py:36 -msgctxt "@item:inlistbox" -msgid "3MF File" -msgstr "3MF File" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 -msgctxt "@label" -msgid "Nozzle" -msgstr "Nozzle" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 -msgid "Browse plugins" -msgstr "Browse plugins" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 -msgctxt "@window:title" -msgid "Plugin browser" -msgstr "Plugin browser" - -#: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Solid" - -#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "G File" -msgstr "G File" - -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 -msgctxt "@info:status" -msgid "Parsing G-code" -msgstr "Parsing G-code" - -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 -msgctxt "@info:generic" -msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." -msgstr "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." - -#: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 -#: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "Cura Profile" -msgstr "Cura Profile" - -#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 -msgctxt "@item:inlistbox" -msgid "3MF file" -msgstr "3MF file" - -#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:38 -msgctxt "@item:inlistbox" -msgid "Cura Project 3MF file" -msgstr "Cura Project 3MF file" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 -msgctxt "@action" -msgid "Select upgrades" -msgstr "Select upgrades" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py:12 -msgctxt "@action" -msgid "Upgrade Firmware" -msgstr "Upgrade Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Checkup" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 -msgctxt "@action" -msgid "Level build plate" -msgstr "Level build plate" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Pre-sliced file {0}" - -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 -msgctxt "@item:material" -msgid "No material loaded" -msgstr "No material loaded" - -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 -msgctxt "@item:material" -msgid "Unknown material" -msgstr "Unknown material" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Finding new location for objects" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "Unable to find a location within the build volume for all objects" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 -msgctxt "@title:window" -msgid "File Already Exists" -msgstr "File Already Exists" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 -#, python-brace-format -msgctxt "@label" -msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "The file {0} already exists. Are you sure you want to overwrite it?" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 -msgctxt "@label" -msgid "Custom" -msgstr "Custom" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 -msgctxt "@label" -msgid "Custom Material" -msgstr "Custom Material" - -#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 -msgctxt "@info:status Has a cancel button next to it." -msgid "The selected material diameter causes the material to become incompatible with the current printer." -msgstr "The selected material diameter causes the material to become incompatible with the current printer." - -#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 -msgctxt "@action:button" -msgid "Undo" -msgstr "Undo" - -#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 -msgctxt "@action" -msgid "Undo changing the material diameter." -msgstr "Undo changing the material diameter." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to export profile to {0}: {1}" -msgstr "Failed to export profile to {0}: {1}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Failed to export profile to {0}: Writer plugin reported failure." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 -#, python-brace-format -msgctxt "@info:status" -msgid "Exported profile to {0}" -msgstr "Exported profile to {0}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to import profile from {0}: {1}" -msgstr "Failed to import profile from {0}: {1}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 -#, python-brace-format -msgctxt "@info:status" -msgid "Successfully imported profile {0}" -msgstr "Successfully imported profile {0}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 -#, python-brace-format -msgctxt "@info:status" -msgid "Profile {0} has an unknown file type or is corrupted." -msgstr "Profile {0} has an unknown file type or is corrupted." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 -msgctxt "@label" -msgid "Custom profile" -msgstr "Custom profile" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 -msgctxt "@info:status" -msgid "Profile is missing a quality type." -msgstr "Profile is missing a quality type." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 -#, python-brace-format -msgctxt "@info:status" -msgid "Could not find a quality type {0} for the current configuration." -msgstr "Could not find a quality type {0} for the current configuration." - -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 -msgctxt "@info:status" -msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." -msgstr "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." - -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 -msgctxt "@info:status" -msgid "Multiplying and placing objects" -msgstr "Multiplying and placing objects" - -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 -msgctxt "@title:window" -msgid "Crash Report" -msgstr "Crash Report" - -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" -msgid "" -"

A fatal exception has occurred that we could not recover from!

\n" -"

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" -" " -msgstr "" -"

A fatal exception has occurred that we could not recover from!

\n" -"

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" -" " - -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Open Web Page" - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 -msgctxt "@info:progress" -msgid "Loading machines..." -msgstr "Loading machines..." - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 -msgctxt "@info:progress" -msgid "Setting up scene..." -msgstr "Setting up scene..." - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 -msgctxt "@info:progress" -msgid "Loading interface..." -msgstr "Loading interface..." - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 -#, python-format -msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." -msgid "%(width).1f x %(depth).1f x %(height).1f mm" -msgstr "%(width).1f x %(depth).1f x %(height).1f mm" - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 -#, python-brace-format -msgctxt "@info:status" -msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" -msgstr "Only one G-code file can be loaded at a time. Skipped importing {0}" - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 -#, python-brace-format -msgctxt "@info:status" -msgid "Can't open any other file if G-code is loading. Skipped importing {0}" -msgstr "Can't open any other file if G-code is loading. Skipped importing {0}" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Machine Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Printer" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 -msgctxt "@label" -msgid "Printer Settings" -msgstr "Printer Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 -msgctxt "@label" -msgid "X (Width)" -msgstr "X (Width)" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 -msgctxt "@label" -msgid "mm" -msgstr "mm" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 -msgctxt "@label" -msgid "Y (Depth)" -msgstr "Y (Depth)" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 -msgctxt "@label" -msgid "Z (Height)" -msgstr "Z (Height)" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 -msgctxt "@label" -msgid "Build plate shape" -msgstr "Build plate shape" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 -msgctxt "@option:check" -msgid "Origin at center" -msgstr "Origin at center" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 -msgctxt "@option:check" -msgid "Heated bed" -msgstr "Heated bed" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 -msgctxt "@label" -msgid "Gcode flavor" -msgstr "Gcode flavor" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 -msgctxt "@label" -msgid "Printhead Settings" -msgstr "Printhead Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 -msgctxt "@label" -msgid "X min" -msgstr "X min" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 -msgctxt "@label" -msgid "Y min" -msgstr "Y min" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 -msgctxt "@label" -msgid "X max" -msgstr "X max" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 -msgctxt "@label" -msgid "Y max" -msgstr "Y max" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 -msgctxt "@label" -msgid "Gantry height" -msgstr "Gantry height" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 -msgctxt "@label" -msgid "Number of Extruders" -msgstr "Number of Extruders" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@label" -msgid "Material diameter" -msgstr "Material diameter" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Nozzle size" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 -msgctxt "@label" -msgid "Start Gcode" -msgstr "Start Gcode" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 -msgctxt "@tooltip" -msgid "Gcode commands to be executed at the very start." -msgstr "Gcode commands to be executed at the very start." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 -msgctxt "@label" -msgid "End Gcode" -msgstr "End Gcode" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 -msgctxt "@tooltip" -msgid "Gcode commands to be executed at the very end." -msgstr "Gcode commands to be executed at the very end." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 -msgctxt "@label" -msgid "Nozzle Settings" -msgstr "Nozzle Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 -msgctxt "@label" -msgid "Nozzle offset X" -msgstr "Nozzle offset X" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 -msgctxt "@label" -msgid "Nozzle offset Y" -msgstr "Nozzle offset Y" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 -msgctxt "@label" -msgid "Extruder Start Gcode" -msgstr "Extruder Start Gcode" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 -msgctxt "@label" -msgid "Extruder End Gcode" -msgstr "Extruder End Gcode" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D Settings" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Save" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Print to: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Extruder Temperature: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Bed Temperature: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Print" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Changelog" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Close" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:22 -msgctxt "@title:window" -msgid "Firmware Update" -msgstr "Firmware Update" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:42 -msgctxt "@label" -msgid "Firmware update completed." -msgstr "Firmware update completed." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:47 -msgctxt "@label" -msgid "Starting firmware update, this may take a while." -msgstr "Starting firmware update, this may take a while." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:52 -msgctxt "@label" -msgid "Updating firmware." -msgstr "Updating firmware." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:61 -msgctxt "@label" -msgid "Firmware update failed due to an unknown error." -msgstr "Firmware update failed due to an unknown error." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:64 -msgctxt "@label" -msgid "Firmware update failed due to an communication error." -msgstr "Firmware update failed due to an communication error." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:67 -msgctxt "@label" -msgid "Firmware update failed due to an input/output error." -msgstr "Firmware update failed due to an input/output error." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:70 -msgctxt "@label" -msgid "Firmware update failed due to missing firmware." -msgstr "Firmware update failed due to missing firmware." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:73 -msgctxt "@label" -msgid "Unknown error code: %1" -msgstr "Unknown error code: %1" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 -msgctxt "@title:window" -msgid "Connect to Networked Printer" -msgstr "Connect to Networked Printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 -msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Add" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 -msgctxt "@action:button" -msgid "Edit" -msgstr "Edit" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 -msgctxt "@action:button" -msgid "Remove" -msgstr "Remove" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 -msgctxt "@action:button" -msgid "Refresh" -msgstr "Refresh" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 -msgctxt "@label" -msgid "If your printer is not listed, read the network printing troubleshooting guide" -msgstr "If your printer is not listed, read the network printing troubleshooting guide" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 -msgctxt "@label" -msgid "Type" -msgstr "Type" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -msgctxt "@label" -msgid "Ultimaker 3" -msgstr "Ultimaker 3" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 -msgctxt "@label" -msgid "Ultimaker 3 Extended" -msgstr "Ultimaker 3 Extended" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 -msgctxt "@label" -msgid "Unknown" -msgstr "Unknown" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 -msgctxt "@label" -msgid "Firmware version" -msgstr "Firmware version" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 -msgctxt "@label" -msgid "Address" -msgstr "Address" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -msgctxt "@label" -msgid "The printer at this address has not yet responded." -msgstr "The printer at this address has not yet responded." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -msgctxt "@action:button" -msgid "Connect" -msgstr "Connect" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -msgctxt "@title:window" -msgid "Printer Address" -msgstr "Printer Address" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Enter the IP address or hostname of your printer on the network." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -msgctxt "@action:button" -msgid "Ok" -msgstr "Ok" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Connect to a printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Load the configuration of the printer into Cura" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 -msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Activate Configuration" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 -msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks Plugin Configuration" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 -msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Default quality of the exported STL:" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Always ask" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Always use Fine quality" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Always use Coarse quality" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 -msgctxt "@action:button" -msgid "OK" -msgstr "OK" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Import SolidWorks File as STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Quality of the Exported STL" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Quality" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Coarse" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Fine" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 -msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Remember my choice" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 -msgctxt "@title:window" -msgid "Post Processing Plugin" -msgstr "Post Processing Plugin" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 -msgctxt "@label" -msgid "Post Processing Scripts" -msgstr "Post Processing Scripts" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 -msgctxt "@action" -msgid "Add a script" -msgstr "Add a script" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 -msgctxt "@label" -msgid "Settings" -msgstr "Settings" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 -msgctxt "@info:tooltip" -msgid "Change active post-processing scripts" -msgstr "Change active post-processing scripts" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "View Mode: Layers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 -msgctxt "@label" -msgid "Color scheme" -msgstr "Color scheme" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "Material Color" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Line Type" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "Compatibility Mode" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 -msgctxt "@label" -msgid "Show Travels" -msgstr "Show Travels" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 -msgctxt "@label" -msgid "Show Helpers" -msgstr "Show Helpers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 -msgctxt "@label" -msgid "Show Shell" -msgstr "Show Shell" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 -msgctxt "@label" -msgid "Show Infill" -msgstr "Show Infill" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 -msgctxt "@label" -msgid "Only Show Top Layers" -msgstr "Only Show Top Layers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 -msgctxt "@label" -msgid "Show 5 Detailed Layers On Top" -msgstr "Show 5 Detailed Layers On Top" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Top / Bottom" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Inner Wall" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 -msgctxt "@title:window" -msgid "Convert Image..." -msgstr "Convert Image..." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 -msgctxt "@info:tooltip" -msgid "The maximum distance of each pixel from \"Base.\"" -msgstr "The maximum distance of each pixel from \"Base.\"" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 -msgctxt "@action:label" -msgid "Height (mm)" -msgstr "Height (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:56 -msgctxt "@info:tooltip" -msgid "The base height from the build plate in millimeters." -msgstr "The base height from the build plate in millimeters." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:61 -msgctxt "@action:label" -msgid "Base (mm)" -msgstr "Base (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:79 -msgctxt "@info:tooltip" -msgid "The width in millimeters on the build plate." -msgstr "The width in millimeters on the build plate." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 -msgctxt "@action:label" -msgid "Width (mm)" -msgstr "Width (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 -msgctxt "@info:tooltip" -msgid "The depth in millimeters on the build plate" -msgstr "The depth in millimeters on the build plate" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 -msgctxt "@action:label" -msgid "Depth (mm)" -msgstr "Depth (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 -msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Lighter is higher" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Darker is higher" -msgstr "Darker is higher" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 -msgctxt "@info:tooltip" -msgid "The amount of smoothing to apply to the image." -msgstr "The amount of smoothing to apply to the image." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 -msgctxt "@action:label" -msgid "Smoothing" -msgstr "Smoothing" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Select settings" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 -msgctxt "@title:window" -msgid "Select Settings to Customize for this model" -msgstr "Select Settings to Customize for this model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 -msgctxt "@label:textbox" -msgid "Filter..." -msgstr "Filter..." - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 -msgctxt "@label:checkbox" -msgid "Show all" -msgstr "Show all" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 -msgctxt "@title:window" -msgid "Open Project" -msgstr "Open Project" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 -msgctxt "@action:ComboBox option" -msgid "Update existing" -msgstr "Update existing" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 -msgctxt "@action:ComboBox option" -msgid "Create new" -msgstr "Create new" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 -msgctxt "@action:title" -msgid "Summary - Cura Project" -msgstr "Summary - Cura Project" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 -msgctxt "@action:label" -msgid "Printer settings" -msgstr "Printer settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 -msgctxt "@info:tooltip" -msgid "How should the conflict in the machine be resolved?" -msgstr "How should the conflict in the machine be resolved?" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 -msgctxt "@action:label" -msgid "Type" -msgstr "Type" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:140 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:197 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:289 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:188 -msgctxt "@action:label" -msgid "Name" -msgstr "Name" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 -msgctxt "@action:label" -msgid "Profile settings" -msgstr "Profile settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 -msgctxt "@info:tooltip" -msgid "How should the conflict in the profile be resolved?" -msgstr "How should the conflict in the profile be resolved?" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 -msgctxt "@action:label" -msgid "Not in profile" -msgstr "Not in profile" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 -msgctxt "@action:label" -msgid "%1 override" -msgid_plural "%1 overrides" -msgstr[0] "%1 override" -msgstr[1] "%1 overrides" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 -msgctxt "@action:label" -msgid "Derivative from" -msgstr "Derivative from" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 -msgctxt "@action:label" -msgid "%1, %2 override" -msgid_plural "%1, %2 overrides" -msgstr[0] "%1, %2 override" -msgstr[1] "%1, %2 overrides" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 -msgctxt "@action:label" -msgid "Material settings" -msgstr "Material settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 -msgctxt "@info:tooltip" -msgid "How should the conflict in the material be resolved?" -msgstr "How should the conflict in the material be resolved?" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 -msgctxt "@action:label" -msgid "Setting visibility" -msgstr "Setting visibility" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 -msgctxt "@action:label" -msgid "Mode" -msgstr "Mode" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 -msgctxt "@action:label" -msgid "Visible settings:" -msgstr "Visible settings:" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 -msgctxt "@action:label" -msgid "%1 out of %2" -msgstr "%1 out of %2" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 -msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Loading a project will clear all models on the buildplate" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 -msgctxt "@action:button" -msgid "Open" -msgstr "Open" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:11 -msgctxt "@title:window" -msgid "Find & Update plugins" -msgstr "Find & Update plugins" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 -msgctxt "@label" -msgid "Here you can find a list of Third Party plugins." -msgstr "Here you can find a list of Third Party plugins." - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 -msgctxt "@action:button" -msgid "Upgrade" -msgstr "Upgrade" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 -msgctxt "@action:button" -msgid "Installed" -msgstr "Installed" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 -msgctxt "@action:button" -msgid "Download" -msgstr "Download" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Select Printer Upgrades" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Please select any upgrades made to this Ultimaker 2." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:45 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 -msgctxt "@title" -msgid "Build Plate Leveling" -msgstr "Build Plate Leveling" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 -msgctxt "@label" -msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." -msgstr "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 -msgctxt "@label" -msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." -msgstr "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 -msgctxt "@action:button" -msgid "Start Build Plate Leveling" -msgstr "Start Build Plate Leveling" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 -msgctxt "@action:button" -msgid "Move to Next Position" -msgstr "Move to Next Position" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 -msgctxt "@title" -msgid "Upgrade Firmware" -msgstr "Upgrade Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:38 -msgctxt "@label" -msgid "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work." -msgstr "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:48 -msgctxt "@label" -msgid "The firmware shipping with new printers works, but new versions tend to have more features and improvements." -msgstr "The firmware shipping with new printers works, but new versions tend to have more features and improvements." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 -msgctxt "@action:button" -msgid "Automatically upgrade Firmware" -msgstr "Automatically upgrade Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:72 -msgctxt "@action:button" -msgid "Upload custom Firmware" -msgstr "Upload custom Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:83 -msgctxt "@title:window" -msgid "Select custom firmware" -msgstr "Select custom firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker Original" -msgstr "Please select any upgrades made to this Ultimaker Original" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 -msgctxt "@label" -msgid "Heated Build Plate (official kit or self-built)" -msgstr "Heated Build Plate (official kit or self-built)" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Check Printer" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Start Printer Check" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Connection: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Connected" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Not connected" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Min endstop X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Works" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Not checked" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Min endstop Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Min endstop Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Nozzle temperature check: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Stop Heating" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Start Heating" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Build plate temperature check:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Checked" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Everything is in order! You're done with your CheckUp." - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 -msgctxt "@label:MonitorStatus" -msgid "Not connected to a printer" -msgstr "Not connected to a printer" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 -msgctxt "@label:MonitorStatus" -msgid "Printer does not accept commands" -msgstr "Printer does not accept commands" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 -msgctxt "@label:MonitorStatus" -msgid "In maintenance. Please check the printer" -msgstr "In maintenance. Please check the printer" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 -msgctxt "@label:MonitorStatus" -msgid "Lost connection with the printer" -msgstr "Lost connection with the printer" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 -msgctxt "@label:MonitorStatus" -msgid "Printing..." -msgstr "Printing..." - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 -msgctxt "@label:MonitorStatus" -msgid "Paused" -msgstr "Paused" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 -msgctxt "@label:MonitorStatus" -msgid "Preparing..." -msgstr "Preparing..." - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 -msgctxt "@label:MonitorStatus" -msgid "Please remove the print" -msgstr "Please remove the print" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 -msgctxt "@label:" -msgid "Resume" -msgstr "Resume" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 -msgctxt "@label:" -msgid "Pause" -msgstr "Pause" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 -msgctxt "@label:" -msgid "Abort Print" -msgstr "Abort Print" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 -msgctxt "@window:title" -msgid "Abort print" -msgstr "Abort print" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 -msgctxt "@label" -msgid "Are you sure you want to abort the print?" -msgstr "Are you sure you want to abort the print?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Discard or Keep changes" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Profile settings" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Default" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Customized" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Always ask me this" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Discard and never ask again" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Keep and never ask again" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Discard" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Keep" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Create New Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 -msgctxt "@title" -msgid "Information" -msgstr "Information" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 -msgctxt "@label" -msgid "Display Name" -msgstr "Display Name" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:78 -msgctxt "@label" -msgid "Brand" -msgstr "Brand" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 -msgctxt "@label" -msgid "Material Type" -msgstr "Material Type" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 -msgctxt "@label" -msgid "Color" -msgstr "Color" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 -msgctxt "@label" -msgid "Properties" -msgstr "Properties" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 -msgctxt "@label" -msgid "Density" -msgstr "Density" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 -msgctxt "@label" -msgid "Diameter" -msgstr "Diameter" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 -msgctxt "@label" -msgid "Filament Cost" -msgstr "Filament Cost" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 -msgctxt "@label" -msgid "Filament weight" -msgstr "Filament weight" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 -msgctxt "@label" -msgid "Filament length" -msgstr "Filament length" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 -msgctxt "@label" -msgid "Cost per Meter" -msgstr "Cost per Meter" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 -msgctxt "@label" -msgid "This material is linked to %1 and shares some of its properties." -msgstr "This material is linked to %1 and shares some of its properties." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 -msgctxt "@label" -msgid "Unlink Material" -msgstr "Unlink Material" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 -msgctxt "@label" -msgid "Description" -msgstr "Description" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 -msgctxt "@label" -msgid "Adhesion Information" -msgstr "Adhesion Information" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 -msgctxt "@label" -msgid "Print settings" -msgstr "Print settings" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 -msgctxt "@title:tab" -msgid "Setting Visibility" -msgstr "Setting Visibility" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 -msgctxt "@label:textbox" -msgid "Check all" -msgstr "Check all" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 -msgctxt "@info:status" -msgid "Calculated" -msgstr "Calculated" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 -msgctxt "@title:column" -msgid "Setting" -msgstr "Setting" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 -msgctxt "@title:column" -msgid "Profile" -msgstr "Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 -msgctxt "@title:column" -msgid "Current" -msgstr "Current" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 -msgctxt "@title:column" -msgid "Unit" -msgstr "Unit" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 -msgctxt "@title:tab" -msgid "General" -msgstr "General" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:128 -msgctxt "@label" -msgid "Interface" -msgstr "Interface" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:139 -msgctxt "@label" -msgid "Language:" -msgstr "Language:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 -msgctxt "@label" -msgid "Currency:" -msgstr "Currency:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 -msgctxt "@label" -msgid "Theme:" -msgstr "Theme:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 -msgctxt "@label" -msgid "You will need to restart the application for these changes to have effect." -msgstr "You will need to restart the application for these changes to have effect." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 -msgctxt "@info:tooltip" -msgid "Slice automatically when changing settings." -msgstr "Slice automatically when changing settings." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 -msgctxt "@option:check" -msgid "Slice automatically" -msgstr "Slice automatically" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 -msgctxt "@label" -msgid "Viewport behavior" -msgstr "Viewport behavior" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 -msgctxt "@info:tooltip" -msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." -msgstr "Highlight unsupported areas of the model in red. Without support these areas will not print properly." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 -msgctxt "@option:check" -msgid "Display overhang" -msgstr "Display overhang" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 -msgctxt "@info:tooltip" -msgid "Moves the camera so the model is in the center of the view when a model is selected" -msgstr "Moves the camera so the model is in the center of the view when a model is selected" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 -msgctxt "@action:button" -msgid "Center camera when item is selected" -msgstr "Center camera when item is selected" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 -msgctxt "@info:tooltip" -msgid "Should the default zoom behavior of cura be inverted?" -msgstr "Should the default zoom behavior of cura be inverted?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 -msgctxt "@action:button" -msgid "Invert the direction of camera zoom." -msgstr "Invert the direction of camera zoom." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 -msgctxt "@info:tooltip" -msgid "Should zooming move in the direction of the mouse?" -msgstr "Should zooming move in the direction of the mouse?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 -msgctxt "@action:button" -msgid "Zoom toward mouse direction" -msgstr "Zoom toward mouse direction" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 -msgctxt "@info:tooltip" -msgid "Should models on the platform be moved so that they no longer intersect?" -msgstr "Should models on the platform be moved so that they no longer intersect?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 -msgctxt "@option:check" -msgid "Ensure models are kept apart" -msgstr "Ensure models are kept apart" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 -msgctxt "@info:tooltip" -msgid "Should models on the platform be moved down to touch the build plate?" -msgstr "Should models on the platform be moved down to touch the build plate?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 -msgctxt "@option:check" -msgid "Automatically drop models to the build plate" -msgstr "Automatically drop models to the build plate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 -msgctxt "@info:tooltip" -msgid "Show caution message in gcode reader." -msgstr "Show caution message in gcode reader." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 -msgctxt "@option:check" -msgid "Caution message in gcode reader" -msgstr "Caution message in gcode reader" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 -msgctxt "@info:tooltip" -msgid "Should layer be forced into compatibility mode?" -msgstr "Should layer be forced into compatibility mode?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 -msgctxt "@option:check" -msgid "Force layer view compatibility mode (restart required)" -msgstr "Force layer view compatibility mode (restart required)" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 -msgctxt "@label" -msgid "Opening and saving files" -msgstr "Opening and saving files" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 -msgctxt "@info:tooltip" -msgid "Should models be scaled to the build volume if they are too large?" -msgstr "Should models be scaled to the build volume if they are too large?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 -msgctxt "@option:check" -msgid "Scale large models" -msgstr "Scale large models" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 -msgctxt "@info:tooltip" -msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" -msgstr "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 -msgctxt "@option:check" -msgid "Scale extremely small models" -msgstr "Scale extremely small models" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 -msgctxt "@info:tooltip" -msgid "Should a prefix based on the printer name be added to the print job name automatically?" -msgstr "Should a prefix based on the printer name be added to the print job name automatically?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 -msgctxt "@option:check" -msgid "Add machine prefix to job name" -msgstr "Add machine prefix to job name" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 -msgctxt "@info:tooltip" -msgid "Should a summary be shown when saving a project file?" -msgstr "Should a summary be shown when saving a project file?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 -msgctxt "@option:check" -msgid "Show summary dialog when saving project" -msgstr "Show summary dialog when saving project" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 -msgctxt "@info:tooltip" -msgid "Default behavior when opening a project file" -msgstr "Default behavior when opening a project file" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 -msgctxt "@window:text" -msgid "Default behavior when opening a project file: " -msgstr "Default behavior when opening a project file: " - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 -msgctxt "@option:openProject" -msgid "Always ask" -msgstr "Always ask" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 -msgctxt "@option:openProject" -msgid "Always open as a project" -msgstr "Always open as a project" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 -msgctxt "@option:openProject" -msgid "Always import models" -msgstr "Always import models" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 -msgctxt "@info:tooltip" -msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." -msgstr "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 -msgctxt "@label" -msgid "Override Profile" -msgstr "Override Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 -msgctxt "@label" -msgid "Privacy" -msgstr "Privacy" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 -msgctxt "@info:tooltip" -msgid "Should Cura check for updates when the program is started?" -msgstr "Should Cura check for updates when the program is started?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 -msgctxt "@option:check" -msgid "Check for updates on start" -msgstr "Check for updates on start" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 -msgctxt "@info:tooltip" -msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." -msgstr "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 -msgctxt "@option:check" -msgid "Send (anonymous) print information" -msgstr "Send (anonymous) print information" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 -msgctxt "@title:tab" -msgid "Printers" -msgstr "Printers" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 -msgctxt "@action:button" -msgid "Activate" -msgstr "Activate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 -msgctxt "@action:button" -msgid "Rename" -msgstr "Rename" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 -msgctxt "@label" -msgid "Printer type:" -msgstr "Printer type:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 -msgctxt "@label" -msgid "Connection:" -msgstr "Connection:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "The printer is not connected." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 -msgctxt "@label" -msgid "State:" -msgstr "State:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Waiting for someone to clear the build plate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Waiting for a printjob" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 -msgctxt "@title:tab" -msgid "Profiles" -msgstr "Profiles" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Protected profiles" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Custom profiles" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 -msgctxt "@label" -msgid "Create" -msgstr "Create" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 -msgctxt "@label" -msgid "Duplicate" -msgstr "Duplicate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 -msgctxt "@action:button" -msgid "Import" -msgstr "Import" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 -msgctxt "@action:button" -msgid "Export" -msgstr "Export" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 -msgctxt "@label %1 is printer name" -msgid "Printer: %1" -msgstr "Printer: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 -msgctxt "@action:button" -msgid "Update profile with current settings/overrides" -msgstr "Update profile with current settings/overrides" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 -msgctxt "@action:button" -msgid "Discard current changes" -msgstr "Discard current changes" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:190 -msgctxt "@action:label" -msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." -msgstr "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 -msgctxt "@action:label" -msgid "Your current settings match the selected profile." -msgstr "Your current settings match the selected profile." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 -msgctxt "@title:tab" -msgid "Global Settings" -msgstr "Global Settings" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 -msgctxt "@title:window" -msgid "Rename Profile" -msgstr "Rename Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 -msgctxt "@title:window" -msgid "Create Profile" -msgstr "Create Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 -msgctxt "@title:window" -msgid "Duplicate Profile" -msgstr "Duplicate Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 -msgctxt "@window:title" -msgid "Import Profile" -msgstr "Import Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 -msgctxt "@title:window" -msgid "Import Profile" -msgstr "Import Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 -msgctxt "@title:window" -msgid "Export Profile" -msgstr "Export Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 -msgctxt "@title:tab" -msgid "Materials" -msgstr "Materials" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:116 -msgctxt "@action:label %1 is printer name, %2 is how this printer names variants, %3 is variant name" -msgid "Printer: %1, %2: %3" -msgstr "Printer: %1, %2: %3" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:120 -msgctxt "@action:label %1 is printer name" -msgid "Printer: %1" -msgstr "Printer: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 -msgctxt "@action:button" -msgid "Create" -msgstr "Create" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 -msgctxt "@action:button" -msgid "Duplicate" -msgstr "Duplicate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 -msgctxt "@title:window" -msgid "Import Material" -msgstr "Import Material" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" -msgid "Could not import material %1: %2" -msgstr "Could not import material %1: %2" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" -msgid "Successfully imported material %1" -msgstr "Successfully imported material %1" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 -msgctxt "@title:window" -msgid "Export Material" -msgstr "Export Material" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" -msgid "Failed to export material to %1: %2" -msgstr "Failed to export material to %1: %2" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" -msgid "Successfully exported material to %1" -msgstr "Successfully exported material to %1" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Add Printer" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Printer Name:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Add Printer" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Outer Wall" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Inner Walls" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Infill" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Support Infill" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Support Interface" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Support" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Travel" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retractions" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Other" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "About Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "End-to-end solution for fused filament 3D printing." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Graphical user interface" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:119 -msgctxt "@label" -msgid "Application framework" -msgstr "Application framework" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 -msgctxt "@label" -msgid "GCode generator" -msgstr "GCode generator" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Interprocess communication library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 -msgctxt "@label" -msgid "Programming language" -msgstr "Programming language" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI framework" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI framework bindings" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:126 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C++ Binding library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:127 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Data interchange format" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:128 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Support library for scientific computing" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:129 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Support library for faster math" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:130 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Support library for handling STL files" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:131 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Support library for handling 3MF files" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Serial communication library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf discovery library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Polygon clipping library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 -msgctxt "@label" -msgid "Font" -msgstr "Font" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG icons" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 -msgctxt "@label:textbox" -msgid "Search..." -msgstr "Search..." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 -msgctxt "@action:menu" -msgid "Copy value to all extruders" -msgstr "Copy value to all extruders" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 -msgctxt "@action:menu" -msgid "Hide this setting" -msgstr "Hide this setting" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 -msgctxt "@action:menu" -msgid "Don't show this setting" -msgstr "Don't show this setting" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 -msgctxt "@action:menu" -msgid "Keep this setting visible" -msgstr "Keep this setting visible" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 -msgctxt "@action:menu" -msgid "Configure setting visiblity..." -msgstr "Configure setting visiblity..." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 -msgctxt "@label" -msgid "" -"Some hidden settings use values different from their normal calculated value.\n" -"\n" -"Click to make these settings visible." -msgstr "" -"Some hidden settings use values different from their normal calculated value.\n" -"\n" -"Click to make these settings visible." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 -msgctxt "@label Header for list of settings." -msgid "Affects" -msgstr "Affects" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 -msgctxt "@label Header for list of settings." -msgid "Affected By" -msgstr "Affected By" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 -msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" -msgstr "This setting is always shared between all extruders. Changing it here will change the value for all extruders" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 -msgctxt "@label" -msgid "The value is resolved from per-extruder values " -msgstr "The value is resolved from per-extruder values " - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 -msgctxt "@label" -msgid "" -"This setting has a value that is different from the profile.\n" -"\n" -"Click to restore the value of the profile." -msgstr "" -"This setting has a value that is different from the profile.\n" -"\n" -"Click to restore the value of the profile." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 -msgctxt "@label" -msgid "" -"This setting is normally calculated, but it currently has an absolute value set.\n" -"\n" -"Click to restore the calculated value." -msgstr "" -"This setting is normally calculated, but it currently has an absolute value set.\n" -"\n" -"Click to restore the calculated value." - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Print Setup" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Print Setup disabled\n" -"G-code files cannot be modified" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 -msgctxt "@tooltip" -msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." -msgstr "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 -msgctxt "@tooltip" -msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." -msgstr "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." - -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 -msgctxt "@title:menuitem %1 is the automatically selected material" -msgid "Automatic: %1" -msgstr "Automatic: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&View" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 -msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" -msgid "Automatic: %1" -msgstr "Automatic: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:25 -msgctxt "@label" -msgid "Print Selected Model With:" -msgid_plural "Print Selected Models With:" -msgstr[0] "Print Selected Model With:" -msgstr[1] "Print Selected Models With:" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 -msgctxt "@title:window" -msgid "Multiply Selected Model" -msgid_plural "Multiply Selected Models" -msgstr[0] "Multiply Selected Model" -msgstr[1] "Multiply Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 -msgctxt "@label" -msgid "Number of Copies" -msgstr "Number of Copies" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 -msgctxt "@title:menu menubar:file" -msgid "Open &Recent" -msgstr "Open &Recent" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 -msgctxt "@info:status" -msgid "No printer connected" -msgstr "No printer connected" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -msgctxt "@label" -msgid "Hotend" -msgstr "Hotend" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 -msgctxt "@tooltip" -msgid "The current temperature of this extruder." -msgstr "The current temperature of this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 -msgctxt "@tooltip" -msgid "The colour of the material in this extruder." -msgstr "The colour of the material in this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 -msgctxt "@tooltip" -msgid "The material in this extruder." -msgstr "The material in this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 -msgctxt "@tooltip" -msgid "The nozzle inserted in this extruder." -msgstr "The nozzle inserted in this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 -msgctxt "@label" -msgid "Build plate" -msgstr "Build plate" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 -msgctxt "@tooltip" -msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." -msgstr "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 -msgctxt "@tooltip" -msgid "The current temperature of the heated bed." -msgstr "The current temperature of the heated bed." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 -msgctxt "@tooltip of temperature input" -msgid "The temperature to pre-heat the bed to." -msgstr "The temperature to pre-heat the bed to." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 -msgctxt "@button Cancel pre-heating" -msgid "Cancel" -msgstr "Cancel" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 -msgctxt "@button" -msgid "Pre-heat" -msgstr "Pre-heat" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 -msgctxt "@tooltip of pre-heat" -msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." -msgstr "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 -msgctxt "@label" -msgid "Active print" -msgstr "Active print" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 -msgctxt "@label" -msgid "Job Name" -msgstr "Job Name" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 -msgctxt "@label" -msgid "Printing Time" -msgstr "Printing Time" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 -msgctxt "@label" -msgid "Estimated time left" -msgstr "Estimated time left" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 -msgctxt "@action:inmenu" -msgid "Toggle Fu&ll Screen" -msgstr "Toggle Fu&ll Screen" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 -msgctxt "@action:inmenu menubar:edit" -msgid "&Undo" -msgstr "&Undo" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 -msgctxt "@action:inmenu menubar:edit" -msgid "&Redo" -msgstr "&Redo" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 -msgctxt "@action:inmenu menubar:file" -msgid "&Quit" -msgstr "&Quit" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 -msgctxt "@action:inmenu" -msgid "Configure Cura..." -msgstr "Configure Cura..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 -msgctxt "@action:inmenu menubar:printer" -msgid "&Add Printer..." -msgstr "&Add Printer..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 -msgctxt "@action:inmenu menubar:printer" -msgid "Manage Pr&inters..." -msgstr "Manage Pr&inters..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 -msgctxt "@action:inmenu" -msgid "Manage Materials..." -msgstr "Manage Materials..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 -msgctxt "@action:inmenu menubar:profile" -msgid "&Update profile with current settings/overrides" -msgstr "&Update profile with current settings/overrides" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 -msgctxt "@action:inmenu menubar:profile" -msgid "&Discard current changes" -msgstr "&Discard current changes" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 -msgctxt "@action:inmenu menubar:profile" -msgid "&Create profile from current settings/overrides..." -msgstr "&Create profile from current settings/overrides..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 -msgctxt "@action:inmenu menubar:profile" -msgid "Manage Profiles..." -msgstr "Manage Profiles..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 -msgctxt "@action:inmenu menubar:help" -msgid "Show Online &Documentation" -msgstr "Show Online &Documentation" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 -msgctxt "@action:inmenu menubar:help" -msgid "Report a &Bug" -msgstr "Report a &Bug" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 -msgctxt "@action:inmenu menubar:help" -msgid "&About..." -msgstr "&About..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 -msgctxt "@action:inmenu menubar:edit" -msgid "Delete &Selected Model" -msgid_plural "Delete &Selected Models" -msgstr[0] "Delete &Selected Model" -msgstr[1] "Delete &Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 -msgctxt "@action:inmenu menubar:edit" -msgid "Center Selected Model" -msgid_plural "Center Selected Models" -msgstr[0] "Center Selected Model" -msgstr[1] "Center Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 -msgctxt "@action:inmenu menubar:edit" -msgid "Multiply Selected Model" -msgid_plural "Multiply Selected Models" -msgstr[0] "Multiply Selected Model" -msgstr[1] "Multiply Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 -msgctxt "@action:inmenu" -msgid "Delete Model" -msgstr "Delete Model" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 -msgctxt "@action:inmenu" -msgid "Ce&nter Model on Platform" -msgstr "Ce&nter Model on Platform" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 -msgctxt "@action:inmenu menubar:edit" -msgid "&Group Models" -msgstr "&Group Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 -msgctxt "@action:inmenu menubar:edit" -msgid "Ungroup Models" -msgstr "Ungroup Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 -msgctxt "@action:inmenu menubar:edit" -msgid "&Merge Models" -msgstr "&Merge Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 -msgctxt "@action:inmenu" -msgid "&Multiply Model..." -msgstr "&Multiply Model..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 -msgctxt "@action:inmenu menubar:edit" -msgid "&Select All Models" -msgstr "&Select All Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 -msgctxt "@action:inmenu menubar:edit" -msgid "&Clear Build Plate" -msgstr "&Clear Build Plate" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 -msgctxt "@action:inmenu menubar:file" -msgid "Re&load All Models" -msgstr "Re&load All Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 -msgctxt "@action:inmenu menubar:edit" -msgid "Arrange All Models" -msgstr "Arrange All Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 -msgctxt "@action:inmenu menubar:edit" -msgid "Arrange Selection" -msgstr "Arrange Selection" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 -msgctxt "@action:inmenu menubar:edit" -msgid "Reset All Model Positions" -msgstr "Reset All Model Positions" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 -msgctxt "@action:inmenu menubar:edit" -msgid "Reset All Model &Transformations" -msgstr "Reset All Model &Transformations" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 -msgctxt "@action:inmenu menubar:file" -msgid "&Open File(s)..." -msgstr "&Open File(s)..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 -msgctxt "@action:inmenu menubar:file" -msgid "&New Project..." -msgstr "&New Project..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Show Engine &Log..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 -msgctxt "@action:inmenu menubar:help" -msgid "Show Configuration Folder" -msgstr "Show Configuration Folder" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 -msgctxt "@action:menu" -msgid "Configure setting visibility..." -msgstr "Configure setting visibility..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Please load a 3D model" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Ready to slice" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Slicing..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Ready to %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Unable to Slice" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Slicing unavailable" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Prepare" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Cancel" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Select the active output device" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Open file(s)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Import all as models" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 -msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&File" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 -msgctxt "@action:inmenu menubar:file" -msgid "&Save Selection to File" -msgstr "&Save Selection to File" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 -msgctxt "@title:menu menubar:file" -msgid "Save &As..." -msgstr "Save &As..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 -msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Save project" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Edit" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 -msgctxt "@title:menu" -msgid "&View" -msgstr "&View" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Settings" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 -msgctxt "@title:menu menubar:toplevel" -msgid "&Printer" -msgstr "&Printer" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Material" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 -msgctxt "@title:menu" -msgid "&Profile" -msgstr "&Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Set as Active Extruder" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "E&xtensions" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "P&references" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Help" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 -msgctxt "@action:button" -msgid "Open File" -msgstr "Open File" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "View Mode" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 -msgctxt "@title:tab" -msgid "Settings" -msgstr "Settings" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 -msgctxt "@title:window" -msgid "New project" -msgstr "New project" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 -msgctxt "@window:title" -msgid "Install Plugin" -msgstr "Install Plugin" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 -msgctxt "@title:window" -msgid "Open File(s)" -msgstr "Open File(s)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 -msgctxt "@text:window" -msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." -msgstr "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 -msgctxt "@title:window" -msgid "Save Project" -msgstr "Save Project" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extruder %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & material" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Don't show project summary on save again" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Prepare" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 -msgctxt "@title:tab" -msgid "Print" -msgstr "Print" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 -msgctxt "@label" -msgid "Infill" -msgstr "Infill" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Empty infill will leave your model hollow with low strength." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Light (20%) infill will give your model an average strength." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Dense (50%) infill will give your model an above average strength." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Solid (100%) infill will make your model completely solid." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Gradual" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Gradual infill will gradually increase the amount of infill towards the top." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 -msgctxt "@label" -msgid "Generate Support" -msgstr "Generate Support" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 -msgctxt "@label" -msgid "Support Extruder" -msgstr "Support Extruder" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Build Plate Adhesion" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 -msgctxt "@label" -msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" -msgstr "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" - -#: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 -msgctxt "@label %1 is filled in with the name of an extruder" -msgid "Print Selected Model with %1" -msgid_plural "Print Selected Models with %1" -msgstr[0] "Print Selected Model with %1" -msgstr[1] "Print Selected Models with %1" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 -msgctxt "@title:window" -msgid "Open project file" -msgstr "Open project file" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 -msgctxt "@text:window" -msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" -msgstr "This is a Cura project file. Would you like to open it as a project or import the models from it?" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 -msgctxt "@action:button" -msgid "Open as project" -msgstr "Open as project" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 -msgctxt "@action:button" -msgid "Import models" -msgstr "Import models" - -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Engine Log" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 -msgctxt "@label" -msgid "Material" -msgstr "Material" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Click to check the material compatibility on Ultimaker.com." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profile:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." - -#: MachineSettingsAction/plugin.json -msgctxt "description" -msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" -msgstr "Provides a way to change machine settings (such as build volume, nozzle size, etc)" - -#: MachineSettingsAction/plugin.json -msgctxt "name" -msgid "Machine Settings action" -msgstr "Machine Settings action" - -#: XRayView/plugin.json -msgctxt "description" -msgid "Provides the X-Ray view." -msgstr "Provides the X-Ray view." - -#: XRayView/plugin.json -msgctxt "name" -msgid "X-Ray View" -msgstr "X-Ray View" - -#: X3DReader/plugin.json -msgctxt "description" -msgid "Provides support for reading X3D files." -msgstr "Provides support for reading X3D files." - -#: X3DReader/plugin.json -msgctxt "name" -msgid "X3D Reader" -msgstr "X3D Reader" - -#: GCodeWriter/plugin.json -msgctxt "description" -msgid "Writes GCode to a file." -msgstr "Writes GCode to a file." - -#: GCodeWriter/plugin.json -msgctxt "name" -msgid "GCode Writer" -msgstr "GCode Writer" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Dump the contents of all settings to a HTML file." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God Mode" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Shows changes since latest checked version." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Changelog" - -#: ProfileFlattener/plugin.json -msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Create a flattend quality changes profile." - -#: ProfileFlattener/plugin.json -msgctxt "name" -msgid "Profile flatener" -msgstr "Profile flatener" - -#: USBPrinting/plugin.json -msgctxt "description" -msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -msgstr "Accepts G-Code and sends them to a printer. Plugin can also update firmware." - -#: USBPrinting/plugin.json -msgctxt "name" -msgid "USB printing" -msgstr "USB printing" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Provides support for writing X3G files" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G Writer" - -#: RemovableDriveOutputDevice/plugin.json -msgctxt "description" -msgid "Provides removable drive hotplugging and writing support." -msgstr "Provides removable drive hotplugging and writing support." - -#: RemovableDriveOutputDevice/plugin.json -msgctxt "name" -msgid "Removable Drive Output Device Plugin" -msgstr "Removable Drive Output Device Plugin" - -#: UM3NetworkPrinting/plugin.json -msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers" -msgstr "Manages network connections to Ultimaker 3 printers" - -#: UM3NetworkPrinting/plugin.json -msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 Network Connection" - -#: CuraSolidWorksPlugin/plugin.json -msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" - -#: CuraSolidWorksPlugin/plugin.json -msgctxt "name" -msgid "SolidWorks Integration" -msgstr "SolidWorks Integration" - -#: PostProcessingPlugin/plugin.json -msgctxt "description" -msgid "Extension that allows for user created scripts for post processing" -msgstr "Extension that allows for user created scripts for post processing" - -#: PostProcessingPlugin/plugin.json -msgctxt "name" -msgid "Post Processing" -msgstr "Post Processing" - -#: AutoSave/plugin.json -msgctxt "description" -msgid "Automatically saves Preferences, Machines and Profiles after changes." -msgstr "Automatically saves Preferences, Machines and Profiles after changes." - -#: AutoSave/plugin.json -msgctxt "name" -msgid "Auto Save" -msgstr "Auto Save" - -#: SliceInfoPlugin/plugin.json -msgctxt "description" -msgid "Submits anonymous slice info. Can be disabled through preferences." -msgstr "Submits anonymous slice info. Can be disabled through preferences." - -#: SliceInfoPlugin/plugin.json -msgctxt "name" -msgid "Slice info" -msgstr "Slice info" - -#: XmlMaterialProfile/plugin.json -msgctxt "description" -msgid "Provides capabilities to read and write XML-based material profiles." -msgstr "Provides capabilities to read and write XML-based material profiles." - -#: XmlMaterialProfile/plugin.json -msgctxt "name" -msgid "Material Profiles" -msgstr "Material Profiles" - -#: LegacyProfileReader/plugin.json -msgctxt "description" -msgid "Provides support for importing profiles from legacy Cura versions." -msgstr "Provides support for importing profiles from legacy Cura versions." - -#: LegacyProfileReader/plugin.json -msgctxt "name" -msgid "Legacy Cura Profile Reader" -msgstr "Legacy Cura Profile Reader" - -#: GCodeProfileReader/plugin.json -msgctxt "description" -msgid "Provides support for importing profiles from g-code files." -msgstr "Provides support for importing profiles from g-code files." - -#: GCodeProfileReader/plugin.json -msgctxt "name" -msgid "GCode Profile Reader" -msgstr "GCode Profile Reader" - -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Provides the Layer view." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Layer View" - -#: VersionUpgrade/VersionUpgrade25to26/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -msgstr "Upgrades configurations from Cura 2.5 to Cura 2.6." - -#: VersionUpgrade/VersionUpgrade25to26/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.5 to 2.6" -msgstr "Version Upgrade 2.5 to 2.6" - -#: VersionUpgrade/VersionUpgrade26to27/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -msgstr "Upgrades configurations from Cura 2.6 to Cura 2.7." - -#: VersionUpgrade/VersionUpgrade26to27/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.6 to 2.7" -msgstr "Version Upgrade 2.6 to 2.7" - -#: VersionUpgrade/VersionUpgrade21to22/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -msgstr "Upgrades configurations from Cura 2.1 to Cura 2.2." - -#: VersionUpgrade/VersionUpgrade21to22/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.1 to 2.2" -msgstr "Version Upgrade 2.1 to 2.2" - -#: VersionUpgrade/VersionUpgrade22to24/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -msgstr "Upgrades configurations from Cura 2.2 to Cura 2.4." - -#: VersionUpgrade/VersionUpgrade22to24/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.2 to 2.4" -msgstr "Version Upgrade 2.2 to 2.4" - -#: ImageReader/plugin.json -msgctxt "description" -msgid "Enables ability to generate printable geometry from 2D image files." -msgstr "Enables ability to generate printable geometry from 2D image files." - -#: ImageReader/plugin.json -msgctxt "name" -msgid "Image Reader" -msgstr "Image Reader" - -#: CuraEngineBackend/plugin.json -msgctxt "description" -msgid "Provides the link to the CuraEngine slicing backend." -msgstr "Provides the link to the CuraEngine slicing backend." - -#: CuraEngineBackend/plugin.json -msgctxt "name" -msgid "CuraEngine Backend" -msgstr "CuraEngine Backend" - -#: PerObjectSettingsTool/plugin.json -msgctxt "description" -msgid "Provides the Per Model Settings." -msgstr "Provides the Per Model Settings." - -#: PerObjectSettingsTool/plugin.json -msgctxt "name" -msgid "Per Model Settings Tool" -msgstr "Per Model Settings Tool" - -#: 3MFReader/plugin.json -msgctxt "description" -msgid "Provides support for reading 3MF files." -msgstr "Provides support for reading 3MF files." - -#: 3MFReader/plugin.json -msgctxt "name" -msgid "3MF Reader" -msgstr "3MF Reader" - -#: PluginBrowser/plugin.json -msgctxt "description" -msgid "Find, manage and install new plugins." -msgstr "Find, manage and install new plugins." - -#: PluginBrowser/plugin.json -msgctxt "name" -msgid "Plugin Browser" -msgstr "Plugin Browser" - -#: SolidView/plugin.json -msgctxt "description" -msgid "Provides a normal solid mesh view." -msgstr "Provides a normal solid mesh view." - -#: SolidView/plugin.json -msgctxt "name" -msgid "Solid View" -msgstr "Solid View" - -#: GCodeReader/plugin.json -msgctxt "description" -msgid "Allows loading and displaying G-code files." -msgstr "Allows loading and displaying G-code files." - -#: GCodeReader/plugin.json -msgctxt "name" -msgid "G-code Reader" -msgstr "G-code Reader" - -#: CuraProfileWriter/plugin.json -msgctxt "description" -msgid "Provides support for exporting Cura profiles." -msgstr "Provides support for exporting Cura profiles." - -#: CuraProfileWriter/plugin.json -msgctxt "name" -msgid "Cura Profile Writer" -msgstr "Cura Profile Writer" - -#: 3MFWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing 3MF files." -msgstr "Provides support for writing 3MF files." - -#: 3MFWriter/plugin.json -msgctxt "name" -msgid "3MF Writer" -msgstr "3MF Writer" - -#: UltimakerMachineActions/plugin.json -msgctxt "description" -msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" -msgstr "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" - -#: UltimakerMachineActions/plugin.json -msgctxt "name" -msgid "Ultimaker machine actions" -msgstr "Ultimaker machine actions" - -#: CuraProfileReader/plugin.json -msgctxt "description" -msgid "Provides support for importing Cura profiles." -msgstr "Provides support for importing Cura profiles." - -#: CuraProfileReader/plugin.json -msgctxt "name" -msgid "Cura Profile Reader" -msgstr "Cura Profile Reader" From 48778a28014672d26a96532208d144639897fd16 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:35:59 +0200 Subject: [PATCH 26/80] Update language codes The folders were renamed, so they should get renamed here as well. Contributes to issue CURA-4263. --- resources/qml/Preferences/GeneralPage.qml | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 38ad26b3c6..132fd6890d 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the AGPLv3 or higher. import QtQuick 2.1 @@ -148,19 +148,19 @@ UM.PreferencesPage id: languageList Component.onCompleted: { - append({ text: "English", code: "en" }) - append({ text: "Deutsch", code: "de" }) - append({ text: "Español", code: "es" }) - append({ text: "Suomi", code: "fi" }) - append({ text: "Français", code: "fr" }) - append({ text: "Italiano", code: "it" }) - append({ text: "日本語", code: "ja" }) - append({ text: "한국어", code: "ko" }) - append({ text: "Nederlands", code: "nl" }) - append({ text: "Polski", code: "pl" }) + append({ text: "English", code: "en_US" }) + append({ text: "Deutsch", code: "de_DE" }) + append({ text: "Español", code: "es_ES" }) + append({ text: "Suomi", code: "fi_FI" }) + append({ text: "Français", code: "fr_FR" }) + append({ text: "Italiano", code: "it_IT" }) + append({ text: "日本語", code: "ja_JP" }) + append({ text: "한국어", code: "ko_KR" }) + append({ text: "Nederlands", code: "nl_NL" }) + append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) - append({ text: "Русский", code: "ru" }) - append({ text: "Türkçe", code: "tr" }) + append({ text: "Русский", code: "ru_RU" }) + append({ text: "Türkçe", code: "tr_TR" }) append({ text: "简体中文", code: "zh_CN" }) var date_object = new Date(); From 08d0d90389f7da8b3b9a95de0a6818abbfc3c753 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:49:54 +0200 Subject: [PATCH 27/80] Change Pirate language to en_7S Since it's English from the seven seas. Contributes to issue CURA-4263. --- .gitignore | 2 +- resources/qml/Preferences/GeneralPage.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2993d64447..9c9d57f175 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ __pycache__ docs/html *.log resources/i18n/en_US -resources/i18n/7s +resources/i18n/en_7S resources/i18n/x-test resources/firmware resources/materials diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 132fd6890d..452d5df794 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -166,7 +166,7 @@ UM.PreferencesPage var date_object = new Date(); if (date_object.getUTCMonth() == 8 && date_object.getUTCDate() == 19) //Only add Pirate on the 19th of September. { - append({ text: "Pirate", code: "7s" }) + append({ text: "Pirate", code: "en_7S" }) } } } From 291d30f11809c3f29f60c94f6803ac28133009dd Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 02:12:00 +0200 Subject: [PATCH 28/80] Update language preference in preferences when upgrading The language codes were all renamed, so they have to change in the .cfg file of the user as well. Contributes to issue CURA-4263. --- .../VersionUpgrade27to30.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py index a6e541be6d..1c4fad98b3 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py @@ -9,6 +9,23 @@ from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. _renamed_themes = { "cura": "cura-light" } +_renamed_i18n = { + "7s": "en_7S", + "de": "de_DE", + "en": "en_US", + "es": "es_ES", + "fi": "fi_FI", + "fr": "fr_FR", + "hu": "hu_HU", + "it": "it_IT", + "jp": "ja_JP", + "ko": "ko_KR", + "nl": "nl_NL", + "pl": "pl_PL", + "ptbr": "pt_BR", + "ru": "ru_RU", + "tr": "tr_TR" +} class VersionUpgrade27to30(VersionUpgrade): ## Gets the version number from a CFG file in Uranium's 2.7 format. @@ -50,6 +67,11 @@ class VersionUpgrade27to30(VersionUpgrade): if parser["general"]["theme"] in _renamed_themes: parser["general"]["theme"] = _renamed_themes[parser["general"]["theme"]] + #Renamed languages. + if "language" in parser["general"]: + if parser["general"]["language"] in _renamed_i18n: + parser["general"]["language"] = _renamed_i18n[parser["general"]["language"]] + # Re-serialise the file. output = io.StringIO() parser.write(output) From 1e3cfc56bef3ac8bcb8e1b8f53c755d2c1bb5d73 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 16:55:24 +0200 Subject: [PATCH 29/80] Revert "CuraApplication: Minor pep8 fix" This reverts commit ee1ba30d0eec849f78a710ee5f270b2c756402fc. --- cura/CuraApplication.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ee1c1aeec6..1b7dafd53d 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -488,7 +488,7 @@ class CuraApplication(QtApplication): f.write(data) - @pyqtSlot(str, result=QUrl) + @pyqtSlot(str, result = QUrl) def getDefaultPath(self, key): default_path = Preferences.getInstance().getValue("local_file/%s" % key) return QUrl.fromLocalFile(default_path) @@ -1128,7 +1128,7 @@ class CuraApplication(QtApplication): expandedCategoriesChanged = pyqtSignal() - @pyqtProperty("QStringList", notify=expandedCategoriesChanged) + @pyqtProperty("QStringList", notify = expandedCategoriesChanged) def expandedCategories(self): return Preferences.getInstance().getValue("cura/categories_expanded").split(";") From 546dc9ff4da4fb2b89c5600ff2f95a9e3f257e72 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 08:48:49 +0200 Subject: [PATCH 30/80] Better positioning for the material circle in the ExtruderButton --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 36b43c27fb..9cf736aa34 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -282,7 +282,7 @@ "default_arrow": [0.8, 0.8], "logo": [7.6, 1.6], - "extruder_button_material_margin": [0.50, 0.9], + "extruder_button_material_margin": [0.70, 0.9], "extruder_button_material": [0.75, 0.75], "sidebar": [35.0, 10.0], From d802c0bd26c10481a72811db6ccf8892d47785f4 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 09:14:50 +0200 Subject: [PATCH 31/80] CURA-4284 some code cleanup while debugging --- plugins/CuraEngineBackend/StartSliceJob.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 13aee06289..0f21c0d781 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -319,11 +319,13 @@ class StartSliceJob(Job): # \param message object_lists message to put the per object settings in def _handlePerObjectSettings(self, node, message): stack = node.callDecoration("getStack") - if not stack: # Check if the node has a stack attached to it and the stack has any settings in the top container. + + # Check if the node has a stack attached to it and the stack has any settings in the top container. + if not stack: return # Check all settings for relations, so we can also calculate the correct values for dependent settings. - top_of_stack = stack.getTop() #Cache for efficiency. + top_of_stack = stack.getTop() # Cache for efficiency. changed_setting_keys = set(top_of_stack.getAllKeys()) for key in top_of_stack.getAllKeys(): instance = top_of_stack.getInstance(key) @@ -339,10 +341,13 @@ class StartSliceJob(Job): setting = message.addRepeatedMessage("settings") setting.name = key extruder = int(round(float(stack.getProperty(key, "limit_to_extruder")))) - if extruder >= 0 and key not in top_of_stack.getAllKeys(): #Limited to a specific extruder, but not overridden by per-object settings. + + # Check if limited to a specific extruder, but not overridden by per-object settings. + if extruder >= 0 and key not in top_of_stack.getAllKeys(): limited_stack = ExtruderManager.getInstance().getActiveExtruderStacks()[extruder] else: - limited_stack = stack #Just take from the per-object settings itself. + limited_stack = stack + setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") Job.yieldThread() From 5bb09d73fc99a49b8f2a4f62764ebcf07636f804 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 09:46:37 +0200 Subject: [PATCH 32/80] clean --- plugins/CuraEngineBackend/StartSliceJob.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 0f21c0d781..e733a8b413 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -327,6 +327,7 @@ class StartSliceJob(Job): # Check all settings for relations, so we can also calculate the correct values for dependent settings. top_of_stack = stack.getTop() # Cache for efficiency. changed_setting_keys = set(top_of_stack.getAllKeys()) + for key in top_of_stack.getAllKeys(): instance = top_of_stack.getInstance(key) self._addRelations(changed_setting_keys, instance.definition.relations) @@ -349,6 +350,7 @@ class StartSliceJob(Job): limited_stack = stack setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") + Job.yieldThread() ## Recursive function to put all settings that require eachother for value changes in a list From f50255f1c95eda418310421a99bab6b96509ffd8 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 10:21:34 +0200 Subject: [PATCH 33/80] Disable relative_extrusion for UMs CURA-4219 --- resources/definitions/ultimaker.def.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index b11a84164a..797a05e324 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -31,6 +31,11 @@ { "minimum_value": "0", "maximum_value": "machine_width" + }, + "relative_extrusion": + { + "value": false, + "enabled": false } } } From 327c84d9ef07eac7b7bbb965a4314e3f45c74001 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 10:48:31 +0200 Subject: [PATCH 34/80] Change tool panel and checkbox text colours CURA-4148 - Change tool panel background colour to white - Change checkbox text colour to almost black --- resources/themes/cura-light/theme.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 9cf736aa34..328a65e633 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -197,7 +197,7 @@ "checkbox_border": [64, 69, 72, 255], "checkbox_border_hover": [12, 169, 227, 255], "checkbox_mark": [119, 122, 124, 255], - "checkbox_text": [166, 168, 169, 255], + "checkbox_text": [27, 27, 27, 255], "mode_switch": [255, 255, 255, 255], "mode_switch_hover": [255, 255, 255, 255], @@ -225,7 +225,7 @@ "message_progressbar_background": [255, 255, 255, 255], "message_progressbar_control": [12, 169, 227, 255], - "tool_panel_background": [31, 36, 39, 255], + "tool_panel_background": [255, 255, 255, 255], "status_offline": [0, 0, 0, 255], "status_ready": [0, 205, 0, 255], From 09bb090cd99c5374c8f1bb69638a9981a0a3c38f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 10:53:17 +0200 Subject: [PATCH 35/80] Change setting_control_text to almost black colour CURA-4148 --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 328a65e633..46bf343bed 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -166,7 +166,7 @@ "setting_control_highlight": [255, 255, 255, 0], "setting_control_border": [127, 127, 127, 255], "setting_control_border_highlight": [12, 169, 227, 255], - "setting_control_text": [127, 127, 127, 255], + "setting_control_text": [27, 27, 27, 255], "setting_control_depth_line": [127, 127, 127, 255], "setting_control_button": [127, 127, 127, 255], "setting_control_button_hover": [70, 84, 113, 255], From 5c306580120d1f0881c0459d2c38f54018fb8183 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 10:56:34 +0200 Subject: [PATCH 36/80] CURA-4284 fix relationship dependencies in per object settings --- plugins/CuraEngineBackend/StartSliceJob.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index e733a8b413..6d06d42007 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -328,12 +328,15 @@ class StartSliceJob(Job): top_of_stack = stack.getTop() # Cache for efficiency. changed_setting_keys = set(top_of_stack.getAllKeys()) + # Add all relations to changed settings as well. for key in top_of_stack.getAllKeys(): instance = top_of_stack.getInstance(key) self._addRelations(changed_setting_keys, instance.definition.relations) Job.yieldThread() - # Ensure that the engine is aware what the build extruder is + Logger.log("d", "changed_setting_keys=%s", changed_setting_keys) + + # Ensure that the engine is aware what the build extruder is. if stack.getProperty("machine_extruder_count", "value") > 1: changed_setting_keys.add("extruder_nr") @@ -344,16 +347,18 @@ class StartSliceJob(Job): extruder = int(round(float(stack.getProperty(key, "limit_to_extruder")))) # Check if limited to a specific extruder, but not overridden by per-object settings. - if extruder >= 0 and key not in top_of_stack.getAllKeys(): + if extruder >= 0 and key not in changed_setting_keys: limited_stack = ExtruderManager.getInstance().getActiveExtruderStacks()[extruder] else: limited_stack = stack setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") + Logger.log("d", "key=%s value=%s", key, setting.value) + Job.yieldThread() - ## Recursive function to put all settings that require eachother for value changes in a list + ## Recursive function to put all settings that require each other for value changes in a list # \param relations_set \type{set} Set of keys (strings) of settings that are influenced # \param relations list of relation objects that need to be checked. def _addRelations(self, relations_set, relations): From 96678b11cabe26b7afd1e0ecf309c43ef114564b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:10:42 +0200 Subject: [PATCH 37/80] Update LayerView slider according to new style CURA-4212 --- plugins/LayerView/LayerView.qml | 6 +++--- resources/themes/cura-light/theme.json | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 4c6f712d1c..743c8b8053 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -346,7 +346,7 @@ Item property real minimumRangeHandleSize: UM.Theme.getSize("slider_handle").width / 2 property real trackThickness: UM.Theme.getSize("slider_groove").width property real trackRadius: trackThickness / 2 - property real trackBorderWidth: UM.Theme.getSize("default_lining").width + property real trackBorderWidth: UM.Theme.getSize("default_lining").width / 2 property color upperHandleColor: UM.Theme.getColor("slider_handle") property color lowerHandleColor: UM.Theme.getColor("slider_handle") property color rangeHandleColor: UM.Theme.getColor("slider_groove_fill") @@ -474,8 +474,8 @@ Item anchors.horizontalCenter: parent.horizontalCenter radius: parent.handleRadius color: parent.upperHandleColor - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("slider_handle_border") + //border.width: UM.Theme.getSize("default_lining").width + //border.color: UM.Theme.getColor("slider_handle_border") visible: slider.layersVisible diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 0137830a45..8ee7b3cca8 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -188,8 +188,9 @@ "slider_groove": [245, 245, 245, 255], "slider_groove_border": [127, 127, 127, 255], "slider_groove_fill": [127, 127, 127, 255], - "slider_handle": [32, 166, 219, 255], + "slider_handle": [0, 0, 0, 255], "slider_handle_hover": [77, 182, 226, 255], + "slider_handle_border": [39, 44, 48, 255], "slider_text_background": [255, 255, 255, 255], "checkbox": [255, 255, 255, 255], @@ -334,8 +335,8 @@ "scrollbar": [0.75, 0.5], - "slider_groove": [0.5, 0.5], - "slider_handle": [1.5, 1.5], + "slider_groove": [0.3, 0.3], + "slider_handle": [1.0, 1.0], "slider_layerview_size": [1.0, 22.0], "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], From 98babfade7416abc68b389a9e9b48da2a9bed429 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 11:11:45 +0200 Subject: [PATCH 38/80] CURA-4284 remove debug logging --- plugins/CuraEngineBackend/StartSliceJob.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 6d06d42007..5a76923f7f 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -354,8 +354,6 @@ class StartSliceJob(Job): setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") - Logger.log("d", "key=%s value=%s", key, setting.value) - Job.yieldThread() ## Recursive function to put all settings that require each other for value changes in a list From 94a8d2dfc6e954e1937050248d580f53f3044586 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:15:54 +0200 Subject: [PATCH 39/80] Fix LayerView text colour CURA-4212 --- plugins/LayerView/LayerView.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 743c8b8053..29f7d46129 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -193,7 +193,7 @@ Item { text: model.name elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; @@ -262,7 +262,7 @@ Item text: label font: UM.Theme.getFont("default") elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; @@ -325,7 +325,7 @@ Item Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") } } From 0a5744b74be7b77447f65fb0ace2527fbe0c6b71 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 11 Sep 2017 11:21:31 +0200 Subject: [PATCH 40/80] Tweaked the update setting CURA-4301 --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index ccdc3cea40..dc239c15b8 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -96,7 +96,7 @@ class BuildVolume(SceneNode): self._scene_change_timer.timeout.connect(self._onSceneChangeTimerFinished) self._setting_change_timer = QTimer() - self._setting_change_timer.setInterval(100) + self._setting_change_timer.setInterval(150) self._setting_change_timer.setSingleShot(True) self._setting_change_timer.timeout.connect(self._onSettingChangeTimerFinished) From f4bfa499d4c270fa0599c2b3450378f239463e72 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:22:52 +0200 Subject: [PATCH 41/80] Remove debugging line CURA-4284 --- plugins/CuraEngineBackend/StartSliceJob.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 5a76923f7f..7f5311dd44 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -334,8 +334,6 @@ class StartSliceJob(Job): self._addRelations(changed_setting_keys, instance.definition.relations) Job.yieldThread() - Logger.log("d", "changed_setting_keys=%s", changed_setting_keys) - # Ensure that the engine is aware what the build extruder is. if stack.getProperty("machine_extruder_count", "value") > 1: changed_setting_keys.add("extruder_nr") From 08882a3f12627e5db7537ac9db6d608b70e68113 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:15:54 +0200 Subject: [PATCH 42/80] Fix LayerView text colour CURA-4212 --- plugins/LayerView/LayerView.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index ff8bfcb988..15ad15e5e7 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -211,7 +211,7 @@ Item { text: model.name elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; @@ -280,7 +280,7 @@ Item text: label font: UM.Theme.getFont("default") elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; @@ -343,7 +343,7 @@ Item Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") } } From 005b43cc5d0c6efbee465ad6817c27b347c8e233 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 11:35:40 +0200 Subject: [PATCH 43/80] CURA-4148 small fixes for layer view settings panel --- plugins/LayerView/LayerView.qml | 6 +++--- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index ff8bfcb988..15ad15e5e7 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -211,7 +211,7 @@ Item { text: model.name elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; @@ -280,7 +280,7 @@ Item text: label font: UM.Theme.getFont("default") elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; @@ -343,7 +343,7 @@ Item Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 46bf343bed..72225b87de 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -340,7 +340,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], - "layerview_menu_size": [16.5, 21.0], + "layerview_menu_size": [16.5, 22.0], "layerview_menu_size_compatibility": [22, 23.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], From 4507f6c8e23af21e44416a3c7c7395ad8aacc9ab Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 12:39:57 +0200 Subject: [PATCH 44/80] Update job name prefix when machine is changed CURA-4305 --- cura/PrintInformation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 83b5f4af69..2b7a35995b 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -80,7 +80,7 @@ class PrintInformation(QObject): self._abbr_machine = "" self._job_name = "" - Application.getInstance().globalContainerStackChanged.connect(self._setAbbreviatedMachineName) + Application.getInstance().globalContainerStackChanged.connect(self._updateJobName) Application.getInstance().fileLoaded.connect(self.setBaseName) Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) From af3b799cfaccb67f89846fc4339600edee9b6737 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 11 Sep 2017 14:23:32 +0200 Subject: [PATCH 45/80] Renamed the views to * view CURA-4212 --- plugins/LayerView/__init__.py | 2 +- plugins/SolidView/__init__.py | 2 +- plugins/XRayView/__init__.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/__init__.py b/plugins/LayerView/__init__.py index 0f6b43698a..d1c655d223 100644 --- a/plugins/LayerView/__init__.py +++ b/plugins/LayerView/__init__.py @@ -10,7 +10,7 @@ catalog = i18nCatalog("cura") def getMetaData(): return { "view": { - "name": catalog.i18nc("@item:inlistbox", "Layers"), + "name": catalog.i18nc("@item:inlistbox", "Layer view"), "view_panel": "LayerView.qml", "weight": 2 } diff --git a/plugins/SolidView/__init__.py b/plugins/SolidView/__init__.py index 67b15eb617..28ef124dcf 100644 --- a/plugins/SolidView/__init__.py +++ b/plugins/SolidView/__init__.py @@ -9,7 +9,7 @@ i18n_catalog = i18nCatalog("cura") def getMetaData(): return { "view": { - "name": i18n_catalog.i18nc("@item:inmenu", "Solid"), + "name": i18n_catalog.i18nc("@item:inmenu", "Solid view"), "weight": 0 } } diff --git a/plugins/XRayView/__init__.py b/plugins/XRayView/__init__.py index e726001216..14ab84ea4b 100644 --- a/plugins/XRayView/__init__.py +++ b/plugins/XRayView/__init__.py @@ -9,7 +9,7 @@ catalog = i18nCatalog("cura") def getMetaData(): return { "view": { - "name": catalog.i18nc("@item:inlistbox", "X-Ray"), + "name": catalog.i18nc("@item:inlistbox", "X-Ray view"), "weight": 1 } } From 485b71c0104ee0c1027f0c8c2e2ab91519e7ab3f Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 15:08:06 +0200 Subject: [PATCH 46/80] top bar improvements --- resources/qml/Topbar.qml | 24 ++++++++++++++++-------- resources/themes/cura-light/theme.json | 3 +++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 799942f0f6..930cc7c4bf 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -16,13 +16,16 @@ Rectangle anchors.left: parent.left anchors.right: parent.right height: UM.Theme.getSize("sidebar_header").height - color: "transparent" + color: base.monitoringPrint ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color") + + Behavior on color { ColorAnimation { duration: 100; } } property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property bool monitoringPrint: false signal startMonitoringPrint() signal stopMonitoringPrint() + UM.I18nCatalog { id: catalog @@ -76,21 +79,21 @@ Rectangle text: catalog.i18nc("@title:tab", "Monitor") property string iconSource: { - if(!printerConnected) + if (!printerConnected) { return UM.Theme.getIcon("tab_status_unknown"); } - else if(!printerAcceptsCommands) + else if (!printerAcceptsCommands) { return UM.Theme.getIcon("tab_status_unknown"); } - if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") + if (Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") { return UM.Theme.getIcon("tab_status_busy"); } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) + switch (Cura.MachineManager.printerOutputDevices[0].jobState) { case "printing": case "pre_print": @@ -121,7 +124,6 @@ Rectangle ExclusiveGroup { id: sidebarHeaderBarGroup } } - ToolButton { id: machineSelection @@ -142,10 +144,12 @@ Rectangle if(control.pressed) { return UM.Theme.getColor("sidebar_header_active"); - } else if(control.hovered) + } + else if(control.hovered) { return UM.Theme.getColor("sidebar_header_hover"); - } else + } + else { return UM.Theme.getColor("sidebar_header_bar"); } @@ -207,12 +211,15 @@ Rectangle rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width } style: UM.Theme.styles.combobox + visible: !base.monitoringPrint model: UM.ViewModel { } textRole: "name" + onCurrentIndexChanged: { UM.Controller.setActiveView(model.getItem(currentIndex).id); + // Update the active flag for (var i = 0; i < model.rowCount; ++i) { @@ -220,6 +227,7 @@ Rectangle model.getItem(i).active = is_active; } } + currentIndex: { for (var i = 0; i < model.rowCount; ++i) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index bbdfd0eaf8..d727425795 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -67,6 +67,9 @@ "border": [127, 127, 127, 255], "secondary": [245, 245, 245, 255], + "topbar_background_color": [255, 255, 255, 0], + "topbar_background_color_monitoring": [255, 255, 255, 255], + "topbar_button_text_active": [0, 0, 0, 255], "topbar_button_text_inactive": [128, 128, 128, 255], "topbar_button_text_hovered": [0, 0, 0, 255], From 89cbaca257c517aa52e0350ed2e680f9e64d161d Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 15:20:46 +0200 Subject: [PATCH 47/80] Hide layer view toolset when in monitoring mode --- plugins/LayerView/LayerView.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 29f7d46129..092df3fb6e 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -31,6 +31,8 @@ Item return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y); } + visible: !parent.parent.monitoringPrint + UM.PointingRectangle { id: layerViewMenu anchors.right: parent.right From cd3d4dc80fa547a170e23e469c74512da147d67d Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 16:58:07 +0200 Subject: [PATCH 48/80] CURA-4203 updated message style for light theme, add shadows --- resources/themes/cura-light/styles.qml | 1 - resources/themes/cura-light/theme.json | 25 ++++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index bb2b57509a..fa04c92d60 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -385,7 +385,6 @@ QtObject { background: Rectangle { implicitWidth: Theme.getSize("message").width - (Theme.getSize("default_margin").width * 2) implicitHeight: Theme.getSize("progressbar").height - radius: Theme.getSize("progressbar_radius").width color: control.hasOwnProperty("backgroundColor") ? control.backgroundColor : Theme.getColor("progressbar_background") } progress: Rectangle { diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d727425795..e8137cffa7 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -217,16 +217,17 @@ "tool_button_border": [39, 44, 48, 255], - "message_background": [24, 41, 77, 255], - "message_text": [255, 255, 255, 255], - "message_border": [24, 41, 77, 255], - "message_button": [255, 255, 255, 255], + + "message_background": [255, 255, 255, 255], + "message_shadow": [0, 0, 0, 120], + "message_text": [0, 0, 0, 255], + "message_button": [12, 169, 227, 255], "message_button_hover": [12, 169, 227, 255], - "message_button_active": [32, 166, 219, 255], - "message_button_text": [24, 41, 77, 255], + "message_button_active": [12, 169, 227, 255], + "message_button_text": [255, 255, 255, 255], "message_button_text_hover": [255, 255, 255, 255], "message_button_text_active": [255, 255, 255, 255], - "message_progressbar_background": [255, 255, 255, 255], + "message_progressbar_background": [200, 200, 200, 255], "message_progressbar_control": [12, 169, 227, 255], "tool_panel_background": [255, 255, 255, 255], @@ -332,9 +333,9 @@ "button_tooltip": [1.0, 1.3], "button_tooltip_arrow": [0.25, 0.25], - "progressbar": [26.0, 0.8], - "progressbar_radius": [0.4, 0.4], - "progressbar_control": [8.0, 0.8], + "progressbar": [26.0, 0.4], + "progressbar_radius": [0, 0], + "progressbar_control": [8.0, 0.4], "scrollbar": [0.75, 0.5], @@ -365,8 +366,10 @@ "wizard_progress": [10.0, 0.0], "message": [30.0, 5.0], - "message_close": [1.25, 1.25], + "message_close": [1, 1], "message_button": [6.0, 1.8], + "message_shadow": [0, 0], + "message_margin": [0, 1.0], "infill_button_margin": [0.5, 0.5], From 1d38193bcdd9c604deb41ca3a022e28baf037940 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 18:04:38 +0200 Subject: [PATCH 49/80] Fix letter 'r' alignment in logo CURA-4215 The letter 'r' in the logo was not aligned properly. --- resources/themes/cura-light/images/logo.svg | 80 ++++++++++++++++++--- 1 file changed, 72 insertions(+), 8 deletions(-) diff --git a/resources/themes/cura-light/images/logo.svg b/resources/themes/cura-light/images/logo.svg index 9a3dbdd6bd..5fa5895443 100644 --- a/resources/themes/cura-light/images/logo.svg +++ b/resources/themes/cura-light/images/logo.svg @@ -1,8 +1,72 @@ - - - - - - - - \ No newline at end of file + + + + + + image/svg+xml + + + + + + + + + + + + + From 88e971ea92634e95b27ebb5483244e3240b3825f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 18:05:49 +0200 Subject: [PATCH 50/80] Add new splash window CURA-4215 - New splash window background image - Rotating loading circle on the splash window --- cura/CuraSplashScreen.py | 97 +++++++++++++++++++++++++++++++---- resources/images/cura.png | Bin 18834 -> 117044 bytes resources/images/loading.png | Bin 0 -> 3585 bytes 3 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 resources/images/loading.png diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 1df2c39da7..ea2538d1ba 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -1,38 +1,117 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Uranium is released under the terms of the AGPLv3 or higher. +from threading import Thread, Event +import time + from PyQt5.QtCore import Qt, QCoreApplication -from PyQt5.QtGui import QPixmap, QColor, QFont, QFontMetrics +from PyQt5.QtGui import QPixmap, QColor, QFont, QFontMetrics, QImage, QPen from PyQt5.QtWidgets import QSplashScreen from UM.Resources import Resources from UM.Application import Application + class CuraSplashScreen(QSplashScreen): def __init__(self): super().__init__() self._scale = round(QFontMetrics(QCoreApplication.instance().font()).ascent() / 12) splash_image = QPixmap(Resources.getPath(Resources.Images, "cura.png")) - self.setPixmap(splash_image.scaled(splash_image.size() * self._scale)) + self.setPixmap(splash_image.scaled(splash_image.size() * 0.5 * self._scale)) + + self._current_message = "" + + self._loading_image = QImage(Resources.getPath(Resources.Images, "loading.png")) + self._loading_image = self._loading_image.scaled(30, 30, Qt.KeepAspectRatio) + self._loading_image_rotation_angle = 0 + + self._to_stop = False + self._loading_tick_thread = LoadingTickThread(self) + + def show(self): + super().show() + self._loading_tick_thread.start() + + def updateLoadingImage(self): + if self._to_stop: + return + + self._loading_image_rotation_angle -= 10 + self.repaint() def drawContents(self, painter): + if self._to_stop: + return + painter.save() - painter.setPen(QColor(0, 0, 0, 255)) + painter.setPen(QColor(255, 255, 255, 255)) version = Application.getInstance().getVersion().split("-") buildtype = Application.getInstance().getBuildType() if buildtype: - version[0] += " (%s)" %(buildtype) + version[0] += " (%s)" % buildtype - font = QFont() # Using system-default font here - font.setPointSize(20) + # draw version text + font = QFont() # Using system-default font here + font.setPointSize(38) painter.setFont(font) - painter.drawText(0, 0, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) + painter.drawText(230, 88, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) - painter.drawText(0, 0, 330 * self._scale, 255 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[1]) + painter.drawText(280, 77, 330 * self._scale, 255 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[1]) + + # draw the loading image + pen = QPen() + pen.setWidth(4 * self._scale) + pen.setColor(QColor(255, 255, 255, 255)) + painter.setPen(pen) + painter.drawArc(130, 495, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + + # draw message text + if self._current_message: + font = QFont() # Using system-default font here + font.setPointSize(16) + painter.setFont(font) + painter.drawText(200, 295, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, + self._current_message) painter.restore() super().drawContents(painter) + + def showMessage(self, message, *args, **kwargs): + if self._to_stop: + return + + self._current_message = message + self.messageChanged.emit(message) + self.repaint() + + def close(self): + # set stop flags + self._to_stop = True + self._loading_tick_thread.setToStop() + super().close() + + +class LoadingTickThread(Thread): + + def __init__(self, splash): + super().__init__(daemon = True) + self._splash = splash + self._to_stop = False + self._time_interval = 0.05 + self._event = Event() + + def setToStop(self): + self._to_stop = True + self._event.set() + + def run(self): + while not self._to_stop: + self._event.wait(self._time_interval) + if self._event.is_set(): + break + + self._splash.updateLoadingImage() diff --git a/resources/images/cura.png b/resources/images/cura.png index 56908f3719821c1f8d04cc89e5282f17c45a746a..e1954c517219b7b6132a754dafbbfa17db37d419 100644 GIT binary patch literal 117044 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�F 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

QdfAe!xAKRv2*sUF8jDsc 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 LE#)jFbHD!u9VNOX literal 18834 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 RrVaoA002ovPDHLkV1f&wSyuo6 diff --git a/resources/images/loading.png b/resources/images/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a0151b28da8e1846ff465b13f93ce092ec0457 GIT binary patch literal 3585 zcmW+(2{=^k`<_ru){$+rU|M7}SwfaFKEo6vX(oKuEE8euW5}+IU8qF%CF?LF%ix=+ zkWn<0WhRj|CTm%<#sB>N=Q{6suXE0G&h^~yd7k^ePr~h6H-z|4@Pj}gA!8#$959pq zH^4`Lqc0z=1(^7VC}VRlu!Vu|#RKQZe2uJ$Kz#83#vv>tLEI{`#T7#r%FKgeCm8x9=NIv!g~EO*mBT^>5-csF89 zp1a;@w^@?+-bUf69Ej(I0M@;0<;BOGM* zGC`pI@OkWF5?xZUl&94E>wz=drlD&g@NNC~aXMRh{~GE81a%Hp;*v~H#~p$-7__F= zK4gE>Gt-Uds4yYD!Nuu`>9~hi_x56@tPvFxaXCzT2 zxbEMB)4}{O!&oP)7$>W<EAOx}74kb)!DM{m(D!cmEvT{TC zK%mc!UZd))>IKHcAYNM>?t&;yJ_fs-SPbm*gLs{pn=!d-CGOc-?Cg9u!RTmJOTSY! zW(v#h84hrl=3!6o@nf; z))~5v$*HcYvR-9ZOx3Cu7+RefKL-B+dp$kZqm|NgcGP<>i$a%ovEDCBXK0;uQ>doD zqELcI8jZ2yv>3)wfm&$!%3b^V12NxstFFQB>JMJ)Qli+yQ|Xyv%e2z5AH|3s@ew zggDx7JT*w=h{O=oAfspIyK18%6pw~Wkkc9uh(Q%Sy*5blz5^Y7T2zH)cc3g20kY>MV!dS0H~b zac3kKyQvLo#9fDXW|w6>o|KM;WN(MPhTEs6NM?kedj6=P26JM@f7@N*q787TpNP9{l2n0c6zrT$OsUUbz=RD~Cbr!;sbP6S>=#&6f z{5cvsY5-Pt{xAITSjgWD?sikrm>GwpZ(*Ss_hwlRJJR@Ao4Z}48JwbSDqDxJ74)ML z&j@yeAPXXal7rE@wEINpjejI92&PwZSaBV38yBrJ!c(WWJgK%0DohU`&M8@F)d=3R z8qE&z`87UPoZ+&a^NZbSBd~hyAVfI$8lD%X4rCGM^z-iwon2gq_>+G-G+|Jk+9T*mDkB8B+$--S2o*bu%oF4gCk0r#_+gbb!%i;nB{ozng|={&vi z%zz!VIn40K^s5_S(v5Dzw-4mVSNe!t2`bQs+9q34SZ!|Bf+^^0#I8IcC^GP40Ieoc z>D}tH3bsv2dZL|Al&Yl@R9Ny(i)0;wm=8w9e}%3+OVRsV>NWDdD^$E|rF(8|k)Wu}m{O=^&YkJ z19Wb z0w*Sla!aey!b>^jZk6W^KdhO9pgy>lF-Co-RP4gQVA#^NJ8j1V9*@qG>%}oQAK)<+Mt>rHcnNtLynW~17UPEjDhsabs0qs^sChB;V|W~g5<5b~@{N;f4Z9&K!+GE+FV_igUF1(ic6*~&ULXC|9zXY*pWoto{UFcp zpPy?9tG_iGijnfP8D80fj4c?2ASzsH{v+E}XGJaC>2mq$&S~5Yz4!lsNirs{{?(@@ zTq4=aj?w@H-3ffDH`=PldL;+WO)1kfRZEyR9#F4bK!h{8i#hv5hh)`zA&m??HO6#6 zi`D<;a&J#D3M_>GGzYe~uoz>B(Vnwhr$;ZOs4@!}!I7%Ic7)FWSvCmD-Wo4|w@nPa zRpVeN^r(=e8)U;FscN6ypjT*qmc7C99mWL zyz#2D^ccsGdJSj)JEV0VTsAu4kcK+~i1I8^2o)bjwc4zz|5(2E45v6+9y6p-lwQ2B z@vSm+1>dh8Zjt#fdV~6FtkG-J<{+JbBCr4*zA*k>AHpYrUmW`WF-P-5o#!O6oeGd7 zLCO;I5m2fN<9u6ht}<7t1)+D$$!QTwMJ*y6L^b5h3FlazS6=@z`i||ldW(1Y&1J9F zy#yYtL+IHJNavQh*A01)G|7eO{ek08H$%q}eZ-nFBFK~IV_Eh5&*gyS_3&FhRTReQ zsZ+|R51(A?TSGgRE-5mtcCX~|I@+p)07ha3S5Rlt_5XTb4#R(P&yLV5!S(3(Jn|X% z?=%x?moWp_h_y-G?L=+vTt`R8+pupG-Sa8a8%3qgBAZvs+!^MW!v=!6#C(9!5j}4l z{L#2laVlj#@MpR;rqXC&-SO>qon`|_yg&I|W;P3SymC&~km(sna-$|d&OF62F_piq z#+1ov`7GBzyshPvhKC(@ivX;zYx6Zz=hS3vQSowQBTS`E$$S|u(Susa&Q>h7Ql9#v zYk&1(&^wvsjzs=|YvSR7XZe z4(#g$e2o-Jm%@+-ghi!{mmCxdJXfr+@0~4Qv#>LpJym%X&|l-HL$x+xveb7Lr@CCk z(Io4PHGZsbU?Q5*AHvLXUZrP+X5t!D-1IPYD25@<$d*qAXzOg zoEx^8|GpDibN8_8)`z>iEk_Csw9J|1Si_}TZg`p{Qb`9S*{fud4W4GpFo;ZhxYIb;|{ zxU~4U`UvbEj0{jT1U2GM0mD)8XUGBE<`S9qgF`z~Uu?>LD5(R#YanCvEkhd0@zMVQ Dgh1n@ literal 0 HcmV?d00001 From 461d4be310237f359d1c0aa5f96922137f82ac49 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 20:35:24 +0200 Subject: [PATCH 51/80] Fix hover state of Monitor button in the topbar --- resources/themes/cura-light/styles.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index bb2b57509a..f4d9aa6d59 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -107,7 +107,7 @@ QtObject { anchors.bottom: parent.bottom width: parent.width height: Theme.getSize("sidebar_header_highlight").height - color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : "transparent" + color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : UM.Theme.getColor("sidebar_header_highlight_hover") visible: control.hovered || control.checked } } From a4aa134f25fd50a7bf2ea057486d7786ee8ff4e4 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 22:43:55 +0200 Subject: [PATCH 52/80] Revert "Merge branch 'feature_grid_lines'" This reverts commit a0b7a2d165d4f973c69bf5fc7314726f19eeeb65, reversing changes made to db640c6f3d7b32b4c387268e8ebeb0d4de1b461a. # Conflicts: # cura/BuildVolume.py --- cura/BuildVolume.py | 87 +++++------------------------------ resources/shaders/grid.shader | 70 ++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 75 deletions(-) create mode 100644 resources/shaders/grid.shader diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index dc239c15b8..1bd5c7028e 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from cura.Settings.ExtruderManager import ExtruderManager @@ -27,9 +27,8 @@ import math from typing import List -PRIME_CLEARANCE = 6.5 #Setting for clearance around the prime. -MAJOR_GRID_SIZE = 10 #Size of the grid cells. -MINOR_GRID_SIZE = 1 +# Setting for clearance around the prime +PRIME_CLEARANCE = 6.5 ## Build volume is a special kind of node that is responsible for rendering the printable area & disallowed areas. @@ -45,8 +44,6 @@ class BuildVolume(SceneNode): self._z_axis_color = None self._disallowed_area_color = None self._error_area_color = None - self._grid_color = None - self._grid_minor_color = None self._width = 0 self._height = 0 @@ -59,9 +56,8 @@ class BuildVolume(SceneNode): self._origin_line_length = 20 self._origin_line_width = 0.5 - self._plate_mesh = None self._grid_mesh = None - self._plate_shader = None + self._grid_shader = None self._disallowed_areas = [] self._disallowed_area_mesh = None @@ -180,15 +176,15 @@ class BuildVolume(SceneNode): if not self._shader: self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) - self._plate_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) + self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) theme = Application.getInstance().getTheme() - self._plate_shader.setUniformValue("u_color", Color(*theme.getColor("buildplate").getRgb())) - self._plate_shader.setUniformValue("u_z_bias", 0.000001) + self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate").getRgb())) + self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_alt").getRgb())) + self._grid_shader.setUniformValue("u_z_bias", 0.000001) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) - renderer.queueNode(self, mesh = self._plate_mesh, shader = self._plate_shader, backface_cull = True) - renderer.queueNode(self, mesh = self._grid_mesh, mode = RenderBatch.RenderMode.Lines, transparent = True) + renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True) if self._disallowed_area_mesh: renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) @@ -261,8 +257,6 @@ class BuildVolume(SceneNode): self._z_axis_color = Color(*theme.getColor("z_axis").getRgb()) self._disallowed_area_color = Color(*theme.getColor("disallowed_area").getRgb()) self._error_area_color = Color(*theme.getColor("error_area").getRgb()) - self._grid_color = Color(*theme.getColor("buildplate_grid").getRgb()) - self._grid_minor_color = Color(*theme.getColor("buildplate_grid_minor").getRgb()) min_w = -self._width / 2 max_w = self._width / 2 @@ -293,7 +287,7 @@ class BuildVolume(SceneNode): self.setMeshData(mb.build()) - # Build plate surface. + # Build plate grid mesh mb = MeshBuilder() mb.addQuad( Vector(min_w, min_h - z_fight_distance, min_d), @@ -305,30 +299,6 @@ class BuildVolume(SceneNode): for n in range(0, 6): v = mb.getVertex(n) mb.setVertexUVCoordinates(n, v[0], v[2]) - self._plate_mesh = mb.build() - - #Build plate grid mesh. - mb = MeshBuilder() - for x in range(0, int(math.ceil(max_w)), MAJOR_GRID_SIZE): - mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) - #Start from 0 in both cases, so you need to do this in two for loops. - mb.addLine(Vector(-x, min_h, min_d), Vector(-x, min_h, max_d), color = self._grid_color) - for y in range(0, int(math.ceil(max_d)), MAJOR_GRID_SIZE): - mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) - mb.addLine(Vector(min_w, min_h, -y), Vector(max_w, min_h, -y), color = self._grid_color) - - #More fine grained grid. - for x in range(0, int(math.ceil(max_w)), MINOR_GRID_SIZE): - if x % MAJOR_GRID_SIZE == 0: #Don't overlap with the major grid. - pass - mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) - mb.addLine(Vector(-x, min_h, min_d), Vector(-x, min_h, max_d), color = self._grid_minor_color) - for y in range(0, int(math.ceil(max_d)), MINOR_GRID_SIZE): - if y % MAJOR_GRID_SIZE == 0: - pass - mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) - mb.addLine(Vector(min_w, min_h, -y), Vector(max_w, min_h, -y), color = self._grid_minor_color) - self._grid_mesh = mb.build() else: @@ -344,7 +314,7 @@ class BuildVolume(SceneNode): mb.addArc(max_w, Vector.Unit_Y, center = (0, max_h, 0), color = self._volume_outline_color) self.setMeshData(mb.build().getTransformed(scale_matrix)) - # Build plate surface. + # Build plate grid mesh mb = MeshBuilder() mb.addVertex(0, min_h - z_fight_distance, 0) mb.addArc(max_w, Vector.Unit_Y, center = Vector(0, min_h - z_fight_distance, 0)) @@ -358,40 +328,7 @@ class BuildVolume(SceneNode): for n in range(0, mb.getVertexCount()): v = mb.getVertex(n) mb.setVertexUVCoordinates(n, v[0], v[2] * aspect) - self._plate_mesh = mb.build().getTransformed(scale_matrix) - - #Build plate grid mesh. - #We need to constrain the length of the lines to the build plate ellipsis. Time to get out the calculator! - mb = MeshBuilder() - for x in range(0, int(math.ceil(max_w)), MAJOR_GRID_SIZE): - #x / max_w is the fraction along the build plate we have progressed, counting from the centre. - #So x / max_w is sin(a), where a is the angle towards an endpoint of the grid line from the centre. - #So math.asin(x / max_w) is a. - #So math.cos(math.asin(x / max_w)) is half of the length of the grid line on a unit circle, which scales between 0 and 1. - length_factor = math.cos(math.asin(x / max_w)) - mb.addLine(Vector(x, min_h, min_d * length_factor), Vector(x, min_h, max_d * length_factor), color = self._grid_color) - #Start from 0 in both cases, so you need to do this in two for loops. - mb.addLine(Vector(-x, min_h, min_d * length_factor), Vector(-x, min_h, max_d * length_factor), color = self._grid_color) - for y in range(0, int(math.ceil(max_d)), MAJOR_GRID_SIZE): - length_factor = math.sin(math.acos(y / max_d)) - mb.addLine(Vector(min_w * length_factor, min_h, y), Vector(max_w * length_factor, min_h, y), color = self._grid_color) - mb.addLine(Vector(min_w * length_factor, min_h, -y), Vector(max_w * length_factor, min_h, -y), color = self._grid_color) - - #More fine grained grid. - for x in range(0, int(math.ceil(max_w)), MINOR_GRID_SIZE): - if x % MAJOR_GRID_SIZE == 0: #Don't overlap with the major grid. - pass - length_factor = math.cos(math.asin(x / max_w)) - mb.addLine(Vector(x, min_h, min_d * length_factor), Vector(x, min_h, max_d * length_factor), color = self._grid_minor_color) - mb.addLine(Vector(-x, min_h, min_d * length_factor), Vector(-x, min_h, max_d * length_factor), color = self._grid_minor_color) - for y in range(0, int(math.ceil(max_d)), MINOR_GRID_SIZE): - if y % MAJOR_GRID_SIZE == 0: - pass - length_factor = math.sin(math.acos(y / max_d)) - mb.addLine(Vector(min_w * length_factor, min_h, y), Vector(max_w * length_factor, min_h, y), color = self._grid_minor_color) - mb.addLine(Vector(min_w * length_factor, min_h, -y), Vector(max_w * length_factor, min_h, -y), color = self._grid_minor_color) - - self._grid_mesh = mb.build() + self._grid_mesh = mb.build().getTransformed(scale_matrix) # Indication of the machine origin if self._global_container_stack.getProperty("machine_center_is_zero", "value"): diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader new file mode 100644 index 0000000000..74eed544fd --- /dev/null +++ b/resources/shaders/grid.shader @@ -0,0 +1,70 @@ +[shaders] +vertex = + uniform highp mat4 u_modelViewProjectionMatrix; + + attribute highp vec4 a_vertex; + attribute lowp vec2 a_uvs; + + varying lowp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment = + uniform lowp vec4 u_gridColor0; + uniform lowp vec4 u_gridColor1; + + varying lowp vec2 v_uvs; + + void main() + { + if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) + gl_FragColor = u_gridColor0; + else + gl_FragColor = u_gridColor1; + } + +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + + in highp vec4 a_vertex; + in lowp vec2 a_uvs; + + out lowp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment41core = + #version 410 + uniform lowp vec4 u_gridColor0; + uniform lowp vec4 u_gridColor1; + + in lowp vec2 v_uvs; + out vec4 frag_color; + + void main() + { + if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) + frag_color = u_gridColor0; + else + frag_color = u_gridColor1; + } + +[defaults] +u_gridColor0 = [0.96, 0.96, 0.96, 1.0] +u_gridColor1 = [0.8, 0.8, 0.8, 1.0] + +[bindings] +u_modelViewProjectionMatrix = model_view_projection_matrix + +[attributes] +a_vertex = vertex +a_uvs = uv0 From 6658e1a9aee8ae13eb8aeab46c860e46d21726a8 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 23:39:54 +0200 Subject: [PATCH 53/80] Draw grid lines using shader --- cura/BuildVolume.py | 5 ++-- resources/shaders/grid.shader | 40 ++++++++++++++++++++------ resources/themes/cura-light/theme.json | 3 +- resources/themes/cura/theme.json | 3 +- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 1bd5c7028e..a7fc0701be 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -178,8 +178,9 @@ class BuildVolume(SceneNode): self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) theme = Application.getInstance().getTheme() - self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate").getRgb())) - self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_alt").getRgb())) + self._grid_shader.setUniformValue("u_plateColor", Color(*theme.getColor("buildplate").getRgb())) + self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate_grid").getRgb())) + self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_grid_minor").getRgb())) self._grid_shader.setUniformValue("u_z_bias", 0.000001) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index 74eed544fd..c44db85dba 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -14,6 +14,7 @@ vertex = } fragment = + uniform lowp vec4 u_plateColor; uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; @@ -21,10 +22,19 @@ fragment = void main() { - if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) - gl_FragColor = u_gridColor0; - else - gl_FragColor = u_gridColor1; + vec2 coord = v_uvs.xy; + + // Compute anti-aliased world-space minor grid lines + vec2 minorGrid = abs(fract(coord - 0.5) - 0.5) / fwidth(coord); + float minorLine = min(minorGrid.x, minorGrid.y); + + vec4 minorGridColor = mix(u_plateColor, u_gridColor1, 1.0 - min(minorLine, 1.0)); + + // Compute anti-aliased world-space major grid lines + vec2 majorGrid = abs(fract(coord / 10 - 0.5) - 0.5) / fwidth(coord / 10); + float majorLine = min(majorGrid.x, majorGrid.y); + + frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); } vertex41core = @@ -44,23 +54,37 @@ vertex41core = fragment41core = #version 410 + uniform lowp vec4 u_plateColor; uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; + uniform lowp float u_z_bias; //Bias in the depth buffer for rendering this object (to make an object be rendered in front of or behind other objects). in lowp vec2 v_uvs; out vec4 frag_color; void main() { - if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) - frag_color = u_gridColor0; - else - frag_color = u_gridColor1; + vec2 coord = v_uvs.xy; + + // Compute anti-aliased world-space minor grid lines + vec2 minorGrid = abs(fract(coord - 0.5) - 0.5) / fwidth(coord); + float minorLine = min(minorGrid.x, minorGrid.y); + + vec4 minorGridColor = mix(u_plateColor, u_gridColor1, 1.0 - min(minorLine, 1.0)); + + // Compute anti-aliased world-space major grid lines + vec2 majorGrid = abs(fract(coord / 10 - 0.5) - 0.5) / fwidth(coord / 10); + float majorLine = min(majorGrid.x, majorGrid.y); + + frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); + gl_FragDepth = gl_FragCoord.z + u_z_bias; } [defaults] +u_plateColor = [1.0, 1.0, 1.0, 1.0] u_gridColor0 = [0.96, 0.96, 0.96, 1.0] u_gridColor1 = [0.8, 0.8, 0.8, 1.0] +u_z_bias = 0.0 [bindings] u_modelViewProjectionMatrix = model_view_projection_matrix diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d727425795..57b9b77221 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -247,9 +247,8 @@ "viewport_background": [245, 245, 245, 255], "volume_outline": [12, 169, 227, 255], "buildplate": [244, 244, 244, 255], - "buildplate_alt": [204, 204, 204, 255], "buildplate_grid": [129, 131, 134, 255], - "buildplate_grid_minor": [129, 131, 134, 31], + "buildplate_grid_minor": [230, 230, 231, 255], "convex_hull": [35, 35, 35, 127], "disallowed_area": [0, 0, 0, 40], diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 46da3cbe7a..e94141413c 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -170,9 +170,8 @@ "viewport_background": [241, 242, 242, 255], "volume_outline": [1, 168, 230, 255], "buildplate": [252, 252, 252, 255], - "buildplate_alt": [204, 204, 204, 255], "buildplate_grid": [129, 131, 134, 255], - "buildplate_grid_minor": [129, 131, 134, 31], + "buildplate_grid_minor": [230, 230, 231, 255], "convex_hull": [35, 35, 35, 127], "disallowed_area": [0, 0, 0, 52], From ec6fa19d4efd9eb5afda5785298532f1358f623f Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 23:49:16 +0200 Subject: [PATCH 54/80] Updated copyright date --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index a7fc0701be..9b6647fe43 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from cura.Settings.ExtruderManager import ExtruderManager From 1aa46045af7f4e83c30939a6c03a7ed0a00ccf53 Mon Sep 17 00:00:00 2001 From: Eloi Pardo Date: Tue, 12 Sep 2017 08:42:17 +0200 Subject: [PATCH 55/80] add ConvexHullDecorator when grouping --- cura/CuraApplication.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1b7dafd53d..021f20fa82 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1182,6 +1182,7 @@ class CuraApplication(QtApplication): group_node = SceneNode() group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) + group_node.addDecorator(ConvexHullDecorator()) group_node.setParent(self.getController().getScene().getRoot()) group_node.setSelectable(True) center = Selection.getSelectionCenter() From 4143effbe19ab5ae0c90fbb069e1c9c6e2f22772 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 09:13:16 +0200 Subject: [PATCH 56/80] only show slider track when layers are available --- plugins/LayerView/LayerView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 092df3fb6e..1f04be77d3 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -418,6 +418,7 @@ Item color: parent.trackColor border.width: parent.trackBorderWidth; border.color: parent.trackBorderColor; + visible: slider.layersVisible } Item { From 670d1784c4b89d7bc35e60265f15d6159a50322c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 09:45:45 +0200 Subject: [PATCH 57/80] Fix layer mode combobox hover not transparent --- resources/themes/cura-light/styles.qml | 2 +- resources/themes/cura-light/theme.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 47274f99d9..8f2131bbfb 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -614,7 +614,7 @@ QtObject { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; - color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_highlight") : Theme.getColor("setting_control"); + color: Theme.getColor("setting_control") Behavior on color { ColorAnimation { duration: 50; } } border.width: Theme.getSize("default_lining").width; diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index e8137cffa7..98afe76350 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -357,6 +357,7 @@ "tooltip_margins": [1.0, 1.0], "tooltip_arrow_margins": [2.0, 2.0], + "save_button_text_margin": [0.3, 0.6], "save_button_save_to_button": [0.3, 2.7], "save_button_specs_icons": [1.4, 1.4], From 7d719c4ab56b44aa13e3cc0b08c53e597b81bb92 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 09:54:24 +0200 Subject: [PATCH 58/80] layer view toolbox height depending on color scheme mode --- plugins/LayerView/LayerView.qml | 2 ++ resources/themes/cura-light/theme.json | 1 + 2 files changed, 3 insertions(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 1f04be77d3..10a2b4c3cf 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -22,6 +22,8 @@ Item height: { if (UM.LayerView.compatibilityMode) { return UM.Theme.getSize("layerview_menu_size_compatibility").height; + } else if (UM.Preferences.getValue("layerview/layer_view_type") == 0) { + return UM.Theme.getSize("layerview_menu_size_material_color_mode").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) } else { return UM.Theme.getSize("layerview_menu_size").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 98afe76350..3b98ac1ae4 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -346,6 +346,7 @@ "slider_layerview_margin": [1.0, 1.0], "layerview_menu_size": [15, 19.5], + "layerview_menu_size_material_color_mode": [15, 15.5], "layerview_menu_size_compatibility": [22, 22.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], From 92617e217721be5ead45b5ec30040db88a3aa98c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 10:15:08 +0200 Subject: [PATCH 59/80] remove layerview toolbox arrow --- plugins/LayerView/LayerView.qml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 10a2b4c3cf..8927d59017 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -28,6 +28,7 @@ Item return UM.Theme.getSize("layerview_menu_size").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) } } + property var buttonTarget: { var force_binding = parent.y; // ensure this gets reevaluated when the panel moves return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y); @@ -45,9 +46,7 @@ Item color: UM.Theme.getColor("tool_panel_background") borderWidth: UM.Theme.getSize("default_lining").width borderColor: UM.Theme.getColor("lining") - - target: parent.buttonTarget - arrowSize: UM.Theme.getSize("default_arrow").width + arrowSize: 0 // hide arrow until weird issue with first time rendering is fixed ColumnLayout { id: view_settings From 8f2ee96f401ee3813aafde883de127bab88c5ba4 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 10:27:07 +0200 Subject: [PATCH 60/80] CURA-4203 message progress bar color dark --- resources/themes/cura-light/theme.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 3b98ac1ae4..f30026f172 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -217,7 +217,6 @@ "tool_button_border": [39, 44, 48, 255], - "message_background": [255, 255, 255, 255], "message_shadow": [0, 0, 0, 120], "message_text": [0, 0, 0, 255], @@ -228,7 +227,7 @@ "message_button_text_hover": [255, 255, 255, 255], "message_button_text_active": [255, 255, 255, 255], "message_progressbar_background": [200, 200, 200, 255], - "message_progressbar_control": [12, 169, 227, 255], + "message_progressbar_control": [77, 182, 226, 255], "tool_panel_background": [255, 255, 255, 255], From 3fe75d9c9523fcad4e723e6b85f6c36cb938ba21 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 11:24:49 +0200 Subject: [PATCH 61/80] Update default values of new settings These settings have now been tested and good defaults have been found for them. --- resources/definitions/fdmprinter.def.json | 12 ++++++------ .../ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 1 - .../um3_aa0.8_PP_Superdraft_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 1 - .../um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 1 - .../um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 1 - 7 files changed, 6 insertions(+), 12 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0e871ffad5..7694aaf3ef 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1234,7 +1234,7 @@ "random": "Random", "sharpest_corner": "Sharpest Corner" }, - "default_value": "shortest", + "default_value": "sharpest_corner", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, @@ -1539,6 +1539,7 @@ "unit": "mm", "type": "float", "default_value": 0, + "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, @@ -1575,7 +1576,7 @@ "label": "Expand Skins Into Infill", "description": "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin.", "type": "bool", - "default_value": false, + "default_value": true, "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": @@ -1609,7 +1610,7 @@ "unit": "mm", "type": "float", "default_value": 2.8, - "value": "infill_line_distance * 1.4", + "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "enabled": "expand_upper_skins or expand_lower_skins", "limit_to_extruder": "top_bottom_extruder_nr", @@ -1623,9 +1624,8 @@ "type": "float", "minimum_value": "0", "minimum_value_warning": "2", - "maximum_value_warning": "45", "maximum_value": "90", - "default_value": 20, + "default_value": 90, "enabled": "expand_upper_skins or expand_lower_skins", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, @@ -5157,7 +5157,7 @@ { "label": "Extra Skin Wall Count", "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", - "default_value": 0, + "default_value": 1, "minimum_value": "0", "maximum_value_warning": "10", "type": "int", diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 8b85d6d7fb..2051888b08 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -14,7 +14,6 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index f1042df045..4a93260597 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -14,7 +14,6 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 2ddb591127..3cf4d0a244 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -14,7 +14,6 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 97deea6740..1b8d71a8f0 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -13,7 +13,6 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 7871f330cc..20bbe05e4a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -13,7 +13,6 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 9da9e3945f..d8e5146dc6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -13,7 +13,6 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 From 14e10c698735d90971cb8a01cfe08acbfe6cfdc8 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 11:27:35 +0200 Subject: [PATCH 62/80] Move skin extra wall count from experimental to shell category Nobody sees any risk in this. --- resources/definitions/fdmprinter.def.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 7694aaf3ef..f37e9ffdb4 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1298,6 +1298,17 @@ "default_value": true, "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true + }, + "skin_outline_count": + { + "label": "Extra Skin Wall Count", + "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", + "default_value": 1, + "minimum_value": "0", + "maximum_value_warning": "10", + "type": "int", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true } } }, @@ -5153,17 +5164,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "skin_outline_count": - { - "label": "Extra Skin Wall Count", - "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", - "default_value": 1, - "minimum_value": "0", - "maximum_value_warning": "10", - "type": "int", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, "skin_alternate_rotation": { "label": "Alternate Skin Rotation", From 9e62c4db15f9b335f577efd454a258ffabd415fe Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 11:39:48 +0200 Subject: [PATCH 63/80] CURA-4318 remove active printer hover underline, theme inheritance, theme names --- resources/qml/Topbar.qml | 12 - resources/themes/cura-dark/theme.json | 200 ++++++++++++++++- resources/themes/cura-light/theme.json | 2 +- resources/themes/cura/theme.json | 291 ------------------------- 4 files changed, 197 insertions(+), 308 deletions(-) delete mode 100644 resources/themes/cura/theme.json diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 930cc7c4bf..e3550aaad7 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -156,18 +156,6 @@ Rectangle } Behavior on color { ColorAnimation { duration: 50; } } - Rectangle - { - id: underline; - - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - height: UM.Theme.getSize("sidebar_header_highlight").height - color: UM.Theme.getColor("sidebar_header_highlight_hover") - visible: control.hovered || control.pressed - } - UM.RecolorImage { id: downArrow diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 45b8fd8675..dbe19bd298 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -1,11 +1,203 @@ { "metadata": { - "name": "Dark", - "inherits": "cura" + "name": "Ultimaker Dark", + "inherits": "cura-light" }, "colors": { - "viewport_background": [31, 36, 39, 255], + + "sidebar": [39, 44, 48, 255], + "lining": [64, 69, 72, 255], + "viewport_overlay": [0, 6, 9, 222], + + "primary": [12, 169, 227, 255], + "primary_hover": [48, 182, 231, 255], + "primary_text": [255, 255, 255, 204], + "border": [127, 127, 127, 255], + "secondary": [241, 242, 242, 255], + + "text": [255, 255, 255, 204], + "text_detail": [255, 255, 255, 172], + "text_link": [255, 255, 255, 127], + "text_inactive": [255, 255, 255, 88], + "text_hover": [255, 255, 255, 204], + "text_pressed": [255, 255, 255, 204], + "text_subtext": [255, 255, 255, 172], + "text_emphasis": [255, 255, 255, 255], "text_scene": [255, 255, 255, 162], - "text_scene_hover": [255, 255, 255, 204] + "text_scene_hover": [255, 255, 255, 204], + + "error": [212, 31, 53, 255], + "sidebar_header_bar": [39, 44, 48, 255], + "sidebar_header_active": [39, 44, 48, 255], + "sidebar_header_hover": [39, 44, 48, 255], + "sidebar_header_highlight": [68, 192, 255, 255], + "sidebar_header_highlight_hover": [68, 192, 255, 255], + "sidebar_header_text_active": [255, 255, 255, 255], + "sidebar_header_text_hover": [255, 255, 255, 255], + "sidebar_header_text_inactive": [255, 255, 255, 127], + "sidebar_lining": [31, 36, 39, 255], + + "button": [39, 44, 48, 255], + "button_hover": [39, 44, 48, 255], + "button_active": [67, 72, 75, 255], + "button_active_hover": [67, 72, 75, 255], + "button_text": [255, 255, 255, 197], + "button_text_hover": [255, 255, 255, 255], + "button_text_active": [255, 255, 255, 255], + "button_text_active_hover": [255, 255, 255, 255], + "button_disabled": [39, 44, 48, 255], + "button_disabled_text": [255, 255, 255, 101], + + "button_tooltip": [39, 44, 48, 255], + "button_tooltip_border": [39, 44, 48, 255], + "button_tooltip_text": [255, 255, 255, 172], + + "tab_checked": [39, 44, 48, 255], + "tab_checked_border": [255, 255, 255, 30], + "tab_checked_text": [255, 255, 255, 255], + "tab_unchecked": [39, 44, 48, 255], + "tab_unchecked_border": [255, 255, 255, 30], + "tab_unchecked_text": [255, 255, 255, 101], + "tab_hovered": [39, 44, 48, 255], + "tab_hovered_border": [255, 255, 255, 30], + "tab_hovered_text": [255, 255, 255, 255], + "tab_active": [39, 44, 48, 255], + "tab_active_border": [255, 255, 255, 30], + "tab_active_text": [255, 255, 255, 255], + "tab_background": [39, 44, 48, 255], + + "action_button": [39, 44, 48, 255], + "action_button_text": [255, 255, 255, 101], + "action_button_border": [255, 255, 255, 30], + "action_button_hovered": [39, 44, 48, 255], + "action_button_hovered_text": [255, 255, 255, 255], + "action_button_hovered_border": [255, 255, 255, 30], + "action_button_active": [39, 44, 48, 30], + "action_button_active_text": [255, 255, 255, 255], + "action_button_active_border": [255, 255, 255, 30], + "action_button_disabled": [39, 44, 48, 255], + "action_button_disabled_text": [255, 255, 255, 101], + "action_button_disabled_border": [255, 255, 255, 30], + + "scrollbar_background": [39, 44, 48, 0], + "scrollbar_handle": [255, 255, 255, 105], + "scrollbar_handle_hover": [255, 255, 255, 255], + "scrollbar_handle_down": [255, 255, 255, 255], + + "setting_category": [39, 44, 48, 255], + "setting_category_disabled": [39, 44, 48, 255], + "setting_category_hover": [39, 44, 48, 255], + "setting_category_active": [39, 44, 48, 255], + "setting_category_active_hover": [39, 44, 48, 255], + "setting_category_text": [255, 255, 255, 152], + "setting_category_disabled_text": [255, 255, 255, 101], + "setting_category_hover_text": [255, 255, 255, 204], + "setting_category_active_text": [255, 255, 255, 204], + "setting_category_active_hover_text": [255, 255, 255, 204], + "setting_category_border": [39, 44, 48, 0], + "setting_category_disabled_border": [39, 44, 48, 0], + "setting_category_hover_border": [39, 44, 48, 0], + "setting_category_active_border": [39, 44, 48, 0], + "setting_category_active_hover_border": [39, 44, 48, 0], + + "setting_control": [43, 48, 52, 255], + "setting_control_selected": [34, 39, 42, 38], + "setting_control_highlight": [255, 255, 255, 0], + "setting_control_border": [255, 255, 255, 38], + "setting_control_border_highlight": [255, 255, 255, 38], + "setting_control_text": [255, 255, 255, 181], + "setting_control_button": [255, 255, 255, 127], + "setting_control_button_hover": [255, 255, 255, 204], + "setting_control_disabled": [34, 39, 42, 255], + "setting_control_disabled_text": [255, 255, 255, 101], + "setting_control_disabled_border": [255, 255, 255, 101], + "setting_unit": [255, 255, 255, 127], + "setting_validation_error_background": [59, 31, 53, 255], + "setting_validation_error": [212, 31, 53, 255], + "setting_validation_warning_background": [62, 54, 46, 255], + "setting_validation_warning": [245, 166, 35, 255], + "setting_validation_ok": [43, 48, 52, 255], + + "progressbar_background": [255, 255, 255, 48], + "progressbar_control": [255, 255, 255, 197], + + "slider_groove": [39, 44, 48, 75], + "slider_groove_border": [39, 44, 48, 0], + "slider_groove_fill": [39, 44, 48, 182], + "slider_handle": [255, 255, 255, 255], + "slider_handle_border": [39, 44, 48, 255], + "slider_handle_hover": [255, 255, 255, 255], + "slider_handle_hover_border": [39, 44, 48, 255], + "slider_text_background": [39, 44, 48, 255], + + "checkbox": [43, 48, 52, 255], + "checkbox_hover": [43, 48, 52, 255], + "checkbox_border": [255, 255, 255, 38], + "checkbox_border_hover": [255, 255, 255, 38], + "checkbox_mark": [255, 255, 255, 181], + "checkbox_text": [255, 255, 255, 181], + + "tooltip": [39, 44, 48, 255], + "tooltip_text": [255, 255, 255, 204], + + "message_background": [255, 255, 255, 200], + "message_text": [0, 0, 0, 255], + "message_border": [191, 191, 191, 200], + "message_button": [255, 255, 255, 255], + "message_button_hover": [12, 169, 227, 255], + "message_button_active": [32, 166, 219, 255], + "message_button_text": [24, 41, 77, 255], + "message_button_text_hover": [255, 255, 255, 255], + "message_button_text_active": [255, 255, 255, 255], + "message_progressbar_background": [255, 255, 255, 255], + "message_progressbar_control": [12, 169, 227, 255], + + "tool_panel_background": [39, 44, 48, 255], + + "status_offline": [0, 0, 0, 255], + "status_ready": [0, 205, 0, 255], + "status_busy": [12, 169, 227, 255], + "status_paused": [255, 140, 0, 255], + "status_stopped": [236, 82, 80, 255], + "status_unknown": [127, 127, 127, 255], + + "disabled_axis": [127, 127, 127, 255], + "x_axis": [255, 0, 0, 255], + "y_axis": [0, 0, 255, 255], + "z_axis": [0, 255, 0, 255], + "all_axis": [255, 255, 255, 255], + + "viewport_background": [31, 36, 39, 255], + "volume_outline": [1, 168, 230, 255], + "buildplate": [252, 252, 252, 255], + "buildplate_alt": [204, 204, 204, 255], + "buildplate_grid": [129, 131, 134, 255], + "buildplate_grid_minor": [129, 131, 134, 31], + + "convex_hull": [35, 35, 35, 127], + "disallowed_area": [0, 0, 0, 52], + "error_area": [255, 0, 0, 127], + + "model_default": [255, 201, 36, 255], + "model_overhang": [255, 0, 0, 255], + "model_unslicable": [122, 122, 122, 255], + "model_unslicable_alt": [172, 172, 127, 255], + "model_selection_outline": [12, 169, 227, 255], + + "xray": [26, 26, 62, 255], + "xray_error": [255, 0, 0, 255], + + "layerview_ghost": [32, 32, 32, 96], + "layerview_none": [255, 255, 255, 255], + "layerview_inset_0": [255, 0, 0, 255], + "layerview_inset_x": [0, 255, 0, 255], + "layerview_skin": [255, 255, 0, 255], + "layerview_support": [0, 255, 255, 255], + "layerview_skirt": [0, 255, 255, 255], + "layerview_infill": [255, 192, 0, 255], + "layerview_support_infill": [0, 255, 255, 255], + "layerview_move_combing": [0, 0, 255, 255], + "layerview_move_retraction": [128, 128, 255, 255], + "layerview_support_interface": [64, 192, 255, 255] } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index f30026f172..b00050c14c 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -1,6 +1,6 @@ { "metadata": { - "name": "Light" + "name": "Ultimaker" }, "fonts": { diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json deleted file mode 100644 index 46da3cbe7a..0000000000 --- a/resources/themes/cura/theme.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "metadata": { - "name": "Ultimaker", - "inherits": "cura-light" - }, - - "colors": { - "sidebar": [39, 44, 48, 255], - "lining": [64, 69, 72, 255], - "viewport_overlay": [0, 6, 9, 222], - - "primary": [12, 169, 227, 255], - "primary_hover": [48, 182, 231, 255], - "primary_text": [255, 255, 255, 204], - "border": [127, 127, 127, 255], - "secondary": [241, 242, 242, 255], - - "text": [255, 255, 255, 204], - "text_detail": [255, 255, 255, 172], - "text_link": [255, 255, 255, 127], - "text_inactive": [255, 255, 255, 88], - "text_hover": [255, 255, 255, 204], - "text_pressed": [255, 255, 255, 204], - "text_subtext": [255, 255, 255, 172], - "text_emphasis": [255, 255, 255, 255], - "text_scene": [39, 44, 48, 255], - "text_scene_hover": [43, 48, 52, 255], - - "error": [212, 31, 53, 255], - "sidebar_header_bar": [39, 44, 48, 255], - "sidebar_header_active": [39, 44, 48, 255], - "sidebar_header_hover": [39, 44, 48, 255], - "sidebar_header_highlight": [68, 192, 255, 255], - "sidebar_header_highlight_hover": [68, 192, 255, 255], - "sidebar_header_text_active": [255, 255, 255, 255], - "sidebar_header_text_hover": [255, 255, 255, 255], - "sidebar_header_text_inactive": [255, 255, 255, 127], - "sidebar_lining": [31, 36, 39, 255], - - "button": [39, 44, 48, 255], - "button_hover": [39, 44, 48, 255], - "button_active": [67, 72, 75, 255], - "button_active_hover": [67, 72, 75, 255], - "button_text": [255, 255, 255, 197], - "button_text_hover": [255, 255, 255, 255], - "button_text_active": [255, 255, 255, 255], - "button_text_active_hover": [255, 255, 255, 255], - "button_disabled": [39, 44, 48, 255], - "button_disabled_text": [255, 255, 255, 101], - - "button_tooltip": [39, 44, 48, 255], - "button_tooltip_border": [39, 44, 48, 255], - "button_tooltip_text": [255, 255, 255, 172], - - "tab_checked": [39, 44, 48, 255], - "tab_checked_border": [255, 255, 255, 30], - "tab_checked_text": [255, 255, 255, 255], - "tab_unchecked": [39, 44, 48, 255], - "tab_unchecked_border": [255, 255, 255, 30], - "tab_unchecked_text": [255, 255, 255, 101], - "tab_hovered": [39, 44, 48, 255], - "tab_hovered_border": [255, 255, 255, 30], - "tab_hovered_text": [255, 255, 255, 255], - "tab_active": [39, 44, 48, 255], - "tab_active_border": [255, 255, 255, 30], - "tab_active_text": [255, 255, 255, 255], - "tab_background": [39, 44, 48, 255], - - "action_button": [39, 44, 48, 255], - "action_button_text": [255, 255, 255, 101], - "action_button_border": [255, 255, 255, 30], - "action_button_hovered": [39, 44, 48, 255], - "action_button_hovered_text": [255, 255, 255, 255], - "action_button_hovered_border": [255, 255, 255, 30], - "action_button_active": [39, 44, 48, 30], - "action_button_active_text": [255, 255, 255, 255], - "action_button_active_border": [255, 255, 255, 30], - "action_button_disabled": [39, 44, 48, 255], - "action_button_disabled_text": [255, 255, 255, 101], - "action_button_disabled_border": [255, 255, 255, 30], - - "scrollbar_background": [39, 44, 48, 0], - "scrollbar_handle": [255, 255, 255, 105], - "scrollbar_handle_hover": [255, 255, 255, 255], - "scrollbar_handle_down": [255, 255, 255, 255], - - "setting_category": [39, 44, 48, 255], - "setting_category_disabled": [39, 44, 48, 255], - "setting_category_hover": [39, 44, 48, 255], - "setting_category_active": [39, 44, 48, 255], - "setting_category_active_hover": [39, 44, 48, 255], - "setting_category_text": [255, 255, 255, 152], - "setting_category_disabled_text": [255, 255, 255, 101], - "setting_category_hover_text": [255, 255, 255, 204], - "setting_category_active_text": [255, 255, 255, 204], - "setting_category_active_hover_text": [255, 255, 255, 204], - "setting_category_border": [39, 44, 48, 0], - "setting_category_disabled_border": [39, 44, 48, 0], - "setting_category_hover_border": [39, 44, 48, 0], - "setting_category_active_border": [39, 44, 48, 0], - "setting_category_active_hover_border": [39, 44, 48, 0], - - "setting_control": [43, 48, 52, 255], - "setting_control_selected": [34, 39, 42, 38], - "setting_control_highlight": [255, 255, 255, 0], - "setting_control_border": [255, 255, 255, 38], - "setting_control_border_highlight": [255, 255, 255, 38], - "setting_control_text": [255, 255, 255, 181], - "setting_control_button": [255, 255, 255, 127], - "setting_control_button_hover": [255, 255, 255, 204], - "setting_control_disabled": [34, 39, 42, 255], - "setting_control_disabled_text": [255, 255, 255, 101], - "setting_control_disabled_border": [255, 255, 255, 101], - "setting_unit": [255, 255, 255, 127], - "setting_validation_error_background": [59, 31, 53, 255], - "setting_validation_error": [212, 31, 53, 255], - "setting_validation_warning_background": [62, 54, 46, 255], - "setting_validation_warning": [245, 166, 35, 255], - "setting_validation_ok": [43, 48, 52, 255], - - "progressbar_background": [255, 255, 255, 48], - "progressbar_control": [255, 255, 255, 197], - - "slider_groove": [39, 44, 48, 75], - "slider_groove_border": [39, 44, 48, 0], - "slider_groove_fill": [39, 44, 48, 182], - "slider_handle": [255, 255, 255, 255], - "slider_handle_border": [39, 44, 48, 255], - "slider_handle_hover": [255, 255, 255, 255], - "slider_handle_hover_border": [39, 44, 48, 255], - "slider_text_background": [39, 44, 48, 255], - - "checkbox": [43, 48, 52, 255], - "checkbox_hover": [43, 48, 52, 255], - "checkbox_border": [255, 255, 255, 38], - "checkbox_border_hover": [255, 255, 255, 38], - "checkbox_mark": [255, 255, 255, 181], - "checkbox_text": [255, 255, 255, 181], - - "tooltip": [39, 44, 48, 255], - "tooltip_text": [255, 255, 255, 204], - - "message_background": [255, 255, 255, 200], - "message_text": [0, 0, 0, 255], - "message_border": [191, 191, 191, 200], - "message_button": [255, 255, 255, 255], - "message_button_hover": [12, 169, 227, 255], - "message_button_active": [32, 166, 219, 255], - "message_button_text": [24, 41, 77, 255], - "message_button_text_hover": [255, 255, 255, 255], - "message_button_text_active": [255, 255, 255, 255], - "message_progressbar_background": [255, 255, 255, 255], - "message_progressbar_control": [12, 169, 227, 255], - - "tool_panel_background": [39, 44, 48, 255], - - "status_offline": [0, 0, 0, 255], - "status_ready": [0, 205, 0, 255], - "status_busy": [12, 169, 227, 255], - "status_paused": [255, 140, 0, 255], - "status_stopped": [236, 82, 80, 255], - "status_unknown": [127, 127, 127, 255], - - "disabled_axis": [127, 127, 127, 255], - "x_axis": [255, 0, 0, 255], - "y_axis": [0, 0, 255, 255], - "z_axis": [0, 255, 0, 255], - "all_axis": [255, 255, 255, 255], - - "viewport_background": [241, 242, 242, 255], - "volume_outline": [1, 168, 230, 255], - "buildplate": [252, 252, 252, 255], - "buildplate_alt": [204, 204, 204, 255], - "buildplate_grid": [129, 131, 134, 255], - "buildplate_grid_minor": [129, 131, 134, 31], - - "convex_hull": [35, 35, 35, 127], - "disallowed_area": [0, 0, 0, 52], - "error_area": [255, 0, 0, 127], - - "model_default": [255, 201, 36, 255], - "model_overhang": [255, 0, 0, 255], - "model_unslicable": [122, 122, 122, 255], - "model_unslicable_alt": [172, 172, 127, 255], - "model_selection_outline": [12, 169, 227, 255], - - "xray": [26, 26, 62, 255], - "xray_error": [255, 0, 0, 255], - - "layerview_ghost": [32, 32, 32, 96], - "layerview_none": [255, 255, 255, 255], - "layerview_inset_0": [255, 0, 0, 255], - "layerview_inset_x": [0, 255, 0, 255], - "layerview_skin": [255, 255, 0, 255], - "layerview_support": [0, 255, 255, 255], - "layerview_skirt": [0, 255, 255, 255], - "layerview_infill": [255, 192, 0, 255], - "layerview_support_infill": [0, 255, 255, 255], - "layerview_move_combing": [0, 0, 255, 255], - "layerview_move_retraction": [128, 128, 255, 255], - "layerview_support_interface": [64, 192, 255, 255] - }, - - "sizes": { - "window_minimum_size": [70, 50], - "window_margin": [1.0, 1.0], - "default_margin": [1.0, 1.0], - "default_lining": [0.08, 0.08], - "default_arrow": [0.8, 0.8], - "logo": [9.5, 2.0], - - "sidebar": [35.0, 10.0], - "sidebar_header": [0.0, 4.0], - "sidebar_header_highlight": [0.25, 0.25], - "sidebar_header_mode_toggle": [0.0, 2.0], - "sidebar_header_mode_tabs": [0.0, 3.0], - "sidebar_lining": [0.5, 0.5], - "sidebar_lining_thin": [0.2, 0.2], - "sidebar_setup": [0.0, 2.0], - "sidebar_tabs": [0.0, 3.5], - "sidebar_inputfields": [0.0, 2.0], - "sidebar_extruder_box": [0.0, 6.0], - "simple_mode_infill_caption": [0.0, 5.0], - "simple_mode_infill_height": [0.0, 8.0], - - "section": [0.0, 2.0], - "section_icon": [1.6, 1.6], - "section_icon_column": [2.8, 0.0], - - "setting": [25.0, 1.8], - "setting_control": [10.0, 2.0], - "setting_control_depth_margin": [1.4, 0.0], - "setting_preferences_button_margin": [3.3, 0.0], - "setting_control_margin": [0.0, 0.0], - "setting_unit_margin": [0.5, 0.5], - "setting_text_maxwidth": [40.0, 0.0], - - "standard_list_lineheight": [1.5, 1.5], - "standard_list_input": [20.0, 25.0], - "standard_arrow": [0.8, 0.8], - - "button": [4, 4], - "button_icon": [2.5, 2.5], - "button_lining": [0, 0], - - "topbar_button": [8, 4], - - "button_tooltip": [1.0, 1.3], - "button_tooltip_arrow": [0.25, 0.25], - - "progressbar": [26.0, 0.8], - "progressbar_radius": [0.4, 0.4], - "progressbar_control": [8.0, 0.8], - - "scrollbar": [0.75, 0.5], - - "slider_groove": [0.5, 0.5], - "slider_handle": [1.5, 1.5], - "slider_layerview_size": [1.0, 22.0], - "slider_layerview_background": [4.0, 0.0], - "slider_layerview_margin": [1.0, 1.0], - - "layerview_menu_size": [16.5, 21.0], - "layerview_menu_size_compatibility": [22, 23.0], - "layerview_legend_size": [1.0, 1.0], - "layerview_row": [11.0, 1.5], - "layerview_row_spacing": [0.0, 0.5], - - "checkbox": [2.0, 2.0], - "mode_switch": [2.0, 1.0], - - "tooltip": [20.0, 10.0], - "tooltip_margins": [1.0, 1.0], - "tooltip_arrow_margins": [2.0, 2.0], - - "save_button_text_margin": [0.3, 0.6], - "save_button_save_to_button": [0.3, 2.7], - "save_button_specs_icons": [1.4, 1.4], - - "modal_window_minimum": [60.0, 45], - "wizard_progress": [10.0, 0.0], - - "message": [30.0, 5.0], - "message_close": [1.25, 1.25], - "message_button": [6.0, 1.8], - - "infill_button_margin": [0.5, 0.5], - - "jobspecs_line": [2.0, 2.0] - } -} From 1070e99ec2b7bf30af9dcaedfcbb2ac29f5dff0a Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 12 Sep 2017 11:51:04 +0200 Subject: [PATCH 64/80] Add message_border back CURA-4203 Sadly QtGraphicalEffects is not available in Qt 5.8, so we have to use the less fancy border for message boxes. --- resources/themes/cura-light/theme.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index f30026f172..431c5b44e3 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -219,6 +219,7 @@ "message_background": [255, 255, 255, 255], "message_shadow": [0, 0, 0, 120], + "message_border": [127, 127, 127, 255], "message_text": [0, 0, 0, 255], "message_button": [12, 169, 227, 255], "message_button_hover": [12, 169, 227, 255], From 3f60bc9287501df4f89bfade395f60d3f854316f Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 11:59:21 +0200 Subject: [PATCH 65/80] Cleanup combobox styling --- resources/themes/cura-light/styles.qml | 23 ++++++----------------- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 8f2131bbfb..049c2b547c 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -614,7 +614,7 @@ QtObject { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; - color: Theme.getColor("setting_control") + color: (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") Behavior on color { ColorAnimation { duration: 50; } } border.width: Theme.getSize("default_lining").width; @@ -660,24 +660,11 @@ QtObject { { background: Rectangle { - color: - { - if(!enabled) - { - return UM.Theme.getColor("setting_control_disabled"); - } - if(control.hovered) - { - return UM.Theme.getColor("setting_control_highlight"); - } - else - { - return UM.Theme.getColor("setting_control"); - } - } + color: !enabled ? UM.Theme.getColor("setting_control_disabled") : (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") border.width: UM.Theme.getSize("default_lining").width - border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") + border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : (control.hovered || control._hovered) ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") } + label: Item { Label @@ -695,6 +682,7 @@ QtObject { elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } + Rectangle { id: swatch @@ -714,6 +702,7 @@ QtObject { color: if (control.color_override != "") {return control.color_override} else {return control.color;} } + UM.RecolorImage { id: downArrow diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index b00050c14c..c8cd70ff2f 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -166,7 +166,7 @@ "setting_control": [255, 255, 255, 255], "setting_control_selected": [24, 41, 77, 255], - "setting_control_highlight": [255, 255, 255, 0], + "setting_control_highlight": [255, 255, 255, 255], "setting_control_border": [127, 127, 127, 255], "setting_control_border_highlight": [12, 169, 227, 255], "setting_control_text": [27, 27, 27, 255], From 073c2d3335d91c2c8427340efcb39829edb330c1 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 12:11:23 +0200 Subject: [PATCH 66/80] style and code improvements for combobox with color swatch --- resources/qml/SidebarSimple.qml | 36 +++++--------------------- resources/themes/cura-light/styles.qml | 29 ++++++++++----------- 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index bd2c7ab3b7..c2c1562fbb 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -331,41 +331,19 @@ Item { var current_extruder = extruderModel.get(currentIndex); color_override = ""; - if (current_extruder === undefined) { - return ""; - } - var model_color = current_extruder.color; - return (model_color) ? model_color : ""; + if (current_extruder === undefined) return "" + return (current_extruder.color) ? current_extruder.color : ""; } - textRole: 'text' // this solves that the combobox isn't populated in the first time Cura is started + textRole: "text" // this solves that the combobox isn't populated in the first time Cura is started anchors.top: enableSupportCheckBox.bottom - anchors.topMargin: - { - if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) - { - return UM.Theme.getSize("sidebar_margin").height; - } - else - { - return 0; - } - } + anchors.topMargin: ((supportEnabled.properties.value === "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("sidebar_margin").height : 0 anchors.left: infillCellRight.left + width: UM.Theme.getSize("sidebar").width * .55 - height: - { - if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) - { - // default height when control is enabled - return UM.Theme.getSize("setting_control").height; - } - else - { - return 0; - } - } + height: ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("setting_control").height : 0 + Behavior on height { NumberAnimation { duration: 100 } } style: UM.Theme.styles.combobox_color diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 049c2b547c..a2b36569fb 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -610,6 +610,7 @@ QtObject { property Component combobox: Component { ComboBoxStyle { + background: Rectangle { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; @@ -620,6 +621,7 @@ QtObject { border.width: Theme.getSize("default_lining").width; border.color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); } + label: Item { Label { anchors.left: parent.left; @@ -656,19 +658,17 @@ QtObject { // Combobox with items with colored rectangles property Component combobox_color: Component { - ComboBoxStyle - { - background: Rectangle - { + ComboBoxStyle { + + background: Rectangle { color: !enabled ? UM.Theme.getColor("setting_control_disabled") : (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") border.width: UM.Theme.getSize("default_lining").width border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : (control.hovered || control._hovered) ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") } - label: Item - { - Label - { + label: Item { + + Label { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width anchors.right: swatch.left @@ -683,28 +683,25 @@ QtObject { verticalAlignment: Text.AlignVCenter } - Rectangle - { + Rectangle { id: swatch height: UM.Theme.getSize("setting_control").height / 2 width: height - anchors - { + anchors { right: downArrow.left; verticalCenter: parent.verticalCenter margins: UM.Theme.getSize("default_margin").width / 4 } - border.width: UM.Theme.getSize("default_lining").width * 2 - border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") +// border.width: UM.Theme.getSize("default_lining").width * 2 +// border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") radius: width / 2 color: if (control.color_override != "") {return control.color_override} else {return control.color;} } - UM.RecolorImage - { + UM.RecolorImage { id: downArrow anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 From 9b33bc8194f20c02dc59a9a8da85f778ada4ee40 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 12:50:12 +0200 Subject: [PATCH 67/80] CURA-4319 fix combobox hover states --- resources/themes/cura-light/styles.qml | 27 +++++++++++--------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index a2b36569fb..71e45b9bb1 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -615,14 +615,15 @@ QtObject { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; - color: (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") + color: control.hovered ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") Behavior on color { ColorAnimation { duration: 50; } } border.width: Theme.getSize("default_lining").width; - border.color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); + border.color: control.hovered ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); } label: Item { + Label { anchors.left: parent.left; anchors.leftMargin: Theme.getSize("default_lining").width @@ -658,16 +659,17 @@ QtObject { // Combobox with items with colored rectangles property Component combobox_color: Component { + ComboBoxStyle { background: Rectangle { - color: !enabled ? UM.Theme.getColor("setting_control_disabled") : (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") + color: !enabled ? UM.Theme.getColor("setting_control_disabled") : control._hovered ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") border.width: UM.Theme.getSize("default_lining").width - border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : (control.hovered || control._hovered) ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") + border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control._hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") } label: Item { - + Label { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width @@ -687,18 +689,11 @@ QtObject { id: swatch height: UM.Theme.getSize("setting_control").height / 2 width: height - - anchors { - right: downArrow.left; - verticalCenter: parent.verticalCenter - margins: UM.Theme.getSize("default_margin").width / 4 - } - -// border.width: UM.Theme.getSize("default_lining").width * 2 -// border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") + anchors.right: downArrow.left + anchors.verticalCenter: parent.verticalCenter + anchors.margins: UM.Theme.getSize("default_margin").width / 4 radius: width / 2 - - color: if (control.color_override != "") {return control.color_override} else {return control.color;} + color: (control.color_override !== "") ? control.color_override : control.color } UM.RecolorImage { From 6b08a435b3e32760c3f59158e6306e1deec40bc6 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 13:16:29 +0200 Subject: [PATCH 68/80] Improve retraction settings for PVA These are new retraction settings as tested by the materials & processing team. --- resources/variants/ultimaker3_bb04.inst.cfg | 6 +++++- resources/variants/ultimaker3_extended_bb04.inst.cfg | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index a5aa03f1fa..6b189bc6c3 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -24,7 +24,10 @@ prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 +retraction_amount = 4.5 +retraction_count_max = 20 retraction_extrusion_window = =retraction_amount +retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_support = =math.ceil(speed_print * 25 / 35) speed_support_interface = =math.ceil(speed_support * 20 / 25) @@ -40,6 +43,7 @@ support_interface_height = 0.6 support_interface_skip_height = =layer_height support_join_distance = 3 support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 +support_offset = 2 support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 2 +switch_extruder_retraction_amount = 12 \ No newline at end of file diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index eb9eefed0c..769044db0b 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -24,7 +24,10 @@ prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 +retraction_amount = 4.5 +retraction_count_max = 20 retraction_extrusion_window = =retraction_amount +retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_support = =math.ceil(speed_print * 25 / 35) speed_support_interface = =math.ceil(speed_support * 20 / 25) @@ -40,6 +43,7 @@ support_interface_height = 0.6 support_interface_skip_height = =layer_height support_join_distance = 3 support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 +support_offset = 2 support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 2 +switch_extruder_retraction_amount = 12 \ No newline at end of file From 53dbf1c55d581f24d3df14f64d4f0f1f6e1b0626 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 13:21:48 +0200 Subject: [PATCH 69/80] Remove switch_extruder_* settings from UM2+ UM2+ is a single-extrusion printer after all, so these settings aren't used. --- resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg | 3 --- .../quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg | 3 --- 6 files changed, 18 deletions(-) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 6b0cd0b200..4d3c299526 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -64,9 +64,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index 1c596ab98d..ef50e2889d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -63,9 +63,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 88814ba2a4..b6130e43eb 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.1 travel_avoid_distance = 3 wall_0_inset = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index da1b928482..399a3a6631 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.1 travel_avoid_distance = 3 wall_0_inset = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index b4e2ddfa96..b6156728c9 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.5 travel_avoid_distance = 3 wall_0_inset = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index f31e0dd192..1b66887dbe 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.5 travel_avoid_distance = 3 wall_0_inset = 0 From 3a098f4b4c1c340463f31020da4dbee48d063064 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 13:24:33 +0200 Subject: [PATCH 70/80] CURA-4319 material compatibility link style --- resources/qml/SidebarHeader.qml | 29 +++++++++----------------- resources/themes/cura-light/styles.qml | 1 + 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 3cb5ae156f..91f16d49ec 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -351,14 +351,12 @@ Column rightMargin: UM.Theme.getSize("sidebar_margin").width } - Item - { + Item { height: UM.Theme.getSize("sidebar_setup").height anchors.right: parent.right width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width - UM.RecolorImage - { + UM.RecolorImage { id: warningImage anchors.right: materialInfoLabel.left anchors.rightMargin: UM.Theme.getSize("default_margin").width @@ -366,40 +364,33 @@ Column source: UM.Theme.getIcon("warning") width: UM.Theme.getSize("section_icon").width height: UM.Theme.getSize("section_icon").height - //sourceSize.width: width + 5 - //sourceSize.height: width + 5 - color: UM.Theme.getColor("material_compatibility_warning") visible: !Cura.MachineManager.isCurrentSetupSupported } - Text - { + Text { id: materialInfoLabel wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Check material compatibility") - font: UM.Theme.getFont("default"); + text: catalog.i18nc("@label", "Check material compatibility") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + linkColor: UM.Theme.getColor("text_link") verticalAlignment: Text.AlignTop anchors.top: parent.top anchors.right: parent.right anchors.bottom: parent.bottom - color: UM.Theme.getColor("text") - MouseArea - { + MouseArea { anchors.fill: parent hoverEnabled: true - onClicked: - { + onClicked: { // open the material URL with web browser var version = UM.Application.version; var machineName = Cura.MachineManager.activeMachine.definition.id; - var url = "https://ultimaker.com/materialcompatibility/" + version + "/" + machineName; Qt.openUrlExternally(url); } - onEntered: - { + onEntered: { var content = catalog.i18nc("@tooltip", "Click to check the material compatibility on Ultimaker.com."); base.showTooltip( materialInfoRow, diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 71e45b9bb1..6b6093901b 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -693,6 +693,7 @@ QtObject { anchors.verticalCenter: parent.verticalCenter anchors.margins: UM.Theme.getSize("default_margin").width / 4 radius: width / 2 + color: (control.color_override !== "") ? control.color_override : control.color } From 2ffc5d2b581da42c405f8094ddf3817b01904e9b Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 13:39:39 +0200 Subject: [PATCH 71/80] fix color swatch to be the same as layer view color swatch --- resources/themes/cura-light/styles.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 6b6093901b..be3e78990e 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -693,7 +693,8 @@ QtObject { anchors.verticalCenter: parent.verticalCenter anchors.margins: UM.Theme.getSize("default_margin").width / 4 radius: width / 2 - + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") color: (control.color_override !== "") ? control.color_override : control.color } From 766bc9ae972e491b3a90bc6ced78a14087678004 Mon Sep 17 00:00:00 2001 From: Mark Date: Tue, 12 Sep 2017 14:37:29 +0200 Subject: [PATCH 72/80] Changed bold fonts to normal CURA-4148 --- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarHeader.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 27b5b23aa6..ba357f40a5 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -181,7 +181,7 @@ Rectangle color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: (control.checked || control.pressed) ? UM.Theme.getFont("default_little_big") : UM.Theme.getFont("default") + font: UM.Theme.getFont("default") text: control.text; } } diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 91f16d49ec..a17c896ad6 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -153,7 +153,7 @@ Column control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: control.checked ? UM.Theme.getFont("default_bold") : UM.Theme.getFont("default") + font: UM.Theme.getFont("large_nonbold") text: catalog.i18nc("@label", "Extruder") visible: width < (control.width - extruderIconItem.width - UM.Theme.getSize("default_margin").width) elide: Text.ElideRight From 4c9028b3d0d16b3fb6e1e7e4c68f2d180010f971 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 12 Sep 2017 15:06:06 +0200 Subject: [PATCH 73/80] Remove z-fighting kludge This was actually introducing z-fighting artefacts with the new shader and no added geometry. --- cura/BuildVolume.py | 1 - resources/shaders/grid.shader | 3 --- 2 files changed, 4 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 9b6647fe43..62a8b8be4d 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -181,7 +181,6 @@ class BuildVolume(SceneNode): self._grid_shader.setUniformValue("u_plateColor", Color(*theme.getColor("buildplate").getRgb())) self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate_grid").getRgb())) self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_grid_minor").getRgb())) - self._grid_shader.setUniformValue("u_z_bias", 0.000001) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index c44db85dba..ca1e56e060 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -57,7 +57,6 @@ fragment41core = uniform lowp vec4 u_plateColor; uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; - uniform lowp float u_z_bias; //Bias in the depth buffer for rendering this object (to make an object be rendered in front of or behind other objects). in lowp vec2 v_uvs; out vec4 frag_color; @@ -77,14 +76,12 @@ fragment41core = float majorLine = min(majorGrid.x, majorGrid.y); frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); - gl_FragDepth = gl_FragCoord.z + u_z_bias; } [defaults] u_plateColor = [1.0, 1.0, 1.0, 1.0] u_gridColor0 = [0.96, 0.96, 0.96, 1.0] u_gridColor1 = [0.8, 0.8, 0.8, 1.0] -u_z_bias = 0.0 [bindings] u_modelViewProjectionMatrix = model_view_projection_matrix From 1a2392cfa1bc32f76e2776f017dee89ed4d350f6 Mon Sep 17 00:00:00 2001 From: Brecht Nuyttens Date: Tue, 12 Sep 2017 15:07:53 +0200 Subject: [PATCH 74/80] Fixed definition --- .../definitions/vertex_delta_k8800.def.json | 119 +++++++++--------- 1 file changed, 58 insertions(+), 61 deletions(-) diff --git a/resources/definitions/vertex_delta_k8800.def.json b/resources/definitions/vertex_delta_k8800.def.json index 1c5cfab59b..caa4a5703a 100644 --- a/resources/definitions/vertex_delta_k8800.def.json +++ b/resources/definitions/vertex_delta_k8800.def.json @@ -1,65 +1,62 @@ { - "id": "K8800", - "name": "Vertex Delta K8800", - "version": 1, - "inherits": "fdmprinter.json", - "machine_settings": { - "machine_width": { - "default": 200 - }, - "machine_height": { - "default": 225 - }, - "machine_depth": { - "default": 200 - }, - "machine_center_is_zero": { - "default": true - }, - "machine_shape": { - "default": "elliptic" - }, - "machine_nozzle_size": { - "default": 0.35 - }, - "machine_head_shape_min_x": { - "default": 0 - }, - "machine_head_shape_min_y": { - "default": 0 - }, - "machine_head_shape_max_x": { - "default": 0 - }, - "machine_head_shape_max_y": { - "default": 0 - }, - "machine_nozzle_gantry_distance": { - "default": 0 - }, - "machine_nozzle_offset_x_1": { - "default": 0 - }, - "machine_nozzle_offset_y_1": { - "default": 0 - }, - "machine_gcode_flavor": { - "default": "RepRap" - }, - "machine_start_gcode": { - "default": "; Vertex Delta Start Gcode\nM0 Is my nozzle clean?\nM400\nG28 ; Home extruder\nM106 S128 ; Start fan\nM104 T0 R130 ; Set cold nozzle\nM109 T0 R130 ; Wait for cold nozzle\nM117 Leveling bed...\nG29 ; Level Bed\nG1 X0 Y100 Z1 F2000\nG92 Z0.9 ; Set Z position (SET Z OFFSET HERE -> 1 - OFFSET)\nM107 ; Stop fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM104 T0 S{material_print_temperature}\nG92 E0 ; Reset extruder position\nM109 T0 S{material_print_temperature}\nM117 Priming nozzle...\nM83\nG1 E20 F100 ; purge/prime nozzle\nM82\nG92 E0 ; Reset extruder position\nG4 S3 ; Wait 3 seconds\nG1 Z5 F2000\nM117 Vertex Delta printing" - }, - "machine_end_gcode": { - "default": "; Vertex Delta end code\nM107 ; Turn off fan\nG91 ; Relative positioning\nT0\nG1 E-1 F1500; Reduce filament pressure\nM104 T0 S0\nG90 ; Absolute positioning\nG92 E0 ; Reset extruder position\nM300 S4000 P500\nM300 S3000 P500\nM300 S2000 P800\nG28\nM84 ; Turn steppers off" - } + "id": "K8800", + "name": "Vertex Delta K8800", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "manufacturer": "Velleman nv", + "file_formats": "text/x-gcode", + "visible": true, + "author": "Velleman" + }, + "overrides": { + "machine_width": { + "default_value": 200 }, - "categories": { - "material": { - "settings": { - "material_bed_temperature": { - "visible": true - } - } - } + "machine_height": { + "default_value": 225 + }, + "machine_depth": { + "default_value": 200 + }, + "machine_center_is_zero": { + "default_value": true + }, + "machine_shape": { + "default_value": "elliptic" + }, + "machine_nozzle_size": { + "default_value": 0.35 + }, + "machine_head_shape_min_x": { + "default_value": 0 + }, + "machine_head_shape_min_y": { + "default_value": 0 + }, + "machine_head_shape_max_x": { + "default_value": 0 + }, + "machine_head_shape_max_y": { + "default_value": 0 + }, + "machine_nozzle_gantry_distance": { + "default_value": 0 + }, + "machine_nozzle_offset_x_1": { + "default_value": 0 + }, + "machine_nozzle_offset_y_1": { + "default_value": 0 + }, + "machine_gcode_flavor": { + "default_value": "RepRap" + }, + "machine_start_gcode": { + "default_value": "; Vertex Delta Start Gcode\nM0 Is my nozzle clean?\nM400\nG28 ; Home extruder\nM106 S128 ; Start fan\nM104 T0 R130 ; Set cold nozzle\nM109 T0 R130 ; Wait for cold nozzle\nM117 Leveling bed...\nG29 ; Level Bed\nG1 X0 Y100 Z1 F2000\nG92 Z0.9 ; Set Z position (SET Z OFFSET HERE -> 1 - OFFSET)\nM107 ; Stop fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM104 T0 S{material_print_temperature}\nG92 E0 ; Reset extruder position\nM109 T0 S{material_print_temperature}\nM117 Priming nozzle...\nM83\nG1 E20 F100 ; purge/prime nozzle\nM82\nG92 E0 ; Reset extruder position\nG4 S3 ; Wait 3 seconds\nG1 Z5 F2000\nM117 Vertex Delta printing" + }, + "machine_end_gcode": { + "default_value": "; Vertex Delta end code\nM107 ; Turn off fan\nG91 ; Relative positioning\nT0\nG1 E-1 F1500; Reduce filament pressure\nM104 T0 S0\nG90 ; Absolute positioning\nG92 E0 ; Reset extruder position\nM300 S4000 P500\nM300 S3000 P500\nM300 S2000 P800\nG28\nM84 ; Turn steppers off" } + } } \ No newline at end of file From f054f0fafb75ef06dfc5994300184a1939167f5f Mon Sep 17 00:00:00 2001 From: Brecht Nuyttens Date: Tue, 12 Sep 2017 15:37:49 +0200 Subject: [PATCH 75/80] Fixed minor stuff --- resources/definitions/vertex_delta_k8800.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/vertex_delta_k8800.def.json b/resources/definitions/vertex_delta_k8800.def.json index caa4a5703a..b832620942 100644 --- a/resources/definitions/vertex_delta_k8800.def.json +++ b/resources/definitions/vertex_delta_k8800.def.json @@ -5,7 +5,7 @@ "inherits": "fdmprinter", "metadata": { "manufacturer": "Velleman nv", - "file_formats": "text/x-gcode", + "file_formats": "text/x-gcode", "visible": true, "author": "Velleman" }, @@ -50,7 +50,7 @@ "default_value": 0 }, "machine_gcode_flavor": { - "default_value": "RepRap" + "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "; Vertex Delta Start Gcode\nM0 Is my nozzle clean?\nM400\nG28 ; Home extruder\nM106 S128 ; Start fan\nM104 T0 R130 ; Set cold nozzle\nM109 T0 R130 ; Wait for cold nozzle\nM117 Leveling bed...\nG29 ; Level Bed\nG1 X0 Y100 Z1 F2000\nG92 Z0.9 ; Set Z position (SET Z OFFSET HERE -> 1 - OFFSET)\nM107 ; Stop fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM104 T0 S{material_print_temperature}\nG92 E0 ; Reset extruder position\nM109 T0 S{material_print_temperature}\nM117 Priming nozzle...\nM83\nG1 E20 F100 ; purge/prime nozzle\nM82\nG92 E0 ; Reset extruder position\nG4 S3 ; Wait 3 seconds\nG1 Z5 F2000\nM117 Vertex Delta printing" From fa72c47866b2f607fd11708707c9545ae1922d2b Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 15:41:20 +0200 Subject: [PATCH 76/80] CURA-4203 update margins --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d602cc96ae..09e8542fac 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -358,7 +358,6 @@ "tooltip_margins": [1.0, 1.0], "tooltip_arrow_margins": [2.0, 2.0], - "save_button_text_margin": [0.3, 0.6], "save_button_save_to_button": [0.3, 2.7], "save_button_specs_icons": [1.4, 1.4], @@ -372,6 +371,7 @@ "message_button": [6.0, 1.8], "message_shadow": [0, 0], "message_margin": [0, 1.0], + "message_inner_margin": [1.5, 1.5], "infill_button_margin": [0.5, 0.5], From 48cda42ece6484d0bd9132c61748442dc740bf13 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Tue, 12 Sep 2017 15:49:00 +0200 Subject: [PATCH 77/80] Adjusted scale factor CURA-4215 --- cura/CuraSplashScreen.py | 10 +++++----- resources/images/cura.png | Bin 117044 -> 55074 bytes 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index ea2538d1ba..6c82a671c7 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -15,10 +15,10 @@ from UM.Application import Application class CuraSplashScreen(QSplashScreen): def __init__(self): super().__init__() - self._scale = round(QFontMetrics(QCoreApplication.instance().font()).ascent() / 12) + self._scale = 0.7 splash_image = QPixmap(Resources.getPath(Resources.Images, "cura.png")) - self.setPixmap(splash_image.scaled(splash_image.size() * 0.5 * self._scale)) + self.setPixmap(splash_image) self._current_message = "" @@ -56,7 +56,7 @@ class CuraSplashScreen(QSplashScreen): font = QFont() # Using system-default font here font.setPointSize(38) painter.setFont(font) - painter.drawText(230, 88, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) + painter.drawText(230, 90, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) @@ -67,14 +67,14 @@ class CuraSplashScreen(QSplashScreen): pen.setWidth(4 * self._scale) pen.setColor(QColor(255, 255, 255, 255)) painter.setPen(pen) - painter.drawArc(130, 495, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + painter.drawArc(130, 380, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) # draw message text if self._current_message: font = QFont() # Using system-default font here font.setPointSize(16) painter.setFont(font) - painter.drawText(200, 295, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, + painter.drawText(180, 240, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, self._current_message) painter.restore() diff --git a/resources/images/cura.png b/resources/images/cura.png index e1954c517219b7b6132a754dafbbfa17db37d419..ead100b28a9975b8cf983c10b6507db43897f17f 100644 GIT binary patch literal 55074 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 n#snzkV_jrtTrLX4#za@z(X#oSoH16wtkk? zqwjp24abHVFMRESQPaO~(jn-)sk8j(G@wH>gub}h0uuhFZXQpNTOR7cKru#b2IgCu z-ZT27A906~Cxn4tx2p_4Mi_m*T{gBQWA*^h5_SguxI+wv@$+wH#WFOku$;^MFzH;# zMw!G)?lW(7VXWh6=C*_{`$f@n3LXZuI$&7^!ZfO5JFcXm{=YFWTPE%dp*0Zl0C?<0 z>?w8ehCmY=@7@DS30eXN#T1`-dVLvgM+fYwV#Gk!vrL5(_5`O~U*Q%odSoM~km`WC z=_C~o{Z4?JQgK9Hw{d?f47t1LDX)RsIu~x90g{Fp*Cg08s)HCfgnC_?2Vx^v{^las z^v05AygLeB?#h8~B1J(qRzlLjz!W3QD(@GNaPkdqGZKQx>16UCqxV*j49L}0*SbD* zv!WQ^4@PzT^yz1Ovj~R7fM$*PTai+*wEOV$N5FvPCAGnNMTH7k&F zo`HXl-14K7%xAoMbr9|8W{qbIa7AH<0H+N_v~gM}=E$M&W0@n4_axfnY$oFbW9R)V~SEu z?F;>tN~+d)*5@Agh&q!tb-#l(wzgxA!^SDATgA0K~o*51xaK zb-=H-79^#FaYLefrK$|{T*sJQuu9JEVlMo$87kld!ZC7?^tDuI^`x_4-Q>PjFp=xV zzoi={BJ-HVTS|+|6{EYit@cfs0gZ{YX9=HDt_%dHRQWlXf)zf2z|)V(akk<9@4{)r zq#w09Hdby63|P1kfJn@KoM12_AO??78~cF5I%3T< z7L8%!bQMc4edR27AHAi&$YXG@JY78;G=rH#n9dH5o&Y-X)qAS>N zwA_1?Ge|NNa2w1E#n{8Ocit(=#Itl}3d^Kglv~&TR8~~_)Lmz20NUkkGhW zaw`F)thRO=XXiSdVwaDFjAiT2z~Y#t^H!;2!9vGRhPylU%OYA(R1>}7@1t^2N%*h4 zb~p)x5gYZ^io|XTM2%8dAqs{Kxi6Kwv}{br&u|RfQcWk|CuvjW% zg9CoXndk)NaC0T&En}8m;nz{U5cFfX0@!D5@s`Nc#oxbwUtrxgEzqQB!^kcolix{{ zME+xF^+)vAr%oCAOucfuJbFWRBL#?Ywi36#H+V=QS~Zpn$)^ze>PcXR!@H4ut$6)N z%r-=OY{SfwaSHsyS%cccMlq5Jy3u;; zmWF=7a5`^DK6({M6EUT8D#&{2RqHiaZH6!Vreto30>wVQ;<|sSL$O z$0D1%r#}{&d~_5;8xd?(&0n@*U&c1wzh84L`>lJzD!qGs3*$$8k1fp4Z}O0ILz82~{qKC3i^i3yDQSxbF>J#8`&@1wxmNYK zPR;SWX7|S2S;B4hCIK;pTL|kKRUg^UbuUH9iMK@YV#hfa@qGW!{ZXI`(_S1@D#j_)4O3S*Nm7)4uASJ4)A` z8a^2XEB#l?bTiB+epSMfZ!-W zyokGN>zm?t+xba!+5=0>D+;2#qy`XM8XwUzaLtFfk=7(IG7JW5nP|Z|r8FMNL;MaQyW`2xYsw?j`Z}g*N>F@je!#LV%0D8W@0rU!<=hj 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 literal 117044 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�F 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

QdfAe!xAKRv2*sUF8jDsc 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 LE#)jFbHD!u9VNOX From a28264acae0413b9c580d6abee6e77117bc1fe6e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 12 Sep 2017 16:01:57 +0200 Subject: [PATCH 78/80] Adjust text positions and sizes CURA-4215 --- cura/CuraSplashScreen.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 6c82a671c7..dd4dd9b2cc 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -54,13 +54,13 @@ class CuraSplashScreen(QSplashScreen): # draw version text font = QFont() # Using system-default font here - font.setPointSize(38) + font.setPointSize(34) painter.setFont(font) - painter.drawText(230, 90, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) + painter.drawText(275, 87, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) - painter.drawText(280, 77, 330 * self._scale, 255 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[1]) + painter.drawText(320, 82, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignBottom, version[1]) # draw the loading image pen = QPen() @@ -74,7 +74,7 @@ class CuraSplashScreen(QSplashScreen): font = QFont() # Using system-default font here font.setPointSize(16) painter.setFont(font) - painter.drawText(180, 240, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, + painter.drawText(180, 243, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, self._current_message) painter.restore() From 204019702dc429a9f63b27a724c19d4f03cbfd52 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Wed, 13 Sep 2017 13:58:08 +0200 Subject: [PATCH 79/80] Added Title for messages CURA-4203 --- cura/ArrangeObjectsJob.py | 9 ++++-- cura/BuildVolume.py | 2 +- cura/CuraApplication.py | 4 +-- cura/MultiplyObjectsJob.py | 4 +-- cura/Settings/CuraContainerRegistry.py | 11 ++++++-- cura/Settings/MachineManager.py | 3 +- cura/Settings/MaterialManager.py | 2 +- .../CuraEngineBackend/CuraEngineBackend.py | 11 +++++--- .../ProcessSlicedLayersJob.py | 2 +- plugins/GCodeReader/GCodeReader.py | 9 ++++-- plugins/LayerView/LayerView.py | 3 +- plugins/PluginBrowser/PluginBrowser.py | 3 +- .../RemovableDriveOutputDevice.py | 15 +++++----- plugins/SliceInfoPlugin/SliceInfo.py | 6 +++- .../NetworkPrinterOutputDevice.py | 28 +++++++++++-------- plugins/USBPrinting/USBPrinterOutputDevice.py | 6 ++-- .../USBPrinterOutputDeviceManager.py | 4 +-- 17 files changed, 76 insertions(+), 46 deletions(-) diff --git a/cura/ArrangeObjectsJob.py b/cura/ArrangeObjectsJob.py index 3158fcc887..8a3bb2daa8 100755 --- a/cura/ArrangeObjectsJob.py +++ b/cura/ArrangeObjectsJob.py @@ -27,7 +27,11 @@ class ArrangeObjectsJob(Job): self._min_offset = min_offset def run(self): - status_message = Message(i18n_catalog.i18nc("@info:status", "Finding new location for objects"), lifetime = 0, dismissable=False, progress = 0) + status_message = Message(i18n_catalog.i18nc("@info:status", "Finding new location for objects"), + lifetime = 0, + dismissable=False, + progress = 0, + title = i18n_catalog.i18nc("@info:title", "Finding Location")) status_message.show() arranger = Arrange.create(fixed_nodes = self._fixed_nodes) @@ -82,5 +86,6 @@ class ArrangeObjectsJob(Job): status_message.hide() if not found_solution_for_all: - no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects")) + no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects"), + title = i18n_catalog.i18nc("@info:title", "Can't Find Location")) no_full_solution_message.show() diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 62a8b8be4d..1c9a0708fd 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -99,7 +99,7 @@ class BuildVolume(SceneNode): self._build_volume_message = Message(catalog.i18nc("@info:status", "The build volume height has been reduced due to the value of the" " \"Print Sequence\" setting to prevent the gantry from colliding" - " with printed models.")) + " with printed models."), title = catalog.i18nc("@info:title","Build Volume")) # Must be after setting _build_volume_message, apparently that is used in getMachineManager. # activeQualityChanged is always emitted after setActiveVariant, setActiveMaterial and setActiveQuality. diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 021f20fa82..0b01c72574 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1293,7 +1293,7 @@ class CuraApplication(QtApplication): message = Message( self._i18n_catalog.i18nc("@info:status", "Only one G-code file can be loaded at a time. Skipped importing {0}", - filename)) + filename), title = self._i18n_catalog.i18nc("@info:title", "Warning")) message.show() return # If file being loaded is non-slicable file, then prevent loading of any other files @@ -1302,7 +1302,7 @@ class CuraApplication(QtApplication): message = Message( self._i18n_catalog.i18nc("@info:status", "Can't open any other file if G-code is loading. Skipped importing {0}", - filename)) + filename), title = self._i18n_catalog.i18nc("@info:title", "Error")) message.show() return diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index a795e0bc10..c986439a5b 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -32,7 +32,7 @@ class MultiplyObjectsJob(Job): def run(self): status_message = Message(i18n_catalog.i18nc("@info:status", "Multiplying and placing objects"), lifetime=0, - dismissable=False, progress=0) + dismissable=False, progress=0, title = i18n_catalog.i18nc("@info:title", "Placing Object")) status_message.show() scene = Application.getInstance().getController().getScene() @@ -80,5 +80,5 @@ class MultiplyObjectsJob(Job): status_message.hide() if not found_solution_for_all: - no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects")) + no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects"), title = i18n_catalog.i18nc("@info:title", "Placing Object")) no_full_solution_message.show() diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index c2422d909a..5b7f4199d8 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -140,15 +140,20 @@ class CuraContainerRegistry(ContainerRegistry): success = profile_writer.write(file_name, found_containers) except Exception as e: Logger.log("e", "Failed to export profile to %s: %s", file_name, str(e)) - m = Message(catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to export profile to {0}: {1}", file_name, str(e)), lifetime = 0) + m = Message(catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to export profile to {0}: {1}", file_name, str(e)), + lifetime = 0, + title = catalog.i18nc("@info:title", "Error")) m.show() return if not success: Logger.log("w", "Failed to export profile to %s: Writer plugin reported failure.", file_name) - m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Failed to export profile to {0}: Writer plugin reported failure.", file_name), lifetime = 0) + m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Failed to export profile to {0}: Writer plugin reported failure.", file_name), + lifetime = 0, + title = catalog.i18nc("@info:title", "Error")) m.show() return - m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Exported profile to {0}", file_name)) + m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Exported profile to {0}", file_name), + title = catalog.i18nc("@info:title", "Export Details")) m.show() ## Gets the plugin object matching the criteria diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 7f7593a9d5..4fb700e5ea 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -105,7 +105,8 @@ class MachineManager(QObject): self._auto_hotends_changed = {} self._material_incompatible_message = Message(catalog.i18nc("@info:status", - "The selected material is incompatible with the selected machine or configuration.")) + "The selected material is incompatible with the selected machine or configuration."), + title = catalog.i18nc("@info:title", "Incompatible Material")) globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value) activeMaterialChanged = pyqtSignal() diff --git a/cura/Settings/MaterialManager.py b/cura/Settings/MaterialManager.py index 5640d7af38..e2f91622c8 100644 --- a/cura/Settings/MaterialManager.py +++ b/cura/Settings/MaterialManager.py @@ -21,7 +21,7 @@ class MaterialManager(QObject): #Material diameter changed warning message. self._material_diameter_warning_message = Message(catalog.i18nc("@info:status Has a cancel button next to it.", - "The selected material diameter causes the material to become incompatible with the current printer.")) + "The selected material diameter causes the material to become incompatible with the current printer."), title = catalog.i18nc("@info:title", "Incompatible Material")) self._material_diameter_warning_message.addAction("Undo", catalog.i18nc("@action:button", "Undo"), None, catalog.i18nc("@action", "Undo changing the material diameter.")) self._material_diameter_warning_message.actionTriggered.connect(self._materialWarningMessageAction) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index d94c3be94f..ea1f8c39b4 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -278,7 +278,7 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", - "The selected material is incompatible with the selected machine or configuration.")) + "The selected material is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Material Details")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -305,7 +305,8 @@ class CuraEngineBackend(QObject, Backend): error_labels.add(definitions[0].label) error_labels = ", ".join(error_labels) - self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current settings. The following settings have errors: {0}".format(error_labels))) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current settings. The following settings have errors: {0}".format(error_labels)), + title = catalog.i18nc("@info:title", "Setting Details")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -314,7 +315,8 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.BuildPlateError: if Application.getInstance().platformActivity: - self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because the prime tower or prime position(s) are invalid.")) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because the prime tower or prime position(s) are invalid."), + title = catalog.i18nc("@info:title", "Invalid position")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -322,7 +324,8 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.NothingToSlice: if Application.getInstance().platformActivity: - self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit.")) + self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), + title = catalog.i18nc("@info:title", "Warning")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 1fe537622f..1fbe50873e 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -235,7 +235,7 @@ class ProcessSlicedLayersJob(Job): if self.isRunning(): if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView": if not self._progress: - self._progress = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, 0) + self._progress = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, 0, catalog.i18nc("@info:title", "Information")) if self._progress.getProgress() != 100: self._progress.show() else: diff --git a/plugins/GCodeReader/GCodeReader.py b/plugins/GCodeReader/GCodeReader.py index c59e6dce72..115b802b4d 100755 --- a/plugins/GCodeReader/GCodeReader.py +++ b/plugins/GCodeReader/GCodeReader.py @@ -251,7 +251,10 @@ class GCodeReader(MeshReader): self._clearValues() - self._message = Message(catalog.i18nc("@info:status", "Parsing G-code"), lifetime=0) + self._message = Message(catalog.i18nc("@info:status", "Parsing G-code"), + lifetime=0, + title = catalog.i18nc("@info:title", "G-code Details")) + self._message.setProgress(0) self._message.show() @@ -362,7 +365,9 @@ class GCodeReader(MeshReader): if Preferences.getInstance().getValue("gcodereader/show_caution"): caution_message = Message(catalog.i18nc( "@info:generic", - "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate."), lifetime=0) + "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate."), + lifetime=0, + title = catalog.i18nc("@info:title", "G-code Details")) caution_message.show() # The "save/print" button's state is bound to the backend state. diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 97a343bd33..f79bf5b929 100755 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -90,7 +90,8 @@ class LayerView(View): self._only_show_top_layers = bool(Preferences.getInstance().getValue("view/only_show_top_layers")) self._compatibility_mode = True # for safety - self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled")) + self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled"), + title = catalog.i18nc("@info:title", "Layer View")) def _resetSettings(self): self._layer_view_type = 0 # 0 is material color, 1 is color by linetype, 2 is speed diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index b8db123a91..2d4a753014 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -161,7 +161,8 @@ class PluginBrowser(QObject, Extension): if plugin_id is None: msg = i18n_catalog.i18nc("@info:status", "Failed to get plugin ID from {0}", file_path) - self._progress_message = Message(msg, lifetime=0, dismissable=False) + msg_title = i18n_catalog.i18nc("@info:tile", "Warning") + self._progress_message = Message(msg, lifetime=0, dismissable=False, title = msg_title) return # find a potential license file diff --git a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py index 80b2a2a430..4b6a6e8071 100644 --- a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py +++ b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py @@ -86,7 +86,7 @@ class RemovableDriveOutputDevice(OutputDevice): job.progress.connect(self._onProgress) job.finished.connect(self._onFinished) - message = Message(catalog.i18nc("@info:progress Don't translate the XML tags !", "Saving to Removable Drive {0}").format(self.getName()), 0, False, -1) + message = Message(catalog.i18nc("@info:progress Don't translate the XML tags !", "Saving to Removable Drive {0}").format(self.getName()), 0, False, -1, catalog.i18nc("@info:title", "Saving")) message.show() self.writeStarted.emit(self) @@ -128,9 +128,8 @@ class RemovableDriveOutputDevice(OutputDevice): self._stream = None except: Logger.logException("w", "An execption occured while trying to write to removable drive.") - message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(), - str( - job.getError()))) + message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(),str(job.getError())), + title = catalog.i18nc("@info:title", "Error")) message.show() self.writeError.emit(self) return @@ -138,13 +137,13 @@ class RemovableDriveOutputDevice(OutputDevice): self._writing = False self.writeFinished.emit(self) if job.getResult(): - message = Message(catalog.i18nc("@info:status", "Saved to Removable Drive {0} as {1}").format(self.getName(), os.path.basename(job.getFileName()))) + message = Message(catalog.i18nc("@info:status", "Saved to Removable Drive {0} as {1}").format(self.getName(), os.path.basename(job.getFileName())), title = catalog.i18nc("@info:title", "File Saved")) message.addAction("eject", catalog.i18nc("@action:button", "Eject"), "eject", catalog.i18nc("@action", "Eject removable device {0}").format(self.getName())) message.actionTriggered.connect(self._onActionTriggered) message.show() self.writeSuccess.emit(self) else: - message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(), str(job.getError()))) + message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(), str(job.getError())), title = catalog.i18nc("@info:title", "Warning")) message.show() self.writeError.emit(self) job.getStream().close() @@ -154,7 +153,7 @@ class RemovableDriveOutputDevice(OutputDevice): if Application.getInstance().getOutputDeviceManager().getOutputDevicePlugin("RemovableDriveOutputDevice").ejectDevice(self): message.hide() - eject_message = Message(catalog.i18nc("@info:status", "Ejected {0}. You can now safely remove the drive.").format(self.getName())) + eject_message = Message(catalog.i18nc("@info:status", "Ejected {0}. You can now safely remove the drive.").format(self.getName()), title = catalog.i18nc("@info:title", "Safely Remove Hardware")) else: - eject_message = Message(catalog.i18nc("@info:status", "Failed to eject {0}. Another program may be using the drive.").format(self.getName())) + eject_message = Message(catalog.i18nc("@info:status", "Failed to eject {0}. Another program may be using the drive.").format(self.getName()), title = catalog.i18nc("@info:title", "Warning")) eject_message.show() diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 30b664ed63..09373d0c2f 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -40,7 +40,11 @@ class SliceInfo(Extension): Preferences.getInstance().addPreference("info/asked_send_slice_info", False) if not Preferences.getInstance().getValue("info/asked_send_slice_info"): - self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymised slicing statistics. You can disable this in the preferences."), lifetime = 0, dismissable = False) + self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymised slicing statistics. You can disable this in the preferences."), + lifetime = 0, + dismissable = False, + title = catalog.i18nc("@info:title", "Collecting Data")) + self.send_slice_info_message.addAction("Dismiss", catalog.i18nc("@action:button", "Dismiss"), None, "") self.send_slice_info_message.actionTriggered.connect(self.messageActionTriggered) self.send_slice_info_message.show() diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 450f92a6e3..a0b181b7ce 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -154,12 +154,12 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._authentication_id = None self._authentication_key = None - self._authentication_requested_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer requested. Please approve the request on the printer"), lifetime = 0, dismissable = False, progress = 0) - self._authentication_failed_message = Message(i18n_catalog.i18nc("@info:status", "")) + self._authentication_requested_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer requested. Please approve the request on the printer"), lifetime = 0, dismissable = False, progress = 0, title = i18n_catalog.i18nc("@info:title", "Connection status")) + self._authentication_failed_message = Message(i18n_catalog.i18nc("@info:status", ""), title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._authentication_failed_message.addAction("Retry", i18n_catalog.i18nc("@action:button", "Retry"), None, i18n_catalog.i18nc("@info:tooltip", "Re-send the access request")) self._authentication_failed_message.actionTriggered.connect(self.requestAuthentication) - self._authentication_succeeded_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer accepted")) - self._not_authenticated_message = Message(i18n_catalog.i18nc("@info:status", "No access to print with this printer. Unable to send print job.")) + self._authentication_succeeded_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer accepted"), title = i18n_catalog.i18nc("@info:title", "Connection Status")) + self._not_authenticated_message = Message(i18n_catalog.i18nc("@info:status", "No access to print with this printer. Unable to send print job."), title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._not_authenticated_message.addAction("Request", i18n_catalog.i18nc("@action:button", "Request Access"), None, i18n_catalog.i18nc("@info:tooltip", "Send access request to the printer")) self._not_authenticated_message.actionTriggered.connect(self.requestAuthentication) @@ -464,7 +464,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._connection_state_before_timeout = self._connection_state self.setConnectionState(ConnectionState.error) self._connection_message = Message(i18n_catalog.i18nc("@info:status", - "The connection with the network was lost.")) + "The connection with the network was lost."), + title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._connection_message.show() if self._progress_message: @@ -495,7 +496,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): # Go into timeout state. Logger.log("d", "We did not receive a response for %0.1f seconds, so it seems the printer is no longer accessible.", time_since_last_response) self._connection_state_before_timeout = self._connection_state - self._connection_message = Message(i18n_catalog.i18nc("@info:status", "The connection with the printer was lost. Check your printer to see if it is connected.")) + self._connection_message = Message(i18n_catalog.i18nc("@info:status", "The connection with the printer was lost. Check your printer to see if it is connected."), + title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._connection_message.show() if self._progress_message: @@ -644,7 +646,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None, **kwargs): if self._printer_state not in ["idle", ""]: self._error_message = Message( - i18n_catalog.i18nc("@info:status", "Unable to start a new print job, printer is busy. Current printer status is %s.") % self._printer_state) + i18n_catalog.i18nc("@info:status", "Unable to start a new print job, printer is busy. Current printer status is %s.") % self._printer_state, + title = i18n_catalog.i18nc("@info:title", "Printer Status")) self._error_message.show() return elif self._authentication_state != AuthState.Authenticated: @@ -668,14 +671,16 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): if self._json_printer_state["heads"][0]["extruders"][index]["hotend"]["id"] == "": Logger.log("e", "No cartridge loaded in slot %s, unable to start print", index + 1) self._error_message = Message( - i18n_catalog.i18nc("@info:status", "Unable to start a new print job. No Printcore loaded in slot {0}".format(index + 1))) + i18n_catalog.i18nc("@info:status", "Unable to start a new print job. No Printcore loaded in slot {0}".format(index + 1)), + title = i18n_catalog.i18nc("@info:title", "Error")) self._error_message.show() return if self._json_printer_state["heads"][0]["extruders"][index]["active_material"]["guid"] == "": Logger.log("e", "No material loaded in slot %s, unable to start print", index + 1) self._error_message = Message( i18n_catalog.i18nc("@info:status", - "Unable to start a new print job. No material loaded in slot {0}".format(index + 1))) + "Unable to start a new print job. No material loaded in slot {0}".format(index + 1)), + title = i18n_catalog.i18nc("@info:title", "Error")) self._error_message.show() return @@ -831,7 +836,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): def startPrint(self): try: self._send_gcode_start = time() - self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), 0, False, -1) + self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), 0, False, -1, i18n_catalog.i18nc("@info:title", "Sending Data")) self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), None, "") self._progress_message.actionTriggered.connect(self._progressMessageActionTrigger) self._progress_message.show() @@ -900,7 +905,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): except IOError: self._progress_message.hide() - self._error_message = Message(i18n_catalog.i18nc("@info:status", "Unable to send data to printer. Is another job still active?")) + self._error_message = Message(i18n_catalog.i18nc("@info:status", "Unable to send data to printer. Is another job still active?"), + title = i18n_catalog.i18nc("@info:title", "Warning")) self._error_message.show() except Exception as e: self._progress_message.hide() diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 529783acb8..4b4c24c5d2 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -150,7 +150,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def printGCode(self, gcode_list): Logger.log("d", "Started printing g-code") if self._progress or self._connection_state != ConnectionState.connected: - self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer is busy or not connected.")) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer is busy or not connected."), title = catalog.i18nc("@info:title", "Print Details")) self._error_message.show() Logger.log("d", "Printer is busy or not connected, aborting print") self.writeError.emit(self) @@ -453,11 +453,11 @@ class USBPrinterOutputDevice(PrinterOutputDevice): container_stack = Application.getInstance().getGlobalContainerStack() if container_stack.getProperty("machine_gcode_flavor", "value") == "UltiGCode": - self._error_message = Message(catalog.i18nc("@info:status", "This printer does not support USB printing because it uses UltiGCode flavor.")) + self._error_message = Message(catalog.i18nc("@info:status", "This printer does not support USB printing because it uses UltiGCode flavor."), title = catalog.i18nc("@info:title", "USB Printing")) self._error_message.show() return elif not container_stack.getMetaDataEntry("supports_usb_connection"): - self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer does not support usb printing.")) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer does not support usb printing."), title = catalog.i18nc("@info:title", "Warning")) self._error_message.show() return diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index bb2fda46df..430ec1d844 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -105,7 +105,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension): if file_name.startswith("file://"): file_name = QUrl(file_name).toLocalFile() # File dialogs prepend the path with file://, which we don't need / want if not self._usb_output_devices: - Message(i18n_catalog.i18nc("@info", "Unable to update firmware because there are no printers connected.")).show() + Message(i18n_catalog.i18nc("@info", "Unable to update firmware because there are no printers connected."), title = i18n_catalog.i18nc("@info:title", "Warning")).show() return for printer_connection in self._usb_output_devices: @@ -119,7 +119,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension): self._usb_output_devices[printer_connection].setProgress(100, 100) Logger.log("w", "No firmware found for printer %s called '%s'", printer_connection, file_name) Message(i18n_catalog.i18nc("@info", - "Could not find firmware required for the printer at %s.") % printer_connection).show() + "Could not find firmware required for the printer at %s.") % printer_connection, title = i18n_catalog.i18nc("@info:title", "Printer Firmware")).show() self._firmware_view.close() continue From 4ed5796e6fb43daa7fd3503db61ae475959b81ae Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 13 Sep 2017 14:44:56 +0200 Subject: [PATCH 80/80] Small improvement on startupscreen CURA-4215 --- resources/images/cura.png | Bin 55074 -> 52943 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/images/cura.png b/resources/images/cura.png index ead100b28a9975b8cf983c10b6507db43897f17f..f3aacf32a768942f8243d620391c3a7a788de0b5 100644 GIT binary patch literal 52943 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 literal 55074 zcmc$`hd-BX_&H^8 za^KQ;#M0P9Z}QUC;nU(^Q;i0>t(l9PEyh>|YA>@@bEq!V7%vwPU_3f{Q!%SDtiw1%Js5BXsza)#Sd8IiSCF~061mQKt_L7_jdW}{ge zAxTbfPX?2Q<#0<*5I=YuIaVNWO)FjvM_#;o75eR)3f?P>p)kwc+cqKO*ars(Nbv99 zzip6j_-6T?p5mmp)eRE8>BYSYYYGda?yzO)M(h0X(2YANNgppnba86dh`sb!6~FW3 z4j!l(8q!?2aKYvG7Ye)-OmcrXjdE$x@yNSC-e5AU9jCXG&DJ7m8&Yn+F|jY%vwmP4 zmxfp!L>}x~Nzt~X;;Af%1=~txY$z~&o>>vbl9esO9q<33_$nz0KYooCA;Pi}n)wqV ztV)L%adf*~)zKNr&p*#}PFrW5kTL6Wtj?dIrBHJI6czU7=`-5kE2^7}A8?G`rbenx zO7SsN&4cFsHW5|>!P_$fiKr1o;yvg2`esTBTg(xvg>Jci z@K%{|h2*m)+B)TF7W>?6NR2_YxcPC+DV%APuvHOzwh-3^O7}<4&8)QRXBqlzeowa~Fr@54*?)b3IWBG#8f(&MrP4Q=^)zl1c0_!q{ z+``S;I_E=8jcCOL4~3?sd4fN8TuMrKTNoLB{J~rvjir;d70ol;7U8;Ln`+xZ>!QJB zkMeR_3SoBL+Ug4&*ZmJEMop$(DIrF=oL}XiKSduiQ(PTgOKzT_M`-F43v!ytspR|r zG!pcB&J|2NDBaodsBj#=+{}A&>s-qb;wLC*)5DKEerRx7TUy$0U}y+?yVuSKU6G}y z>7{|jX7hV_hW~~-zP$D{)(~#!$;)54%EMD(a<`J-yonha z(q8*n8L7#{%)X-=*OJM3UQkdl3NOT5B0o_w+Q!P_r$_l%!_t?RELc?ql$ypLzc%8s zx--eXW>q{RYmq_N<=Gdae+XTFkT_2lk@ZTOA@Ckl$JD3M^?xhr(}_6A9eEX;jffFT zx0}J8JFQiwix0 zQ?`n~f89nMs!ror9kKgUUfK>2BZo-M{ls~O^F%~MSjClUu%iX8>rZlp);x%NcZU1o zTV4f?7ZU%_K%~91Gssk5pBnv!EAS0*%F4<#3=G1v6=G!wwj_f6TPoKcaMQI|8;_Lq z_4V;t@S&>}+xU*2is0N7K7ZT*BO-;cuqhhOd5B#hVYawda;sov8;^j=4l!2=x~<=}imjOY~-beFkyNk~gGh@@RNj(c|#Yr=3{UR7If5xYh$ao$Zw z=PWy)>-*r~FSlCiD_Odm+Uhn2*4FH_qzW!$gE})-0v-zih^}&+NB!Wk#O1;hr~(hW zbHmPM&0c~23`W(d@I4Y?4WOaAScV|h{x!!AC>Kwt*teA{xr|mGQl5*K=i5r>3Jrz*N&Krg@`{Yww22 zLPXYWf&rqI%h2}ESDJ|hJ0cyN5n1PwPS~;*p6L9^Wny8$LCgeG7(=PaW)#@n?bvXG ziI6pNnW%q9C+z==MY8XDB!2vQBBV6mD*TO-l9B;uQ=(?=S|u+b!mb?minsf3)zhcg zl{GcVnoM?h>J!?rR;Tut>M2^d5IuqCLtoeNH~r-_MO?gY!EQ-wEG*Czp7 zmxN}L!FN;^WFL{4MeuaLN2>Dk^YIx1#{ieG?N}Rd;Uo2vfgg%jBM}cvE6k?=+!-l3 zO)s3=(4O@#seiuUSFQ{b!T>SBebN4fT+V|&c&m&@FF*hAuACfhk`p zGJ(_b4MRR$RPkr;NP+6oC0|F82YD>lD1_-rABZdZ`H4ZVc-qx)Jy;Ks_+q7|&8G(o za~HPR&&-8qYXV&dj0>RcjW|D+Z&<=#F|=z2+#eC^Lx;ZdfngxJ%7Ac zrlJ*fVN4!6!Wt#!Etc^Rp?kq<8#TB*L3C`osLh<8p*wu7*Qt6Ara-He6iG`xERl_| zI8yz!Y)$Fjy?ymNcb-^RkB=Fk%k)JpwPW`o;*IccU0}2m5kjsKVu@sY`3RFEKi{+GGQd2-jV_y->eHN__- z<+=*eWF;EQFd#F+NTaV`xFIV;Z~_d`y0%{$1!RhBFjZWK6D8@w^Lw4weeA*w8?upN zor@1|+`V&gE`9cCx+TnN)iNG+`QdNQx^Hx|beXVP*2{S6;nP9)b%xVmQhTlc%ml_W zz?9f;$^U@^$LB%|&l|NY-Bm3lmOG;C(u@orY=Cb7IAskC44}X7we&j678#2KyO!}B z0UC{I`-vfJOd;YO)zH<&^B>0k`T*-VG4~|~Va29q>UK*C4GrZp;!Pr(sqwUvv?%*( zOdxQ+MX9v$HHKLnF-z^TGR#Oziv)ruN=qvL%uwhq53QB1uI{eYDSv+cSjx9>&QxAR z_vqww5tv{PX&8=9f}bo;W=79SYUl9$b0771xB{r1ace~jpjVV3pyHC}FR?olAmK-`X>=SE_BQAC%K z^!jzfqr&jfFWPhiEp>stRUCanvOsm`aMtTj*pKi*KpNUmUhXH zTSpy4LRb|ov3Twd4@Jw$+C=Kby`wNG@xJTo`mxtVgXb3ajdt94-(0nHl{nTOyiKh5 zTNJ`LmyJh8QhF8^L&LSBF^A>4;vmu)w>Q|#b~$3euo54Z=jX4&>Jm2oj4#U1 zCzmXv^$QRdHj)3Al{6Uw(10|38lHfT5`_QR#VR^#|tVQZQA@IVpi6ReOO`ugX+ zrIo=S_U^xzh^hWCw915=+HKKRhpCg=B`yAn}rp&fdw-<1g>j zRA-~|Cqjmmpu7+%-2MHGLEP{=*R1$=&?esU_D&C`x&*XeHGw{H#wwm&%# zUaZbUN{Zo5O(Y(=IG3a(-Q`GJUteFiER2?Jt=>lFwNO#LkzIAH9UDOo=KSh&NcESp zi4H44M-Nfj!l$`8ic7;B3V<}QH|g_r>6n?b2E9KPueLojn99w!u?e4y1o!)zI$Zk7^PW;ox-c>A#==_K3;g~$v z0HPT~InDDo{u8LEDe|lH8Ydo0nc^ePH-M`O*F|DEP|8H{QxnU-wNw1TYh1@KsBI&R zK66PKOeE}j{1y$DF)ik-97dcPgTV^YGM+OIY3b&MckeIXpU?8`5B_p?W+_6W3NbN#Oo)e+Tc2=N%M*3 zGVg|&m5+ha1yYwp`wMak;j7s&IG>gAIBV(bF1=v7JL6WXp{d#WMT5G_y8QjUxQYuc zF3&?Sc?MtcHMIixTa=Q@9``j^V@ta zTC^}6s2xSp_6V8q@ZxWY_h{~hs>#ZJ%)SxK_l!IiDr#WGL#)>Csz4?sMSGqs61#tL zsw#sqiO4E_r>3$bD=SdQ7hEKRA*?GNN!AMmVGYAsrH|EsGxIR5ClNO|eg3~sJy(rq zUFK%`EZj;39OTL+b`NIeh&z)=17D~Q1p@rd;AAS|o(w^{Ip{8~URcyXlB9y;2TK3D z8ZP{nn=+Ub_ISmweSJ2z>1^n~HpfD)VjZh#UbKOBuVHBTHSfO{3v>{eQKOm}MXMDw z2f&N}^XeeHQVq>l*|&$2JxSdyWjL6#Mt4Yp6)wsdbZS)47P@gT+dam^-q$DC(%8iH zO130S$6zeRlMwc65%;l?l#~<~QQD~Ups&eZv@AYX`hY-y0-+_vr}8uZ@0H0^E#mC) z%e@m5MmNQ~(Wj;9zf;a_*PEt(%m4!c-WLU9uA{(q8J`@n-L0=bT zh&!Vxrx|F)ssG<)3DdOL$Y7>%f{V+KJOAhY=~}pDFmhL}T-j=+y5*Gq-*+6;&K{__ zOCWF#xhQuBm|XTJ^tA$Q9^j6y3ZDnwqR^?wn0XEC1(TE}ZZN_mq@AJ;A}J zzQn$BMoDnaPTEZIY4Pd{RzkeCWgY&dI#Sg^nWF+n>4BKeM?xZYv`;&2_^IF8{S_ETK_Y+CX&IeaRn*hwizM~Nr9U0m7Ih=9;z*=78wGhI`i@oXk z^0tyw>zR)_+!Z>}KY3i8zb~KR)`` zYVmPXPjzT#>f9!WoTgg{RNm+VSDBK$yq5AlsmO8X=0>$~fPV?xdb7X67@l`o<-5z& zYLE=OeMKzK}>RVXL%66q~Wj9BW8Tn!Oa#NGPCxGOVK7b`i%|(q@u3ez>B2f zi`fr^&d#oy8rtZ;SM`&cBK@HP@(o}g?p;?ep)^0El95Q)xsG99e}hB;>u=OM>*LkE zmMq*{T$_Kp`NHCEA*>u6mJ>CuOOy59(I@*Sfjb-1(zAgo>{@y6sEd?LMm$H?y(Eq| z+k6g}bK&ufiqU0vS$%>zZvXA86+bn9&}qPaK$EV2CLT7HkxMJC=5+O#L$a7Bmjpdo z(6Fpc=Pl$^k3hhbfP!YKL(RR2Kl4G6?(sZd&>clZLU=L&6rX?pe*aZsqKwWkMzJ0Q zRzL`zN=tRcEZ43PLTQdb$GLqEBmM z<*tkA-WCH{a>>H>Kdy~`Qe~%vc{jScwY61LM>lEl(QN)}0w*UY#!qr*ZEXA1V}4AY zrXoU*U1~_+DusxqtHl^NGv_S0F+x%3*Lhq6Ec^^QWj~4dXjPNXmW6)Nk5qLQyu0ZI z;~`yw_nG-=qRo#4(t7rfxBFa|`k5yDR*RAaA1dkVI8}%^8jrXR$Wc9$WQ}5wrjNXQ zT?QD~kmZh##6FaW%cSSXu+QVUj_9JJu0gYwrpHJ8PHR(?O>NewN1d^c;OCLRY++uqzJT<`!d6USx z90BO8WCVcQKIN$E%XPlO= z?=3DauB@s-{DYHIj4*YpteFsvxk%dT1fJ>RAnWpjDF0~t)aSPuHRk-!HCMNq1rI!O zh+|#fJA$2S_ECRk`+%H^O0T4kq=Su|03`Gl2a&eL?bg-Z=c$e>-_QMqSMgKBOQ`an zoIi)ndHp&GUHr%@YEI0~&dLPk=5uN5kl6b%M_}n9SJ@Q(fOej>FMA|H=VapJi+yP> zgibhFNL^*OA}bJGD`?v7Xnve-_X>hb7G`;q5yM_upxkN(t?=^1-oQemeAcO^{v zbSu`Sev(4kd2^ympt|%g_$_zm&YkFU6ycq7cQ&RP1^jj% zX=`hnP1bpiRykh1KuNi(lMf}bc@O{!JQV)Ycr_om1hmxA^5?Lzd>T!BBootUPtL$F&Dk}%v6pSr_a^zKGd-Zekloc0%U_?KdD?v?gxlxi>x9A1Z}o-T z$YVgR)UYU1F$fl;%30=?+(4LP>d;$9BXTf0<7E?96ir<-BYL)6{Hwluu8zc28Z zG}LrxG{h^n#&f85Ow_sy08DfkD`T_!1dk{Ah7IY$w-idHZ)B1?fB$HJ`0bFi^JO(nEs%}(Qxu_d1*K zi@wPms9R#v*kAPEX28yX!v5q&AeC#{>({ij;$Fnci9F`_bM+H&%+kqc)g!Ww6S^9H zxkwG*L2>fC&VDu&FVS(vQ3KcQs@+2&nwRP6bh@76*58s#?E+K>`?D3uK=-fu5r`kh z%EZQoOLUp%ww;~bQ0lX5S~+IDuWt!kx0mbl_{@fL^yjK)XaxqT4!!_O0@i4bENCBx zw{hqG=l1qzIS-50P37hBa#Yiv8`pc8Pc`_G=oYQ*9lZqOW4=2nEY7!oSkIKMvIFK0 zH8Gw_iXiUlNC~)sYDMdNts_S}%OM-hXY@BGJ+vO_wyiuJJ{j=Xn4-I3(;Ibq&PmXG zwA361|14RIMI-;gD{_nXV4G~t##tXrM zbuu59PbD3BBxEs|qdE%1I6a0BbV19`7?J{OSOv$Q6|Itc6O@(b{5t8pUzhobkrSAG zdBJq=-aXN5(W%FKlRh&~@Ox{{t-!6keEHa@OePOlki?bhc z-$c}%&2`2qNOlGtjZeF5H10i@)Ys9~oozb$)8;+>n5r^+?n7K<_q-T)wiJe@br)&6 zAftktpA*^B)n%@o+}|fvJ{AQNW#+pwUwarsAax>jcXzkz$?k~d?=LT@#XLCWp_4-S zV|2lQ*eKpxR?3$JQf=^1N!^ZAC!u)AH zm4C*~_-Fbv?^a5+6dII6|J%Lvqu4kSK#c69S4Y$p8>928YHA%%af$lty*Ent0MLFk zYki7&{}AT7Vm$k=Uh$2nI2FMci>2|F$Kp+R-KN&2F`aOlIG*TMCg#TFRsn$@OP@dD(T!F0_m)tP(hKEd~(ia5zM(0BB7%}YFnK|0WIeHlm~ zJl-~_E|x@>jk;Cdwb73(7TfngUv+BS{ZYCXAjR;Uj3EZ_%}8FpX{{R@Y};sPeM8A* zBLEA26dH`ydD=&h;jt+`&Cjn?(^}m-+5)r{TA6_FKj?me&d!_%VFx!R(otkQucoF( zl9*6=sYm|ZRVT~Xg1+9~7=0SaF=OvZ9Tr8vM-+FT6W^MjKKbL_EIvP!4-$NL5?|-_ z>WQbm+Y9Dhacp0DdPsK7s`Ys?gIfRXcGCOv%r>c2hk{7#+9$bZ_Vv{@^NobW#93I{ z&oG0s{&_BqmD_vU=*aX{PU7F=!~Hg@L19S z^tV(O!(Gx)rWWK4gU4*9qXGr;e=_wPf<;Q~5$?H|;zDr$B*W%OEcnUqjv%SV5L zC1d#aCOaiF+PD)SeH>`^PmAc84uuxqHl2&kw7mU^{9j6suVH>!9wgMg`yGXfj33t)oE&tF76NSK3B^pbUIyh=dY;j_(ji!s>?$p=r}av1?L5iP!I(WI{paUQ3~(Eo43U2$813aY zeI3t9uG*=-ievp%-F)IWx(Xcc{I21M5DD7jMvYEVbL1S3R(}*dXuKSKjf=}dkRv~p zEU=o~qHb_GKvLguk^d(9&SljR&v)hBB{O)VW5Fv?#FIEwJ21fr5L!Mf~hriBi{k&paso$<0I!dBN(rw49 z99h^8KYjWnCVB65(CLAB$;tj)Y^K%e7nWEvXbhfGZ|<>N#N?@cLoO3B@nZ3-Yreu} z|3|I9l$*Mr&Ge75TRFaN(rF^_Xq{sEXr%e{SymRa1ds?}lMUD(ymd>==%hCf(lRlL zc}7H)1(1$fD!?atudKX$pg@l=V7uq0W_)({{HM{6mICIV&JkY`WOdM~7|2$*tD_SD zGj^AEIpgnBk(A9Yj*Peddw+yY)D;z5wbUh_0so?Z|NebtVn0hlOb8i2d;Eu~Z4L4C zUfsr>>zX(=b|~Yg0+t=2Y};>lc6PLSHG{-v=jOIx$+Ex>T5E&}Kf9cpQS5o}^HKQC{l_PP z(k8z1mw-ud2;B^L7X)8+Rm=@gg65Gt4&Z_ zo-o~g{<_SIQ#32{!{rPnJKQ)#MNelJo9VMB@){|avCI!GUKI;GJy^tS>;jBXdvD)7 z9jnY+%WBspsB1Iz_vj=U?qhV7H;L$~hyy`UO%` zU-xZ-C%&0=r}Beyh~##UwR_PSpzFm49Cox+Sfd~U_Q+s-*te;bmM%xKS=bUG9nn|A zOd9>U7t_rtv(Y^X!bNBC6>2#(J^SAV3t?GM2N)3S{6($u5~1b|+;&aU>FTI5pUm_v+c~Gb={`t3_P~(;AV*$ik96TvY^jKvtE_XIQ~$_sO&=;1)bd|8FTb@L3dM zJ_G3B2Y}9FSV3^Kx1j*AN8KPRQkamCaA~?Z=<~{I^^{+Me0|-(qt6NqkF{4_${%(o z4kssGMgSs|+79Mm#;3i;9fg&apWJ4&5dMd9;DX_Z+l=IXqkuDDz`HMeYrUjrMB#cy zC*~oV-9!RdLHc+T=S{%hF3g5HpjJK8$DaDLlh7xC*j%VOL2GSy#57wyLkdLr>)>$> zR5?Ddva*_K*zRr1)6Cxd9j|V&{QW(uBcaq--qDaT>%~7*Q9ZR2qM?NR!sxxEAB@(2 zM6AoN^huvdz~H$2(MCk0a_9H*o6mnH>n%?XcQ^eS&FPX;?Za{^Dk?DU2^*93RDgqS zySceVfByr5RVhsUJj#BcG@^ylPgxa58+>m79KS5mboBhHQ%gZflOfB&;^N{QTvx$I zW7s`Yeyi6Tc7HtJSsGNJ_-AOTa42GCH{;fdeQ(v!U@{}L0jKn`Uvpn#3X67kj` zFow_jpTU#sfIXq9t9v=0Ley`E)5PZ&?#}86U!imh4C2^6sUu=oqRwzi4#sXl==3aA z31?3Q)4sEMFeUcQ z`i`uP6?rf))J`l$(9(x1iaNDrl2{30ytYBvZg%rEzy22poBZyLAY3+9R+J9{>voRj z(pQXg0VIiW>;n{v8SUj(ynvR(s+^o$ZlMh6Ic!naS=n@{Zb%|VS9{eO?H{g|u;}j6 zM0fNnxo{k<6qGQ>OycG1UU~4*LT+^R(xpqN5Fr^1>K>1AozQGmtLzw*M?X3LTf5mb z&1`w|qkrq>1e77JM{bW zDD?Vh*{QZFHePN+28^aYk7!pky%)2-_8RkiDXJ1@6T)lJ~He zem1*pVDR752E!VSmjNZa9QppozpwD|@A>&(0OvYkfl41Ac|}nRWOZ2G0JW(7_+UHJ z)-ZZr^^#oc`y>;ZR3;vBf*BAs+JQVXdtt}35(2-cmh|(8rk`+b*urZ9lC9MnkZVhW z4(9yXe+L1mhPX9-c3RyL-PF(^@oFCg8JF45gc1k8<3R#>Fw_TGR#XcCz>c;6AS4bG zH55>`JQGgdpMO(2L^kcuM&6~{{JXs^;J%=8@#4jyds)ySHkyujQG@`#N~o?b(O(}4 zPF~&)5M~5ydTAT}e&q(X1uJ&$@ZWkQ3GmlnP?R9(?=NM?@_YX=`n|ZQ@OX)vle6W&M@BidxNQzi2mLb5!zd|DZV%qz ztKdJeb^mQO%dMShEPwwplw9CJ^P*S1d8Oe%qrbPu$`GLprk~3c@*Z)&G_X_U2&U(NLW)J3@I1Tzw*L6S9h7gcn2g*sJaAx0EF;@!NNd+ zzf=a_&K@v_v9U3j57MB@pyBBNsBBH;eE59ZbCSE&PLnf$hk9;KhZbqkFN-5OItS_E z-tr(iN96KvFS7v&|M7fh#6*H%X zzPb;NmcyU}TA_n={>YS+NN@$huj-Kdp4q%Pn`*L0>| z6w8U@V@spPgDk1(#>461o4!B(rQ6j9(#%Rw4qO>0nvsVvQN`zXQ_L5{C@3@~Rd6=z zvN)e4?!4EhWn|9!u^^0W5HZzZ=_u2BuMCBwh72cOG#a>ZRRFylehn6 zW54&L%c@S`=FO3--HxmOc|P{uMbjJ8yrD}BDhnU=4Q;^qVaE1D_LT^>7GZHZ#M9M) zxS%!?MLXk_mW<=TGkGRiFVMVI5{6R1WW$`so||Dt#zV=og;j~>yB4H8c_`6KtvQEe zKrSW=Jn(bRLmL8G1BqN~*)S{uG!P?-Y*A?t7 zSxzFD^oW3VYv>KmaGtP^qqVC)5VL<-F5lM1-37c^Vz50@Hur z-GLk11>y>(aQ%}`)!=AmmzFNOOQ2sHNI7B&)`P6+*9&68+)#2>v<&O=+TM)0?E@$@mL^b(@#DKZ3Xy zte*=~9X`De#;Y#)X8{u)lVQe>E(Ve<>}Up<>uuj1^Me!gYPyfj+$7>7Tv`T4uT?Csta@n zyNVF8vbKhF4u7WB90>F%KKs+Kt%izLyJ}Cb|1$3YumF}6sy@F=N%8Fvrfu}w{eN~w5JL~1y{2Xh|9DZoyAey*?I z0fh>^EM>mNp*1Qu#w__HT(fX;3l$@yiFN3we{Wiki*Y2{&I_rwf!=25CV$SK!M{;|Fqa+@(2I`FSo;~-^PK*L8T z8}^giOP(Miz|@AS2OTHyxW;ZQS$?#E|w zN(=w)P3Z?ivl(!uy1~;xApTn&SDj~|iwegX7=v}Iqm#D2#~>9T>bJY1v+A|I*w+cJ zCkePAfYJZmhW7qHwhTYubi=*MptHc^gT9~+0FdC=Fgs=2(wr^^o#F$6{Vk_7E*}!Gee2lf~5aK*0<6{{7v5PPlTN+pvry>oOZ%OBy6AKq#}ualvUx z@kq72>c_3R1an7o+z+G$p!!?u)zej9tVp$Y*EV374bem#Y%k7rG6WS4{uY661{Pi9 zVbkF9XVsgNq2NeubXj5Y+S6=>XwFzdsj-oWtk?fm92@E@WI(8ge3ov3@a&QF$qpsF z8I|Y#V02aE{2%%S637^tlLO9>_7SvLT=|NArw42Vw zBNIEaLtJcFKKBSdDiFL36l3#5-^PqzHvNb8pb)^i%6)3EmGcy1+f`waeZ(`FEslo`3O`&L~sAO2=OIkT4LMFJ+Zl+m&7#!KHl>3Ea4XZ>4O_77Pr z2EPhdveq5)^kTpLAuyghZrLD3ISZBp=m+wJ^!8sASys}%ku2_F#f@VPTV7M_=hj*B zuf~=?Jq}N;9Y=^S$)Nf6u-u=?%}cspp#P&v|B-Q>#~njM!|WKQ638uzhNAAKxOjc< z(SQ&M2)?nY!D$v2S3_EZp-8e|`~H&Vk0%84N(xxwcaQX0>_BSX+RHg<^tb^WkAp%e z>MZ#J#GTD#I3h^WkpRX}AMKG{8yHoS2s7`_C$2qRLm9w`K>8@AHwJUb4)->u^K>>k zV;K}6W%hXwSYJOF4_b-eL*|yVRY~0;`v-6>Yhcb+Fl7^PwZh{d@L)3M9Dm;+LikB* zDRR1k&PnjzCX(IH-BP%H(VrgTER;;24-n?!pJ1YZDi{je=51*y|LhSA>Hi!baEIW4 z*i9eiI95VX$$^n*+7slcrPJ&_VM(S19V@Z}qi>{!?l&3k}m}oK`9r(3F1m>Px5s24f`4 zY4D?^LI9w5)MEtD4%iFys?`&|pKZ6DoOu8JnY_BYjf(F)Mm6M88D#J)HRqYw8Uz)f z6H%E4P=J0FT^9>$a&zTpTPDNHRwS(L2?$LJlMAR~1!U6oPwnFK_Oe#%=aK5czpC4? zC=0%a8Tfimn;hMbW$Qf+oI^iFQW_v+DHUob|yf|IC#V@udZp? zrMLI2d(A;ta4H*~f`53KM?bhdl1f4K5M=$<>gm8pa1>z+lEX9s-h`U(Ale0V5S86~ zfrK#WZ$qeWoFIEZ-=TWEbEWQ77)d8=Ob~>a00@tpFsLnNKZoZ|G{N50kq1C;*@zm zc#eZM{w_B+?9?=IK8LQLx7S7Xx?EZD>MC*!DCz8(&YvQE3kzlt*299%j;5o_&a|Qz zs|<^LKven|bask&G9l^z&+OmYm}YL3BTs(*Y)R0G{SecW0ij6?o(rt;SDx^h;(v2J z#v-pI#zWjaj7>X3ry`&zzkXE$L$vY7znzZb0I-f8IMu#ywayiXlr)++s2-oR8eY#d zO=t}U|FCJQl2Em)`nP(&mxI+csI%qnP_-}J-EF_S;y*e~)|HoeEdFW>6R`cx3NG(_ zh5ryfHWo_!Zo(KaNDrH`_&5`)Mhm}N=8!?qvs7fCLms`RtEf(m=~!B_sgbV1%#|dwe*@yb#P(=+8h$nQz@X zC_MXP#7hO#;AfR1QOJ||TX4`~3-3pzy&lAUMwU$h^uTD3B9lHQ2l)gpVsWfc&dW;# z_GAbo%7D?{EU=7>jqQAUCxjo=vwLwKhGgdengET?=?yPlg|rAotT+b;D#gkI$XGpj zJ5G)!&cIEgz2$Ze0LZiH4d>FwowK!Kbbw-=r<*`mB12tJfCA+Y{BERdLUZ~w@0JP8 z&}P0aOZUEvp3Wt3#_~sc_yN@b-2wT8Cp|-^G!!y+qiYrkadA(mf*Iy;ZM#?_MyRFr1LZn_^Q= zWCVi_Og_oy_d0V|#r`j0TbpiXh+`f0n{(hDd0xDF4?K6sMMMMerWvVXRn%_|lmvX= zbg+k)&zE!igY@U7wWxY}Osf z>eO}ghyo`9Zz8yFu?@s~oTP4@xttL|zBEU`*I)(FfcnFSY;ZNqQ^b=_Hz5)O^pA_1 z8>D>DfmU~h@*!olL4t=PqzW31EU?ON*6z_4^x+?2KS9vfa&e*V>>Lv-WTNJ_S{ApT z@y^Vs@<~ZGb=W5)B=k3U;9mdVEP$t^$G14vXHw!dj!<;bk2#<>Eu%>vR8x8J0;wJ+ zQH+yO|2y35jb?WAJ&nV-Q!2BX<6sR98?gDZmDDjGrQGx};Lm;3f zb0mPT#E~}?Gwh(%T+!2!hlhc@&3T^=6PmrWpdJgF&hC?)=2-5`kYgk$>X>KdD$<&3xx%ot7Dqvfcm6er|mzQ^^o`60Bf@E+t(h*m7I=)gb0Nh+&M>RtPIbpsl0RU3H*Y9gRwL81=xOT z-tSh$U~}_aRvz_+j6J}vF$#^ak z38@xPKn9Hj@GK~JG<#DZkZP>uPrE}T#lFD=mccHDa4P5W(3^&Bi*F@~a93bX&HZ+Bd3@6WfN9k7%c_LlQJyw4`^5qw}KWZXqpqUDd5)q`XJ z*ufXj^DE$9P>ZA$sdbL#s9r_ITF5ZS!MB6sEr28#%s|c%{`oGH9L-Ilu@7zSbAawp z8Dqzi=p6RakD{yKY$G~trZe1z|_TFm!+!5v7-G1pNw7>Y%o-OMbkX#VxIY1 zZKw?mzDfl67J2#S;X=S}GH(gS%3KFnd-=LyC>+kss;IaKM;d$}$TI+(({OwhIMybd zM3@7g7W!ovPy0CWNr$VhrHQU4}?BP>NEsR_unI@5)FpsQt6qu~JXle%-dUy#}RMsRhsw;Px|V{|!1l&oSv! z={}2VS|V9*MYS~B2)X_w_{U}6ch(vdN=`xb z^@XGr-Hc1`?$O+7V@W60oevHHOF5KSFd)1 z~Fel z`Ptjs!{H<}#=vHIlO`HQL#g+MNg|H{bDu));1)PFZW~jQa8MjH^aY466u+thhx^Ov z$r0P*sap3im~)EXZ9se-%vE0m-QzvDArQ?DTUvSqXV4T?RIC6fHjg^4|M}Ak(DBRH zuV^p;n9khn?0vNqG)O^6M8v|)9SPDiB*jGCeiOh~lcsM_6T>zx1-S$a5{!JdIfOSs zWRC}7U+LLffakIb3f<+S6}FV%`z8du2b0KQyeb-Udr3F&Dh#hfxy%Bmk#~}&atstd8IScivA#O^n8wx^VDnj0SH1gBt2<2Axn8c2FgBI zA6VG~n4}~slm?BABmql>5bM_8zZU&(?|`$E2oo;u~{xhj5WlTFc;fNS__wKs^@7P`0$(2Gv~! z^18L&8}!jM!n05V?Qr#9zT5)`b$$=VVludORaI5A(t)(;YMlVvpp-g#dZMKsANFU- z5drjzOiwpXh%kcp+}zt!Ab0|e&e_@T-&%M^219ReFZ^_c3s!=z%G^^14^-?VO?u$>*)CS4d*Ed>)zLjkb-~**=8ju;InD=#&_Wg zAP`J=_??2`S*Yf+huxdIyYr@Jhg6A)i8ZygnYsl7kA!@DeKQ9hX?)OrBt!#83JK1i zw}7Vu#wPfvS3o5MpO@w4O|%+z{3KP=MCPFxGcz&Py{HB+bka$NWTQK|`CRZpq{2U6RB3)%@o|YX^ znE;Iu;PNkENCRMAf>Vs3GtYuQc@xr0qGDo7MzDZF=mUZs1*HR3CFkP8-__Lx3M<%X zpFwo=-JHRie!NHL*Z2l%ryP!aKsmR3dPXEb6OHZ~G;guK9$j616JoDMbsmJU?x-4J zQep#OJ;9HQ>w9W_z4)(Rzu-NKjcR4!xh#W8@bBM0aQ#!u$^^B!E&+7BO>jp=h1jo= zURhb02HF$EJW}9z3pC2lR)PaHu9kJ)8)}ewgwC4{C>o4W7x2O1w$SKv7p#C11c{SxjCjgd05uqdjl=Yn(t z-a`~TRM*pE-%xV2ejpI$xA#X?LxUVj4P-p@12~8RAE>+*eF!l7ndgs2_D**-}x~IDG*#g17ZAKq#I=L6@)c2F!hxw+eZ{!9fOs2@J!sN?8{MQ(oykx+o@`uh4P+fsWYp$JKm z)6>&JgYxGev~vFfVsSs*vCUCQ`LsNk3x`;301(9qEbscE7Y8|Z{Tdf0h<+zsIfa8n z*3fBqOq*TP-_UGf$Ii^oeuB0MN&FZOJ+6mdhDC`mF43j}F57z| zQ6ZsM&;;G~{ut9s1;Au``P3UYAG#=zeY*kb46xfaFsH!^kF2n}=>30~d-JHC-}V1D z!-ve7l`$j=kvVhb5E>N3s3n|tIWK`29Pj1++U%%#Eb&Nh8ICV;r$`!W1 z!Gwa!Z5EK_3NT;CyuH2KedCxm5al)jjn6PumKV7g(x2m3u280h(0!ZSm@fgz=JSKG zV)Np-TLJ#j=)~s*vG|pQnLby&I=)hu4IT zx?jG0c}P6|g>;OimE_W1)8sY!0CqwgUyQhXAFwJN&>M0;KdU$`T$8<=OButD#*e>5-K%Z$x(9h6mU={@2_F$I{n)Wq!YYy}t{Z8foQl}-XE?Oo zrlNEYN}yhQ7o+-5cI?=t3pJ}_@45yD4<5XXNmX9X_Dx?FNa7Iqh`PEuJLf5Qn*)Tq z&(D`=-M@U90OGOrXNJAJ>OcSdgZ(TNF%WjH=j_$@2)G*UnOK&?mn%V?sf{Xm^_n%S zdRNt{o%yqF7eeTblr_pT$5KQou)j}YFKra!_;YPl@n@|8I^pK85U5h~EO~i$u<`PY zrmELXgSsieVJ27FE?M%3@A(1IFzp1}x6z6fD^L>*A?og)>P^lwm^-(}3F8f#eR}s+ zQdZ_MAKgBckU?yISf_X9<)TzpNsa}3kDyFm;Fxq)czJ%rF=`|J1~g>vzI{uqtPEFf z2~*n5Kep}CW!AD~y~&8=*ej{FtP(}Sg#go_WKjGcKYlD*IGQSI&!Y+KC;o9^1lXAV8Gytm1PTDUfAt9P4jqxkCVvmQV`?s_puJ|dj{>L^f{XqZ;{ z%nymXM6Tfs=TdLon14&R>5@Q`ctX$J^_lfWNJD|BN^r8bx7VFC$;bB!p}Ad$4kyo^ zouB`weTNR(90YLjIDX^c;lmAkXlS^09xQr!pNzP+3(;KFG8mK5B!ss2;g1bpvP1DC2jRapP0YK_El7cG(}Kcj!ID8TUc zvY{%~2tsEY8MSM)XBWYBOYx`KKpWwRB%t8p=)G4}AmM$ICDfrGE-z87>E5OF= zCQr+{@UAou+R>8&P09iMc>>evA2zIC-=lZ$z2@PzrF6FI^Aftcv|`o;0FmW3+m}ze zAg9UZ*fV5Ab?+C_e0sEVclJ@2u3ay6dhpt2X!^a)hvtm`Ym_{VHcVarLf_}!3i1tT zt$pS~jpru&%;aa9p+>VyGzduD&e4z^L^Rx3ls*bXuG8?`yK8f9OY=FW5Sn+);g!dh5t%U4srB#LfbMa1I4!NI^=he}G;M_haC*v|SoF(zky z|6aZJ5cK7k&CsGA^MTc24UP&WP*%jgB_^m79(gX=MMV~du@&|quPHO)&7e3Y_Sx1% zwWOlrDFUNbty}C@P zi;ySnxJb^OS`|Zo2DlDZa-xX`PQ8tr@!Pm6eO@=#2Co{sw+qf0bP6 z{X6b5%HENqMghOa5XR%i&Qw&*KFWWdK6}=4?_!SL4Z0Tsl?%^@LX)#;6K;;iWhzC9 z#M@PGZ)Acq(13cq`|dnX+1&b%an&-<^lQD38TYm;pR7A)&Kyd_=`&_z5)cR8nRY6+ zcX>mOoz0u;trf;2GVf*bJv*c*G&FRcpHYryKuW$;!^khx2Msz-8{!^1&}p`ZHSSIY z#a6Af4n(RP*-w768q{h1rcF;jeq3;KjkZUeaSNiT-(_7=PemL`*-E{ zh7B8j$;&$s9zKlX`h8kj2SM<9_}7U!`<<|Ni}AqMbZ8vzM-;ExePyeE+W5eiu}p z-ptf4-QU=TUrmg&(f2Wk{W{>E#_kPos`s0ko7Z>m@u(r~#+aOZO2-mU!_4++VPRom zplovT*GpA(^=W;I`gu0`C#Y4oG4u6L41aF8FB*4TBf{6>#XUH}98-g6rya4`R3`fm z9B7QtA#C-Blk8YLYrTr!Q$|Bk9HmxBK>%+zs$Toj`|!31!>YUKS?u!~jRHqE6b&6g5q6O2>sa z#15znNUDSemdY?S&3jb#VCQ$wht;2_7qv;JD?nn{y3e((9|hh0+fFlpc04(13^fm} z>L^egF>fU$CEc)$?lyk>c}wWJcjI0( zSWRtTSlG~6eNNq|XWFnLs88R()6hfbSe#OgItT>?O^Z3=Pz~qe&=(V>+Jup}}%ybqFgDA+b z0ZvgADgND!c`b=gmuZ5<(#J(c{)(r>MAnF9F){&dODUlCmUDRkyqfJ<6Evzm$kS$_ZiN;c7j5 z?#2aL_T^CnVn;mBQ8VVe>-Kk#9@TT#+ZP(T(Z`_>tfKg1I~=d*0C8)u&D67@-iM`Iw~ho3xlvK%W{`Pq`N%o@qhp%*8EF93A@1!n za^zXaRrt~F)s6;#=1=Jy%^pPKVJ$ET_#F7mkHW$xii$mk5AU#(GUvqk^9%Af@(ZPv zmF`79sI%%tS!m5Ht39|n0ZlMq9{or&YEom*16gsV_d7BBD2vY7i)Tj9coFu7XG}X+yX#bp-z$>? z${cqaOzFAz3srJ@lw-#zi#aSk{s8|rd9MP^)l#CodW>}_>kX#0oJdI0EXDg^Wo7k* zdYKM>1;udK+Kh9A%TuRL?J*DRGj5zG$CQ_w#;14xdExx|nP~hwJ?}b~oKC2iZl8i^qJj`Yn8}`VYc4vI` ze7u5#k4tCBKvybn^}xYu9xrH=ryfx$#T(4x3+z)=R0ObNU~aAvzd&cxx01+a59oR~ zWpE;v$RYc&V@qV$Sf9^}YfYdT@ zUqcy9GtZmH?RjGx@3V|3G2hHAw#^-1hXf6Gz1stfPyWK{GwR&1RZ~%c$Zkf&j}9U0 z`}cSPp4yJSVL8+d;&*?v_;_YLpY*vAz+;E>eY2zM{%Xl~!U7@Lk`6&HXWE88`ez4; z%3XEu1n(pXkhJ@y6%}6t?|dTS=#I0bY{|`iCNCJfEbHN}2DAy_B9r)XIS<_WXwk!* zZnD%ltnoaT6L)Nqbo*>IH#1{qN3-oac69F?GPlQw5vF~PJfM#a@i@*2A#k6H=-Cu3 z53_H}hm?%hjRQKcjnAlE5(~$tPo7xb)&t*DAkPg*)&A;5kw(F3(c9G2w0`~i{%UVn zDH=Gz2eY%E(DlV-T-;61rD~vjD>(QI`GkQYMxQKO)O5FtST*#V`m;~nevZ$n1Bt+4 zxA*nyxx%F&^qRAJ^^IBk$r!B|9gH~Tmfi>lWa?s~{_I>gme$#uQih$ELT5M7;{FSM zG&Vlo3e*yK>NrwIyDtyxfqDgpgm|H|l@J9oyWhDcyE`Rqn|AG<;(nP803pyc?a!~@ zzx9?Ff3WZmnf@xg#PyP9hZAKEWbp3WOX?9pG=gKz{& z35VqA;GshejvF_iVf+G`Bh1K%&)ZLRcdj`>6r&?0K7R37;kkq*8nd)bcxBh-Dp8@ z=|AH-(c|Pn0|(-mba3@{Hv9(bG)K(A@Tre*z&+t&V_ zaX>0cs(py6+O}!48z4(SY|0eGR%5f0O)6V2Z}LA{06!z*%6foZ!r?<|X!I4wKhy!z zWYKi6o_4^5m=C2$yNAaeu?PWcmrF;R|6v)_<_?OrP?ynCe zcbQRoIh^tzqKvBA_T<-EttOjP8`2OaYhR!BqK}$dW=>9};!=ipf|Cx2pUk7HYTl{GyK1n@CM{Y7YHzuglK&p`hR&yXw=rk=c=37LD^pFSg$@}v8qkq} zNZO87t2u~Km0#v83t?}`=Y~CgzP2h9|*?qiE1DFv52O(XAiX> z%cP-`=)HM@H*thdY8zz;G# zhrfi}9G~T{KYO+q=Wag?B+_X`*J$IDZ-P4UGOQytg=Em8^aybzXTsT@o^@7VRj&y2!dI#eN0EPC>o)obB?FDp}Nf4 zZ||ZAyM01S;FaK2r-6j_UW4iLAkezis#S+f0<38z;oyf*ZSUT_8(;AfD$I}_rOect zL+-Sm;qJANYU>gte-^ojloOYfOGuSgkH>{0xd|lNOwUAu<5mVz09;KCNDYCw;f0^T z|0bZM>+x=ep59W}1qjy`;8{!&qYgh~Kex5zqD70kuUg$#xzxTW-EXKx(57=QV`C@! zrfewrGEo#wrw1;A@i*LAm%9B}*U_h`u=T#1`xszkhy|5fHfqI`DI4Iu1iX-Td{1uF z&rhcu#^)AZ8>Z5N;=zZedv(UW@N`E8BRouGOb$#DnJXQEtZP0e67vbaD(Ypve*j|#%qSGb)BBtfwWBmPNc1xCAsrhtD>FSLevl0%z zwGkz`vHuQ@SJM#3ZrQRWWQF~d|Cl?itoBg<^j1)tnX!G5+RX(UF2xPe=<^7w=EK=3 z8_YB&FD&ivUW`_I>B^Nez!W0N=T>=bIy1y$7PUp(z0Ku+H9P`nZ21#8+~4|@(f#Mo zUo|lOG{rZ?JyL6*Szog!xwod3m$P$DstsyioPJ+N_ts5$;<*VIXOey+Hh=G68-6eD z&!FdHfu6y&!0mv99HzFn^2)9J7I!YU>zkK}b7ITvfoBjJ&~--~b4?5?xEU~d#Ucl- zm~-|UH+nNu8dPXn!h@b``bB+euXa6al&1al`$3~T`z8kdP(Jp@GREfDiQ z03k=8^T-Y>t8=w48Tr7l{XnBF9pe_A`@FBr1N;M(llB#ZD}e>C4^)p%OG}gQK6UE; z3;QnL{i3=2*BK&>UeK{Wm+amV(@?m%Wn1Rne|LZEI^!`WkGfjt?yAn{w+eXk6q^Sz z@Lh0jI^5_!ubtPmnqWLI+_(Cp`VP}2xz1ZUtk_&t5%!?m^rMxTnKD#5>jVv_OT|jA z3$sbu4fcCuq3?}?-93Yyjye7vvVN*d;`kO9>NJz8EH~VHr#0&P_|9`YtA=PqMuOMW zZ_wZaCZEsS%Uf`0s-H}2`tELeT|wH*bv;g7mhrAXS1J{C-`s7^_tDPbV_`?e{rb{? zq{gx7$*g#~cS68^!UHVbub9N&V?DlI+BGD4*?8ySEyv9MT{Gm%%FKlByVU3WQFaeB zrW}8AK`(z{i!n`A7A*KUW!Uq%4V>-g`nSIk7>JzUWMCiXUzv?9c2pYQw1_g_IDHuZ z?6uo_R>${@6y-_SvpEO%5ia-4Kzq>3N@Z$gdZ~dr7wwM3=U(cpB zf!6|=%Mv$y?=TnrIo;j*bQ-3nmMSLZ58tv^K2zj7TMub-WNNSH`)idiSLnUV-{d^~ z=;Pwe*O2%J{w`Pf<@ors*Xma`L)$1RJ*50|K=5vpes?gZ_Vk*0s}APf*`wzp!xSFA zeR~?2O7xr8dp}3Ux@bGz^Z)ewSlcnMQIddUX+1q_jXvFCuhMYI{0B1SPO7esS{5}K z`_3m%_g&iYKH){seAh#VAgLb}n_pTts1pN#lmH@c6LmgrG;mV&2ca_qN}~ zPVTq;+83MTU%$4=h4kcXYo+0x1U%~U(6e|k(Fi$Kx%3aSY$Q7(07G%~j4jimd*N~{m3FnI7_=T2(^j5I*@_bKf@d-kk) z*14>)9^^Qr0R2WB(E^79izq?=6+1li?c2BX1#X;#e!oBrW{{NuqG)S5iv1ja*Uf7> zixTPAkI+Qw3o3Q!h`K{g#n4+2@S+Kz;L^NvM=*#VKLiB)?DS{N?Dlb=%`S85WfsBm zM9)|7ztuE}xW67UMo8o^+pF!!)la`Ad3X2FHEIx@pk1x`s^4&2(H}mb*mt4ba(wO z#skF<4#^!^8s_fjzt>;;cg3--7E`Qk`Pc?8`eo1UZvS)kxuHuK*&#_(Y6tSZ;3%j( zFd`t@l6fyLN+x2hLz0&X2x3>OJ7IzXn==z_+EV&5p`EIJ)%6lq@Xebywux&{f`+39 z!tYUz&hP+~`SdG+CIO-@xPE=QhVQTv=ed_P8?<=Yxrx!+Hclw)XzvHfObkQWuvWM?BCru?zl^Vd8et~^FBptzxUQTy__zq-haqX$DadX z3xGoHiUZSwcDJHrPrsY{#KCRiVB>ym;uZ^v>To*O)nZD$%U`w`NA%CN_fm|v%wD3T zYxKuK@5iE1#c@>u7cMzut6G;FeYE&8|4EN*rt072_f?Ys8C*m)b79;LbB%ql3({*M zhZu}Bz~tsav!X89+1b$5x4Zl{3@{l`z||yDm?Cv3DKF24;5gG@UN>KbbLBnuebRVx z=y_=XCA?INMjGxz55Fw^bm5uiC#=U_SFbkwW!ds*b(d{ul`Nd9tx3AzXJzBut}I|7 zx;Tdg2VZY9&0YEX&h+!6TKNN{dJnn-Q%Dqp7+@JEuU_3>6ij^lE=xf7hiw0~{(e*x z=Pid$F8#iPq4sKLXJ09M~)5}*cK1sZq7z;FHL%|2j$2)*KyE`X6to;uZF z{`|ft66oJ(iIh5bp1FMawPl+;Jv{;G80GSkf^hx%^_Q7~tV>`{z^yxX)G5+vjg9{}Q9PCY z{Fz6i$Qa5}(Cd`2m4;woA8uJ4Xg3_;i!VP1_;-dg#B~6sN0pg1c4FsF1r9iTEN{se z09Co}#?J_ZD;d8Q8X3YEa+}%O5ddnVJl_I`0kqfr{fovyAa7vWg&Mj@ZqSh$uoD1r zlyqMQFPQ|LDIGmeO;{KphRg51x7PhqP@qTDlbpqaVG?B-73fAng>A%Av%|#~|BFsAMji1dKw(#XTt1Q?7JTZAj6I|LgSfSLaTgJu3^sY=G@w zBl&9)IT3>mjf|es^N*yFjEL0snDr*e@)GqoYEE4~CJpLB2szd%<-rceQCW8Zhwbhy zg-iw(a&KCJHh_g!8*kVyjen6ji%8pe@tpORF1IvS<$nFj5Q3+eIo_jYW7_0mM4w`; zJ7&C_m9$Cn`iF;rV`vahM*5pqudJcfwcGinv(t_U%|ict(o#)b-H?$As0T@>^o8|a z-!L135)rtEtHO>Ed+Mv7Rla^hqyQBbQQ)*gWUQ(jO znzsco(p6NYW12##J9ja?&f^as%sAWs;l&kI_hMe5gH+;q@pCvmH0Qw?X6EIollgi( zqf_B>2@eK=AeL!+Y`cYtNuRw+S)}Fmx{8Bw?^RpyI7M+NzfJp^nU&R(%5z^pK!C75 z`;>GA+99+aBximH=sY_3Zi__f^h#(Y(@ zCQ}wKzI@l|?>!~mgI~WcV~_N0-e?bIwYEfz9a&~uiqg%Bw4g#crm-t%4`+i(nG!Wb zQLzE2fLWdcP}piEhF!fnnb%*o?5a)jRTr2wC63eMckfJ{5*H6T2o^PO;lloj8__F2 ze*WAy?x)@6&FyLULwI8lse_QB%<<{-jumYS5|l-Sg&!-uf0XaB=3w^bBeC+ZtA<% zx{9s4bsK1Ydv!l_)O(|&qcJ`x=_<>l;^J=I zwrwve!@ZG_k;n~B@G&@rnZ?DH`6?_n*TBr-u@Gxi^KWZgj9&G&e{3sYpI#gEcbQr^ zOhJL$WWUSAY>JD62riqY}Av@dv0O%N^0FzA?S5sf`QE?0t2;Hf7#OtMU5c0!0-q!`wys~pq7>&xa>JX znp_5iMu3kWY!Z3qY9`R|>b|J|{7T{N#Rv@P8r zM-_;33Jk{D^pPUcXHAdPkSg^qS&e~TDS@PeJr~n<-8=w<#3sIBw6%3=Zrq@92 z9Zc_ly+E-^lO?b=X!FivMF&e6XmA)?RnJW zr+5me-{4r76F1MvA|b{%)voO83=vBazGK*xb?Ke8T@jz&c>5wnz;+;KT4Fd`5jhLD z0NGzklZXOIsA7?bpt)Gg6j)Fl!^kabT-HhB%bRJ?8i-X$AUcYjQ_TGG_U=U<1_+>g zZ$MG>T>aAa`VSE(T-^sIebLsTEwmY2wirWZLCle^khazydTd5|{lf9!CIff6WU4y< zu;lhSRC{9xcFUO!E<1LGr^9~m`di?_`~*Gd@fuq;C?mgiLslVze#BRq7mx}fXJBO1 zyLfWuY?0YQSJ2VdkFrRl*F1}8RK#B#gw^kZccDfXvy#*Ae08=@-vJf$j+7SLqAa#8 zZ?|p^B!XhIW>!Q}S-brFSj>@e%wu_qVD2ejnnNO`km&v(dGguIs`=&@vv&dW1bKyN&7FRux(!h6C8&YA?6W;G~mz;jwaWTs5)}%IX#9jYSER z6W89r&@e}ZWTxwzA`)Y`YF$ODW}uc_)UI3}C4Fu%i&QOrPRPYt1JrS!74>7lJ1l2(7wu2$oI?Zgc9V&olUy#xz2 zx))SLadur`IFL*?!7X#+M)S^{JIksm#~WpR=s0lUW%lhX&oRnGQT7G`-wBGlEQ0b7 z$e%v^EH2JfNK3>CeP*3y{KL&L@ibM*%=*#Q)sO{29dHFrA>KutLBbVw3Dl>k) zyMxyk$V9WKZQ)mc!X^(v18%i<4#=Lx)TAJ6EFcwZ zz4Rc&BP!`DfO(8_P_}E*s?{02#haIg0dI&S0WORl29@Jiyn%Q`Epl%gH73w=VihiP z^f}fwE)k8P1#%(Yk2hUOFT%DZ9iIUl451uyc*p#MJSNadU7^vC40c1ic^G$ER6D9R zL{2M=8`Mr#K|vgqr5}O*$Xe?>E`E|VVJ}~Lfi_kFfl(N6^Lbq zSRt^65WOK`Lv?f{!;|9{oND*eak;OC$E{tvcG0ixLzL=Kfr#R;(ry}aT1k;YNM=b$ z(61ebv=}}jGdp_{>P<^%)QC!Voh2I!KhMu*o=5F@Q(a0mUj|;kuE@FCtHcyQL%uk^fn}>18p7X6z5^)3)3WRE z0?onm%F`C+bajuWBgRYEwr9_tSf)`(ow2&9cOe|m6mH-}UE$~GX!8!IlR9^&fHqHAuNi)qY(7dY>BW{?~d~KZSZ{; z>En1lc;tu=xC8*G9ob#I=_WP(fY;Y7g4B_X<9tFW-56^3$eA-|p6+5Q@QcqK+P6P} zo~6{{(E%wus3fQFT0W>#T)%I*E6Qe`48&o`G#wu3v}gH=6nOv)i8SN>QK!A`pMRcx zsUfCa2E*Ak2_{M%zrPjwtE?Qf;pBx2{i~m6YnZ!*EXI?l@2hE_r{Ug|eF0c^>ELMh ziT}Ej+BD`JAT-@;;9!5Ysp-CPAjs25Yyyt*twJMMLwz4m6QF?cN&1^#7>7G6Tu9+*E-au*Y7c z5iS4(dWknQ;%D9p0cfMP>9de3QK>UH=ZEkHJ5%i8?rWCaR>Hra0M!%nOy|-PzC1+iIjBLZri$2H3 z=C{65;iyppt=;Ar1@xy+pHP%>J~d`5^yfsWtLK@%a|f9xZz0ZQ+h;Qb6#|pXdPLwG z*Ni13KxSf4y@Fa5-87EDm?ND>+(q6>kJJSgo=5X}Q#T-0+R*jXdb|(fe({sS(Z6Oa zfnM9j0gqK=!#r`=fQm&`>4oHo;f2zI0`95jd#;tn3Lk!`I~f55qpeSXWU_Abqj7o=7BP{}GD=-ztQLiTHs!L^+0@ud?b=P|nJ_O}6(o=TUaq)MKkZ`N zxO@9^4`6j=@D;Eu1qK@71%bneo_ip>6hITAe_v>~Dk9{*i*Mljzn`>oir*|L(pqul z{H#6%(Ysqqy>4ha(ZMK>SldP988G@RK5*D6yJ3f#+6i=Hej+vEh3jV|{vslW6Q)WT za7vd3q8|I}i7Ya(FFZ3V9}htkF!^^} zmG9lO#w}F9etHw(+=_I|&0kth>ZJGhGFDHOBe`?(8?Dgxkn9PvAQeApY(_obH?2(% zI8bh%M5~Asm9p#jmGf~4q4!LpmFklv-8Y^o%1#(HY?wRN*%Cxa zlnFwxu}szg?1Fc@xf!j|OdZoN9#t{Km;0*U;=wO3Kc#xy_t9nN7N<-~X5RXQ>wekM zXDMya+MgsBRHzAhSs(&ICeFCI?2of>3b?F2 z{&_)Dk_B~-xL(DU@$%(M%Z#}%l9F0O4uE7kzteZj-Cnw~DwvC3M12G1Z<~}+r&)4l z-lBHPuiuShya{L~TFVy=`!c+}-|7bS>q~WeBWRe)5%F^mwRx?8-3V_|x0#B1*(!v0 zkCE4U`(!{>v2BSdqGsm9pH{v=QX?cCkfIwT)XU53YG*^2i8!22F9>A^6AMjdUO$8T zxOMA#4@Vc@?{z-7uZyK?WHA3|eA8Fymfili>b{$QMxUO*hp#7=Wk6+6nTR=r{_)M{ zxaI25be7FR2m!^C(=b%e=VXWd+LtF+uch;)*LjTH0XN#r?Sqa@1QD$3IHXf~qe1+R z-E8{(W9m6lyukF~qM$IJ5JTR97M#h$JfUS6L%Moi< zukJ)6NzrD|h?kxS(d;tt*~ z1KR)vNUhWO_*Bnw2E;%soia0hIaQRPPdW>KXtT&Ift!+ie0>F?LGv?#K_aA?lUor^@2cYl`TR|C*%l=!O1q0Xf1Q71 z*l%rbo%XA=*l$$c)l=QfclI8dKfB+d9>zx|hxF*`qtWwviH3Fib{&;ESavj;J7K-* z?wcVRvnMQWe|)E6!#%zCHdIvYlsscptY7r_su3G~3>H>eXZ+c?$gyzX3hf*Zk33J` z&-U?tJ>1W1M$U3rWtc0FKTdl=wPRnsiUEd_(CbvQ6~#+DJ7ZNtMV|rvMvd~I|CNXg zM0WVYY8h*QiMI4}To^Q;Oen&kB;6x3m_#8-@N+tqHyL?0BI4}zBXME15?Be^hAxz0 zvHn91acYrYVi{#IX3PbSkVF?H;vk3sUDGhJ>LWiD8LO-=lNnm8sOa&bJ-GJ|Fe%#m zGQ)MA^3!k!U!0l#2}aqAsu`ZC>}lIMN}W2r;Kx?|{loTU5Y=qpKeV2?$dhfGMA2Od zFhv{~J#etctL3#7zT-=|t>uWI6`-3CY11K`fe3oDZSdPz{I&Tt%ENBTlzqRGq-T^N z6qS{M+P7W?Qv7SfdSWbmB?HswfgysV)qoL+)Co!kxqBt!561Aazs)L^+xCl8mVz z{%SH4VBD8qLN_YYZz<@gk!*JskUKak1=HO=w(r={ci;u9Tl3}CIX19BC<}3Wng)iv z&EI7EfK`|Sy zuien}+)b^|EftJQ_D*_10Tv7T#j~|W3LqC?T%uo;)`lVcPoC_-v`h3ff4MwV$8A>r zlttBth9asEJu*YsxwUH%_viBIv3fK*6!RE)%2{Rr@w`EUjH}ClO%k~*XAHp*AS0la z44%Y;)|ewb2v%U+@bfMBEif=phWfPU>yFqC_4&CXXVWi?!ktL)C=pkHd~$H~E~>@y zc|f`0C%$h_B1DVzm0HOPBnUZZ3z%m@i(qfyM%&$k?75~YW~pC!ripgjGx0HeQ@`bD zJWSjCWf1Aea4T+~_6baHH}9{S(NWW=UPl>7sq=RofnMZzAZj(mb+uZ2bWzMQ(VjFp zK@90T9JX#11*iaw6mA~ekOb~6j(li#*<^Ct1JBg==*8Rf`%^`*cT+vfHirk9+&uZt zHk@+Q0>Vas>PfA}K5fuy%;iscJoIufhIxfiK^HD*@3@}qIU1E8wYXQ6?a!*JK4ZsT zBywbg>6m&aUH=(gHXLqG=HcK~>!4-v@=tLzBa&QxC&=^yK+4&HMJ81n)RiO9?DMJe z1l^{LjIj+jV1EKlr>eN8*{Zw!T;LHmglYp-VF<@ia8vR5WvqR^dU!ziWcQ9G*9)Ec z=6y#0&g8>cOboyT4)HB^Vz9B)KM_{XTTVUNC6+sN7&mZ5C)dp5G4P2uvEsO=X9CEk z45q|ZVY1>1BdxNzmeuIICIrPpv;ZFL6-H2pewf970_!abNVP+QEnoz5qYu1V{$%Z) zfZ5YU5zPe>=XCyD=-I#jjb~#T(O*du1w45r?)u@6NkH&28H`a-4Aa0GjadvFeV4g` zNztM;h7&c550ov`OuVA+8<{`WG%X)Xni(*=2rmT%(HT+0(PSE4K^Il`OW)IMyStrh zm=n#&HuNxABBZbRRVr`?Z9^~*Ng>?wO|eU#F=NtqjJS9_KIeZBBaSmf;VVX6_~{=o zkDA=QZCh{szxRNwz`<@T&yCw!PB6xq?se4cM!H1?r~n>>V^1=B3?4i$@RMD{!cEZs zM9VOJE^&po2zs}X_tI!} z*Ffjxt5?R3w>9gnWuk>l{Gs+NMXzl*f4*R-@TfYbHy8Sa8eO|_lfoNM_`P$jHB$Fu z0OOC4XxFZ}pd+DbCF5|=yc3>up|``8F&GmWqgfDIU=?i(lt@I|omMwNSx>;f|LOza zDdz^b@bGEnyl}0-i;4FJQ1}Ik-!~IJ0=F^^O?{5%jnXa*JZWxeX$b(F%4Ha9@96ZY zA{`=}Fto6^d9)pSwAsAogLRS-mM#6y{ zscqBpfOp(z6d5Gg(F}YK(*6PDwx4#f6j$-5O=VtbMQd=!0-ZCcMFc29?a=Dbq{A|8 zPFto{D3Ubn^~k;#jhyCJYKy>&E-2>t^8?`L@?|JX}^x? zgHU@itUJ7=Uy5zGVE$AIOsWJQlu=s++w=8O%*2KFAI9k<>H~J2nNOjqnUW27KfL8J zxLH=;d_|tNwNnLQHyM2z2oqC`#M5t_`^EIrH0xm_tiQU1q?yl~m(=yu%$u`pD}@Mx znk3deM9_e3l2Ua&O7vkiTs0l3?q7X4KBp({KfzEuJj|^7 zWyQ^W$(=pSH^-rxNz@Q46jx3Bu}|4hbhFtvy=UHGEmFfTAGB+`?)Jz-A+vL03~e2+ zxE=8Sou%yFvFv(bm+!x4ue1ud|6*dLR>r*!R(^#l?zf}j4oyridVb>MIQNbR{hZPZ z^0thAXXcREE~hrV|7_b;A8$An#zmWcK2TPiIelULE**aDdkIE2|e&>)8JJSa7Iq>h1Y2Ullpzs5;dpj5hqcZSBur?j76u zZ=Yl9`1ZSANK4%w%#e&k;8*S0{%V$GqcsU}OKQbSGN-3qW=wWwOZ^4Q%= zDNTaxCOG3BozJdxR|!kYofM=Q?Ozxb^ zG$$F4pSsBSc=*M-#6mxF)8B85Q+KGpV;uUbWy|mUxx!T$pYx-?Z@Q;4_VxFBpWOqz zofC%GhYt1sekbjy{pgiJ+ZAim9i2k+{+`*oqNu_l>O<|?${&9(EHQOIX0IL)mSOwx zW0cmNZEu|tZWUK_{WEIime5s^W=_T**NxBH;Wt3*=9-W961;zJyq0P!rKW5O(6oZ& z546i(G|}_~RVylIoY*PU^-TkZ)8U^r#ZXjP;FHk9&+V%vQ~`dRi=Q((RYr!yEmBl{ z8Wg|u*7f*@CZ4-1e_p+RzY8IPQm%wF3J7^|UrFBE-7}cKqPW3yo=*4LHf=N0U%B1h z>@(+WVt(hcOS=B)`;@YxUl(p#{CDiHb?0i0HIIeE!mHNfwf8EudA;whW8XEdb*7rJ zO;n#oPfC03{7+m~{kTo1v&QeyZV{lp@~D#T^d^6!&!*&Ki#kWirPQ`{J)vQ@$ zzUyL!kb{*AYOQi)n6{I(rMu~$c^ n#snzkV_jrtTrLX4#za@z(X#oSoH16wtkk? zqwjp24abHVFMRESQPaO~(jn-)sk8j(G@wH>gub}h0uuhFZXQpNTOR7cKru#b2IgCu z-ZT27A906~Cxn4tx2p_4Mi_m*T{gBQWA*^h5_SguxI+wv@$+wH#WFOku$;^MFzH;# zMw!G)?lW(7VXWh6=C*_{`$f@n3LXZuI$&7^!ZfO5JFcXm{=YFWTPE%dp*0Zl0C?<0 z>?w8ehCmY=@7@DS30eXN#T1`-dVLvgM+fYwV#Gk!vrL5(_5`O~U*Q%odSoM~km`WC z=_C~o{Z4?JQgK9Hw{d?f47t1LDX)RsIu~x90g{Fp*Cg08s)HCfgnC_?2Vx^v{^las z^v05AygLeB?#h8~B1J(qRzlLjz!W3QD(@GNaPkdqGZKQx>16UCqxV*j49L}0*SbD* zv!WQ^4@PzT^yz1Ovj~R7fM$*PTai+*wEOV$N5FvPCAGnNMTH7k&F zo`HXl-14K7%xAoMbr9|8W{qbIa7AH<0H+N_v~gM}=E$M&W0@n4_axfnY$oFbW9R)V~SEu z?F;>tN~+d)*5@Agh&q!tb-#l(wzgxA!^SDATgA0K~o*51xaK zb-=H-79^#FaYLefrK$|{T*sJQuu9JEVlMo$87kld!ZC7?^tDuI^`x_4-Q>PjFp=xV zzoi={BJ-HVTS|+|6{EYit@cfs0gZ{YX9=HDt_%dHRQWlXf)zf2z|)V(akk<9@4{)r zq#w09Hdby63|P1kfJn@KoM12_AO??78~cF5I%3T< z7L8%!bQMc4edR27AHAi&$YXG@JY78;G=rH#n9dH5o&Y-X)qAS>N zwA_1?Ge|NNa2w1E#n{8Ocit(=#Itl}3d^Kglv~&TR8~~_)Lmz20NUkkGhW zaw`F)thRO=XXiSdVwaDFjAiT2z~Y#t^H!;2!9vGRhPylU%OYA(R1>}7@1t^2N%*h4 zb~p)x5gYZ^io|XTM2%8dAqs{Kxi6Kwv}{br&u|RfQcWk|CuvjW% zg9CoXndk)NaC0T&En}8m;nz{U5cFfX0@!D5@s`Nc#oxbwUtrxgEzqQB!^kcolix{{ zME+xF^+)vAr%oCAOucfuJbFWRBL#?Ywi36#H+V=QS~Zpn$)^ze>PcXR!@H4ut$6)N z%r-=OY{SfwaSHsyS%cccMlq5Jy3u;; zmWF=7a5`^DK6({M6EUT8D#&{2RqHiaZH6!Vreto30>wVQ;<|sSL$O z$0D1%r#}{&d~_5;8xd?(&0n@*U&c1wzh84L`>lJzD!qGs3*$$8k1fp4Z}O0ILz82~{qKC3i^i3yDQSxbF>J#8`&@1wxmNYK zPR;SWX7|S2S;B4hCIK;pTL|kKRUg^UbuUH9iMK@YV#hfa@qGW!{ZXI`(_S1@D#j_)4O3S*Nm7)4uASJ4)A` z8a^2XEB#l?bTiB+epSMfZ!-W zyokGN>zm?t+xba!+5=0>D+;2#qy`XM8XwUzaLtFfk=7(IG7JW5nP|Z|r8FMNL;MaQyW`2xYsw?j`Z}g*N>F@je!#LV%0D8W@0rU!<=hj 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