diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml
index 0f4aec5424..598d0ec70a 100644
--- a/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml
+++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml
@@ -51,7 +51,7 @@ Item
anchors.centerIn: parent
color: UM.Theme.getColor("monitor_icon_primary")
height: UM.Theme.getSize("medium_button_icon").width
- source: "../svg/icons/Buildplate.svg"
+ source: UM.Theme.getIcon("Buildplate")
width: height
visible: buildplate
}
diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml
index 92b88d3c09..85b653721f 100644
--- a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml
+++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml
@@ -202,7 +202,7 @@ Button
Cura.IconWithText
{
id: buildplateLabel
- source: UM.Theme.getIcon("buildplate")
+ source: UM.Theme.getIcon("Buildplate")
text:
{
if (configuration === null)
diff --git a/resources/qml/WelcomePages/CloudContent.qml b/resources/qml/WelcomePages/CloudContent.qml
index 9d3e980991..444c1df95c 100644
--- a/resources/qml/WelcomePages/CloudContent.qml
+++ b/resources/qml/WelcomePages/CloudContent.qml
@@ -172,7 +172,7 @@ Item
anchors.horizontalCenter: communityColumn.horizontalCenter
fillMode: Image.PreserveAspectFit
width: UM.Theme.getSize("welcome_wizard_cloud_content_image").width
- source: UM.Theme.getIcon("PrinterTriple", "medium")
+ source: UM.Theme.getIcon("Group")
sourceSize.width: width
sourceSize.height: height
}
diff --git a/plugins/UM3NetworkPrinting/resources/svg/icons/Buildplate.svg b/resources/themes/cura-light/icons/default/Buildplate.svg
old mode 100755
new mode 100644
similarity index 100%
rename from plugins/UM3NetworkPrinting/resources/svg/icons/Buildplate.svg
rename to resources/themes/cura-light/icons/default/Buildplate.svg
diff --git a/resources/themes/cura-light/icons/default/Group.svg b/resources/themes/cura-light/icons/default/Group.svg
new file mode 100644
index 0000000000..8632b37f7c
--- /dev/null
+++ b/resources/themes/cura-light/icons/default/Group.svg
@@ -0,0 +1,3 @@
+
diff --git a/resources/themes/cura-light/icons/default/Play.svg b/resources/themes/cura-light/icons/default/Play.svg
new file mode 100644
index 0000000000..1b2510513d
--- /dev/null
+++ b/resources/themes/cura-light/icons/default/Play.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/resources/themes/cura-light/icons/deprecated_icons.json b/resources/themes/cura-light/icons/deprecated_icons.json
index 8fb1982617..e0d8583605 100644
--- a/resources/themes/cura-light/icons/deprecated_icons.json
+++ b/resources/themes/cura-light/icons/deprecated_icons.json
@@ -306,5 +306,97 @@
"translate": {
"new_icon": "ArrowFourWay",
"size": "default"
+ },
+ "buildplate": {
+ "new_icon": "Buildplate",
+ "size": "default"
+ },
+ "basic": {
+ "new_icon": "PrintQuality",
+ "size": "default"
+ },
+ "category_shield": {
+ "new_icon": "Shield",
+ "size": "default"
+ },
+ "category_unknown": {
+ "new_icon": "Sputnik",
+ "size": "default"
+ },
+ "cross2": {
+ "new_icon": "CancelBlock",
+ "size": "default"
+ },
+ "drop_down_button": {
+ "new_icon": "ChevronSingleDown",
+ "size": "default"
+ },
+ "group": {
+ "new_icon": "Group",
+ "size": "default"
+ },
+ "link": {
+ "new_icon": "Link",
+ "size": "default"
+ },
+ "play": {
+ "new_icon": "Play",
+ "size": "default"
+ },
+ "print_time": {
+ "new_icon": "Clock",
+ "size": "default"
+ },
+ "printer_cloud_connected": {
+ "new_icon": "CloudBadge",
+ "size": "low"
+ },
+ "printer_cloud_not_available": {
+ "new_icon": "CloudBadge",
+ "size": "low"
+ },
+ "printer_connected": {
+ "new_icon": "CheckBlueBG",
+ "size": "low"
+ },
+ "printsetup": {
+ "new_icon": "Sliders",
+ "size": "default"
+ },
+ "quick": {
+ "new_icon": "Quick",
+ "size": "default"
+ },
+ "scale_max": {
+ "new_icon": "ScaleMax",
+ "size": "default"
+ },
+ "setting_per_object": {
+ "new_icon": "MeshType",
+ "size": "default"
+ },
+ "star_empty": {
+ "new_icon": "Star",
+ "size": "default"
+ },
+ "star_filled": {
+ "new_icon": "StarFilled",
+ "size": "default"
+ },
+ "ulti": {
+ "new_icon": "PrintQuality",
+ "size": "default"
+ },
+ "view_xray": {
+ "new_icon": "CancelBlock",
+ "size": "default"
+ },
+ "view_normal": {
+ "new_icon": "Infill0",
+ "size": "default"
+ },
+ "viewmode": {
+ "new_icon": "Eye",
+ "size": "default"
}
}
\ No newline at end of file
diff --git a/tests/TestThemes.py b/tests/TestThemes.py
new file mode 100644
index 0000000000..a84d94298c
--- /dev/null
+++ b/tests/TestThemes.py
@@ -0,0 +1,33 @@
+# Copyright (c) 2021 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+
+import json # To parse the deprecated icons files.
+import os # To find the theme folders.
+import pytest
+
+theme_base = os.path.join(os.path.split(__file__)[0], "..", "resources", "themes")
+theme_paths = [os.path.join(theme_base, theme_folder) for theme_folder in os.listdir(theme_base) if os.path.isdir(os.path.join(theme_base, theme_folder))]
+
+@pytest.mark.parametrize("theme_path", theme_paths)
+def test_deprecatedIconsExist(theme_path: str) -> None:
+ icons_folder = os.path.join(theme_path, "icons")
+ deprecated_icons_file = os.path.join(icons_folder, "deprecated_icons.json")
+ if not os.path.exists(deprecated_icons_file):
+ return # No deprecated icons file, there is nothing to go wrong.
+
+ # Find out which icons exist in this theme file.
+ existing_icons = {}
+ for size in [subfolder for subfolder in os.listdir(icons_folder) if os.path.isdir(os.path.join(icons_folder, subfolder))]:
+ existing_icons[size] = set(os.path.splitext(fname)[0] for fname in os.listdir(os.path.join(icons_folder, size)))
+
+ with open(deprecated_icons_file) as f:
+ deprecated_icons = json.load(f)
+
+ for entry in deprecated_icons.values():
+ assert "new_icon" in entry # For each deprecated icon we must know which icon replaced it.
+ new_icon = entry["new_icon"]
+ assert "size" in entry
+ size = entry["size"]
+
+ assert size in existing_icons # The replacement icon must have a size that exists.
+ assert new_icon in existing_icons[size] # The new icon must exist for that size.