From d1f8125f51882adb9bfe4702f2bd97e8f9dfbc6d Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Tue, 8 Aug 2023 17:19:35 +0200 Subject: [PATCH 01/18] Add setting to prevent the top layer from doing small-skin behaviour. Actually the other way around, so we don't have another negation you have to turn on to turn off (and so the default can be false I suppose). The idea is that recently, a feature was introduced where there should be walls instead of normal skin in small hard to reach places of the model. However, this is to be excluded in most cases for all the top-layer parts exposed to air on the buildplate. implements CURA-10829 --- resources/definitions/fdmprinter.def.json | 13 ++++++++++++- resources/setting_visibility/advanced.cfg | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b1e82c0b65..5ba9e87450 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1664,7 +1664,7 @@ "small_skin_width": { "label": "Small Top/Bottom Width", - "description": "Small top/bottom regions are filled with walls instead of the default top/bottom pattern. This helps to avoids jerky motions.", + "description": "Small top/bottom regions are filled with walls instead of the default top/bottom pattern. This helps to avoids jerky motions. Off for the topmost (air-exposed) layer by default (see 'Small Top/Bottom On Surface').", "value": "skin_line_width * 2", "default_value": 1, "minimum_value": "0", @@ -1675,6 +1675,17 @@ "settable_per_mesh": true, "unit": "mm" }, + "small_skin_on_surface": + { + "label": "Small Top/Bottom On Surface", + "description": "Enable small (up to 'Small Top/Bottom Width') regions on the topmost skinned layer (exposed to air) to be filled with walls instead of the default pattern.", + "value": "False", + "default_value": false, + "type": "bool", + "enabled": "small_skin_width > 0 and top_layers > 0", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, "skin_no_small_gaps_heuristic": { "label": "No Skin in Z Gaps", diff --git a/resources/setting_visibility/advanced.cfg b/resources/setting_visibility/advanced.cfg index a744c8eae8..c3451d2c98 100644 --- a/resources/setting_visibility/advanced.cfg +++ b/resources/setting_visibility/advanced.cfg @@ -34,6 +34,8 @@ bottom_thickness bottom_layers ironing_enabled skin_monotonic +small_skin_width +small_skin_on_surface [infill] infill_extruder_nr From 652fff8571ba8cd9615732f56e19e04f7ba30ff2 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Tue, 8 Aug 2023 17:33:17 +0200 Subject: [PATCH 02/18] Also add new setting to expert. part of CURA-10829 --- resources/setting_visibility/expert.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index 6517728968..cab4bb7d8f 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -60,6 +60,7 @@ skin_monotonic connect_skin_polygons skin_angles small_skin_width +small_skin_on_surface skin_no_small_gaps_heuristic skin_outline_count ironing_enabled From 874f4a1b4a2d18ea5db250e4d66dd84906a8d9c0 Mon Sep 17 00:00:00 2001 From: Maksym Shevchenko Date: Fri, 18 Aug 2023 10:37:13 +0300 Subject: [PATCH 03/18] Update kingroon_kp3s_pro.def.json Added the default machine_depth value. Changed the default machine_name value. --- resources/definitions/kingroon_kp3s_pro.def.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/definitions/kingroon_kp3s_pro.def.json b/resources/definitions/kingroon_kp3s_pro.def.json index 79a4916680..e06ce0b891 100644 --- a/resources/definitions/kingroon_kp3s_pro.def.json +++ b/resources/definitions/kingroon_kp3s_pro.def.json @@ -13,6 +13,8 @@ { "machine_acceleration": { "value": 1000 }, "machine_height": { "default_value": 200 }, + "machine_width": { "default_value": 200 }, + "machine_depth": { "default_value": 200 }, "machine_max_acceleration_e": { "value": 1000 }, "machine_max_acceleration_x": { "value": 1000 }, "machine_max_acceleration_y": { "value": 1000 }, @@ -23,12 +25,11 @@ "machine_max_feedrate_z": { "value": 4 }, "machine_max_jerk_xy": { "value": 15 }, "machine_max_jerk_z": { "value": 0.4 }, - "machine_name": { "default_value": "Kingroon KP3S" }, + "machine_name": { "default_value": "Kingroon KP3S Pro" }, "machine_steps_per_mm_e": { "value": 764 }, "machine_steps_per_mm_x": { "value": 160 }, "machine_steps_per_mm_y": { "value": 160 }, "machine_steps_per_mm_z": { "value": 800 }, - "machine_width": { "default_value": 200 }, "retraction_amount": { "value": 1 }, "retraction_extrusion_window": { "value": 1 }, "retraction_speed": { "value": 40 }, From 9b140a7e67ed5fe4f7d4ee2bb2264c7e80c80204 Mon Sep 17 00:00:00 2001 From: Maksym Shevchenko Date: Fri, 18 Aug 2023 10:40:01 +0300 Subject: [PATCH 04/18] Added missing extruder variants Added missing extruder variants for Kingroon KP3S Pro. --- .../kingroon/kingroon_kp3s_pro_0.2.inst.cfg | 13 +++++++++++++ .../kingroon/kingroon_kp3s_pro_0.3.inst.cfg | 13 +++++++++++++ .../kingroon/kingroon_kp3s_pro_0.4.inst.cfg | 13 +++++++++++++ .../kingroon/kingroon_kp3s_pro_0.5.inst.cfg | 13 +++++++++++++ .../kingroon/kingroon_kp3s_pro_0.6.inst.cfg | 13 +++++++++++++ .../kingroon/kingroon_kp3s_pro_0.8.inst.cfg | 13 +++++++++++++ .../kingroon/kingroon_kp3s_pro_1.0.inst.cfg | 13 +++++++++++++ 7 files changed, 91 insertions(+) create mode 100644 resources/variants/kingroon/kingroon_kp3s_pro_0.2.inst.cfg create mode 100644 resources/variants/kingroon/kingroon_kp3s_pro_0.3.inst.cfg create mode 100644 resources/variants/kingroon/kingroon_kp3s_pro_0.4.inst.cfg create mode 100644 resources/variants/kingroon/kingroon_kp3s_pro_0.5.inst.cfg create mode 100644 resources/variants/kingroon/kingroon_kp3s_pro_0.6.inst.cfg create mode 100644 resources/variants/kingroon/kingroon_kp3s_pro_0.8.inst.cfg create mode 100644 resources/variants/kingroon/kingroon_kp3s_pro_1.0.inst.cfg diff --git a/resources/variants/kingroon/kingroon_kp3s_pro_0.2.inst.cfg b/resources/variants/kingroon/kingroon_kp3s_pro_0.2.inst.cfg new file mode 100644 index 0000000000..4d0858a573 --- /dev/null +++ b/resources/variants/kingroon/kingroon_kp3s_pro_0.2.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = kingroon_kp3s_pro +name = 0.2mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.2 + diff --git a/resources/variants/kingroon/kingroon_kp3s_pro_0.3.inst.cfg b/resources/variants/kingroon/kingroon_kp3s_pro_0.3.inst.cfg new file mode 100644 index 0000000000..e127a63c76 --- /dev/null +++ b/resources/variants/kingroon/kingroon_kp3s_pro_0.3.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = kingroon_kp3s_pro +name = 0.3mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.3 + diff --git a/resources/variants/kingroon/kingroon_kp3s_pro_0.4.inst.cfg b/resources/variants/kingroon/kingroon_kp3s_pro_0.4.inst.cfg new file mode 100644 index 0000000000..3422da8b90 --- /dev/null +++ b/resources/variants/kingroon/kingroon_kp3s_pro_0.4.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = kingroon_kp3s_pro +name = 0.4mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.4 + diff --git a/resources/variants/kingroon/kingroon_kp3s_pro_0.5.inst.cfg b/resources/variants/kingroon/kingroon_kp3s_pro_0.5.inst.cfg new file mode 100644 index 0000000000..744e7e441d --- /dev/null +++ b/resources/variants/kingroon/kingroon_kp3s_pro_0.5.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = kingroon_kp3s_pro +name = 0.5mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.5 + diff --git a/resources/variants/kingroon/kingroon_kp3s_pro_0.6.inst.cfg b/resources/variants/kingroon/kingroon_kp3s_pro_0.6.inst.cfg new file mode 100644 index 0000000000..289eb3bd96 --- /dev/null +++ b/resources/variants/kingroon/kingroon_kp3s_pro_0.6.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = kingroon_kp3s_pro +name = 0.6mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.6 + diff --git a/resources/variants/kingroon/kingroon_kp3s_pro_0.8.inst.cfg b/resources/variants/kingroon/kingroon_kp3s_pro_0.8.inst.cfg new file mode 100644 index 0000000000..68aa6dc7da --- /dev/null +++ b/resources/variants/kingroon/kingroon_kp3s_pro_0.8.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = kingroon_kp3s_pro +name = 0.8mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.8 + diff --git a/resources/variants/kingroon/kingroon_kp3s_pro_1.0.inst.cfg b/resources/variants/kingroon/kingroon_kp3s_pro_1.0.inst.cfg new file mode 100644 index 0000000000..5e332ea26b --- /dev/null +++ b/resources/variants/kingroon/kingroon_kp3s_pro_1.0.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = kingroon_kp3s_pro +name = 1.0mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 1.0 + From a3d664571a847c510bf2557614b12a5782d1697b Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 18 Aug 2023 14:45:02 +0200 Subject: [PATCH 05/18] Add scrollable area around text messages CURA-9374 --- .../resources/qml/LicenseDialog.qml | 4 +- .../resources/qml/MultipleLicenseDialog.qml | 4 +- plugins/SliceInfoPlugin/MoreInfoWindow.qml | 4 +- .../qml/WelcomePages/ChangelogContent.qml | 4 +- .../qml/WelcomePages/WhatsNewContent.qml | 4 +- resources/qml/Widgets/ScrollableTextArea.qml | 44 ------------------- 6 files changed, 10 insertions(+), 54 deletions(-) delete mode 100644 resources/qml/Widgets/ScrollableTextArea.qml diff --git a/plugins/Marketplace/resources/qml/LicenseDialog.qml b/plugins/Marketplace/resources/qml/LicenseDialog.qml index 5dd8ac6fc4..849df5925e 100644 --- a/plugins/Marketplace/resources/qml/LicenseDialog.qml +++ b/plugins/Marketplace/resources/qml/LicenseDialog.qml @@ -6,7 +6,7 @@ import QtQuick.Window 2.2 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import UM 1.6 as UM +import UM 1.7 as UM import Cura 1.6 as Cura UM.Dialog @@ -52,7 +52,7 @@ UM.Dialog } } - Cura.ScrollableTextArea + UM.ScrollableTextArea { Layout.fillWidth: true Layout.fillHeight: true diff --git a/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml b/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml index a3d4b60221..c92709e954 100644 --- a/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml +++ b/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml @@ -6,7 +6,7 @@ import QtQuick.Window 2.2 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import UM 1.5 as UM +import UM 1.7 as UM import Cura 1.6 as Cura UM.Dialog @@ -66,7 +66,7 @@ UM.Dialog } } - Cura.ScrollableTextArea + UM.ScrollableTextArea { Layout.fillWidth: true Layout.fillHeight: true diff --git a/plugins/SliceInfoPlugin/MoreInfoWindow.qml b/plugins/SliceInfoPlugin/MoreInfoWindow.qml index e0954dc55e..3debd8e707 100644 --- a/plugins/SliceInfoPlugin/MoreInfoWindow.qml +++ b/plugins/SliceInfoPlugin/MoreInfoWindow.qml @@ -5,7 +5,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Window 2.2 -import UM 1.5 as UM +import UM 1.7 as UM import Cura 1.1 as Cura Window @@ -74,7 +74,7 @@ Window wrapMode: Text.WordWrap } - Cura.ScrollableTextArea + UM.ScrollableTextArea { anchors { diff --git a/resources/qml/WelcomePages/ChangelogContent.qml b/resources/qml/WelcomePages/ChangelogContent.qml index 7c3b1adfc3..20380f3938 100644 --- a/resources/qml/WelcomePages/ChangelogContent.qml +++ b/resources/qml/WelcomePages/ChangelogContent.qml @@ -4,7 +4,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import UM 1.5 as UM +import UM 1.7 as UM import Cura 1.1 as Cura @@ -26,7 +26,7 @@ Item font: UM.Theme.getFont("huge") } - Cura.ScrollableTextArea + UM.ScrollableTextArea { id: changelogTextArea diff --git a/resources/qml/WelcomePages/WhatsNewContent.qml b/resources/qml/WelcomePages/WhatsNewContent.qml index 6406d65756..eefadbdacf 100644 --- a/resources/qml/WelcomePages/WhatsNewContent.qml +++ b/resources/qml/WelcomePages/WhatsNewContent.qml @@ -5,7 +5,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import UM 1.5 as UM +import UM 1.7 as UM import Cura 1.1 as Cura @@ -90,7 +90,7 @@ Item source: manager.getSubpageImageSource(index) } - Cura.ScrollableTextArea + UM.ScrollableTextArea { id: subpageText diff --git a/resources/qml/Widgets/ScrollableTextArea.qml b/resources/qml/Widgets/ScrollableTextArea.qml deleted file mode 100644 index 7d8f6b886d..0000000000 --- a/resources/qml/Widgets/ScrollableTextArea.qml +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2022 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.10 -import QtQuick.Controls 2.3 - -import UM 1.5 as UM -import Cura 1.1 as Cura - - -// -// Cura-style TextArea with scrolls -// -Flickable -{ - id: scrollableTextAreaBase - property bool do_borders: true - property var back_color: UM.Theme.getColor("main_background") - property alias textArea: flickableTextArea - - ScrollBar.vertical: UM.ScrollBar {} - - TextArea.flickable: TextArea - { - id: flickableTextArea - - background: Rectangle //Providing the background color and border. - { - anchors.fill: parent - anchors.margins: -border.width - - color: scrollableTextAreaBase.back_color - border.color: UM.Theme.getColor("thick_lining") - border.width: scrollableTextAreaBase.do_borders ? UM.Theme.getSize("default_lining").width : 0 - } - - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - textFormat: TextEdit.PlainText - renderType: Text.NativeRendering - wrapMode: Text.Wrap - selectByMouse: true - } -} \ No newline at end of file From 4f6c0001b61bd6af8f029c760d7290cc001a9cb3 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Fri, 18 Aug 2023 14:55:19 +0200 Subject: [PATCH 06/18] Sponsor cura added at designated loc CURA-10832 --- resources/qml/Actions.qml | 8 ++++++++ .../qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml | 8 ++++---- resources/qml/Menus/HelpMenu.qml | 1 + resources/themes/cura-light/icons/default/Heart.svg | 7 +++++++ 4 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 resources/themes/cura-light/icons/default/Heart.svg diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 3b75c7699e..d9d35946ea 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -60,6 +60,7 @@ Item property alias showProfileFolder: showProfileFolderAction property alias documentation: documentationAction property alias showTroubleshooting: showTroubleShootingAction + property alias openSponsershipPage : openSponsershipPageAction property alias reportBug: reportBugAction property alias whatsNew: whatsNewAction property alias about: aboutAction @@ -90,6 +91,13 @@ Item text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting") } + Action + { + id: openSponsershipPageAction + onTriggered: Qt.openUrlExternally("https://ultimaker.com/software/ultimaker-cura/sponsor/") + text: catalog.i18nc("@action:inmenu", "Sponsor Cura") + } + Action { id: toggleFullScreenAction diff --git a/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml b/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml index f13ca28447..252329bf16 100644 --- a/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml +++ b/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml @@ -57,10 +57,10 @@ Popup permissionsRequired: [] }, { - displayName: "UltiMaker Academy", //Not translated, since it's a brand name. - thumbnail: UM.Theme.getIcon("Knowledge"), - description: catalog.i18nc("@tooltip:button", "Become a 3D printing expert with UltiMaker e-learning."), - link: "https://academy.ultimaker.com/?utm_source=cura&utm_medium=software&utm_campaign=switcher-academy", + displayName: "Sponsor Cura", //Not translated, since it's a brand name. + thumbnail: UM.Theme.getIcon("Heart"), + description: catalog.i18nc("@tooltip:button", "Show your support for Cura with a donation."), + link: "https://ultimaker.com/software/ultimaker-cura/sponsor/", permissionsRequired: [] }, { diff --git a/resources/qml/Menus/HelpMenu.qml b/resources/qml/Menus/HelpMenu.qml index 4be25fdffe..6a57a99515 100644 --- a/resources/qml/Menus/HelpMenu.qml +++ b/resources/qml/Menus/HelpMenu.qml @@ -17,6 +17,7 @@ Cura.Menu Cura.MenuItem { action: Cura.Actions.showTroubleshooting} Cura.MenuItem { action: Cura.Actions.documentation } Cura.MenuItem { action: Cura.Actions.reportBug } + Cura.MenuItem { action: Cura.Actions.openSponsershipPage } Cura.MenuSeparator { } Cura.MenuItem { action: Cura.Actions.whatsNew } Cura.MenuItem { action: Cura.Actions.about } diff --git a/resources/themes/cura-light/icons/default/Heart.svg b/resources/themes/cura-light/icons/default/Heart.svg new file mode 100644 index 0000000000..793dcbd6b5 --- /dev/null +++ b/resources/themes/cura-light/icons/default/Heart.svg @@ -0,0 +1,7 @@ + + + + + + + From 3e63863a72eb3d192b9d80965593b4f3bb7612de Mon Sep 17 00:00:00 2001 From: Casper Lamboo Date: Fri, 18 Aug 2023 16:41:38 +0200 Subject: [PATCH 07/18] Formatting --- resources/qml/Actions.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index d9d35946ea..f945b1c11d 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -60,7 +60,7 @@ Item property alias showProfileFolder: showProfileFolderAction property alias documentation: documentationAction property alias showTroubleshooting: showTroubleShootingAction - property alias openSponsershipPage : openSponsershipPageAction + property alias openSponsershipPage: openSponsershipPageAction property alias reportBug: reportBugAction property alias whatsNew: whatsNewAction property alias about: aboutAction From 62a32fc725ace9d06488828b68fb39f831d34b6e Mon Sep 17 00:00:00 2001 From: Saumya Jain <70144862+saumyaj3@users.noreply.github.com> Date: Fri, 18 Aug 2023 17:34:54 +0200 Subject: [PATCH 08/18] Update resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml translating sponser cura Co-authored-by: Casper Lamboo --- resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml b/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml index 252329bf16..a42239056c 100644 --- a/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml +++ b/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml @@ -57,7 +57,7 @@ Popup permissionsRequired: [] }, { - displayName: "Sponsor Cura", //Not translated, since it's a brand name. + displayName: catalog.i18nc("@label:button", "Sponsor Cura"), thumbnail: UM.Theme.getIcon("Heart"), description: catalog.i18nc("@tooltip:button", "Show your support for Cura with a donation."), link: "https://ultimaker.com/software/ultimaker-cura/sponsor/", From bd57b43931c1c192e4bce50b0bac2b2cbb1cc4b4 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Sun, 20 Aug 2023 12:49:25 +0200 Subject: [PATCH 09/18] Use runner OS and Arch specific configurations https://github.com/Ultimaker/Cura/issues/11841#issuecomment-1685076361 Contributes to CURA-8415 and CURA-10855 --- .github/workflows/linux.yml | 4 +++- .github/workflows/macos.yml | 8 +++----- .github/workflows/windows.yml | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 70a15bcbb5..4d58dcee34 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -144,7 +144,9 @@ jobs: run: echo -n "$GPG_PRIVATE_KEY" | base64 --decode | gpg --import - name: Get Conan configuration - run: conan config install https://github.com/Ultimaker/conan-config.git + run: | + conan config install https://github.com/Ultimaker/conan-config.git + conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}" - name: Use Conan download cache (Bash) run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache" diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 736c906dab..4690d27878 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -144,15 +144,13 @@ jobs: p12-password: ${{ secrets.MACOS_CERT_PASSPHRASE }} - name: Get Conan configuration - run: conan config install https://github.com/Ultimaker/conan-config.git + run: | + conan config install https://github.com/Ultimaker/conan-config.git + conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}" - name: Use Conan download cache (Bash) run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache" - - name: Set architecture conan profile - if: ${{ inputs.architecture == 'X64' }} - run: conan profile update settings.arch=x86_64 default - - name: Create the Packages (Bash) run: conan install $CURA_CONAN_VERSION ${{ inputs.conan_args }} --build=missing --update -if cura_inst -g VirtualPythonEnv -o cura:enterprise=$ENTERPRISE -o cura:staging=$STAGING --json "cura_inst/conan_install_info.json" diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 57bace2fef..88d9d84e94 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -114,7 +114,9 @@ jobs: run: conan profile new default --detect --force - name: Get Conan configuration - run: conan config install https://github.com/Ultimaker/conan-config.git + run: | + conan config install https://github.com/Ultimaker/conan-config.git + conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}" - name: Use Conan download cache (Powershell) run: conan config set storage.download_cache="C:\Users\runneradmin\.conan\conan_download_cache" From 0c405288e010ac341f4ce9965d0f9dd4ebe79535 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 21 Aug 2023 15:50:52 +0200 Subject: [PATCH 10/18] Add wrapper to Cura.ScrollableTextArea Add wrapper to legacy Cura.ScrollableTextArea class which has now moved to Uranium, in order to keep plugins working in case they use it. CURA-9374 --- .../Marketplace/resources/qml/LicenseDialog.qml | 2 +- .../resources/qml/MultipleLicenseDialog.qml | 2 +- plugins/SliceInfoPlugin/MoreInfoWindow.qml | 2 +- resources/qml/WelcomePages/ChangelogContent.qml | 2 +- resources/qml/WelcomePages/WhatsNewContent.qml | 2 +- resources/qml/Widgets/ScrollableTextArea.qml | 14 ++++++++++++++ 6 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 resources/qml/Widgets/ScrollableTextArea.qml diff --git a/plugins/Marketplace/resources/qml/LicenseDialog.qml b/plugins/Marketplace/resources/qml/LicenseDialog.qml index 849df5925e..775e53f7aa 100644 --- a/plugins/Marketplace/resources/qml/LicenseDialog.qml +++ b/plugins/Marketplace/resources/qml/LicenseDialog.qml @@ -52,7 +52,7 @@ UM.Dialog } } - UM.ScrollableTextArea + Cura.ScrollableTextArea { Layout.fillWidth: true Layout.fillHeight: true diff --git a/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml b/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml index c92709e954..b251aeab85 100644 --- a/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml +++ b/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml @@ -66,7 +66,7 @@ UM.Dialog } } - UM.ScrollableTextArea + Cura.ScrollableTextArea { Layout.fillWidth: true Layout.fillHeight: true diff --git a/plugins/SliceInfoPlugin/MoreInfoWindow.qml b/plugins/SliceInfoPlugin/MoreInfoWindow.qml index 3debd8e707..76b9e651c7 100644 --- a/plugins/SliceInfoPlugin/MoreInfoWindow.qml +++ b/plugins/SliceInfoPlugin/MoreInfoWindow.qml @@ -74,7 +74,7 @@ Window wrapMode: Text.WordWrap } - UM.ScrollableTextArea + Cura.ScrollableTextArea { anchors { diff --git a/resources/qml/WelcomePages/ChangelogContent.qml b/resources/qml/WelcomePages/ChangelogContent.qml index 20380f3938..9be3c30373 100644 --- a/resources/qml/WelcomePages/ChangelogContent.qml +++ b/resources/qml/WelcomePages/ChangelogContent.qml @@ -26,7 +26,7 @@ Item font: UM.Theme.getFont("huge") } - UM.ScrollableTextArea + Cura.ScrollableTextArea { id: changelogTextArea diff --git a/resources/qml/WelcomePages/WhatsNewContent.qml b/resources/qml/WelcomePages/WhatsNewContent.qml index eefadbdacf..787b280095 100644 --- a/resources/qml/WelcomePages/WhatsNewContent.qml +++ b/resources/qml/WelcomePages/WhatsNewContent.qml @@ -90,7 +90,7 @@ Item source: manager.getSubpageImageSource(index) } - UM.ScrollableTextArea + Cura.ScrollableTextArea { id: subpageText diff --git a/resources/qml/Widgets/ScrollableTextArea.qml b/resources/qml/Widgets/ScrollableTextArea.qml new file mode 100644 index 0000000000..3f0db28058 --- /dev/null +++ b/resources/qml/Widgets/ScrollableTextArea.qml @@ -0,0 +1,14 @@ +// Copyright (c) 2022 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.7 as UM +import Cura 1.1 as Cura + + +// Wrapper to UM.ScrollableTextArea which was originally placed here +UM.ScrollableTextArea +{ +} From 89cb69a376faf93b880d88a33f833cc7dbb4a8c2 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 21 Aug 2023 15:57:36 +0200 Subject: [PATCH 11/18] Restored QML import versions Restore versions to minimize the impact of CURA-9374 --- plugins/Marketplace/resources/qml/LicenseDialog.qml | 2 +- plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml | 2 +- plugins/SliceInfoPlugin/MoreInfoWindow.qml | 2 +- resources/qml/WelcomePages/ChangelogContent.qml | 2 +- resources/qml/WelcomePages/WhatsNewContent.qml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/Marketplace/resources/qml/LicenseDialog.qml b/plugins/Marketplace/resources/qml/LicenseDialog.qml index 775e53f7aa..5dd8ac6fc4 100644 --- a/plugins/Marketplace/resources/qml/LicenseDialog.qml +++ b/plugins/Marketplace/resources/qml/LicenseDialog.qml @@ -6,7 +6,7 @@ import QtQuick.Window 2.2 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import UM 1.7 as UM +import UM 1.6 as UM import Cura 1.6 as Cura UM.Dialog diff --git a/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml b/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml index b251aeab85..a3d4b60221 100644 --- a/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml +++ b/plugins/Marketplace/resources/qml/MultipleLicenseDialog.qml @@ -6,7 +6,7 @@ import QtQuick.Window 2.2 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import UM 1.7 as UM +import UM 1.5 as UM import Cura 1.6 as Cura UM.Dialog diff --git a/plugins/SliceInfoPlugin/MoreInfoWindow.qml b/plugins/SliceInfoPlugin/MoreInfoWindow.qml index 76b9e651c7..e0954dc55e 100644 --- a/plugins/SliceInfoPlugin/MoreInfoWindow.qml +++ b/plugins/SliceInfoPlugin/MoreInfoWindow.qml @@ -5,7 +5,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Window 2.2 -import UM 1.7 as UM +import UM 1.5 as UM import Cura 1.1 as Cura Window diff --git a/resources/qml/WelcomePages/ChangelogContent.qml b/resources/qml/WelcomePages/ChangelogContent.qml index 9be3c30373..7c3b1adfc3 100644 --- a/resources/qml/WelcomePages/ChangelogContent.qml +++ b/resources/qml/WelcomePages/ChangelogContent.qml @@ -4,7 +4,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import UM 1.7 as UM +import UM 1.5 as UM import Cura 1.1 as Cura diff --git a/resources/qml/WelcomePages/WhatsNewContent.qml b/resources/qml/WelcomePages/WhatsNewContent.qml index 787b280095..6406d65756 100644 --- a/resources/qml/WelcomePages/WhatsNewContent.qml +++ b/resources/qml/WelcomePages/WhatsNewContent.qml @@ -5,7 +5,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 -import UM 1.7 as UM +import UM 1.5 as UM import Cura 1.1 as Cura From ac8a958decf3c4539a91a7d71214d79226591823 Mon Sep 17 00:00:00 2001 From: rburema Date: Tue, 22 Aug 2023 08:15:02 +0000 Subject: [PATCH 12/18] Applied printer-linter format --- resources/definitions/fdmprinter.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 9a83817726..ccd92c9ba3 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1664,7 +1664,6 @@ "small_skin_width": { "label": "Small Top/Bottom Width", - "description": "Small top/bottom regions are filled with walls instead of the default top/bottom pattern. This helps to avoids jerky motions. Off for the topmost (air-exposed) layer by default (see 'Small Top/Bottom On Surface').", "value": "skin_line_width * 2", "default_value": 1, From 5dc417cf0aab9ebae5116606474262c3f502109d Mon Sep 17 00:00:00 2001 From: saumyaj3 Date: Tue, 22 Aug 2023 11:59:03 +0000 Subject: [PATCH 13/18] Applied printer-linter format --- resources/definitions/kingroon_kp3s_pro.def.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/definitions/kingroon_kp3s_pro.def.json b/resources/definitions/kingroon_kp3s_pro.def.json index e06ce0b891..bda5ac03b2 100644 --- a/resources/definitions/kingroon_kp3s_pro.def.json +++ b/resources/definitions/kingroon_kp3s_pro.def.json @@ -5,16 +5,15 @@ "metadata": { "visible": true, + "author": "willuhmjs", "platform": "kingroon_kp3s.stl", - "quality_definition": "kingroon_base", - "author": "willuhmjs" + "quality_definition": "kingroon_base" }, "overrides": { "machine_acceleration": { "value": 1000 }, - "machine_height": { "default_value": 200 }, - "machine_width": { "default_value": 200 }, "machine_depth": { "default_value": 200 }, + "machine_height": { "default_value": 200 }, "machine_max_acceleration_e": { "value": 1000 }, "machine_max_acceleration_x": { "value": 1000 }, "machine_max_acceleration_y": { "value": 1000 }, @@ -30,9 +29,10 @@ "machine_steps_per_mm_x": { "value": 160 }, "machine_steps_per_mm_y": { "value": 160 }, "machine_steps_per_mm_z": { "value": 800 }, + "machine_width": { "default_value": 200 }, "retraction_amount": { "value": 1 }, "retraction_extrusion_window": { "value": 1 }, "retraction_speed": { "value": 40 }, "speed_z_hop": { "value": 4 } } -} +} \ No newline at end of file From 1f6c096bf719b508b6e0234ad33ac687771aa7f8 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 22 Aug 2023 16:42:34 +0200 Subject: [PATCH 14/18] Don't omit printers in printer list Since the message is now scrollable we can do this :) --- .../src/Messages/NewPrinterDetectedMessage.py | 21 +++++-------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py b/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py index d85ade9dce..76254547da 100644 --- a/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py +++ b/plugins/UM3NetworkPrinting/src/Messages/NewPrinterDetectedMessage.py @@ -37,24 +37,13 @@ class NewPrinterDetectedMessage(Message): def finalize(self, new_devices_added, new_output_devices): self.setProgress(None) - num_devices_added = len(new_devices_added) - max_disp_devices = 3 - - if num_devices_added > max_disp_devices: - num_hidden = num_devices_added - max_disp_devices - device_name_list = ["
  • {} ({})
  • ".format(device.name, device.printerTypeName) for device in - new_output_devices[0: max_disp_devices]] - device_name_list.append( - "
  • " + self.i18n_catalog.i18ncp("info:{0} gets replaced by a number of printers", "... and {0} other", - "... and {0} others", num_hidden) + "
  • ") - device_names = "".join(device_name_list) - else: - device_names = "".join( - ["
  • {} ({})
  • ".format(device.name, device.printerTypeName) for device in new_devices_added]) if new_devices_added: - message_text = self.i18n_catalog.i18nc("info:status", - "Printers added from Digital Factory:") + f"
      {device_names}
    " + device_names = "" + for device in new_devices_added: + device_names = device_names + "
  • {} ({})
  • ".format(device.name, device.printerTypeName) + message_title = self.i18n_catalog.i18nc("info:status", "Printers added from Digital Factory:") + message_text = f"{message_title}
      {device_names}
    " self.setText(message_text) else: self.hide() From 9000730ce72ebd395ca662e37513584acb45678c Mon Sep 17 00:00:00 2001 From: Casper Lamboo Date: Wed, 23 Aug 2023 11:39:54 +0200 Subject: [PATCH 15/18] use template strings --- packaging/MacOS/build_macos.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/MacOS/build_macos.py b/packaging/MacOS/build_macos.py index bde28afab0..eae9afceff 100644 --- a/packaging/MacOS/build_macos.py +++ b/packaging/MacOS/build_macos.py @@ -153,6 +153,6 @@ if __name__ == "__main__": app_name = f"{args.app_name}.app" if args.build_pkg: - create_pkg_installer(args.filename + ".pkg", args.dist_path, cura_version, app_name) + create_pkg_installer(f"{args.filename}.pkg", args.dist_path, cura_version, app_name) if args.build_dmg: - create_dmg(args.filename + ".dmg", args.dist_path, args.source_path, app_name) + create_dmg(f"{args.filename}.dmg", args.dist_path, args.source_path, app_name) From 09d4f083e0f712779d77efaca9a7ed058f0ce182 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 24 Aug 2023 11:15:34 +0200 Subject: [PATCH 16/18] Include adhesion for 1-at-a-time exclusion shadow CURA-10307 --- cura/Scene/ConvexHullDecorator.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index 06ec247ae4..0dbf3ba782 100644 --- a/cura/Scene/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -111,11 +111,7 @@ class ConvexHullDecorator(SceneNodeDecorator): # Parent can be None if node is just loaded. if self._isSingularOneAtATimeNode(): - hull = self.getConvexHullHeadFull() - if hull is None: - return None - hull = self._add2DAdhesionMargin(hull) - return hull + return self.getConvexHullHeadFull() return self._compute2DConvexHull() @@ -323,6 +319,7 @@ class ConvexHullDecorator(SceneNodeDecorator): def _compute2DConvexHeadFull(self) -> Optional[Polygon]: convex_hull = self._compute2DConvexHull() + convex_hull = self._add2DAdhesionMargin(convex_hull) if convex_hull: return convex_hull.getMinkowskiHull(self._getHeadAndFans()) return None From eee1eb714b9376694f8542de5ecf3dba1ee045d5 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 24 Aug 2023 11:17:21 +0200 Subject: [PATCH 17/18] Fixed TiZYX machines head polygon definition --- resources/definitions/tizyx_evy.def.json | 2 +- resources/definitions/tizyx_evy_dual.def.json | 2 +- resources/definitions/tizyx_k25.def.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/definitions/tizyx_evy.def.json b/resources/definitions/tizyx_evy.def.json index 41b2b982be..7ae10f5f1d 100644 --- a/resources/definitions/tizyx_evy.def.json +++ b/resources/definitions/tizyx_evy.def.json @@ -57,7 +57,7 @@ [25, 49], [25, -49], [-25, -49], - [25, 49] + [-25, 49] ] }, "machine_heated_bed": { "default_value": true }, diff --git a/resources/definitions/tizyx_evy_dual.def.json b/resources/definitions/tizyx_evy_dual.def.json index 22046a16ff..7ef3aff2ab 100644 --- a/resources/definitions/tizyx_evy_dual.def.json +++ b/resources/definitions/tizyx_evy_dual.def.json @@ -54,7 +54,7 @@ [25, 49], [25, -49], [-25, -49], - [25, 49] + [-25, 49] ] }, "machine_heated_bed": { "default_value": true }, diff --git a/resources/definitions/tizyx_k25.def.json b/resources/definitions/tizyx_k25.def.json index 60005e8712..fbae8a657d 100644 --- a/resources/definitions/tizyx_k25.def.json +++ b/resources/definitions/tizyx_k25.def.json @@ -51,7 +51,7 @@ [25, 49], [25, -49], [-25, -49], - [25, 49] + [-25, 49] ] }, "machine_heated_bed": { "default_value": true }, From 281e543255f7eeb44993ce8f2b799f681c90bde9 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 25 Aug 2023 11:27:54 +0200 Subject: [PATCH 18/18] Remove exported file after fail CURA-10180 --- .../RemovableDriveOutputDevice.py | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py index e93473c25f..8c0c50d0b4 100644 --- a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py +++ b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py @@ -1,6 +1,7 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import os import os.path from UM.Application import Application @@ -143,38 +144,44 @@ class RemovableDriveOutputDevice(OutputDevice): def _onFinished(self, job): if self._stream: - # Explicitly closing the stream flushes the write-buffer + error = job.getError() try: + # Explicitly closing the stream flushes the write-buffer self._stream.close() - self._stream = None - except: - Logger.logException("w", "An exception occurred 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())), - title = catalog.i18nc("@info:title", "Error"), - message_type = Message.MessageType.ERROR) + except Exception as e: + if not error: + # Only log new error if there was no previous one + error = e + + self._stream = None + self._writing = False + self.writeFinished.emit(self) + + if not error: + 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_type=Message.MessageType.POSITIVE) + 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: + try: + os.remove(job.getFileName()) + except Exception as e: + Logger.logException("e", "Exception when trying to remove incomplete exported file %s", + str(job.getFileName())) + 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_type=Message.MessageType.ERROR) message.show() self.writeError.emit(self) - return - - 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())), - title = catalog.i18nc("@info:title", "File Saved"), - message_type = Message.MessageType.POSITIVE) - 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())), - title = catalog.i18nc("@info:title", "Error"), - message_type = Message.MessageType.ERROR) - message.show() - self.writeError.emit(self) - job.getStream().close() def _onActionTriggered(self, message, action): if action == "eject":