Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcura/CuraApplication.py6
-rwxr-xr-xcura/Settings/MachineManager.py17
-rwxr-xr-xcura_app.py11
-rw-r--r--plugins/CuraEngineBackend/StartSliceJob.py15
-rwxr-xr-xplugins/LayerView/LayerView.qml6
-rw-r--r--plugins/PluginBrowser/PluginBrowser.py2
-rwxr-xr-xplugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py2
-rw-r--r--plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py56
-rw-r--r--plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py23
-rw-r--r--plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json8
-rw-r--r--plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py171
-rwxr-xr-xresources/qml/Cura.qml2
-rw-r--r--resources/qml/JobSpecs.qml6
-rw-r--r--resources/qml/MonitorButton.qml16
-rw-r--r--resources/qml/PrintMonitor.qml2
-rw-r--r--resources/qml/SaveButton.qml24
-rw-r--r--resources/qml/Settings/SettingItem.qml6
-rw-r--r--resources/qml/Settings/SettingTextField.qml18
-rw-r--r--resources/qml/Settings/SettingView.qml15
-rwxr-xr-xresources/qml/Sidebar.qml61
-rw-r--r--resources/qml/SidebarHeader.qml46
-rw-r--r--resources/qml/SidebarSimple.qml971
-rw-r--r--resources/qml/Topbar.qml10
-rw-r--r--resources/themes/cura-dark/theme.json181
-rw-r--r--resources/themes/cura-light/fonts/LICENSE.txt (renamed from resources/themes/cura/fonts/LICENSE.txt)404
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-Bold.ttf (renamed from resources/themes/cura/fonts/OpenSans-Bold.ttf)bin224592 -> 224592 bytes
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-BoldItalic.ttf (renamed from resources/themes/cura/fonts/OpenSans-BoldItalic.ttf)bin213292 -> 213292 bytes
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-Italic.ttf (renamed from resources/themes/cura/fonts/OpenSans-Italic.ttf)bin212896 -> 212896 bytes
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-Light.ttf (renamed from resources/themes/cura/fonts/OpenSans-Light.ttf)bin222412 -> 222412 bytes
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-LightItalic.ttf (renamed from resources/themes/cura/fonts/OpenSans-LightItalic.ttf)bin213128 -> 213128 bytes
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-Regular.ttf (renamed from resources/themes/cura/fonts/OpenSans-Regular.ttf)bin217360 -> 217360 bytes
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-Semibold.ttf (renamed from resources/themes/cura/fonts/OpenSans-Semibold.ttf)bin221328 -> 221328 bytes
-rw-r--r--resources/themes/cura-light/fonts/OpenSans-SemiboldItalic.ttf (renamed from resources/themes/cura/fonts/OpenSans-SemiboldItalic.ttf)bin212820 -> 212820 bytes
-rw-r--r--resources/themes/cura-light/icons/application.svg (renamed from resources/themes/cura/icons/application.svg)0
-rw-r--r--resources/themes/cura-light/icons/arrow_bottom.svg (renamed from resources/themes/cura/icons/arrow_bottom.svg)0
-rw-r--r--resources/themes/cura-light/icons/arrow_left.svg (renamed from resources/themes/cura/icons/arrow_left.svg)0
-rw-r--r--resources/themes/cura-light/icons/arrow_right.svg (renamed from resources/themes/cura/icons/arrow_right.svg)0
-rw-r--r--resources/themes/cura-light/icons/arrow_top.svg (renamed from resources/themes/cura/icons/arrow_top.svg)0
-rw-r--r--resources/themes/cura-light/icons/basic.svg (renamed from resources/themes/cura/icons/basic.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_adhesion.svg (renamed from resources/themes/cura/icons/category_adhesion.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_blackmagic.svg (renamed from resources/themes/cura/icons/category_blackmagic.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_cool.svg (renamed from resources/themes/cura/icons/category_cool.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_dual.svg (renamed from resources/themes/cura/icons/category_dual.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_experimental.svg (renamed from resources/themes/cura/icons/category_experimental.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_fixes.svg (renamed from resources/themes/cura/icons/category_fixes.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_infill.svg (renamed from resources/themes/cura/icons/category_infill.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_layer_height.svg (renamed from resources/themes/cura/icons/category_layer_height.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_machine.svg (renamed from resources/themes/cura/icons/category_machine.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_material.svg (renamed from resources/themes/cura/icons/category_material.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_shell.svg (renamed from resources/themes/cura/icons/category_shell.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_shield.svg (renamed from resources/themes/cura/icons/category_shield.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_speed.svg (renamed from resources/themes/cura/icons/category_speed.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_support.svg (renamed from resources/themes/cura/icons/category_support.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_travel.svg (renamed from resources/themes/cura/icons/category_travel.svg)0
-rw-r--r--resources/themes/cura-light/icons/category_unknown.svg (renamed from resources/themes/cura/icons/category_unknown.svg)0
-rw-r--r--resources/themes/cura-light/icons/check.svg (renamed from resources/themes/cura/icons/check.svg)0
-rw-r--r--resources/themes/cura-light/icons/cross1.svg (renamed from resources/themes/cura/icons/cross1.svg)0
-rw-r--r--resources/themes/cura-light/icons/cross2.svg (renamed from resources/themes/cura/icons/cross2.svg)0
-rw-r--r--resources/themes/cura-light/icons/dense.svg (renamed from resources/themes/cura/icons/dense.svg)0
-rw-r--r--resources/themes/cura-light/icons/dot.svg (renamed from resources/themes/cura/icons/dot.svg)0
-rw-r--r--resources/themes/cura-light/icons/drop_down_button.svg4
-rw-r--r--resources/themes/cura-light/icons/gradual.svg (renamed from resources/themes/cura/icons/gradual.svg)0
-rw-r--r--resources/themes/cura-light/icons/hollow.svg (renamed from resources/themes/cura/icons/hollow.svg)0
-rw-r--r--resources/themes/cura-light/icons/link.svg (renamed from resources/themes/cura/icons/link.svg)0
-rw-r--r--resources/themes/cura-light/icons/load.svg (renamed from resources/themes/cura/icons/load.svg)0
-rw-r--r--resources/themes/cura-light/icons/material_not_selected.svg (renamed from resources/themes/cura/icons/material_not_selected.svg)0
-rw-r--r--resources/themes/cura-light/icons/material_selected.svg (renamed from resources/themes/cura/icons/material_selected.svg)0
-rw-r--r--resources/themes/cura-light/icons/minus.svg (renamed from resources/themes/cura/icons/minus.svg)0
-rw-r--r--resources/themes/cura-light/icons/mirror.svg (renamed from resources/themes/cura/icons/mirror.svg)0
-rw-r--r--resources/themes/cura-light/icons/notice.svg4
-rw-r--r--resources/themes/cura-light/icons/pencil.svg (renamed from resources/themes/cura/icons/pencil.svg)0
-rw-r--r--resources/themes/cura-light/icons/play.svg4
-rw-r--r--resources/themes/cura-light/icons/plugin.svg (renamed from resources/themes/cura/icons/plugin.svg)0
-rw-r--r--resources/themes/cura-light/icons/plus.svg (renamed from resources/themes/cura/icons/plus.svg)0
-rw-r--r--resources/themes/cura-light/icons/print_time.svg (renamed from resources/themes/cura/icons/print_time.svg)0
-rw-r--r--resources/themes/cura-light/icons/printsetup.svg (renamed from resources/themes/cura/icons/printsetup.svg)0
-rw-r--r--resources/themes/cura-light/icons/quick.svg (renamed from resources/themes/cura/icons/quick.svg)0
-rw-r--r--resources/themes/cura-light/icons/reset.svg (renamed from resources/themes/cura/icons/reset.svg)0
-rw-r--r--resources/themes/cura-light/icons/rotate.svg (renamed from resources/themes/cura/icons/rotate.svg)0
-rw-r--r--resources/themes/cura-light/icons/rotate_layflat.svg (renamed from resources/themes/cura/icons/rotate_layflat.svg)0
-rw-r--r--resources/themes/cura-light/icons/rotate_reset.svg (renamed from resources/themes/cura/icons/rotate_reset.svg)0
-rw-r--r--resources/themes/cura-light/icons/scale.svg (renamed from resources/themes/cura/icons/scale.svg)0
-rw-r--r--resources/themes/cura-light/icons/scale_max.svg (renamed from resources/themes/cura/icons/scale_max.svg)0
-rw-r--r--resources/themes/cura-light/icons/scale_reset.svg (renamed from resources/themes/cura/icons/scale_reset.svg)0
-rw-r--r--resources/themes/cura-light/icons/search.svg (renamed from resources/themes/cura/icons/search.svg)0
-rw-r--r--resources/themes/cura-light/icons/setting_per_object.svg (renamed from resources/themes/cura/icons/setting_per_object.svg)0
-rw-r--r--resources/themes/cura-light/icons/settings.svg (renamed from resources/themes/cura/icons/settings.svg)0
-rw-r--r--resources/themes/cura-light/icons/solid.svg (renamed from resources/themes/cura/icons/solid.svg)0
-rw-r--r--resources/themes/cura-light/icons/sparse.svg (renamed from resources/themes/cura/icons/sparse.svg)0
-rw-r--r--resources/themes/cura-light/icons/star.svg (renamed from resources/themes/cura/icons/star.svg)0
-rw-r--r--resources/themes/cura-light/icons/tab_monitor.svg4
-rw-r--r--resources/themes/cura-light/icons/tab_settings.svg (renamed from resources/themes/cura/icons/tab_settings.svg)4
-rw-r--r--resources/themes/cura-light/icons/tab_status_busy.svg9
-rw-r--r--resources/themes/cura-light/icons/tab_status_connected.svg7
-rw-r--r--resources/themes/cura-light/icons/tab_status_paused.svg8
-rw-r--r--resources/themes/cura-light/icons/tab_status_stopped.svg8
-rw-r--r--resources/themes/cura-light/icons/tab_status_unknown.svg8
-rw-r--r--resources/themes/cura-light/icons/translate.svg (renamed from resources/themes/cura/icons/translate.svg)0
-rw-r--r--resources/themes/cura-light/icons/ulti.svg (renamed from resources/themes/cura/icons/ulti.svg)0
-rw-r--r--resources/themes/cura-light/icons/view_layer.svg (renamed from resources/themes/cura/icons/view_layer.svg)0
-rw-r--r--resources/themes/cura-light/icons/view_normal.svg (renamed from resources/themes/cura/icons/view_normal.svg)0
-rw-r--r--resources/themes/cura-light/icons/view_xray.svg (renamed from resources/themes/cura/icons/view_xray.svg)0
-rw-r--r--resources/themes/cura-light/icons/viewmode.svg4
-rw-r--r--resources/themes/cura-light/icons/warning.svg4
-rw-r--r--resources/themes/cura-light/images/logo.svg8
-rwxr-xr-xresources/themes/cura-light/styles.qml (renamed from resources/themes/cura/styles.qml)257
-rw-r--r--resources/themes/cura-light/theme.json345
-rw-r--r--resources/themes/cura/icons/notice.svg3
-rw-r--r--resources/themes/cura/icons/tab_monitor.svg3
-rw-r--r--resources/themes/cura/icons/tab_monitor_with_status.svg4
-rw-r--r--resources/themes/cura/icons/tab_status_busy.svg13
-rw-r--r--resources/themes/cura/icons/tab_status_connected.svg11
-rw-r--r--resources/themes/cura/icons/tab_status_offline.svg4
-rw-r--r--resources/themes/cura/icons/tab_status_paused.svg12
-rw-r--r--resources/themes/cura/icons/tab_status_stopped.svg59
-rw-r--r--resources/themes/cura/icons/tab_status_unknown.svg12
-rw-r--r--resources/themes/cura/icons/viewmode.svg3
-rw-r--r--resources/themes/cura/icons/warning.svg3
-rw-r--r--resources/themes/cura/images/logo.svg91
-rw-r--r--resources/themes/cura/theme.json328
120 files changed, 1886 insertions, 1417 deletions
diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py
index 3c1497f214..ee1c1aeec6 100755
--- a/cura/CuraApplication.py
+++ b/cura/CuraApplication.py
@@ -205,6 +205,8 @@ class CuraApplication(QtApplication):
super().__init__(name = "cura", version = CuraVersion, buildtype = CuraBuildType,
tray_icon_name = "cura-icon-32.png")
+ self.default_theme = "cura-light"
+
self.setWindowIcon(QIcon(Resources.getPath(Resources.Images, "cura-icon.png")))
self.setRequiredPlugins([
@@ -486,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)
@@ -1126,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(";")
diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py
index a798895fc0..7f7593a9d5 100755
--- a/cura/Settings/MachineManager.py
+++ b/cura/Settings/MachineManager.py
@@ -649,6 +649,23 @@ class MachineManager(QObject):
return Util.parseBool(quality.getMetaDataEntry("supported", True))
return False
+ ## Returns whether there is anything unsupported in the current set-up.
+ #
+ # The current set-up signifies the global stack and all extruder stacks,
+ # so this indicates whether there is any container in any of the container
+ # stacks that is not marked as supported.
+ @pyqtProperty(bool, notify = activeQualityChanged)
+ def isCurrentSetupSupported(self) -> bool:
+ if not self._global_container_stack:
+ return False
+ for stack in [self._global_container_stack] + list(self._global_container_stack.extruders.values()):
+ for container in stack.getContainers():
+ if not container:
+ return False
+ if not Util.parseBool(container.getMetaDataEntry("supported", True)):
+ return False
+ return True
+
## Get the Quality ID associated with the currently active extruder
# Note that this only returns the "quality", not the "quality_changes"
# \returns QualityID (string) if found, empty string otherwise
diff --git a/cura_app.py b/cura_app.py
index 1d8867f1f4..2e406f99d3 100755
--- a/cura_app.py
+++ b/cura_app.py
@@ -54,8 +54,17 @@ import Arcus #@UnusedImport
import cura.CuraApplication
import cura.Settings.CuraContainerRegistry
+def get_cura_dir_path():
+ if Platform.isWindows():
+ return os.path.expanduser("~/AppData/Local/cura/")
+ elif Platform.isLinux():
+ return os.path.expanduser("~/.local/share/cura")
+ elif Platform.isOSX():
+ return os.path.expanduser("~/Library/Application Support/cura")
+
+
if hasattr(sys, "frozen"):
- dirpath = os.path.expanduser("~/AppData/Local/cura/")
+ dirpath = get_cura_dir_path()
os.makedirs(dirpath, exist_ok = True)
sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w")
sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w")
diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py
index b6da2104a6..13aee06289 100644
--- a/plugins/CuraEngineBackend/StartSliceJob.py
+++ b/plugins/CuraEngineBackend/StartSliceJob.py
@@ -224,7 +224,18 @@ class StartSliceJob(Job):
material_instance_container = stack.findContainer({"type": "material"})
+ settings = {}
for key in stack.getAllKeys():
+ settings[key] = stack.getProperty(key, "value")
+ Job.yieldThread()
+
+ settings["print_bed_temperature"] = settings["material_bed_temperature"] #Renamed settings.
+ settings["print_temperature"] = settings["material_print_temperature"]
+ settings["time"] = time.strftime("%H:%M:%S") #Some extra settings.
+ settings["date"] = time.strftime("%d-%m-%Y")
+ settings["day"] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][int(time.strftime("%w"))]
+
+ for key, value in settings.items():
# Do not send settings that are not settable_per_extruder.
if not stack.getProperty(key, "settable_per_extruder"):
continue
@@ -233,6 +244,8 @@ class StartSliceJob(Job):
if key == "material_guid" and material_instance_container:
# Also send the material GUID. This is a setting in fdmprinter, but we have no interface for it.
setting.value = str(material_instance_container.getMetaDataEntry("GUID", "")).encode("utf-8")
+ elif key == "machine_extruder_start_code" or key == "machine_extruder_end_code":
+ setting.value = self._expandGcodeTokens(key, value, settings)
else:
setting.value = str(stack.getProperty(key, "value")).encode("utf-8")
Job.yieldThread()
@@ -278,7 +291,7 @@ class StartSliceJob(Job):
for key, value in settings.items(): #Add all submessages for each individual setting.
setting_message = self._slice_message.getMessage("global_settings").addRepeatedMessage("settings")
setting_message.name = key
- if key == "machine_start_gcode" or key == "machine_end_gcode" or key == "machine_extruder_start_code" or key == "machine_extruder_end_code": #If it's a g-code message, use special formatting.
+ if key == "machine_start_gcode" or key == "machine_end_gcode": #If it's a g-code message, use special formatting.
setting_message.value = self._expandGcodeTokens(key, value, settings)
else:
setting_message.value = str(value).encode("utf-8")
diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml
index 3b02aa1ecd..53f44f3f03 100755
--- a/plugins/LayerView/LayerView.qml
+++ b/plugins/LayerView/LayerView.qml
@@ -1,4 +1,4 @@
-// Copyright (c) 2015 Ultimaker B.V.
+// Copyright (c) 2017 Ultimaker B.V.
// Cura is released under the terms of the AGPLv3 or higher.
import QtQuick 2.2
@@ -492,6 +492,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")
visible: slider.layersVisible
@@ -531,6 +533,8 @@ Item
anchors.horizontalCenter: parent.horizontalCenter
radius: parent.handleRadius
color: parent.lowerHandleColor
+ border.width: UM.Theme.getSize("default_lining").width
+ border.color: UM.Theme.getColor("slider_handle_border")
visible: slider.layersVisible
diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py
index 7df020f078..b8db123a91 100644
--- a/plugins/PluginBrowser/PluginBrowser.py
+++ b/plugins/PluginBrowser/PluginBrowser.py
@@ -47,7 +47,7 @@ class PluginBrowser(QObject, Extension):
self._is_downloading = False
self._request_header = [b"User-Agent",
- str.encode("%s\%s (%s %s)" % (Application.getInstance().getApplicationName(),
+ str.encode("%s/%s (%s %s)" % (Application.getInstance().getApplicationName(),
Application.getInstance().getVersion(),
platform.system(),
platform.machine(),
diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py
index 8c13c344aa..96c511bccb 100755
--- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py
+++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py
@@ -756,6 +756,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
self._createNetworkManager()
+ self._last_response_time = time() # Ensure we reset the time when trying to connect (again)
+
self.setConnectionState(ConnectionState.connecting)
self._update() # Manually trigger the first update, as we don't want to wait a few secs before it starts.
if not self._use_stream:
diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py
new file mode 100644
index 0000000000..a6e541be6d
--- /dev/null
+++ b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py
@@ -0,0 +1,56 @@
+# Copyright (c) 2017 Ultimaker B.V.
+# Cura is released under the terms of the AGPLv3 or higher.
+
+import configparser #To parse preference files.
+import io #To serialise the preference files afterwards.
+
+from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this.
+
+_renamed_themes = {
+ "cura": "cura-light"
+}
+
+class VersionUpgrade27to30(VersionUpgrade):
+ ## Gets the version number from a CFG file in Uranium's 2.7 format.
+ #
+ # Since the format may change, this is implemented for the 2.7 format only
+ # and needs to be included in the version upgrade system rather than
+ # globally in Uranium.
+ #
+ # \param serialised The serialised form of a CFG file.
+ # \return The version number stored in the CFG file.
+ # \raises ValueError The format of the version number in the file is
+ # incorrect.
+ # \raises KeyError The format of the file is incorrect.
+ def getCfgVersion(self, serialised):
+ parser = configparser.ConfigParser(interpolation = None)
+ parser.read_string(serialised)
+ format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised.
+ setting_version = int(parser.get("metadata", "setting_version", fallback = 0))
+ return format_version * 1000000 + setting_version
+
+ ## Upgrades a preferences file from version 2.7 to 3.0.
+ #
+ # \param serialised The serialised form of a preferences file.
+ # \param filename The name of the file to upgrade.
+ def upgradePreferences(self, serialised, filename):
+ parser = configparser.ConfigParser(interpolation=None)
+ parser.read_string(serialised)
+
+ # Update version numbers
+ if "general" not in parser:
+ parser["general"] = {}
+ parser["general"]["version"] = "5"
+ if "metadata" not in parser:
+ parser["metadata"] = {}
+ parser["metadata"]["setting_version"] = "2"
+
+ #Renamed themes.
+ if "theme" in parser["general"]:
+ if parser["general"]["theme"] in _renamed_themes:
+ parser["general"]["theme"] = _renamed_themes[parser["general"]["theme"]]
+
+ # Re-serialise the file.
+ output = io.StringIO()
+ parser.write(output)
+ return [filename], [output.getvalue()] \ No newline at end of file
diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py
new file mode 100644
index 0000000000..73e1246360
--- /dev/null
+++ b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py
@@ -0,0 +1,23 @@
+# Copyright (c) 2017 Ultimaker B.V.
+# Cura is released under the terms of the AGPLv3 or higher.
+
+from . import VersionUpgrade27to30
+
+upgrade = VersionUpgrade27to30.VersionUpgrade27to30()
+
+def getMetaData():
+ return {
+ "version_upgrade": {
+ # From To Upgrade function
+ ("preferences", 4000002): ("preferences", 5000002, upgrade.upgradePreferences),
+ },
+ "sources": {
+ "preferences": {
+ "get_version": upgrade.getCfgVersion,
+ "location": {"."}
+ },
+ }
+ }
+
+def register(app):
+ return { "version_upgrade": upgrade }
diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json
new file mode 100644
index 0000000000..3df84ff7e6
--- /dev/null
+++ b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json
@@ -0,0 +1,8 @@
+ {
+ "name": "Version Upgrade 2.7 to 3.0",
+ "author": "Ultimaker B.V.",
+ "version": "1.0.0",
+ "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.",
+ "api": 4,
+ "i18n-catalog": "cura"
+}
diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py
new file mode 100644
index 0000000000..86127df24f
--- /dev/null
+++ b/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py
@@ -0,0 +1,171 @@
+# Copyright (c) 2017 Ultimaker B.V.
+# Cura is released under the terms of the AGPLv3 or higher.
+
+import configparser #To parse the resulting config files.
+import pytest #To register tests with.
+
+import VersionUpgrade27to30 #The module we're testing.
+
+## Creates an instance of the upgrader to test with.
+@pytest.fixture
+def upgrader():
+ return VersionUpgrade27to30.VersionUpgrade27to30()
+
+test_cfg_version_good_data = [
+ {
+ "test_name": "Simple",
+ "file_data": """[general]
+version = 1
+""",
+ "version": 1000000
+ },
+ {
+ "test_name": "Other Data Around",
+ "file_data": """[nonsense]
+life = good
+
+[general]
+version = 3
+
+[values]
+layer_height = 0.12
+infill_sparse_density = 42
+""",
+ "version": 3000000
+ },
+ {
+ "test_name": "Negative Version", #Why not?
+ "file_data": """[general]
+version = -20
+""",
+ "version": -20000000
+ },
+ {
+ "test_name": "Setting Version",
+ "file_data": """[general]
+version = 1
+[metadata]
+setting_version = 1
+""",
+ "version": 1000001
+ },
+ {
+ "test_name": "Negative Setting Version",
+ "file_data": """[general]
+version = 1
+[metadata]
+setting_version = -3
+""",
+ "version": 999997
+ }
+]
+
+## Tests the technique that gets the version number from CFG files.
+#
+# \param data The parametrised data to test with. It contains a test name
+# to debug with, the serialised contents of a CFG file and the correct
+# version number in that CFG file.
+# \param upgrader The instance of the upgrade class to test.
+@pytest.mark.parametrize("data", test_cfg_version_good_data)
+def test_cfgVersionGood(data, upgrader):
+ version = upgrader.getCfgVersion(data["file_data"])
+ assert version == data["version"]
+
+test_cfg_version_bad_data = [
+ {
+ "test_name": "Empty",
+ "file_data": "",
+ "exception": configparser.Error #Explicitly not specified further which specific error we're getting, because that depends on the implementation of configparser.
+ },
+ {
+ "test_name": "No General",
+ "file_data": """[values]
+layer_height = 0.1337
+""",
+ "exception": configparser.Error
+ },
+ {
+ "test_name": "No Version",
+ "file_data": """[general]
+true = false
+""",
+ "exception": configparser.Error
+ },
+ {
+ "test_name": "Not a Number",
+ "file_data": """[general]
+version = not-a-text-version-number
+""",
+ "exception": ValueError
+ },
+ {
+ "test_name": "Setting Value NaN",
+ "file_data": """[general]
+version = 4
+[metadata]
+setting_version = latest_or_something
+""",
+ "exception": ValueError
+ },
+ {
+ "test_name": "Major-Minor",
+ "file_data": """[general]
+version = 1.2
+""",
+ "exception": ValueError
+ }
+]
+
+## Tests whether getting a version number from bad CFG files gives an
+# exception.
+#
+# \param data The parametrised data to test with. It contains a test name
+# to debug with, the serialised contents of a CFG file and the class of
+# exception it needs to throw.
+# \param upgrader The instance of the upgrader to test.
+@pytest.mark.parametrize("data", test_cfg_version_bad_data)
+def test_cfgVersionBad(data, upgrader):
+ with pytest.raises(data["exception"]):
+ upgrader.getCfgVersion(data["file_data"])
+
+test_translate_theme_data = [
+ (
+ "Original Cura theme",
+ """[general]
+version = 4
+theme = cura
+[metadata]
+setting_version = 2
+""",
+ "cura-light"
+ ),
+ (
+ "No theme",
+ """[general]
+version = 4
+[metadata]
+setting_version = 2
+""",
+ None #Indicates that the theme should be absent in the new file.
+ )
+]
+
+## Tests whether the theme is properly translated.
+@pytest.mark.parametrize("test_name, file_data, new_theme", test_translate_theme_data)
+def test_translateTheme(test_name, file_data, new_theme, upgrader):
+ #Read old file.
+ original_parser = configparser.ConfigParser(interpolation = None)
+ original_parser.read_string(file_data)
+
+ #Perform the upgrade.
+ _, upgraded_stacks = upgrader.upgradePreferences(file_data, "<string>")
+ upgraded_stack = upgraded_stacks[0]
+ parser = configparser.ConfigParser(interpolation = None)
+ parser.read_string(upgraded_stack)
+
+ #Check whether the theme was properly translated.
+ if not new_theme:
+ assert "theme" not in parser["general"]
+ else:
+ assert "theme" in parser["general"]
+ assert parser["general"]["theme"] == new_theme \ No newline at end of file
diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml
index 85b17e28a2..35048925eb 100755
--- a/resources/qml/Cura.qml
+++ b/resources/qml/Cura.qml
@@ -447,7 +447,7 @@ UM.MainWindow
right: sidebar.left
}
visible: opacity > 0
- opacity: base.showPrintMonitor ? 0.75 : 0
+ opacity: base.showPrintMonitor ? 1 : 0
Behavior on opacity { NumberAnimation { duration: 100; } }
diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml
index 99bbdc73e6..b2f63dc708 100644
--- a/resources/qml/JobSpecs.qml
+++ b/resources/qml/JobSpecs.qml
@@ -86,7 +86,7 @@ Item {
height: UM.Theme.getSize("save_button_specs_icons").height;
sourceSize.width: width;
sourceSize.height: width;
- color: control.hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("text");
+ color: control.hovered ? UM.Theme.getColor("text_scene_hover") : UM.Theme.getColor("text_scene");
source: UM.Theme.getIcon("pencil");
}
}
@@ -116,7 +116,7 @@ Item {
regExp: /^[^\\ \/ \*\?\|\[\]]*$/
}
style: TextFieldStyle{
- textColor: UM.Theme.getColor("setting_control_text");
+ textColor: UM.Theme.getColor("text_scene");
font: UM.Theme.getFont("default_bold");
background: Rectangle {
opacity: 0
@@ -135,7 +135,7 @@ Item {
height: UM.Theme.getSize("jobspecs_line").height
verticalAlignment: Text.AlignVCenter
font: UM.Theme.getFont("small")
- color: UM.Theme.getColor("text_subtext")
+ color: UM.Theme.getColor("text_scene")
text: CuraApplication.getSceneBoundingBoxString
}
}
diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml
index cfb09d9c9f..5741749d4e 100644
--- a/resources/qml/MonitorButton.qml
+++ b/resources/qml/MonitorButton.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.2
@@ -119,10 +119,10 @@ Item
Label
{
id: statusLabel
- width: parent.width - 2 * UM.Theme.getSize("default_margin").width
+ width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width
anchors.top: parent.top
anchors.left: parent.left
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
color: base.statusColor
font: UM.Theme.getFont("large")
@@ -177,21 +177,21 @@ Item
property string backgroundColor: UM.Theme.getColor("progressbar_background");
property string controlColor: base.statusColor;
- width: parent.width - 2 * UM.Theme.getSize("default_margin").width;
+ width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width;
height: UM.Theme.getSize("progressbar").height;
anchors.top: statusLabel.bottom;
- anchors.topMargin: UM.Theme.getSize("default_margin").height / 4;
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 4;
anchors.left: parent.left;
- anchors.leftMargin: UM.Theme.getSize("default_margin").width;
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width;
}
Row {
id: buttonsRow
height: abortButton.height
anchors.top: progressBar.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
spacing: UM.Theme.getSize("default_margin").width
Row {
diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml
index 04933129e9..ac17681b33 100644
--- a/resources/qml/PrintMonitor.qml
+++ b/resources/qml/PrintMonitor.qml
@@ -353,7 +353,7 @@ Column
Rectangle //Input field for pre-heat temperature.
{
id: preheatTemperatureControl
- color: !enabled ? UM.Theme.getColor("setting_control_disabled") : showError ? UM.Theme.getColor("setting_validation_error") : UM.Theme.getColor("setting_validation_ok")
+ color: !enabled ? UM.Theme.getColor("setting_control_disabled") : showError ? UM.Theme.getColor("setting_validation_error_background") : UM.Theme.getColor("setting_validation_ok")
property var showError:
{
if(bedTemperature.properties.maximum_value != "None" && bedTemperature.properties.maximum_value < parseInt(preheatTemperatureInput.text))
diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml
index 3f25283596..616017ebf6 100644
--- a/resources/qml/SaveButton.qml
+++ b/resources/qml/SaveButton.qml
@@ -45,10 +45,10 @@ Item {
Text {
id: statusLabel
- width: parent.width - 2 * UM.Theme.getSize("default_margin").width
+ width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width
anchors.top: parent.top
anchors.left: parent.left
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
color: UM.Theme.getColor("text")
font: UM.Theme.getFont("default_bold")
@@ -57,12 +57,12 @@ Item {
Rectangle {
id: progressBar
- width: parent.width - 2 * UM.Theme.getSize("default_margin").width
+ width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width
height: UM.Theme.getSize("progressbar").height
anchors.top: statusLabel.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height/4
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height/4
anchors.left: parent.left
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
radius: UM.Theme.getSize("progressbar_radius").width
color: UM.Theme.getColor("progressbar_background")
@@ -92,14 +92,14 @@ Item {
width: base.width
height: saveToButton.height
anchors.top: progressBar.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
anchors.left: parent.left
Row {
id: additionalComponentsRow
anchors.top: parent.top
anchors.right: saveToButton.visible ? saveToButton.left : parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
spacing: UM.Theme.getSize("default_margin").width
}
@@ -141,7 +141,7 @@ Item {
anchors.top: parent.top
anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
// 1 = not started, 5 = disabled
text: [1, 5].indexOf(UM.Backend.state) != -1 ? catalog.i18nc("@label:Printjob", "Prepare") : catalog.i18nc("@label:Printjob", "Cancel")
@@ -183,7 +183,7 @@ Item {
Behavior on color { ColorAnimation { duration: 50; } }
- implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("default_margin").width * 2)
+ implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("sidebar_margin").width * 2)
Label {
id: actualLabel
@@ -221,7 +221,7 @@ Item {
anchors.top: parent.top
anchors.right: deviceSelectionMenu.visible ? deviceSelectionMenu.left : parent.right
- anchors.rightMargin: deviceSelectionMenu.visible ? -3 * UM.Theme.getSize("default_lining").width : UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: deviceSelectionMenu.visible ? -3 * UM.Theme.getSize("default_lining").width : UM.Theme.getSize("sidebar_margin").width
text: UM.OutputDeviceManager.activeDeviceShortDescription
onClicked:
@@ -258,7 +258,7 @@ Item {
Behavior on color { ColorAnimation { duration: 50; } }
- implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("default_margin").width * 2)
+ implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("sidebar_margin").width * 2)
Label {
id: actualLabel
@@ -288,7 +288,7 @@ Item {
anchors.top: parent.top
anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
width: UM.Theme.getSize("save_button_save_to_button").height
height: UM.Theme.getSize("save_button_save_to_button").height
// 3 = Done, 5 = Disabled
diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml
index 829a0b5c12..e520e69040 100644
--- a/resources/qml/Settings/SettingItem.qml
+++ b/resources/qml/Settings/SettingItem.qml
@@ -130,11 +130,11 @@ Item {
id: settingControls
height: parent.height / 2
- spacing: UM.Theme.getSize("default_margin").width / 2
+ spacing: UM.Theme.getSize("sidebar_margin").height / 2
anchors {
right: controlContainer.left
- rightMargin: UM.Theme.getSize("default_margin").width / 2
+ rightMargin: UM.Theme.getSize("sidebar_margin").width / 2
verticalCenter: parent.verticalCenter
}
@@ -293,7 +293,7 @@ Item {
enabled: propertyProvider.isValueUsed
anchors.right: parent.right;
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
anchors.verticalCenter: parent.verticalCenter;
width: UM.Theme.getSize("setting_control").width;
height: UM.Theme.getSize("setting_control").height
diff --git a/resources/qml/Settings/SettingTextField.qml b/resources/qml/Settings/SettingTextField.qml
index 2991c24d57..752e846f1a 100644
--- a/resources/qml/Settings/SettingTextField.qml
+++ b/resources/qml/Settings/SettingTextField.qml
@@ -24,6 +24,17 @@ SettingItem
{
return UM.Theme.getColor("setting_control_disabled_border")
}
+ switch(propertyProvider.properties.validationState)
+ {
+ case "ValidatorState.Exception":
+ case "ValidatorState.MinimumError":
+ case "ValidatorState.MaximumError":
+ return UM.Theme.getColor("setting_validation_error");
+ case "ValidatorState.MinimumWarning":
+ case "ValidatorState.MaximumWarning":
+ return UM.Theme.getColor("setting_validation_warning");
+ }
+ //Validation is OK.
if(hovered || input.activeFocus)
{
return UM.Theme.getColor("setting_control_border_highlight")
@@ -39,15 +50,12 @@ SettingItem
switch(propertyProvider.properties.validationState)
{
case "ValidatorState.Exception":
- return UM.Theme.getColor("setting_validation_error")
case "ValidatorState.MinimumError":
- return UM.Theme.getColor("setting_validation_error")
case "ValidatorState.MaximumError":
- return UM.Theme.getColor("setting_validation_error")
+ return UM.Theme.getColor("setting_validation_error_background")
case "ValidatorState.MinimumWarning":
- return UM.Theme.getColor("setting_validation_warning")
case "ValidatorState.MaximumWarning":
- return UM.Theme.getColor("setting_validation_warning")
+ return UM.Theme.getColor("setting_validation_warning_background")
case "ValidatorState.Valid":
return UM.Theme.getColor("setting_validation_ok")
diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml
index 485d364b2d..b6b79ed3d4 100644
--- a/resources/qml/Settings/SettingView.qml
+++ b/resources/qml/Settings/SettingView.qml
@@ -1,4 +1,4 @@
-// Copyright (c) 2015 Ultimaker B.V.
+// Copyright (c) 2017 Ultimaker B.V.
// Uranium is released under the terms of the AGPLv3 or higher.
import QtQuick 2.2
@@ -42,9 +42,9 @@ Item
{
top: parent.top
left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width
+ leftMargin: UM.Theme.getSize("sidebar_margin").width
right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width
+ rightMargin: UM.Theme.getSize("sidebar_margin").width
}
height: visible ? UM.Theme.getSize("setting_control").height : 0
Behavior on height { NumberAnimation { duration: 100 } }
@@ -55,13 +55,14 @@ Item
anchors.left: parent.left
anchors.right: clearFilterButton.left
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
placeholderText: catalog.i18nc("@label:textbox", "Search...")
style: TextFieldStyle
{
textColor: UM.Theme.getColor("setting_control_text");
+ placeholderTextColor: UM.Theme.getColor("setting_control_text")
font: UM.Theme.getFont("default");
background: Item {}
}
@@ -118,7 +119,7 @@ Item
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
color: UM.Theme.getColor("setting_control_button")
hoverColor: UM.Theme.getColor("setting_control_button_hover")
@@ -137,7 +138,7 @@ Item
anchors.bottom: parent.bottom;
anchors.right: parent.right;
anchors.left: parent.left;
- anchors.topMargin: filterContainer.visible ? UM.Theme.getSize("default_margin").width : 0
+ anchors.topMargin: filterContainer.visible ? UM.Theme.getSize("sidebar_margin").height : 0
Behavior on anchors.topMargin { NumberAnimation { duration: 100 } }
style: UM.Theme.styles.scrollview;
@@ -296,7 +297,7 @@ Item
contextMenu.provider = provider
contextMenu.popup();
}
- onShowTooltip: base.showTooltip(delegate, { x: 0, y: delegate.height / 2 }, text)
+ onShowTooltip: base.showTooltip(delegate, { x: -UM.Theme.getSize("default_arrow").width, y: delegate.height / 2 }, text)
onHideTooltip: base.hideTooltip()
onShowAllHiddenInheritedSettings:
{
diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml
index 18f47cf411..be0b12af19 100755
--- a/resources/qml/Sidebar.qml
+++ b/resources/qml/Sidebar.qml
@@ -43,14 +43,14 @@ Rectangle
onTriggered:
{
- base.showTooltip(base, {x:1, y:item.y}, text);
+ base.showTooltip(base, {x: 0, y: item.y}, text);
}
}
function showTooltip(item, position, text)
{
tooltip.text = text;
- position = item.mapToItem(base, position.x, position.y);
+ position = item.mapToItem(base, position.x - UM.Theme.getSize("default_arrow").width, position.y);
tooltip.show(position);
}
@@ -102,7 +102,7 @@ Rectangle
height: visible ? UM.Theme.getSize("sidebar_lining").height : 0
color: UM.Theme.getColor("sidebar_lining")
anchors.top: header.bottom
- anchors.topMargin: visible ? UM.Theme.getSize("default_margin").height : 0
+ anchors.topMargin: visible ? UM.Theme.getSize("sidebar_margin").height : 0
}
onCurrentModeIndexChanged:
@@ -118,10 +118,10 @@ Rectangle
id: settingsModeLabel
text: !hideSettings ? catalog.i18nc("@label:listbox", "Print Setup") : catalog.i18nc("@label:listbox","Print Setup disabled\nG-code files cannot be modified");
anchors.left: parent.left
- anchors.leftMargin: UM.Theme.getSize("default_margin").width;
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
anchors.top: headerSeparator.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height
- width: parent.width * 0.45 - 2 * UM.Theme.getSize("default_margin").width
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
+ width: parent.width * 0.45 - 2 * UM.Theme.getSize("sidebar_margin").width
font: UM.Theme.getFont("large")
color: UM.Theme.getColor("text")
visible: !monitoringPrint
@@ -134,9 +134,9 @@ Rectangle
width: parent.width * 0.55
height: UM.Theme.getSize("sidebar_header_mode_toggle").height
anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
anchors.top: headerSeparator.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
visible: !monitoringPrint && !hideSettings
Component{
id: wizardDelegate
@@ -169,18 +169,18 @@ Rectangle
style: ButtonStyle {
background: Rectangle {
border.width: UM.Theme.getSize("default_lining").width
- border.color: control.checked ? UM.Theme.getColor("toggle_checked_border") :
- control.pressed ? UM.Theme.getColor("toggle_active_border") :
- control.hovered ? UM.Theme.getColor("toggle_hovered_border") : UM.Theme.getColor("toggle_unchecked_border")
- color: control.checked ? UM.Theme.getColor("toggle_checked") :
- control.pressed ? UM.Theme.getColor("toggle_active") :
- control.hovered ? UM.Theme.getColor("toggle_hovered") : UM.Theme.getColor("toggle_unchecked")
+ border.color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") :
+ control.hovered ? UM.Theme.getColor("action_button_hovered_border") :
+ UM.Theme.getColor("action_button_border")
+ color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active") :
+ control.hovered ? UM.Theme.getColor("action_button_hovered") :
+ UM.Theme.getColor("action_button")
Behavior on color { ColorAnimation { duration: 50; } }
Label {
anchors.centerIn: parent
- color: control.checked ? UM.Theme.getColor("toggle_checked_text") :
- control.pressed ? UM.Theme.getColor("toggle_active_text") :
- control.hovered ? UM.Theme.getColor("toggle_hovered_text") : UM.Theme.getColor("toggle_unchecked_text")
+ 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: UM.Theme.getFont("default")
text: control.text;
}
@@ -212,18 +212,18 @@ Rectangle
anchors
{
top: settingsModeSelection.bottom
- topMargin: UM.Theme.getSize("default_margin").width
+ topMargin: UM.Theme.getSize("sidebar_margin").height
left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width
+ leftMargin: UM.Theme.getSize("sidebar_margin").width
right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width
+ rightMargin: UM.Theme.getSize("sidebar_margin").width
}
Text
{
id: globalProfileLabel
text: catalog.i18nc("@label","Profile:");
- width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width
+ width: parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
verticalAlignment: Text.AlignVCenter
@@ -247,14 +247,13 @@ Rectangle
}
enabled: !header.currentExtruderVisible || header.currentExtruderIndex > -1
- width: parent.width * 0.7 + UM.Theme.getSize("default_margin").width
+ width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width
height: UM.Theme.getSize("setting_control").height
anchors.left: globalProfileLabel.right
anchors.right: parent.right
tooltip: Cura.MachineManager.activeQualityName
style: UM.Theme.styles.sidebar_header_button
activeFocusOnPress: true;
- property var valueWarning: !Cura.MachineManager.isActiveQualitySupported
menu: ProfileMenu { }
UM.SimpleButton
@@ -267,7 +266,7 @@ Rectangle
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("default_margin").width
+ anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("sidebar_margin").width
color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button");
iconSource: UM.Theme.getIcon("star");
@@ -280,7 +279,7 @@ Rectangle
onEntered:
{
var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.")
- base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("default_margin").width, 0), content)
+ base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), content)
}
onExited: base.hideTooltip()
}
@@ -293,7 +292,7 @@ Rectangle
anchors.bottom: footerSeparator.top
anchors.top: globalProfileRow.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
anchors.left: base.left
anchors.right: base.right
visible: !monitoringPrint && !hideSettings
@@ -379,7 +378,7 @@ Rectangle
height: UM.Theme.getSize("sidebar_lining").height
color: UM.Theme.getColor("sidebar_lining")
anchors.bottom: printSpecs.top
- anchors.bottomMargin: UM.Theme.getSize("default_margin").height * 2 + UM.Theme.getSize("progressbar").height + UM.Theme.getFont("default_bold").pixelSize
+ anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height * 2 + UM.Theme.getSize("progressbar").height + UM.Theme.getFont("default_bold").pixelSize
}
Rectangle
@@ -387,8 +386,8 @@ Rectangle
id: printSpecs
anchors.left: parent.left
anchors.bottom: parent.bottom
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
- anchors.bottomMargin: UM.Theme.getSize("default_margin").height
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
+ anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height
height: childrenRect.height
visible: !monitoringPrint
@@ -501,7 +500,7 @@ Rectangle
id: saveButton
implicitWidth: base.width
anchors.top: footerSeparator.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
anchors.bottom: parent.bottom
visible: !monitoringPrint
}
@@ -511,7 +510,7 @@ Rectangle
id: monitorButton
implicitWidth: base.width
anchors.top: footerSeparator.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
anchors.bottom: parent.bottom
visible: monitoringPrint
}
diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml
index 840a7067ce..606e629b45 100644
--- a/resources/qml/SidebarHeader.qml
+++ b/resources/qml/SidebarHeader.qml
@@ -17,7 +17,7 @@ Column
property int currentExtruderIndex: ExtruderManager.activeExtruderIndex;
property bool currentExtruderVisible: extrudersList.visible;
- spacing: UM.Theme.getSize("default_margin").height
+ spacing: UM.Theme.getSize("sidebar_margin").height
signal showTooltip(Item item, point location, string text)
signal hideTooltip()
@@ -133,9 +133,9 @@ Column
{
anchors.verticalCenter: parent.verticalCenter
anchors.left: swatch.visible ? swatch.right : parent.left
- anchors.leftMargin: swatch.visible ? UM.Theme.getSize("default_margin").width / 2 : UM.Theme.getSize("default_margin").width
+ anchors.leftMargin: swatch.visible ? UM.Theme.getSize("sidebar_margin").width / 2 : UM.Theme.getSize("sidebar_margin").width
anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width / 2
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width / 2
color: control.checked ? UM.Theme.getColor("tab_checked_text") :
control.pressed ? UM.Theme.getColor("tab_active_text") :
@@ -155,7 +155,7 @@ Column
Item
{
id: variantRowSpacer
- height: UM.Theme.getSize("default_margin").height / 4
+ height: UM.Theme.getSize("sidebar_margin").height / 4
width: height
visible: !extruderSelectionRow.visible
}
@@ -170,9 +170,9 @@ Column
anchors
{
left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width
+ leftMargin: UM.Theme.getSize("sidebar_margin").width
right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width
+ rightMargin: UM.Theme.getSize("sidebar_margin").width
}
Text
@@ -207,7 +207,7 @@ Column
enabled: !extrudersList.visible || base.currentExtruderIndex > -1
height: UM.Theme.getSize("setting_control").height
- width: parent.width * 0.7 + UM.Theme.getSize("default_margin").width
+ width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width
anchors.right: parent.right
style: UM.Theme.styles.sidebar_header_button
activeFocusOnPress: true;
@@ -226,9 +226,9 @@ Column
anchors
{
left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width
+ leftMargin: UM.Theme.getSize("sidebar_margin").width
right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width
+ rightMargin: UM.Theme.getSize("sidebar_margin").width
}
Text
@@ -247,7 +247,7 @@ Column
visible: Cura.MachineManager.hasVariants
height: UM.Theme.getSize("setting_control").height
- width: parent.width * 0.7 + UM.Theme.getSize("default_margin").width
+ width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width
anchors.right: parent.right
style: UM.Theme.styles.sidebar_header_button
activeFocusOnPress: true;
@@ -266,37 +266,27 @@ Column
anchors
{
left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width
+ leftMargin: UM.Theme.getSize("sidebar_margin").width
right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width
+ rightMargin: UM.Theme.getSize("sidebar_margin").width
}
Item
{
height: UM.Theme.getSize("sidebar_setup").height
anchors.right: parent.right
- width: parent.width * 0.7 + UM.Theme.getSize("default_margin").width
+ width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width
Text
{
id: materialInfoLabel
wrapMode: Text.WordWrap
- text: catalog.i18nc("@label","Check material compability");
+ text: catalog.i18nc("@label", "Check material compability");
font: UM.Theme.getFont("default");
verticalAlignment: Text.AlignVCenter
anchors.top: parent.top
anchors.bottom: parent.bottom
- color:
- {
- if (!Cura.MachineManager.isActiveQualitySupported)
- {
- UM.Theme.getColor("setting_validation_error");
- }
- else
- {
- UM.Theme.getColor("text");
- }
- }
+ color: UM.Theme.getColor("text")
MouseArea
{
@@ -317,7 +307,7 @@ Column
var content = catalog.i18nc("@tooltip", "Click to check the material compatibility on Ultimaker.com.");
base.showTooltip(
materialInfoRow,
- Qt.point(-UM.Theme.getSize("default_margin").width, 0),
+ Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0),
catalog.i18nc("@tooltip", content)
);
}
@@ -336,8 +326,8 @@ Column
//sourceSize.width: width + 5
//sourceSize.height: width + 5
- color: UM.Theme.getColor("setting_control_text")
- visible: !Cura.MachineManager.isActiveQualitySupported
+ color: UM.Theme.getColor("setting_validation_warning")
+ visible: !Cura.MachineManager.isCurrentSetupSupported
}
}
}
diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml
index f988ae0e8b..25564f1172 100644
--- a/resources/qml/SidebarSimple.qml
+++ b/resources/qml/SidebarSimple.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.2
@@ -23,596 +23,595 @@ Item
Component.onCompleted: PrintInformation.enabled = true
Component.onDestruction: PrintInformation.enabled = false
- UM.I18nCatalog { id: catalog; name:"cura"}
+ UM.I18nCatalog { id: catalog; name: "cura" }
- Item
+ ScrollView
{
- id: infillCellLeft
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.topMargin: UM.Theme.getSize("default_margin").height
- width: base.width * .45 - UM.Theme.getSize("default_margin").width
- height: childrenRect.height
-
- Text
- {
- id: infillLabel
- //: Infill selection label
- text: catalog.i18nc("@label", "Infill");
- font: UM.Theme.getFont("default");
- color: UM.Theme.getColor("text");
- anchors.top: parent.top
- anchors.topMargin: UM.Theme.getSize("default_margin").height
- anchors.left: parent.left
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
- }
- }
-
- Row
- {
- id: infillCellRight
-
- height: childrenRect.height;
- width: base.width * .55
-
- spacing: UM.Theme.getSize("default_margin").width
+ anchors.fill: parent
+ style: UM.Theme.styles.scrollview
+ flickableItem.flickableDirection: Flickable.VerticalFlick
- anchors.left: infillCellLeft.right
- anchors.top: infillCellLeft.top
-
- Repeater
+ Rectangle
{
- id: infillListView
- property int activeIndex:
+ width: childrenRect.width
+ height: childrenRect.height
+ Item
{
- for(var i = 0; i < infillModel.count; ++i)
+ id: infillCellLeft
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
+ width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width
+ height: childrenRect.height
+
+ Text
{
- var density = parseInt(infillDensity.properties.value);
- var steps = parseInt(infillSteps.properties.value);
- if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax && steps > infillModel.get(i).stepsMin && steps <= infillModel.get(i).stepsMax)
- {
- return i;
- }
+ id: infillLabel
+ //: Infill selection label
+ text: catalog.i18nc("@label", "Infill");
+ font: UM.Theme.getFont("default");
+ color: UM.Theme.getColor("text");
+ anchors.top: parent.top
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
+ anchors.left: parent.left
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
}
-
- return -1;
}
- model: infillModel;
- Item
+ Row
{
- width: childrenRect.width;
+ id: infillCellRight
+
height: childrenRect.height;
+ width: UM.Theme.getSize("sidebar").width * .55
- Rectangle
- {
- id: infillIconLining
+ spacing: UM.Theme.getSize("sidebar_margin").width
- width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("default_margin").width)) / (infillModel.count);
- height: width
+ anchors.left: infillCellLeft.right
+ anchors.top: infillCellLeft.top
- border.color:
- {
- if(!base.settingsEnabled)
- {
- return UM.Theme.getColor("setting_control_disabled_border")
- }
- else if(infillListView.activeIndex == index)
- {
- return UM.Theme.getColor("setting_control_selected")
- }
- else if(infillMouseArea.containsMouse)
- {
- return UM.Theme.getColor("setting_control_border_highlight")
- }
- return UM.Theme.getColor("setting_control_border")
- }
- border.width: UM.Theme.getSize("default_lining").width
- color:
+ Repeater
+ {
+ id: infillListView
+ property int activeIndex:
{
- if(infillListView.activeIndex == index)
+ for(var i = 0; i < infillModel.count; ++i)
{
- if(!base.settingsEnabled)
+ var density = parseInt(infillDensity.properties.value);
+ var steps = parseInt(infillSteps.properties.value);
+ if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax && steps > infillModel.get(i).stepsMin && steps <= infillModel.get(i).stepsMax)
{
- return UM.Theme.getColor("setting_control_disabled_text")
+ return i;
}
- return UM.Theme.getColor("setting_control_selected")
}
- return "transparent"
+
+ return -1;
}
+ model: infillModel;
- UM.RecolorImage
+ Item
{
- id: infillIcon
- anchors.fill: parent;
- anchors.margins: 2
-
- sourceSize.width: width
- sourceSize.height: width
- source: UM.Theme.getIcon(model.icon);
- color: {
- if(infillListView.activeIndex == index)
+ width: childrenRect.width;
+ height: childrenRect.height;
+
+ Rectangle
+ {
+ id: infillIconLining
+
+ width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("sidebar_margin").width)) / (infillModel.count);
+ height: width
+
+ border.color:
{
- return UM.Theme.getColor("text_reversed")
+ if(!base.settingsEnabled)
+ {
+ return UM.Theme.getColor("setting_control_disabled_border")
+ }
+ else if(infillListView.activeIndex == index)
+ {
+ return UM.Theme.getColor("setting_control_selected")
+ }
+ else if(infillMouseArea.containsMouse)
+ {
+ return UM.Theme.getColor("setting_control_border_highlight")
+ }
+ return UM.Theme.getColor("setting_control_border")
}
- if(!base.settingsEnabled)
+ border.width: UM.Theme.getSize("default_lining").width
+ color:
{
- return UM.Theme.getColor("setting_control_disabled_text")
+ if(infillListView.activeIndex == index)
+ {
+ if(!base.settingsEnabled)
+ {
+ return UM.Theme.getColor("setting_control_disabled_text")
+ }
+ return UM.Theme.getColor("setting_control_selected")
+ }
+ return "transparent"
}
- return UM.Theme.getColor("setting_control_disabled_text")
- }
- }
- MouseArea
- {
- id: infillMouseArea
- anchors.fill: parent
- hoverEnabled: true
- enabled: base.settingsEnabled
- onClicked: {
- if (infillListView.activeIndex != index)
+ UM.RecolorImage
{
- infillDensity.setPropertyValue("value", model.percentage)
- infillSteps.setPropertyValue("value", model.steps)
+ id: infillIcon
+ anchors.fill: parent;
+ anchors.margins: 2
+
+ sourceSize.width: width
+ sourceSize.height: width
+ source: UM.Theme.getIcon(model.icon);
+ color: {
+ if(infillListView.activeIndex == index)
+ {
+ return UM.Theme.getColor("text_emphasis")
+ }
+ if(!base.settingsEnabled)
+ {
+ return UM.Theme.getColor("setting_control_disabled_text")
+ }
+ return UM.Theme.getColor("setting_control_disabled_text")
+ }
+ }
+
+ MouseArea
+ {
+ id: infillMouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+ enabled: base.settingsEnabled
+ onClicked: {
+ if (infillListView.activeIndex != index)
+ {
+ infillDensity.setPropertyValue("value", model.percentage)
+ infillSteps.setPropertyValue("value", model.steps)
+ }
+ }
+ onEntered:
+ {
+ base.showTooltip(infillCellRight, Qt.point(-infillCellRight.x, 0), model.text);
+ }
+ onExited:
+ {
+ base.hideTooltip();
+ }
}
}
- onEntered:
- {
- base.showTooltip(infillCellRight, Qt.point(-infillCellRight.x, 0), model.text);
- }
- onExited:
+ Text
{
- base.hideTooltip();
+ id: infillLabel
+ width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("sidebar_margin").width)) / (infillModel.count);
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Text.WordWrap
+ font: UM.Theme.getFont("default")
+ anchors.top: infillIconLining.bottom
+ anchors.horizontalCenter: infillIconLining.horizontalCenter
+ color: infillListView.activeIndex == index ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_border")
+ text: name
}
}
}
- Text
+
+ ListModel
{
- id: infillLabel
- width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("default_margin").width)) / (infillModel.count);
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- wrapMode: Text.WordWrap
- font: UM.Theme.getFont("default")
- anchors.top: infillIconLining.bottom
- anchors.horizontalCenter: infillIconLining.horizontalCenter
- color: infillListView.activeIndex == index ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_border")
- text: name
+ id: infillModel
+
+ Component.onCompleted:
+ {
+ infillModel.append({
+ name: catalog.i18nc("@label", "0%"),
+ percentage: 0,
+ steps: 0,
+ percentageMin: -1,
+ percentageMax: 0,
+ stepsMin: -1,
+ stepsMax: 0,
+ text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength."),
+ icon: "hollow"
+ })
+ infillModel.append({
+ name: catalog.i18nc("@label", "20%"),
+ percentage: 20,
+ steps: 0,
+ percentageMin: 0,
+ percentageMax: 30,
+ stepsMin: -1,
+ stepsMax: 0,
+ text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength."),
+ icon: "sparse"
+ })
+ infillModel.append({
+ name: catalog.i18nc("@label", "50%"),
+ percentage: 50,
+ steps: 0,
+ percentageMin: 30,
+ percentageMax: 70,
+ stepsMin: -1,
+ stepsMax: 0,
+ text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength."),
+ icon: "dense"
+ })
+ infillModel.append({
+ name: catalog.i18nc("@label", "100%"),
+ percentage: 100,
+ steps: 0,
+ percentageMin: 70,
+ percentageMax: 9999999999,
+ stepsMin: -1,
+ stepsMax: 0,
+ text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid."),
+ icon: "solid"
+ })
+ infillModel.append({
+ name: catalog.i18nc("@label", "Gradual"),
+ percentage: 90,
+ steps: 5,
+ percentageMin: 0,
+ percentageMax: 9999999999,
+ stepsMin: 0,
+ stepsMax: 9999999999,
+ infill_layer_height: 1.5,
+ text: catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top."),
+ icon: "gradual"
+ })
+ }
}
}
- }
- ListModel
- {
- id: infillModel
-
- Component.onCompleted:
+ Text
{
- infillModel.append({
- name: catalog.i18nc("@label", "0%"),
- percentage: 0,
- steps: 0,
- percentageMin: -1,
- percentageMax: 0,
- stepsMin: -1,
- stepsMax: 0,
- text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength."),
- icon: "hollow"
- })
- infillModel.append({
- name: catalog.i18nc("@label", "20%"),
- percentage: 20,
- steps: 0,
- percentageMin: 0,
- percentageMax: 30,
- stepsMin: -1,
- stepsMax: 0,
- text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength."),
- icon: "sparse"
- })
- infillModel.append({
- name: catalog.i18nc("@label", "50%"),
- percentage: 50,
- steps: 0,
- percentageMin: 30,
- percentageMax: 70,
- stepsMin: -1,
- stepsMax: 0,
- text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength."),
- icon: "dense"
- })
- infillModel.append({
- name: catalog.i18nc("@label", "100%"),
- percentage: 100,
- steps: 0,
- percentageMin: 70,
- percentageMax: 9999999999,
- stepsMin: -1,
- stepsMax: 0,
- text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid."),
- icon: "solid"
- })
- infillModel.append({
- name: catalog.i18nc("@label", "Gradual"),
- percentage: 90,
- steps: 5,
- percentageMin: 0,
- percentageMax: 9999999999,
- stepsMin: 0,
- stepsMax: 9999999999,
- infill_layer_height: 1.5,
- text: catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top."),
- icon: "gradual"
- })
+ id: enableSupportLabel
+ anchors.left: parent.left
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
+ anchors.verticalCenter: enableSupportCheckBox.verticalCenter
+ text: catalog.i18nc("@label", "Generate Support");
+ font: UM.Theme.getFont("default");
+ color: UM.Theme.getColor("text");
}
- }
- }
- Item
- {
- id: helpersCell
- anchors.top: infillCellRight.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height * 2
- anchors.left: parent.left
- anchors.right: parent.right
- height: childrenRect.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");
- }
-
- CheckBox
- {
- id: enableSupportCheckBox
- property alias _hovered: enableSupportMouseArea.containsMouse
+ CheckBox
+ {
+ id: enableSupportCheckBox
+ property alias _hovered: enableSupportMouseArea.containsMouse
- anchors.top: parent.top
- anchors.left: enableSupportLabel.right
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
+ anchors.top: infillCellRight.bottom
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2
+ anchors.left: infillCellRight.left
- style: UM.Theme.styles.checkbox;
- enabled: base.settingsEnabled
+ style: UM.Theme.styles.checkbox;
+ enabled: base.settingsEnabled
- checked: supportEnabled.properties.value == "True";
+ checked: supportEnabled.properties.value == "True";
- MouseArea
- {
- id: enableSupportMouseArea
- anchors.fill: parent
- hoverEnabled: true
- enabled: true
- onClicked:
- {
- // The value is a string "True" or "False"
- supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True");
- }
- onEntered:
- {
- base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportCheckBox.x, 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:
+ MouseArea
{
- base.hideTooltip();
+ id: enableSupportMouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+ enabled: true
+ onClicked:
+ {
+ // The value is a string "True" or "False"
+ supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True");
+ }
+ onEntered:
+ {
+ base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportCheckBox.x, 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:
+ {
+ base.hideTooltip();
+ }
}
}
- }
- 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");
- }
-
- ComboBox
- {
- id: supportExtruderCombobox
- visible: (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)
- model: extruderModel
-
- property string color_override: "" // for manually setting values
- property string color: // is evaluated automatically, but the first time is before extruderModel being filled
+ Text
{
- var current_extruder = extruderModel.get(currentIndex);
- color_override = "";
- if (current_extruder === undefined) {
- return "";
- }
- var model_color = current_extruder.color;
- return (model_color) ? model_color : "";
+ id: supportExtruderLabel
+ visible: (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)
+ anchors.left: parent.left
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
+ anchors.verticalCenter: supportExtruderCombobox.verticalCenter
+ text: catalog.i18nc("@label", "Support Extruder");
+ font: UM.Theme.getFont("default");
+ color: UM.Theme.getColor("text");
}
- textRole: 'text' // this solves that the combobox isn't populated in the first time Cura is started
-
- anchors.top: enableSupportCheckBox.bottom
- anchors.topMargin:
+ ComboBox
{
- if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1))
- {
- return UM.Theme.getSize("default_margin").height;
- }
- else
+ id: supportExtruderCombobox
+ visible: (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)
+ model: extruderModel
+
+ property string color_override: "" // for manually setting values
+ property string color: // is evaluated automatically, but the first time is before extruderModel being filled
{
- return 0;
+ var current_extruder = extruderModel.get(currentIndex);
+ color_override = "";
+ if (current_extruder === undefined) {
+ return "";
+ }
+ var model_color = current_extruder.color;
+ return (model_color) ? model_color : "";
}
- }
- anchors.left: supportExtruderLabel.right
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
- width: parent.width * .55
- height:
- {
- if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1))
+
+ textRole: 'text' // this solves that the combobox isn't populated in the first time Cura is started
+
+ anchors.top: enableSupportCheckBox.bottom
+ anchors.topMargin:
{
- // default height when control is enabled
- return UM.Theme.getSize("setting_control").height;
+ if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1))
+ {
+ return UM.Theme.getSize("sidebar_margin").height;
+ }
+ else
+ {
+ return 0;
+ }
}
- else
+ anchors.left: infillCellRight.left
+ width: UM.Theme.getSize("sidebar").width * .55
+ height:
{
- return 0;
+ 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;
+ }
}
- }
- Behavior on height { NumberAnimation { duration: 100 } }
-
- style: UM.Theme.styles.combobox_color
- enabled: base.settingsEnabled
- property alias _hovered: supportExtruderMouseArea.containsMouse
+ Behavior on height { NumberAnimation { duration: 100 } }
- currentIndex: supportExtruderNr.properties !== null ? parseFloat(supportExtruderNr.properties.value) : 0
- onActivated:
- {
- // Send the extruder nr as a string.
- supportExtruderNr.setPropertyValue("value", String(index));
- }
- MouseArea
- {
- id: supportExtruderMouseArea
- anchors.fill: parent
- hoverEnabled: true
+ style: UM.Theme.styles.combobox_color
enabled: base.settingsEnabled
- acceptedButtons: Qt.NoButton
- onEntered:
+ property alias _hovered: supportExtruderMouseArea.containsMouse
+
+ currentIndex: supportExtruderNr.properties !== null ? parseFloat(supportExtruderNr.properties.value) : 0
+ onActivated:
{
- base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x, 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."));
+ // Send the extruder nr as a string.
+ supportExtruderNr.setPropertyValue("value", String(index));
}
- onExited:
+ MouseArea
{
- base.hideTooltip();
+ id: supportExtruderMouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+ enabled: base.settingsEnabled
+ acceptedButtons: Qt.NoButton
+ onEntered:
+ {
+ base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x, 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:
+ {
+ base.hideTooltip();
+ }
}
- }
- function updateCurrentColor()
- {
- var current_extruder = extruderModel.get(currentIndex);
- if (current_extruder !== undefined) {
- supportExtruderCombobox.color_override = current_extruder.color;
+ function updateCurrentColor()
+ {
+ var current_extruder = extruderModel.get(currentIndex);
+ if (current_extruder !== undefined) {
+ supportExtruderCombobox.color_override = current_extruder.color;
+ }
}
- }
- }
+ }
- 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");
- elide: Text.ElideRight
- }
+ Text
+ {
+ id: adhesionHelperLabel
+ anchors.left: parent.left
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
+ anchors.verticalCenter: adhesionCheckBox.verticalCenter
+ text: catalog.i18nc("@label", "Build Plate Adhesion");
+ font: UM.Theme.getFont("default");
+ color: UM.Theme.getColor("text");
+ elide: Text.ElideRight
+ }
- CheckBox
- {
- id: adhesionCheckBox
- property alias _hovered: adhesionMouseArea.containsMouse
+ CheckBox
+ {
+ 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
+ anchors.top: supportExtruderCombobox.bottom
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2
+ anchors.left: infillCellRight.left
- //: Setting enable printing build-plate adhesion helper checkbox
- style: UM.Theme.styles.checkbox;
- enabled: base.settingsEnabled
+ //: Setting enable printing build-plate adhesion helper checkbox
+ style: UM.Theme.styles.checkbox;
+ enabled: base.settingsEnabled
- checked: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none"
+ checked: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none"
- MouseArea
- {
- id: adhesionMouseArea
- anchors.fill: parent
- hoverEnabled: true
- enabled: base.settingsEnabled
- onClicked:
+ MouseArea
{
- var adhesionType = "skirt";
- if(!parent.checked)
+ id: adhesionMouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+ enabled: base.settingsEnabled
+ onClicked:
{
- // 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")
+ var adhesionType = "skirt";
+ if(!parent.checked)
{
- // If the rest of the stack doesn't prescribe an adhesion-type, default to a brim
- adhesionType = "brim";
+ // 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 the rest of the stack doesn't prescribe an adhesion-type, default to a brim
+ adhesionType = "brim";
+ }
}
+ platformAdhesionType.setPropertyValue("value", adhesionType);
+ }
+ onEntered:
+ {
+ base.showTooltip(adhesionCheckBox, Qt.point(-adhesionCheckBox.x, 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:
+ {
+ base.hideTooltip();
}
- platformAdhesionType.setPropertyValue("value", adhesionType);
- }
- onEntered:
- {
- base.showTooltip(adhesionCheckBox, Qt.point(-adhesionCheckBox.x, 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:
- {
- base.hideTooltip();
}
}
- }
- ListModel
- {
- id: extruderModel
- Component.onCompleted: populateExtruderModel()
- }
+ ListModel
+ {
+ id: extruderModel
+ Component.onCompleted: populateExtruderModel()
+ }
- //: Model used to populate the extrudelModel
- Cura.ExtrudersModel
- {
- id: extruders
- onModelChanged: populateExtruderModel()
- }
- }
+ //: Model used to populate the extrudelModel
+ Cura.ExtrudersModel
+ {
+ id: extruders
+ onModelChanged: populateExtruderModel()
+ }
- function populateExtruderModel()
- {
- extruderModel.clear();
- for(var extruderNumber = 0; extruderNumber < extruders.rowCount() ; extruderNumber++)
- {
- extruderModel.append({
- text: extruders.getItem(extruderNumber).name,
- color: extruders.getItem(extruderNumber).color
- })
- }
- supportExtruderCombobox.updateCurrentColor();
- }
+ Item
+ {
+ id: tipsCell
+ anchors.top: adhesionCheckBox.bottom
+ anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2
+ anchors.left: parent.left
+ width: parent.width
+ height: tipsText.contentHeight * tipsText.lineCount
- Item
- {
- id: tipsCell
- anchors.top: helpersCell.bottom
- anchors.topMargin: UM.Theme.getSize("default_margin").height * 2
- anchors.left: parent.left
- width: parent.width
- height: childrenRect.height
-
- Text
- {
- anchors.left: parent.left
- anchors.leftMargin: UM.Theme.getSize("default_margin").width
- anchors.right: parent.right
- anchors.rightMargin: UM.Theme.getSize("default_margin").width
- wrapMode: Text.WordWrap
- //: Tips label
- text: catalog.i18nc("@label", "Need help improving your prints?<br>Read the <a href='%1'>Ultimaker Troubleshooting Guides</a>").arg("https://ultimaker.com/en/troubleshooting");
- font: UM.Theme.getFont("default");
- color: UM.Theme.getColor("text");
- linkColor: UM.Theme.getColor("text_link")
- onLinkActivated: Qt.openUrlExternally(link)
- }
- }
+ Text
+ {
+ id: tipsText
+ anchors.left: parent.left
+ anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width
+ anchors.right: parent.right
+ anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width
+ anchors.top: parent.top
+ wrapMode: Text.WordWrap
+ //: Tips label
+ text: catalog.i18nc("@label", "Need help improving your prints?<br>Read the <a href='%1'>Ultimaker Troubleshooting Guides</a>").arg("https://ultimaker.com/en/troubleshooting") + "<img src='%1'></img>".arg(UM.Theme.getIcon("play"))
+ font: UM.Theme.getFont("default");
+ color: UM.Theme.getColor("text");
+ linkColor: UM.Theme.getColor("text_link")
+ onLinkActivated: Qt.openUrlExternally(link)
+ }
+ }
- UM.SettingPropertyProvider
- {
- id: infillExtruderNumber
+ UM.SettingPropertyProvider
+ {
+ id: infillExtruderNumber
- containerStackId: Cura.MachineManager.activeStackId
- key: "infill_extruder_nr"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
+ containerStackId: Cura.MachineManager.activeStackId
+ key: "infill_extruder_nr"
+ watchedProperties: [ "value" ]
+ storeIndex: 0
+ }
- Binding
- {
- target: infillDensity
- property: "containerStackId"
- value:
- {
- var activeMachineId = Cura.MachineManager.activeMachineId;
- if (machineExtruderCount.properties.value > 1)
+ Binding
{
- var infillExtruderNr = parseInt(infillExtruderNumber.properties.value);
- if (infillExtruderNr >= 0)
- {
- activeMachineId = ExtruderManager.extruderIds[infillExtruderNumber.properties.value];
- }
- else if (ExtruderManager.activeExtruderStackId)
+ target: infillDensity
+ property: "containerStackId"
+ value:
{
- activeMachineId = ExtruderManager.activeExtruderStackId;
+ var activeMachineId = Cura.MachineManager.activeMachineId;
+ if (machineExtruderCount.properties.value > 1)
+ {
+ var infillExtruderNr = parseInt(infillExtruderNumber.properties.value);
+ if (infillExtruderNr >= 0)
+ {
+ activeMachineId = ExtruderManager.extruderIds[infillExtruderNumber.properties.value];
+ }
+ else if (ExtruderManager.activeExtruderStackId)
+ {
+ activeMachineId = ExtruderManager.activeExtruderStackId;
+ }
+ }
+
+ infillSteps.containerStackId = activeMachineId;
+ return activeMachineId;
}
}
- infillSteps.containerStackId = activeMachineId;
- return activeMachineId;
- }
- }
+ UM.SettingPropertyProvider
+ {
+ id: infillDensity
- UM.SettingPropertyProvider
- {
- id: infillDensity
+ containerStackId: Cura.MachineManager.activeStackId
+ key: "infill_sparse_density"
+ watchedProperties: [ "value" ]
+ storeIndex: 0
+ }
- containerStackId: Cura.MachineManager.activeStackId
- key: "infill_sparse_density"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
+ UM.SettingPropertyProvider
+ {
+ id: infillSteps
- UM.SettingPropertyProvider
- {
- id: infillSteps
+ containerStackId: Cura.MachineManager.activeStackId
+ key: "gradual_infill_steps"
+ watchedProperties: [ "value" ]
+ storeIndex: 0
+ }
- containerStackId: Cura.MachineManager.activeStackId
- key: "gradual_infill_steps"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
+ UM.SettingPropertyProvider
+ {
+ id: platformAdhesionType
- UM.SettingPropertyProvider
- {
- id: platformAdhesionType
+ containerStackId: Cura.MachineManager.activeMachineId
+ key: "adhesion_type"
+ watchedProperties: [ "value" ]
+ storeIndex: 0
+ }
- containerStackId: Cura.MachineManager.activeMachineId
- key: "adhesion_type"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
+ UM.SettingPropertyProvider
+ {
+ id: supportEnabled
- UM.SettingPropertyProvider
- {
- id: supportEnabled
+ containerStackId: Cura.MachineManager.activeMachineId
+ key: "support_enable"
+ watchedProperties: [ "value", "description" ]
+ storeIndex: 0
+ }
- containerStackId: Cura.MachineManager.activeMachineId
- key: "support_enable"
- watchedProperties: [ "value", "description" ]
- storeIndex: 0
- }
+ UM.SettingPropertyProvider
+ {
+ id: machineExtruderCount
- UM.SettingPropertyProvider
- {
- id: machineExtruderCount
+ containerStackId: Cura.MachineManager.activeMachineId
+ key: "machine_extruder_count"
+ watchedProperties: [ "value" ]
+ storeIndex: 0
+ }
+
+ UM.SettingPropertyProvider
+ {
+ id: supportExtruderNr
- containerStackId: Cura.MachineManager.activeMachineId
- key: "machine_extruder_count"
- watchedProperties: [ "value" ]
- storeIndex: 0
+ containerStackId: Cura.MachineManager.activeMachineId
+ key: "support_extruder_nr"
+ watchedProperties: [ "value" ]
+ storeIndex: 0
+ }
+ }
}
- UM.SettingPropertyProvider
+ function populateExtruderModel()
{
- id: supportExtruderNr
-
- containerStackId: Cura.MachineManager.activeMachineId
- key: "support_extruder_nr"
- watchedProperties: [ "value" ]
- storeIndex: 0
+ extruderModel.clear();
+ for(var extruderNumber = 0; extruderNumber < extruders.rowCount() ; extruderNumber++)
+ {
+ extruderModel.append({
+ text: extruders.getItem(extruderNumber).name,
+ color: extruders.getItem(extruderNumber).color
+ })
+ }
+ supportExtruderCombobox.updateCurrentColor();
}
}
diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml
index 210b9e1cfa..3e612b1478 100644
--- a/resources/qml/Topbar.qml
+++ b/resources/qml/Topbar.qml
@@ -44,7 +44,7 @@ Rectangle
iconSource: UM.Theme.getIcon("tab_settings");
property color overlayColor: "transparent"
property string overlayIconSource: ""
- text: catalog.i18nc("@title:tab","Prepare")
+ text: catalog.i18nc("@title:tab", "Prepare")
checkable: true
checked: !base.monitoringPrint
exclusiveGroup: sidebarHeaderBarGroup
@@ -58,7 +58,7 @@ Rectangle
height: UM.Theme.getSize("sidebar_header").height
onClicked: base.startMonitoringPrint()
text: catalog.i18nc("@title:tab", "Monitor")
- iconSource: printerConnected ? UM.Theme.getIcon("tab_monitor_with_status") : UM.Theme.getIcon("tab_monitor")
+ iconSource: UM.Theme.getIcon("tab_monitor")
property color overlayColor:
{
if(!printerAcceptsCommands)
@@ -122,8 +122,6 @@ Rectangle
return UM.Theme.getIcon("tab_status_paused")
case "error":
return UM.Theme.getIcon("tab_status_stopped")
- case "offline":
- return UM.Theme.getIcon("tab_status_offline")
default:
return ""
}
@@ -191,13 +189,13 @@ Rectangle
height: UM.Theme.getSize("standard_arrow").height
sourceSize.width: width
sourceSize.height: width
- color: UM.Theme.getColor("text_reversed")
+ color: UM.Theme.getColor("text_emphasis")
source: UM.Theme.getIcon("arrow_bottom")
}
Label
{
id: sidebarComboBoxLabel
- color: UM.Theme.getColor("text_reversed")
+ color: UM.Theme.getColor("sidebar_header_text_active")
text: control.text;
elide: Text.ElideRight;
anchors.left: parent.left;
diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json
index 4129eebe27..45b8fd8675 100644
--- a/resources/themes/cura-dark/theme.json
+++ b/resources/themes/cura-dark/theme.json
@@ -4,183 +4,8 @@
"inherits": "cura"
},
"colors": {
- "sidebar": [83, 83, 83, 255],
- "lining": [127, 127, 127, 255],
- "viewport_overlay": [66, 66, 66, 255],
-
- "primary": [12, 169, 227, 255],
- "primary_hover": [48, 182, 231, 255],
- "primary_text": [83, 83, 83, 255],
- "border": [127, 127, 127, 255],
- "secondary": [66, 66, 66, 255],
-
- "text": [255, 255, 255, 255],
- "text_detail": [174, 174, 174, 128],
- "text_link": [12, 169, 227, 255],
- "text_inactive": [174, 174, 174, 255],
- "text_hover": [70, 84, 113, 255],
- "text_pressed": [12, 169, 227, 255],
- "text_reversed": [255, 255, 255, 255],
- "text_subtext": [255, 255, 255, 255],
-
- "error": [255, 140, 0, 255],
-
- "sidebar_header_bar": [66, 66, 66, 255],
- "sidebar_header_active": [83, 83, 83, 255],
- "sidebar_header_hover": [83, 83, 83, 255],
- "sidebar_header_highlight": [83, 83, 83, 255],
- "sidebar_header_highlight_hover": [66, 66, 66, 255],
- "sidebar_lining": [66, 66, 66, 255],
-
- "button": [83, 83, 83, 255],
- "button_hover": [83, 83, 83, 255],
- "button_active": [32, 166, 219, 255],
- "button_active_hover": [12, 169, 227, 255],
- "button_text": [255, 255, 255, 255],
- "button_disabled": [255, 255, 255, 255],
- "button_disabled_text": [70, 84, 113, 255],
-
- "button_tooltip": [83, 83, 83, 255],
- "button_tooltip_border": [255, 255, 255, 255],
- "button_tooltip_text": [255, 255, 255, 255],
-
- "toggle_checked": [255, 255, 255, 255],
- "toggle_checked_border": [255, 255, 255, 255],
- "toggle_checked_text": [83, 83, 83, 255],
- "toggle_unchecked": [83, 83, 83, 255],
- "toggle_unchecked_border": [127, 127, 127, 255],
- "toggle_unchecked_text": [255, 255, 255, 255],
- "toggle_hovered": [83, 83, 83, 255],
- "toggle_hovered_border": [32, 166, 219, 255],
- "toggle_hovered_text": [255, 255, 255, 255],
- "toggle_active": [32, 166, 219, 255],
- "toggle_active_border": [32, 166, 219, 255],
- "toggle_active_text": [255, 255, 255, 255],
-
- "tab_checked": [83, 83, 83, 255],
- "tab_checked_border": [83, 83, 83, 255],
- "tab_checked_text": [255, 255, 255, 255],
- "tab_unchecked": [66, 66, 66, 255],
- "tab_unchecked_border": [66, 66, 66, 255],
- "tab_unchecked_text": [127, 127, 127, 255],
- "tab_hovered": [66, 66, 66, 255],
- "tab_hovered_border": [66, 66, 66, 255],
- "tab_hovered_text": [32, 166, 219, 255],
- "tab_active": [83, 83, 83, 255],
- "tab_active_border": [83, 83, 83, 255],
- "tab_active_text": [255, 255, 255, 255],
- "tab_background": [66, 66, 66, 255],
-
- "action_button": [83, 83, 83, 255],
- "action_button_text": [255, 255, 255, 255],
- "action_button_border": [127, 127, 127, 255],
- "action_button_hovered": [83, 83, 83, 255],
- "action_button_hovered_text": [255, 255, 255, 255],
- "action_button_hovered_border": [12, 169, 227, 255],
- "action_button_active": [12, 169, 227, 255],
- "action_button_active_text": [83, 83, 83, 255],
- "action_button_active_border": [12, 169, 227, 255],
- "action_button_disabled": [66, 66, 66, 255],
- "action_button_disabled_text": [127, 127, 127, 255],
- "action_button_disabled_border": [66, 66, 66, 255],
-
- "scrollbar_background": [83, 83, 83, 255],
- "scrollbar_handle": [255, 255, 255, 255],
- "scrollbar_handle_hover": [12, 159, 227, 255],
- "scrollbar_handle_down": [12, 159, 227, 255],
-
- "setting_category": [66, 66, 66, 255],
- "setting_category_disabled": [83, 83, 83, 255],
- "setting_category_hover": [66, 66, 66, 255],
- "setting_category_active": [66, 66, 66, 255],
- "setting_category_active_hover": [66, 66, 66, 255],
- "setting_category_text": [255, 255, 255, 255],
- "setting_category_border": [66, 66, 66, 255],
- "setting_category_disabled_border": [66, 66, 66, 255],
- "setting_category_hover_border": [12, 159, 227, 255],
- "setting_category_active_border": [66, 66, 66, 255],
- "setting_category_active_hover_border": [12, 159, 227, 255],
-
- "setting_control": [83, 83, 83, 255],
- "setting_control_selected": [12, 159, 227, 255],
- "setting_control_highlight": [83, 83, 83, 0],
- "setting_control_border": [127, 127, 127, 255],
- "setting_control_border_highlight": [12, 169, 227, 255],
- "setting_control_text": [255, 255, 255, 255],
- "setting_control_depth_line": [127, 127, 127, 255],
- "setting_control_button": [127, 127, 127, 255],
- "setting_control_button_hover": [70, 84, 113, 255],
- "setting_control_disabled": [66, 66, 66, 255],
- "setting_control_disabled_text": [127, 127, 127, 255],
- "setting_control_disabled_border": [127, 127, 127, 255],
- "setting_unit": [127, 127, 127, 255],
- "setting_validation_error": [204, 37, 0, 255],
- "setting_validation_warning": [204, 146, 0, 255],
- "setting_validation_ok": [83, 83, 83, 255],
-
- "progressbar_background": [66, 66, 66, 255],
- "progressbar_control": [255, 255, 255, 255],
-
- "slider_groove": [66, 66, 66, 255],
- "slider_groove_border": [127, 127, 127, 255],
- "slider_groove_fill": [127, 127, 127, 255],
- "slider_handle": [32, 166, 219, 255],
- "slider_handle_hover": [77, 182, 226, 255],
- "slider_text_background": [83, 83, 83, 255],
-
- "checkbox": [83, 83, 83, 255],
- "checkbox_hover": [83, 83, 83, 255],
- "checkbox_border": [127, 127, 127, 255],
- "checkbox_border_hover": [12, 169, 227, 255],
- "checkbox_mark": [255, 255, 255, 255],
- "checkbox_text": [255, 255, 255, 255],
-
- "mode_switch": [83, 83, 83, 255],
- "mode_switch_hover": [83, 83, 83, 255],
- "mode_switch_border": [127, 127, 127, 255],
- "mode_switch_border_hover": [12, 169, 227, 255],
- "mode_switch_handle": [255, 255, 255, 255],
- "mode_switch_text": [255, 255, 255, 255],
- "mode_switch_text_hover": [255, 255, 255, 255],
- "mode_switch_text_checked": [12, 169, 227, 255],
-
- "tooltip": [40, 40, 40, 255],
- "tooltip_text": [255, 255, 255, 255],
-
- "message_background": [255, 255, 255, 255],
- "message_text": [83, 83, 83, 255],
- "message_border": [255, 255, 255, 255],
- "message_button": [83, 83, 83, 255],
- "message_button_hover": [12, 169, 227, 255],
- "message_button_active": [32, 166, 219, 255],
- "message_button_text": [255, 255, 255, 255],
- "message_button_text_hover": [83, 83, 83, 255],
- "message_button_text_active": [83, 83, 83, 255],
- "message_progressbar_background": [83, 83, 83, 255],
- "message_progressbar_control": [12, 169, 227, 255],
-
- "tool_panel_background": [83, 83, 83, 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": [83, 83, 83, 255],
-
- "viewport_background": [66, 66, 66, 255],
- "volume_outline": [12, 169, 227, 255],
- "buildplate": [169, 169, 169, 255],
- "buildplate_alt": [204, 204, 204, 255],
-
- "convex_hull": [35, 35, 35, 127],
- "disallowed_area": [0, 0, 0, 40],
- "error_area": [255, 0, 0, 127]
+ "viewport_background": [31, 36, 39, 255],
+ "text_scene": [255, 255, 255, 162],
+ "text_scene_hover": [255, 255, 255, 204]
}
}
diff --git a/resources/themes/cura/fonts/LICENSE.txt b/resources/themes/cura-light/fonts/LICENSE.txt
index 75b52484ea..d645695673 100644
--- a/resources/themes/cura/fonts/LICENSE.txt
+++ b/resources/themes/cura-light/fonts/LICENSE.txt
@@ -1,202 +1,202 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/resources/themes/cura/fonts/OpenSans-Bold.ttf b/resources/themes/cura-light/fonts/OpenSans-Bold.ttf
index fd79d43bea..fd79d43bea 100644
--- a/resources/themes/cura/fonts/OpenSans-Bold.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-Bold.ttf
Binary files differ
diff --git a/resources/themes/cura/fonts/OpenSans-BoldItalic.ttf b/resources/themes/cura-light/fonts/OpenSans-BoldItalic.ttf
index 9bc800958a..9bc800958a 100644
--- a/resources/themes/cura/fonts/OpenSans-BoldItalic.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-BoldItalic.ttf
Binary files differ
diff --git a/resources/themes/cura/fonts/OpenSans-Italic.ttf b/resources/themes/cura-light/fonts/OpenSans-Italic.ttf
index c90da48ff3..c90da48ff3 100644
--- a/resources/themes/cura/fonts/OpenSans-Italic.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-Italic.ttf
Binary files differ
diff --git a/resources/themes/cura/fonts/OpenSans-Light.ttf b/resources/themes/cura-light/fonts/OpenSans-Light.ttf
index 0d381897da..0d381897da 100644
--- a/resources/themes/cura/fonts/OpenSans-Light.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-Light.ttf
Binary files differ
diff --git a/resources/themes/cura/fonts/OpenSans-LightItalic.ttf b/resources/themes/cura-light/fonts/OpenSans-LightItalic.ttf
index 68299c4bc6..68299c4bc6 100644
--- a/resources/themes/cura/fonts/OpenSans-LightItalic.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-LightItalic.ttf
Binary files differ
diff --git a/resources/themes/cura/fonts/OpenSans-Regular.ttf b/resources/themes/cura-light/fonts/OpenSans-Regular.ttf
index db433349b7..db433349b7 100644
--- a/resources/themes/cura/fonts/OpenSans-Regular.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-Regular.ttf
Binary files differ
diff --git a/resources/themes/cura/fonts/OpenSans-Semibold.ttf b/resources/themes/cura-light/fonts/OpenSans-Semibold.ttf
index 1a7679e394..1a7679e394 100644
--- a/resources/themes/cura/fonts/OpenSans-Semibold.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-Semibold.ttf
Binary files differ
diff --git a/resources/themes/cura/fonts/OpenSans-SemiboldItalic.ttf b/resources/themes/cura-light/fonts/OpenSans-SemiboldItalic.ttf
index 59b6d16b06..59b6d16b06 100644
--- a/resources/themes/cura/fonts/OpenSans-SemiboldItalic.ttf
+++ b/resources/themes/cura-light/fonts/OpenSans-SemiboldItalic.ttf
Binary files differ
diff --git a/resources/themes/cura/icons/application.svg b/resources/themes/cura-light/icons/application.svg
index a76323a7d4..a76323a7d4 100644
--- a/resources/themes/cura/icons/application.svg
+++ b/resources/themes/cura-light/icons/application.svg
diff --git a/resources/themes/cura/icons/arrow_bottom.svg b/resources/themes/cura-light/icons/arrow_bottom.svg
index 102f7b54a2..102f7b54a2 100644
--- a/resources/themes/cura/icons/arrow_bottom.svg
+++ b/resources/themes/cura-light/icons/arrow_bottom.svg
diff --git a/resources/themes/cura/icons/arrow_left.svg b/resources/themes/cura-light/icons/arrow_left.svg
index e48cece556..e48cece556 100644
--- a/resources/themes/cura/icons/arrow_left.svg
+++ b/resources/themes/cura-light/icons/arrow_left.svg
diff --git a/resources/themes/cura/icons/arrow_right.svg b/resources/themes/cura-light/icons/arrow_right.svg
index 6562a3e80b..6562a3e80b 100644
--- a/resources/themes/cura/icons/arrow_right.svg
+++ b/resources/themes/cura-light/icons/arrow_right.svg
diff --git a/resources/themes/cura/icons/arrow_top.svg b/resources/themes/cura-light/icons/arrow_top.svg
index 7af5913a32..7af5913a32 100644
--- a/resources/themes/cura/icons/arrow_top.svg
+++ b/resources/themes/cura-light/icons/arrow_top.svg
diff --git a/resources/themes/cura/icons/basic.svg b/resources/themes/cura-light/icons/basic.svg
index b30d0669b3..b30d0669b3 100644
--- a/resources/themes/cura/icons/basic.svg
+++ b/resources/themes/cura-light/icons/basic.svg
diff --git a/resources/themes/cura/icons/category_adhesion.svg b/resources/themes/cura-light/icons/category_adhesion.svg
index dc119d889a..dc119d889a 100644
--- a/resources/themes/cura/icons/category_adhesion.svg
+++ b/resources/themes/cura-light/icons/category_adhesion.svg
diff --git a/resources/themes/cura/icons/category_blackmagic.svg b/resources/themes/cura-light/icons/category_blackmagic.svg
index d4e2b89ba4..d4e2b89ba4 100644
--- a/resources/themes/cura/icons/category_blackmagic.svg
+++ b/resources/themes/cura-light/icons/category_blackmagic.svg
diff --git a/resources/themes/cura/icons/category_cool.svg b/resources/themes/cura-light/icons/category_cool.svg
index db74322a2c..db74322a2c 100644
--- a/resources/themes/cura/icons/category_cool.svg
+++ b/resources/themes/cura-light/icons/category_cool.svg
diff --git a/resources/themes/cura/icons/category_dual.svg b/resources/themes/cura-light/icons/category_dual.svg
index 2a53292379..2a53292379 100644
--- a/resources/themes/cura/icons/category_dual.svg
+++ b/resources/themes/cura-light/icons/category_dual.svg
diff --git a/resources/themes/cura/icons/category_experimental.svg b/resources/themes/cura-light/icons/category_experimental.svg
index 9fc7d74880..9fc7d74880 100644
--- a/resources/themes/cura/icons/category_experimental.svg
+++ b/resources/themes/cura-light/icons/category_experimental.svg
diff --git a/resources/themes/cura/icons/category_fixes.svg b/resources/themes/cura-light/icons/category_fixes.svg
index 963338088a..963338088a 100644
--- a/resources/themes/cura/icons/category_fixes.svg
+++ b/resources/themes/cura-light/icons/category_fixes.svg
diff --git a/resources/themes/cura/icons/category_infill.svg b/resources/themes/cura-light/icons/category_infill.svg
index e1660ca8e2..e1660ca8e2 100644
--- a/resources/themes/cura/icons/category_infill.svg
+++ b/resources/themes/cura-light/icons/category_infill.svg
diff --git a/resources/themes/cura/icons/category_layer_height.svg b/resources/themes/cura-light/icons/category_layer_height.svg
index 474e81f14e..474e81f14e 100644
--- a/resources/themes/cura/icons/category_layer_height.svg
+++ b/resources/themes/cura-light/icons/category_layer_height.svg
diff --git a/resources/themes/cura/icons/category_machine.svg b/resources/themes/cura-light/icons/category_machine.svg
index 25c84aa4f2..25c84aa4f2 100644
--- a/resources/themes/cura/icons/category_machine.svg
+++ b/resources/themes/cura-light/icons/category_machine.svg
diff --git a/resources/themes/cura/icons/category_material.svg b/resources/themes/cura-light/icons/category_material.svg
index 0d8ae42d9d..0d8ae42d9d 100644
--- a/resources/themes/cura/icons/category_material.svg
+++ b/resources/themes/cura-light/icons/category_material.svg
diff --git a/resources/themes/cura/icons/category_shell.svg b/resources/themes/cura-light/icons/category_shell.svg
index 61e112d88c..61e112d88c 100644
--- a/resources/themes/cura/icons/category_shell.svg
+++ b/resources/themes/cura-light/icons/category_shell.svg
diff --git a/resources/themes/cura/icons/category_shield.svg b/resources/themes/cura-light/icons/category_shield.svg
index 99a245936d..99a245936d 100644
--- a/resources/themes/cura/icons/category_shield.svg
+++ b/resources/themes/cura-light/icons/category_shield.svg
diff --git a/resources/themes/cura/icons/category_speed.svg b/resources/themes/cura-light/icons/category_speed.svg
index 36d1b3f2e1..36d1b3f2e1 100644
--- a/resources/themes/cura/icons/category_speed.svg
+++ b/resources/themes/cura-light/icons/category_speed.svg
diff --git a/resources/themes/cura/icons/category_support.svg b/resources/themes/cura-light/icons/category_support.svg
index 693e1f5f37..693e1f5f37 100644
--- a/resources/themes/cura/icons/category_support.svg
+++ b/resources/themes/cura-light/icons/category_support.svg
diff --git a/resources/themes/cura/icons/category_travel.svg b/resources/themes/cura-light/icons/category_travel.svg
index 67f5713671..67f5713671 100644
--- a/resources/themes/cura/icons/category_travel.svg
+++ b/resources/themes/cura-light/icons/category_travel.svg
diff --git a/resources/themes/cura/icons/category_unknown.svg b/resources/themes/cura-light/icons/category_unknown.svg
index 67f5713671..67f5713671 100644
--- a/resources/themes/cura/icons/category_unknown.svg
+++ b/resources/themes/cura-light/icons/category_unknown.svg
diff --git a/resources/themes/cura/icons/check.svg b/resources/themes/cura-light/icons/check.svg
index 62b6993763..62b6993763 100644
--- a/resources/themes/cura/icons/check.svg
+++ b/resources/themes/cura-light/icons/check.svg
diff --git a/resources/themes/cura/icons/cross1.svg b/resources/themes/cura-light/icons/cross1.svg
index 63b7a6951c..63b7a6951c 100644
--- a/resources/themes/cura/icons/cross1.svg
+++ b/resources/themes/cura-light/icons/cross1.svg
diff --git a/resources/themes/cura/icons/cross2.svg b/resources/themes/cura-light/icons/cross2.svg
index 7d4a3a878d..7d4a3a878d 100644
--- a/resources/themes/cura/icons/cross2.svg
+++ b/resources/themes/cura-light/icons/cross2.svg
diff --git a/resources/themes/cura/icons/dense.svg b/resources/themes/cura-light/icons/dense.svg
index a8f65fecc7..a8f65fecc7 100644
--- a/resources/themes/cura/icons/dense.svg
+++ b/resources/themes/cura-light/icons/dense.svg
diff --git a/resources/themes/cura/icons/dot.svg b/resources/themes/cura-light/icons/dot.svg
index 79244caea4..79244caea4 100644
--- a/resources/themes/cura/icons/dot.svg
+++ b/resources/themes/cura-light/icons/dot.svg
diff --git a/resources/themes/cura-light/icons/drop_down_button.svg b/resources/themes/cura-light/icons/drop_down_button.svg
new file mode 100644
index 0000000000..18748e6d70
--- /dev/null
+++ b/resources/themes/cura-light/icons/drop_down_button.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="7px" height="5px" viewBox="0 0 7 5" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <polygon points="3.5 5 7 0 0 0" />
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/gradual.svg b/resources/themes/cura-light/icons/gradual.svg
index ed7f301e18..ed7f301e18 100644
--- a/resources/themes/cura/icons/gradual.svg
+++ b/resources/themes/cura-light/icons/gradual.svg
diff --git a/resources/themes/cura/icons/hollow.svg b/resources/themes/cura-light/icons/hollow.svg
index a63bfd9bfc..a63bfd9bfc 100644
--- a/resources/themes/cura/icons/hollow.svg
+++ b/resources/themes/cura-light/icons/hollow.svg
diff --git a/resources/themes/cura/icons/link.svg b/resources/themes/cura-light/icons/link.svg
index 12b3abbe73..12b3abbe73 100644
--- a/resources/themes/cura/icons/link.svg
+++ b/resources/themes/cura-light/icons/link.svg
diff --git a/resources/themes/cura/icons/load.svg b/resources/themes/cura-light/icons/load.svg
index 7b3e966634..7b3e966634 100644
--- a/resources/themes/cura/icons/load.svg
+++ b/resources/themes/cura-light/icons/load.svg
diff --git a/resources/themes/cura/icons/material_not_selected.svg b/resources/themes/cura-light/icons/material_not_selected.svg
index 9b3cad88bd..9b3cad88bd 100644
--- a/resources/themes/cura/icons/material_not_selected.svg
+++ b/resources/themes/cura-light/icons/material_not_selected.svg
diff --git a/resources/themes/cura/icons/material_selected.svg b/resources/themes/cura-light/icons/material_selected.svg
index 6589eac416..6589eac416 100644
--- a/resources/themes/cura/icons/material_selected.svg
+++ b/resources/themes/cura-light/icons/material_selected.svg
diff --git a/resources/themes/cura/icons/minus.svg b/resources/themes/cura-light/icons/minus.svg
index 22f2d2910d..22f2d2910d 100644
--- a/resources/themes/cura/icons/minus.svg
+++ b/resources/themes/cura-light/icons/minus.svg
diff --git a/resources/themes/cura/icons/mirror.svg b/resources/themes/cura-light/icons/mirror.svg
index 2a53292379..2a53292379 100644
--- a/resources/themes/cura/icons/mirror.svg
+++ b/resources/themes/cura-light/icons/mirror.svg
diff --git a/resources/themes/cura-light/icons/notice.svg b/resources/themes/cura-light/icons/notice.svg
new file mode 100644
index 0000000000..36154d6729
--- /dev/null
+++ b/resources/themes/cura-light/icons/notice.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg">
+ <path d="M7.5 15C11.641 15 15 11.643 15 7.5 15 3.358 11.641 0 7.5 0 3.358 0 0 3.358 0 7.5 0 11.643 3.358 15 7.5 15ZM8.6 12.369L6.472 12.369 6.472 4.57 8.6 4.57 8.6 12.369ZM7.541 1.514C8.313 1.514 8.697 1.861 8.697 2.553 8.697 2.885 8.6 3.141 8.409 3.325 8.216 3.509 7.926 3.601 7.541 3.601 6.767 3.601 6.382 3.252 6.382 2.553 6.382 1.861 6.767 1.514 7.541 1.514Z"/>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/pencil.svg b/resources/themes/cura-light/icons/pencil.svg
index d17c09884d..d17c09884d 100644
--- a/resources/themes/cura/icons/pencil.svg
+++ b/resources/themes/cura-light/icons/pencil.svg
diff --git a/resources/themes/cura-light/icons/play.svg b/resources/themes/cura-light/icons/play.svg
new file mode 100644
index 0000000000..04aea11a9b
--- /dev/null
+++ b/resources/themes/cura-light/icons/play.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="5px" height="20px" viewBox="0 0 5 20" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <polygon fill="#FFFFFF" opacity="0.8" points="5 10 0 13.5 0 6.5" />
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/plugin.svg b/resources/themes/cura-light/icons/plugin.svg
index 5773c906ee..5773c906ee 100644
--- a/resources/themes/cura/icons/plugin.svg
+++ b/resources/themes/cura-light/icons/plugin.svg
diff --git a/resources/themes/cura/icons/plus.svg b/resources/themes/cura-light/icons/plus.svg
index 211cdf6d23..211cdf6d23 100644
--- a/resources/themes/cura/icons/plus.svg
+++ b/resources/themes/cura-light/icons/plus.svg
diff --git a/resources/themes/cura/icons/print_time.svg b/resources/themes/cura-light/icons/print_time.svg
index 0c5d4ed6a2..0c5d4ed6a2 100644
--- a/resources/themes/cura/icons/print_time.svg
+++ b/resources/themes/cura-light/icons/print_time.svg
diff --git a/resources/themes/cura/icons/printsetup.svg b/resources/themes/cura-light/icons/printsetup.svg
index 67f5713671..67f5713671 100644
--- a/resources/themes/cura/icons/printsetup.svg
+++ b/resources/themes/cura-light/icons/printsetup.svg
diff --git a/resources/themes/cura/icons/quick.svg b/resources/themes/cura-light/icons/quick.svg
index f5261e1e5b..f5261e1e5b 100644
--- a/resources/themes/cura/icons/quick.svg
+++ b/resources/themes/cura-light/icons/quick.svg
diff --git a/resources/themes/cura/icons/reset.svg b/resources/themes/cura-light/icons/reset.svg
index df95e2c554..df95e2c554 100644
--- a/resources/themes/cura/icons/reset.svg
+++ b/resources/themes/cura-light/icons/reset.svg
diff --git a/resources/themes/cura/icons/rotate.svg b/resources/themes/cura-light/icons/rotate.svg
index 5944ad7ce9..5944ad7ce9 100644
--- a/resources/themes/cura/icons/rotate.svg
+++ b/resources/themes/cura-light/icons/rotate.svg
diff --git a/resources/themes/cura/icons/rotate_layflat.svg b/resources/themes/cura-light/icons/rotate_layflat.svg
index b2fe5c84b8..b2fe5c84b8 100644
--- a/resources/themes/cura/icons/rotate_layflat.svg
+++ b/resources/themes/cura-light/icons/rotate_layflat.svg
diff --git a/resources/themes/cura/icons/rotate_reset.svg b/resources/themes/cura-light/icons/rotate_reset.svg
index c953bceffa..c953bceffa 100644
--- a/resources/themes/cura/icons/rotate_reset.svg
+++ b/resources/themes/cura-light/icons/rotate_reset.svg
diff --git a/resources/themes/cura/icons/scale.svg b/resources/themes/cura-light/icons/scale.svg
index 2db809b7e7..2db809b7e7 100644
--- a/resources/themes/cura/icons/scale.svg
+++ b/resources/themes/cura-light/icons/scale.svg
diff --git a/resources/themes/cura/icons/scale_max.svg b/resources/themes/cura-light/icons/scale_max.svg
index f3bb75b399..f3bb75b399 100644
--- a/resources/themes/cura/icons/scale_max.svg
+++ b/resources/themes/cura-light/icons/scale_max.svg
diff --git a/resources/themes/cura/icons/scale_reset.svg b/resources/themes/cura-light/icons/scale_reset.svg
index 77210be8c5..77210be8c5 100644
--- a/resources/themes/cura/icons/scale_reset.svg
+++ b/resources/themes/cura-light/icons/scale_reset.svg
diff --git a/resources/themes/cura/icons/search.svg b/resources/themes/cura-light/icons/search.svg
index 8272991300..8272991300 100644
--- a/resources/themes/cura/icons/search.svg
+++ b/resources/themes/cura-light/icons/search.svg
diff --git a/resources/themes/cura/icons/setting_per_object.svg b/resources/themes/cura-light/icons/setting_per_object.svg
index f4cfb3b145..f4cfb3b145 100644
--- a/resources/themes/cura/icons/setting_per_object.svg
+++ b/resources/themes/cura-light/icons/setting_per_object.svg
diff --git a/resources/themes/cura/icons/settings.svg b/resources/themes/cura-light/icons/settings.svg
index b96970307e..b96970307e 100644
--- a/resources/themes/cura/icons/settings.svg
+++ b/resources/themes/cura-light/icons/settings.svg
diff --git a/resources/themes/cura/icons/solid.svg b/resources/themes/cura-light/icons/solid.svg
index ed44f367b3..ed44f367b3 100644
--- a/resources/themes/cura/icons/solid.svg
+++ b/resources/themes/cura-light/icons/solid.svg
diff --git a/resources/themes/cura/icons/sparse.svg b/resources/themes/cura-light/icons/sparse.svg
index 91f8858326..91f8858326 100644
--- a/resources/themes/cura/icons/sparse.svg
+++ b/resources/themes/cura-light/icons/sparse.svg
diff --git a/resources/themes/cura/icons/star.svg b/resources/themes/cura-light/icons/star.svg
index f6f91238e4..f6f91238e4 100644
--- a/resources/themes/cura/icons/star.svg
+++ b/resources/themes/cura-light/icons/star.svg
diff --git a/resources/themes/cura-light/icons/tab_monitor.svg b/resources/themes/cura-light/icons/tab_monitor.svg
new file mode 100644
index 0000000000..afc661a22d
--- /dev/null
+++ b/resources/themes/cura-light/icons/tab_monitor.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <path d="M26,0 L0,0 L0,28 L2.73151751,28 C3.13618677,27.6 3.74319066,27.3 4.45136187,27.3 L21.5486381,27.3 C22.2568093,27.3 22.8638132,27.6 23.2684825,28 L26,28 L26,0 Z M23.5719844,21 C23.5719844,22.3 22.459144,23.4 21.1439689,23.4 L4.95719844,23.4 C3.64202335,23.4 2.52918288,22.3 2.52918288,21 L2.52918288,3.1 C2.52918288,2.7 2.83268482,2.4 3.23735409,2.4 L22.8638132,2.4 C23.2684825,2.4 23.5719844,2.7 23.5719844,3.1 L23.5719844,21 Z" />
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/tab_settings.svg b/resources/themes/cura-light/icons/tab_settings.svg
index 0d90db81ef..e2a4860647 100644
--- a/resources/themes/cura/icons/tab_settings.svg
+++ b/resources/themes/cura-light/icons/tab_settings.svg
@@ -1,3 +1,3 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path d="M15.658 26.184h10.526V27.5H15.658v-1.316zm0-2.631h9.21v1.315h-9.21v-1.315zm0-2.632h7.895v1.316h-7.895V20.92zm0-2.632h6.58v1.316h-6.58V18.29zm0-2.631h5.263v1.316h-5.263v-1.316zm0-2.632h3.947v1.316h-3.947v-1.316zm0-2.631h2.632v1.316h-2.632v-1.316zm0-2.632h5.263V9.08h-5.263V7.763zm0-2.631h7.895v1.315h-7.895V5.132zm0-2.632h10.526v1.316H15.658V2.5zm-11.842 0l7.895 8.553L3.816 27.5h10.526v-25H3.816z" fill="#fff" fill-rule="evenodd"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 37.5 30">
+ <path d="M15.658 26.184h10.526V27.5H15.658v-1.316zm0-2.631h9.21v1.315h-9.21v-1.315zm0-2.632h7.895v1.316h-7.895V20.92zm0-2.632h6.58v1.316h-6.58V18.29zm0-2.631h5.263v1.316h-5.263v-1.316zm0-2.632h3.947v1.316h-3.947v-1.316zm0-2.631h2.632v1.316h-2.632v-1.316zm0-2.632h5.263V9.08h-5.263V7.763zm0-2.631h7.895v1.315h-7.895V5.132zm0-2.632h10.526v1.316H15.658V2.5zm-11.842 0l7.895 8.553L3.816 27.5h10.526v-25H3.816z" />
</svg>
diff --git a/resources/themes/cura-light/icons/tab_status_busy.svg b/resources/themes/cura-light/icons/tab_status_busy.svg
new file mode 100644
index 0000000000..cf8e384d88
--- /dev/null
+++ b/resources/themes/cura-light/icons/tab_status_busy.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#0CA9E3" cx="9" cy="9" r="8.5" stroke="#18294D" />
+ <circle fill="#FFFFFF" cx="4" cy="9" r="1.75" />
+ <circle fill="#FFFFFF" cx="9" cy="9" r="1.75" />
+ <circle fill="#FFFFFF" cx="14" cy="9" r="1.75" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura-light/icons/tab_status_connected.svg b/resources/themes/cura-light/icons/tab_status_connected.svg
new file mode 100644
index 0000000000..56aecdf0a7
--- /dev/null
+++ b/resources/themes/cura-light/icons/tab_status_connected.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#10CB00" cx="9" cy="9" r="8.5" stroke="#18294D" />
+ <polyline fill="none" stroke="#FFFFFF" stroke-width="2" points="5.643,8.645 8.116,11.12 12.36,6.88" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura-light/icons/tab_status_paused.svg b/resources/themes/cura-light/icons/tab_status_paused.svg
new file mode 100644
index 0000000000..0ec744ad86
--- /dev/null
+++ b/resources/themes/cura-light/icons/tab_status_paused.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#FF8C10" cx="9" cy="9" r="8.5" stroke="#18294D" />
+ <rect fill="#FFFFFF" x="6" y="6" width="2" height="6" />
+ <rect fill="#FFFFFF" x="10" y="6" width="2" height="6" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura-light/icons/tab_status_stopped.svg b/resources/themes/cura-light/icons/tab_status_stopped.svg
new file mode 100644
index 0000000000..ec1afaec81
--- /dev/null
+++ b/resources/themes/cura-light/icons/tab_status_stopped.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#D0021B" cx="9" cy="9" r="8.5" stroke="#18294D" />
+ <line x1="6" y1="6" x2="12" y2="12" stroke-width="2" stroke="#FFFFFF" />
+ <line x1="6" y1="12" x2="12" y2="6" stroke-width="2" stroke="#FFFFFF" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura-light/icons/tab_status_unknown.svg b/resources/themes/cura-light/icons/tab_status_unknown.svg
new file mode 100644
index 0000000000..382a2b2d8b
--- /dev/null
+++ b/resources/themes/cura-light/icons/tab_status_unknown.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35" height="28" viewBox="0 0 35 28" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle cx="9" cy="9" r="8.5" fill="#8B9595" stroke="#18294D" />
+ <path fill="#FFFFFF" d="M9.013 3.5C7.29 3.5 6.533 4.515 6.236 5.12 5.989 5.623 5.997 6.057 6.001 6.138L7.59 6.058 7.591 6.082C7.591 6.081 7.594 5.964 7.664 5.821 7.905 5.33 8.347 5.091 9.013 5.091 9.47 5.091 9.817 5.217 10.075 5.475 10.477 5.878 10.556 6.485 10.555 6.626 10.554 6.812 10.49 7.77 9.306 8.386 8.318 8.899 7.752 9.906 7.752 11.147L7.752 11.621 9.343 11.618 9.342 11.147C9.342 10.697 9.463 10.097 10.039 9.798 12.035 8.76 12.144 6.98 12.146 6.633 12.148 6.141 11.952 5.106 11.202 4.353 10.647 3.795 9.89 3.5 9.013 3.5Z"/>
+ <rect fill="#FFFFFF" x="7.818" y="13.136" width="1.591" height="1.25" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/translate.svg b/resources/themes/cura-light/icons/translate.svg
index 6a76ef4614..6a76ef4614 100644
--- a/resources/themes/cura/icons/translate.svg
+++ b/resources/themes/cura-light/icons/translate.svg
diff --git a/resources/themes/cura/icons/ulti.svg b/resources/themes/cura-light/icons/ulti.svg
index b30d0669b3..b30d0669b3 100644
--- a/resources/themes/cura/icons/ulti.svg
+++ b/resources/themes/cura-light/icons/ulti.svg
diff --git a/resources/themes/cura/icons/view_layer.svg b/resources/themes/cura-light/icons/view_layer.svg
index 3e4bf8e074..3e4bf8e074 100644
--- a/resources/themes/cura/icons/view_layer.svg
+++ b/resources/themes/cura-light/icons/view_layer.svg
diff --git a/resources/themes/cura/icons/view_normal.svg b/resources/themes/cura-light/icons/view_normal.svg
index 676031dbbd..676031dbbd 100644
--- a/resources/themes/cura/icons/view_normal.svg
+++ b/resources/themes/cura-light/icons/view_normal.svg
diff --git a/resources/themes/cura/icons/view_xray.svg b/resources/themes/cura-light/icons/view_xray.svg
index 5983c92c2f..5983c92c2f 100644
--- a/resources/themes/cura/icons/view_xray.svg
+++ b/resources/themes/cura-light/icons/view_xray.svg
diff --git a/resources/themes/cura-light/icons/viewmode.svg b/resources/themes/cura-light/icons/viewmode.svg
new file mode 100644
index 0000000000..a21df01f37
--- /dev/null
+++ b/resources/themes/cura-light/icons/viewmode.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
+ <path d="M12.002 5L12 5 12 5C12 5 12 5 11.998 5 6.239 5 1.408 7.974 0 11.999 1.407 16.026 6.238 19 11.998 19 17.76 19 22.594 16.026 24 11.999 22.594 7.974 17.762 5.001 12.002 5ZM11.998 18C6.93 18 2.487 15.679 1 12.305 2.129 9.744 4.964 7.792 8.481 7 7.413 8.034 6.728 9.513 6.728 11.177 6.728 14.293 9.087 16.82 11.999 16.82 14.914 16.82 17.272 14.293 17.272 11.177 17.272 9.514 16.588 8.035 15.52 7.002 19.038 7.794 21.872 9.745 23 12.305 21.515 15.679 17.07 18 11.998 18Z"/>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura-light/icons/warning.svg b/resources/themes/cura-light/icons/warning.svg
new file mode 100644
index 0000000000..ae8a7a6430
--- /dev/null
+++ b/resources/themes/cura-light/icons/warning.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="20px" height="17px" viewBox="0 0 20 17" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <path d="M9.552 0C8.949 0 8.403 0.308 8.097 0.83L0.23 14.256C-0.076 14.78-0.077 15.415 0.23 15.937 0.573 16.522 1.146 16.769 1.751 16.767L17.354 16.767C17.959 16.769 18.531 16.522 18.875 15.937 19.182 15.415 19.181 14.78 18.875 14.256L11.008 0.83C10.702 0.308 10.156 0 9.552 0L9.552 0ZM9.552 1.397C9.636 1.397 9.762 1.471 9.8 1.536L17.667 14.962C17.704 15.027 17.704 15.16 17.667 15.224 17.665 15.227 17.437 15.37 17.354 15.37L1.751 15.37C1.668 15.37 1.44 15.227 1.438 15.224 1.4 15.16 1.4 15.027 1.438 14.962L9.305 1.536C9.343 1.471 9.469 1.397 9.552 1.397ZM9.552 5.356C8.909 5.356 8.388 5.877 8.388 6.521L8.621 10.479C8.621 10.994 9.038 11.411 9.552 11.411 10.067 11.411 10.484 10.994 10.484 10.479L10.717 6.521C10.717 5.877 10.195 5.356 9.552 5.356ZM9.552 11.877C8.781 11.877 8.155 12.502 8.155 13.274 8.155 14.046 8.781 14.671 9.552 14.671 10.324 14.671 10.95 14.046 10.95 13.274 10.95 12.502 10.324 11.877 9.552 11.877 Z" />
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura-light/images/logo.svg b/resources/themes/cura-light/images/logo.svg
new file mode 100644
index 0000000000..9a3dbdd6bd
--- /dev/null
+++ b/resources/themes/cura-light/images/logo.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="82px" height="18px" viewBox="0 0 82 18" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <polygon fill="#20A6DB" points="82 10.3797468 77.8757345 10.3797468 75.7721519 12.4764557 75.7721519 16.6075949 79.9067798 16.6075949 82 14.5108861" />
+ <path fill="black" d="M0,9.32538529 C0,14.168804 3.22511,17.6455696 8.53908129,17.6455696 L16.6075949,17.6455696 L16.6075949,13.294146 L8.53908129,13.294146 C5.8534025,13.2832128 4.53351762,11.4792306 4.53351762,9.32538529 C4.53351762,7.17153994 5.8534025,5.40035747 8.53908129,5.37849102 L16.6075949,5.37849102 L16.6075949,1.03800064 L8.53908129,1.03800064 C3.21363275,1.02706742 0,4.47103333 0,9.32538529 Z" />
+ <path fill="black" d="M33.004725,9.78605176 C33.004725,12.2613239 31.20074,13.5835846 29.0468913,13.5835846 C26.8930426,13.5835846 25.1218573,12.2613239 25.1218573,9.78605176 L25.1218573,1.03797468 L20.7594937,1.03797468 L20.7594937,9.78605176 C20.7594937,14.6837056 24.203465,17.6455696 29.0468913,17.6455696 C33.8903176,17.6455696 37.3670886,14.6731275 37.3670886,9.78605176 L37.3670886,1.03797468 L33.004725,1.03797468 L33.004725,9.78605176 L33.004725,9.78605176 Z" />
+ <path fill="black" d="M62.1251127,1.03797468 C57.0530042,1.03797468 53.9746835,4.47968021 53.9746835,9.31992005 C53.9746835,14.1601599 57.0530042,17.6346436 62.1251127,17.6346436 L63.9217127,17.6346436 L63.9217127,13.297002 L62.1251127,13.297002 C59.5616713,13.2860759 58.3018603,11.4832778 58.3018603,9.3308461 C58.3018603,7.17841439 59.5616713,5.4083944 62.1251127,5.38654231 L66.2112822,5.38654231 L66.2112822,11.0680879 L66.2112822,13.297002 L66.2112822,17.6455696 L70.5822785,17.6455696 L70.5822785,17.3942705 L70.5822785,13.297002 L70.5822785,5.38654231 L70.5822785,1.80279813 L70.5822785,1.03797468 L62.1251127,1.03797468 Z" />
+ <path fill="black" d="M41.5189873,8.10074451 L41.5189873,16.6075949 L45.8823067,16.6075949 L45.8823067,8.10074451 C45.8823067,5.99540589 47.1558644,4.26411221 49.7472774,4.24273822 L52.9367089,4.24273822 L52.9367089,0 L49.7472774,0 C44.6198234,0 41.5189873,3.36640438 41.5189873,8.10074451 Z" />
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/styles.qml b/resources/themes/cura-light/styles.qml
index 30e3ce9ab8..2d40a0e8d0 100755
--- a/resources/themes/cura/styles.qml
+++ b/resources/themes/cura-light/styles.qml
@@ -1,4 +1,4 @@
-// Copyright (c) 2015 Ultimaker B.V.
+// Copyright (c) 2017 Ultimaker B.V.
// Cura is released under the terms of the AGPLv3 or higher.
import QtQuick 2.1
@@ -8,50 +8,6 @@ import QtQuick.Controls.Styles 1.1
import UM 1.1 as UM
QtObject {
- property Component mode_switch: Component {
- SwitchStyle {
- groove: Rectangle {
- implicitWidth: UM.Theme.getSize("mode_switch").width
- implicitHeight: UM.Theme.getSize("mode_switch").height
- radius: implicitHeight / 2
- color: {
- if(control.hovered || control._hovered) {
- return UM.Theme.getColor("mode_switch_hover");
- } else {
- return UM.Theme.getColor("mode_switch");
- }
- }
- Behavior on color { ColorAnimation { duration: 50; } }
- border.color: {
- if(control.hovered || control._hovered) {
- return UM.Theme.getColor("mode_switch_border_hover");
- } else {
- return UM.Theme.getColor("mode_switch_border");
- }
- }
- Behavior on border.color { ColorAnimation { duration: 50; } }
- border.width: 1
- }
-
- handle: Rectangle {
- implicitWidth: implicitHeight
- implicitHeight: UM.Theme.getSize("mode_switch").height
- radius: implicitHeight / 2
-
- color: {
- if (control.pressed || (control.checkable && control.checked)) {
- return UM.Theme.getColor("sidebar_header_active");
- } else if(control.hovered) {
- return UM.Theme.getColor("sidebar_header_hover");
- } else {
- return UM.Theme.getColor("sidebar_header_bar");
- }
- }
- Behavior on color { ColorAnimation { duration: 50; } }
- }
- }
- }
-
property Component sidebar_header_button: Component {
ButtonStyle {
background: Rectangle {
@@ -61,23 +17,50 @@ QtObject {
{
if(control.valueError)
{
- return Theme.getColor("setting_validation_error");
+ return Theme.getColor("setting_validation_error_background");
}
else if(control.valueWarning)
{
- return Theme.getColor("setting_validation_warning");
- } else
+ return Theme.getColor("setting_validation_warning_background");
+ }
+ else
{
return Theme.getColor("setting_control");
}
- } else {
+ }
+ else
+ {
return Theme.getColor("setting_control_disabled");
}
}
border.width: Theme.getSize("default_lining").width
- border.color: !control.enabled ? Theme.getColor("setting_control_disabled_border") :
- control.hovered ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border")
+ border.color:
+ {
+ if (control.enabled)
+ {
+ if (control.valueError)
+ {
+ return Theme.getColor("setting_validation_error");
+ }
+ else if (control.valueWarning)
+ {
+ return Theme.getColor("setting_validation_warning");
+ }
+ else if (control.hovered)
+ {
+ return Theme.getColor("setting_control_border_highlight");
+ }
+ else
+ {
+ return Theme.getColor("setting_control_border");
+ }
+ }
+ else
+ {
+ return Theme.getColor("setting_control_disabled_border");
+ }
+ }
UM.RecolorImage {
id: downArrow
anchors.verticalCenter: parent.verticalCenter
@@ -87,7 +70,7 @@ QtObject {
height: Theme.getSize("standard_arrow").height
sourceSize.width: width
sourceSize.height: width
- color: control.enabled ? Theme.getColor("setting_category_text") : Theme.getColor("setting_control_disabled_text")
+ color: control.enabled ? Theme.getColor("setting_category_text") : Theme.getColor("setting_category_disabled_text")
source: Theme.getIcon("arrow_bottom")
}
Label {
@@ -145,36 +128,34 @@ QtObject {
label: Item
{
-
- implicitHeight: Theme.getSize("button_icon").height
+ implicitHeight: Theme.getSize("topbar_button_icon").height
implicitWidth: Theme.getSize("topbar_button").width;
Item
{
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter;
width: childrenRect.width
- height: Theme.getSize("button_icon").height
+ height: Theme.getSize("topbar_button_icon").height
UM.RecolorImage
{
id: icon
- color: UM.Theme.getColor("text_reversed")
+ color: UM.Theme.getColor("text_emphasis")
opacity: !control.enabled ? 0.2 : 1.0
source: control.iconSource
- width: Theme.getSize("button_icon").width
- height: Theme.getSize("button_icon").height
+ width: Theme.getSize("topbar_button_icon").width
+ height: Theme.getSize("topbar_button_icon").height
- sourceSize: Theme.getSize("button_icon")
+ sourceSize: Theme.getSize("topbar_button_icon")
}
- UM.RecolorImage
+ Image
{
visible: control.overlayIconSource != ""
- color: control.overlayColor
opacity: !control.enabled ? 0.2 : 1.0
source: control.overlayIconSource
- width: Theme.getSize("button_icon").width
- height: Theme.getSize("button_icon").height
+ width: Theme.getSize("topbar_button_icon").width
+ height: Theme.getSize("topbar_button_icon").height
- sourceSize: Theme.getSize("button_icon")
+ sourceSize: Theme.getSize("topbar_button_icon")
}
Label
{
@@ -183,7 +164,21 @@ QtObject {
anchors.leftMargin: Theme.getSize("default_margin").width
anchors.verticalCenter: parent.verticalCenter;
font: UM.Theme.getFont("large");
- color: UM.Theme.getColor("text_reversed")
+ color:
+ {
+ if(control.hovered)
+ {
+ return UM.Theme.getColor("sidebar_header_text_hover");
+ }
+ if(control.checked)
+ {
+ return UM.Theme.getColor("sidebar_header_text_active");
+ }
+ else
+ {
+ return UM.Theme.getColor("sidebar_header_text_inactive");
+ }
+ }
}
}
}
@@ -205,7 +200,7 @@ QtObject {
target: Qt.point(parent.x, y + height/2)
arrowSize: Theme.getSize("button_tooltip_arrow").width
- color: Theme.getColor("tooltip")
+ color: Theme.getColor("button_tooltip")
opacity: control.hovered ? 1.0 : 0.0;
width: control.hovered ? button_tip.width + Theme.getSize("button_tooltip").width : 0
@@ -250,7 +245,6 @@ QtObject {
UM.RecolorImage {
id: tool_button_arrow
- opacity: !control.enabled ? 0.2 : 1.0
anchors.right: parent.right;
anchors.rightMargin: (Theme.getSize("button").width - Theme.getSize("button_icon").width) / 4
anchors.bottom: parent.bottom;
@@ -260,7 +254,25 @@ QtObject {
sourceSize.width: width
sourceSize.height: width
visible: control.menu != null;
- color: Theme.getColor("button_text")
+ color:
+ {
+ if(control.checkable && control.checked && control.hovered)
+ {
+ return Theme.getColor("button_text_active_hover");
+ }
+ else if(control.pressed || (control.checkable && control.checked))
+ {
+ return Theme.getColor("button_text_active");
+ }
+ else if(control.hovered)
+ {
+ return Theme.getColor("button_text_hover");
+ }
+ else
+ {
+ return Theme.getColor("button_text");
+ }
+ }
source: Theme.getIcon("arrow_bottom")
}
}
@@ -273,7 +285,25 @@ QtObject {
source: control.iconSource;
width: Theme.getSize("button_icon").width;
height: Theme.getSize("button_icon").height;
- color: Theme.getColor("button_text")
+ color:
+ {
+ if(control.checkable && control.checked && control.hovered)
+ {
+ return Theme.getColor("button_text_active_hover");
+ }
+ else if(control.pressed || (control.checkable && control.checked))
+ {
+ return Theme.getColor("button_text_active");
+ }
+ else if(control.hovered)
+ {
+ return Theme.getColor("button_text_hover");
+ }
+ else
+ {
+ return Theme.getColor("button_text");
+ }
+ }
sourceSize: Theme.getSize("button_icon")
}
@@ -331,9 +361,9 @@ QtObject {
background: Rectangle {
anchors.fill: parent;
anchors.left: parent.left
- anchors.leftMargin: Theme.getSize("default_margin").width
+ anchors.leftMargin: Theme.getSize("sidebar_margin").width
anchors.right: parent.right
- anchors.rightMargin: Theme.getSize("default_margin").width
+ anchors.rightMargin: Theme.getSize("sidebar_margin").width
implicitHeight: Theme.getSize("section").height;
color: {
if(control.color) {
@@ -381,8 +411,30 @@ QtObject {
UM.RecolorImage {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
- anchors.leftMargin: Theme.getSize("default_margin").width
- color: Theme.getColor("setting_category_text")
+ anchors.leftMargin: Theme.getSize("sidebar_margin").width
+ color:
+ {
+ if(!control.enabled)
+ {
+ return Theme.getColor("setting_category_disabled_text");
+ }
+ else if((control.hovered || control.activeFocus) && control.checkable && control.checked)
+ {
+ return Theme.getColor("setting_category_active_hover_text");
+ }
+ else if(control.pressed || (control.checkable && control.checked))
+ {
+ return Theme.getColor("setting_category_active_text");
+ }
+ else if(control.hovered || control.activeFocus)
+ {
+ return Theme.getColor("setting_category_hover_text");
+ }
+ else
+ {
+ return Theme.getColor("setting_category_text");
+ }
+ }
source: control.iconSource;
width: Theme.getSize("section_icon").width;
height: Theme.getSize("section_icon").height;
@@ -394,13 +446,35 @@ QtObject {
Label {
anchors {
left: icon.right;
- leftMargin: Theme.getSize("default_lining").width;
+ leftMargin: Theme.getSize("default_margin").width;
right: parent.right;
verticalCenter: parent.verticalCenter;
}
text: control.text;
font: Theme.getFont("setting_category");
- color: Theme.getColor("setting_category_text");
+ color:
+ {
+ if(!control.enabled)
+ {
+ return Theme.getColor("setting_category_disabled_text");
+ }
+ else if((control.hovered || control.activeFocus) && control.checkable && control.checked)
+ {
+ return Theme.getColor("setting_category_active_hover_text");
+ }
+ else if(control.pressed || (control.checkable && control.checked))
+ {
+ return Theme.getColor("setting_category_active_text");
+ }
+ else if(control.hovered || control.activeFocus)
+ {
+ return Theme.getColor("setting_category_hover_text");
+ }
+ else
+ {
+ return Theme.getColor("setting_category_text");
+ }
+ }
fontSizeMode: Text.HorizontalFit;
minimumPointSize: 8
}
@@ -408,12 +482,34 @@ QtObject {
id: category_arrow
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
- anchors.rightMargin: Theme.getSize("default_margin").width * 2 - width / 2
+ anchors.rightMargin: Theme.getSize("default_margin").width * 3 - width / 2
width: Theme.getSize("standard_arrow").width
height: Theme.getSize("standard_arrow").height
sourceSize.width: width
sourceSize.height: width
- color: Theme.getColor("setting_category_text")
+ color:
+ {
+ if(!control.enabled)
+ {
+ return Theme.getColor("setting_category_disabled_text");
+ }
+ else if((control.hovered || control.activeFocus) && control.checkable && control.checked)
+ {
+ return Theme.getColor("setting_category_active_hover_text");
+ }
+ else if(control.pressed || (control.checkable && control.checked))
+ {
+ return Theme.getColor("setting_category_active_text");
+ }
+ else if(control.hovered || control.activeFocus)
+ {
+ return Theme.getColor("setting_category_hover_text");
+ }
+ else
+ {
+ return Theme.getColor("setting_category_text");
+ }
+ }
source: control.checked ? Theme.getIcon("arrow_bottom") : Theme.getIcon("arrow_left")
}
}
@@ -627,7 +723,9 @@ QtObject {
width: Theme.getSize("slider_handle").width;
height: Theme.getSize("slider_handle").height;
color: control.hovered ? Theme.getColor("slider_handle_hover") : Theme.getColor("slider_handle");
- radius: Theme.getSize("slider_handle").width/2;
+ border.width: Theme.getSize("default_lining").width
+ border.color: control.hovered ? Theme.getColor("slider_handle_hover_border") : Theme.getColor("slider_handle_border")
+ radius: Theme.getSize("slider_handle").width / 2; //Round.
Behavior on color { ColorAnimation { duration: 50; } }
}
}
@@ -636,6 +734,7 @@ QtObject {
property Component text_field: Component {
TextFieldStyle {
textColor: Theme.getColor("setting_control_text");
+ placeholderTextColor: Theme.getColor("setting_control_text")
font: Theme.getFont("default");
background: Rectangle
@@ -691,7 +790,7 @@ QtObject {
}
Behavior on color { ColorAnimation { duration: 50; } }
- implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("default_margin").width * 2)
+ implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("sidebar_margin").width * 2)
Label
{
diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json
new file mode 100644
index 0000000000..eb9fb72db6
--- /dev/null
+++ b/resources/themes/cura-light/theme.json
@@ -0,0 +1,345 @@
+{
+ "metadata": {
+ "name": "Light"
+ },
+
+ "fonts": {
+ "large": {
+ "size": 1.25,
+ "bold": true,
+ "family": "Open Sans"
+ },
+ "default": {
+ "size": 1.15,
+ "family": "Open Sans"
+ },
+ "default_bold": {
+ "size": 1.15,
+ "bold": true,
+ "family": "Open Sans"
+ },
+ "default_italic": {
+ "size": 1.15,
+ "italic": true,
+ "family": "Open Sans"
+ },
+ "small": {
+ "size": 1.0,
+ "bold": true,
+ "family": "Open Sans"
+ },
+ "very_small": {
+ "size": 1.0,
+ "family": "Open Sans"
+ },
+ "button_tooltip": {
+ "size": 1.0,
+ "family": "Open Sans"
+ },
+ "setting_category": {
+ "size": 1.15,
+ "bold": true,
+ "family": "Open Sans"
+ },
+ "action_button": {
+ "size": 1.15,
+ "bold": true,
+ "family": "Open Sans"
+ }
+ },
+
+ "colors": {
+ "sidebar": [255, 255, 255, 255],
+ "lining": [127, 127, 127, 255],
+ "viewport_overlay": [24, 41, 77, 192],
+
+ "primary": [12, 169, 227, 255],
+ "primary_hover": [48, 182, 231, 255],
+ "primary_text": [255, 255, 255, 255],
+ "border": [127, 127, 127, 255],
+ "secondary": [245, 245, 245, 255],
+
+ "text": [24, 41, 77, 255],
+ "text_detail": [174, 174, 174, 128],
+ "text_link": [12, 169, 227, 255],
+ "text_inactive": [174, 174, 174, 255],
+ "text_hover": [70, 84, 113, 255],
+ "text_pressed": [12, 169, 227, 255],
+ "text_subtext": [70, 84, 113, 255],
+ "text_emphasis": [255, 255, 255, 255],
+ "text_scene": [24, 41, 77, 255],
+ "text_scene_hover": [70, 84, 113, 255],
+
+ "error": [255, 140, 0, 255],
+ "sidebar_header_bar": [24, 41, 77, 255],
+ "sidebar_header_active": [70, 84, 113, 255],
+ "sidebar_header_hover": [24, 41, 77, 255],
+ "sidebar_header_highlight": [12, 169, 227, 255],
+ "sidebar_header_highlight_hover": [255, 255, 255, 255],
+ "sidebar_header_text_inactive": [255, 255, 255, 255],
+ "sidebar_header_text_active": [255, 255, 255, 255],
+ "sidebar_header_text_hover": [255, 255, 255, 255],
+ "sidebar_lining": [245, 245, 245, 255],
+
+ "button": [24, 41, 77, 255],
+ "button_hover": [70, 84, 113, 255],
+ "button_active": [32, 166, 219, 255],
+ "button_active_hover": [12, 169, 227, 255],
+ "button_text": [255, 255, 255, 255],
+ "button_text_hover": [255, 255, 255, 255],
+ "button_text_active": [255, 255, 255, 255],
+ "button_text_active_hover": [255, 255, 255, 255],
+ "button_disabled": [24, 41, 77, 255],
+ "button_disabled_text": [255, 255, 255, 101],
+
+ "button_tooltip": [12, 169, 227, 255],
+ "button_tooltip_border": [24, 41, 77, 255],
+ "button_tooltip_text": [24, 41, 77, 255],
+
+ "tab_checked": [255, 255, 255, 255],
+ "tab_checked_border": [255, 255, 255, 255],
+ "tab_checked_text": [24, 41, 77, 255],
+ "tab_unchecked": [245, 245, 245, 255],
+ "tab_unchecked_border": [245, 245, 245, 255],
+ "tab_unchecked_text": [127, 127, 127, 255],
+ "tab_hovered": [245, 245, 245, 255],
+ "tab_hovered_border": [245, 245, 245, 255],
+ "tab_hovered_text": [32, 166, 219, 255],
+ "tab_active": [255, 255, 255, 255],
+ "tab_active_border": [255, 255, 255, 255],
+ "tab_active_text": [24, 41, 77, 255],
+ "tab_background": [245, 245, 245, 255],
+
+ "action_button": [255, 255, 255, 255],
+ "action_button_text": [24, 41, 77, 255],
+ "action_button_border": [127, 127, 127, 255],
+ "action_button_hovered": [255, 255, 255, 255],
+ "action_button_hovered_text": [24, 41, 77, 255],
+ "action_button_hovered_border": [12, 169, 227, 255],
+ "action_button_active": [12, 169, 227, 255],
+ "action_button_active_text": [255, 255, 255, 255],
+ "action_button_active_border": [12, 169, 227, 255],
+ "action_button_disabled": [245, 245, 245, 255],
+ "action_button_disabled_text": [127, 127, 127, 255],
+ "action_button_disabled_border": [245, 245, 245, 255],
+
+ "scrollbar_background": [255, 255, 255, 255],
+ "scrollbar_handle": [24, 41, 77, 255],
+ "scrollbar_handle_hover": [12, 159, 227, 255],
+ "scrollbar_handle_down": [12, 159, 227, 255],
+
+ "setting_category": [245, 245, 245, 255],
+ "setting_category_disabled": [255, 255, 255, 255],
+ "setting_category_hover": [245, 245, 245, 255],
+ "setting_category_active": [245, 245, 245, 255],
+ "setting_category_active_hover": [245, 245, 245, 255],
+ "setting_category_text": [24, 41, 77, 255],
+ "setting_category_disabled_text": [24, 41, 77, 101],
+ "setting_category_hover_text": [24, 41, 77, 255],
+ "setting_category_active_text": [24, 41, 77, 255],
+ "setting_category_active_hover_text": [24, 41, 77, 255],
+ "setting_category_border": [245, 245, 245, 255],
+ "setting_category_disabled_border": [245, 245, 245, 255],
+ "setting_category_hover_border": [12, 159, 227, 255],
+ "setting_category_active_border": [245, 245, 245, 255],
+ "setting_category_active_hover_border": [12, 159, 227, 255],
+
+ "setting_control": [255, 255, 255, 255],
+ "setting_control_selected": [24, 41, 77, 255],
+ "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": [24, 41, 77, 255],
+ "setting_control_depth_line": [127, 127, 127, 255],
+ "setting_control_button": [127, 127, 127, 255],
+ "setting_control_button_hover": [70, 84, 113, 255],
+ "setting_control_disabled": [245, 245, 245, 255],
+ "setting_control_disabled_text": [127, 127, 127, 255],
+ "setting_control_disabled_border": [127, 127, 127, 255],
+ "setting_unit": [127, 127, 127, 255],
+ "setting_validation_error_background": [255, 57, 14, 255],
+ "setting_validation_error": [127, 127, 127, 255],
+ "setting_validation_warning_background": [255, 186, 15, 255],
+ "setting_validation_warning": [127, 127, 127, 255],
+ "setting_validation_ok": [255, 255, 255, 255],
+
+ "progressbar_background": [245, 245, 245, 255],
+ "progressbar_control": [24, 41, 77, 255],
+
+ "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_hover": [77, 182, 226, 255],
+ "slider_text_background": [255, 255, 255, 255],
+
+ "checkbox": [255, 255, 255, 255],
+ "checkbox_hover": [255, 255, 255, 255],
+ "checkbox_border": [127, 127, 127, 255],
+ "checkbox_border_hover": [12, 169, 227, 255],
+ "checkbox_mark": [24, 41, 77, 255],
+ "checkbox_text": [24, 41, 77, 255],
+
+ "mode_switch": [255, 255, 255, 255],
+ "mode_switch_hover": [255, 255, 255, 255],
+ "mode_switch_border": [127, 127, 127, 255],
+ "mode_switch_border_hover": [12, 169, 227, 255],
+ "mode_switch_handle": [24, 41, 77, 255],
+ "mode_switch_text": [24, 41, 77, 255],
+ "mode_switch_text_hover": [24, 41, 77, 255],
+ "mode_switch_text_checked": [12, 169, 227, 255],
+
+ "tooltip": [12, 169, 227, 255],
+ "tooltip_text": [255, 255, 255, 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_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": [255, 255, 255, 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": [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],
+
+ "convex_hull": [35, 35, 35, 127],
+ "disallowed_area": [0, 0, 0, 40],
+ "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_margin": [1.71, 1.43],
+ "sidebar_margin_thin": [0.71, 0.71],
+ "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.2],
+ "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": [4, 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": [17, 4],
+ "topbar_button_icon": [3.125, 2.5],
+
+ "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],
+
+ "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]
+ }
+}
diff --git a/resources/themes/cura/icons/notice.svg b/resources/themes/cura/icons/notice.svg
deleted file mode 100644
index 263f7bacf1..0000000000
--- a/resources/themes/cura/icons/notice.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path d="M13.628 29.557c-3.53 1.24-6.44-.182-5.857-3.572.584-3.39 3.934-10.65 4.412-12.023.477-1.373-.438-1.75-1.42-1.19-.566.326-1.408.98-2.13 1.617-.2-.404-.482-.865-.694-1.306 1.18-1.181 3.15-2.765 5.482-3.339 2.787-.688 7.446.413 5.444 5.739-1.43 3.797-2.441 6.417-3.078 8.372-.637 1.952.125 2.365 1.239 1.6.87-.594 1.798-1.403 2.478-2.03.315.513.413.676.726 1.264-1.185 1.2-4.27 4.042-6.598 4.868h-.004zm7.314-23.486c-1.601 1.363-3.974 1.333-5.302-.067-1.328-1.399-1.106-3.638.495-5.001 1.6-1.363 3.974-1.333 5.306.062 1.323 1.399 1.1 3.639-.501 5.006h.002z"/>
-</svg>
diff --git a/resources/themes/cura/icons/tab_monitor.svg b/resources/themes/cura/icons/tab_monitor.svg
deleted file mode 100644
index 2677cec6e2..0000000000
--- a/resources/themes/cura/icons/tab_monitor.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path d="M2.5 2.5h25v1.19h-25V2.5zm0 23.81h2.287l2.272-1.19h15.966l2.234 1.19H27.5v1.19h-2.239l-2.236-1.19H7.057l-2.27 1.177L2.5 27.5v-1.19zM26.364 3.69H27.5v22.62h-1.136V3.69zM2.5 3.69h1.136v22.62H2.5V3.69zm3.41 2.381h18.18v16.667H5.91V6.071zm1.135 1.19h15.91v14.287H7.045V7.262zm5.682 0h4.546v3.572h-4.546V7.262zM9.318 20.358h11.364v1.19H9.318v-1.19zm4.546-9.524h2.272v1.19h-2.272v-1.19z" fill-rule="evenodd"/>
-</svg>
diff --git a/resources/themes/cura/icons/tab_monitor_with_status.svg b/resources/themes/cura/icons/tab_monitor_with_status.svg
deleted file mode 100644
index dc3b373313..0000000000
--- a/resources/themes/cura/icons/tab_monitor_with_status.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path d="M2.5 2.5h25v1.19h-25V2.5zm0 23.81h2.287l2.272-1.19h15.966l2.234 1.19H27.5v1.19h-2.239l-2.236-1.19H7.057l-2.27 1.177L2.5 27.5v-1.19zM26.364 3.69H27.5v22.62h-1.136V3.69zM2.5 3.69h1.136v22.62H2.5V3.69zm3.41 2.381h18.18v16.667H5.91V6.071zm1.135 1.19h15.91v14.287H7.045V7.262zm5.682 0h4.546v3.572h-4.546V7.262zM9.318 20.358h11.364v1.19H9.318v-1.19zm4.546-9.524h2.272v1.19h-2.272v-1.19z" fill-rule="evenodd"/>
- <circle cx="22.5" cy="7.5" r="7.4" />
-</svg>
diff --git a/resources/themes/cura/icons/tab_status_busy.svg b/resources/themes/cura/icons/tab_status_busy.svg
index cb72fdd623..7b5774e71b 100644
--- a/resources/themes/cura/icons/tab_status_busy.svg
+++ b/resources/themes/cura/icons/tab_status_busy.svg
@@ -1,4 +1,9 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path
- d="M 22.5 0 A 7.5 7.5 0 0 0 15 7.5 A 7.5 7.5 0 0 0 22.5 15 A 7.5 7.5 0 0 0 30 7.5 A 7.5 7.5 0 0 0 22.5 0 z M 18.5 6 A 1.5 1.5 0 0 1 20 7.5 A 1.5 1.5 0 0 1 18.5 9 A 1.5 1.5 0 0 1 17 7.5 A 1.5 1.5 0 0 1 18.5 6 z M 22.5 6 A 1.5 1.5 0 0 1 24 7.5 A 1.5 1.5 0 0 1 22.5 9 A 1.5 1.5 0 0 1 21 7.5 A 1.5 1.5 0 0 1 22.5 6 z M 26.5 6 A 1.5 1.5 0 0 1 28 7.5 A 1.5 1.5 0 0 1 26.5 9 A 1.5 1.5 0 0 1 25 7.5 A 1.5 1.5 0 0 1 26.5 6 z " />
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#0CA9E3" cx="9" cy="9" r="8.5" stroke="#272C30" />
+ <circle fill="#FFFFFF" cx="4" cy="9" r="1.75" />
+ <circle fill="#FFFFFF" cx="9" cy="9" r="1.75" />
+ <circle fill="#FFFFFF" cx="14" cy="9" r="1.75" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/tab_status_connected.svg b/resources/themes/cura/icons/tab_status_connected.svg
index 16ec7d7523..7997ffbee6 100644
--- a/resources/themes/cura/icons/tab_status_connected.svg
+++ b/resources/themes/cura/icons/tab_status_connected.svg
@@ -1,4 +1,7 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path
- d="M 22.5 0 A 7.5 7.5 0 0 0 15 7.5 A 7.5 7.5 0 0 0 22.5 15 A 7.5 7.5 0 0 0 30 7.5 A 7.5 7.5 0 0 0 22.5 0 z M 25.546875 4.3027344 L 26.974609 5.7011719 C 25.518609 7.1841719 23.732266 9.0172656 22.072266 10.697266 L 18.5 7.21875 L 19.859375 5.8398438 L 21.994141 7.9199219 L 25.546875 4.3027344 z " />
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#10CB00" cx="9" cy="9" r="8.5" stroke="#272C30" />
+ <polyline fill="none" stroke="#FFFFFF" stroke-width="2" points="5.643,8.645 8.116,11.12 12.36,6.88" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/tab_status_offline.svg b/resources/themes/cura/icons/tab_status_offline.svg
deleted file mode 100644
index 850ca1bc03..0000000000
--- a/resources/themes/cura/icons/tab_status_offline.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path
- d="M 22.5 0 A 7.5 7.5 0 0 0 15 7.5 A 7.5 7.5 0 0 0 22.5 15 A 7.5 7.5 0 0 0 30 7.5 A 7.5 7.5 0 0 0 22.5 0 z M 20.025391 3.6113281 L 22.5 6.0859375 L 24.974609 3.6113281 L 26.388672 5.0253906 L 23.914062 7.5 L 26.388672 9.9746094 L 24.974609 11.388672 L 22.5 8.9140625 L 20.023438 11.388672 L 18.609375 9.9746094 L 21.085938 7.5 L 18.611328 5.0253906 L 20.025391 3.6113281 z " />
-</svg>
diff --git a/resources/themes/cura/icons/tab_status_paused.svg b/resources/themes/cura/icons/tab_status_paused.svg
index feffb7894c..606d4cb96c 100644
--- a/resources/themes/cura/icons/tab_status_paused.svg
+++ b/resources/themes/cura/icons/tab_status_paused.svg
@@ -1,4 +1,8 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path
- d="M 22.5 0 A 7.5 7.5 0 0 0 15 7.5 A 7.5 7.5 0 0 0 22.5 15 A 7.5 7.5 0 0 0 30 7.5 A 7.5 7.5 0 0 0 22.5 0 z M 19.5 4 L 21.5 4 L 21.5 11 L 19.5 11 L 19.5 4 z M 23.5 4 L 25.5 4 L 25.5 11 L 23.5 11 L 23.5 4 z " />
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#FF8C10" cx="9" cy="9" r="8.5" stroke="#272C30" />
+ <rect fill="#FFFFFF" x="6" y="6" width="2" height="6" />
+ <rect fill="#FFFFFF" x="10" y="6" width="2" height="6" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/tab_status_stopped.svg b/resources/themes/cura/icons/tab_status_stopped.svg
index 86386d3a6b..6cd0f18b17 100644
--- a/resources/themes/cura/icons/tab_status_stopped.svg
+++ b/resources/themes/cura/icons/tab_status_stopped.svg
@@ -1,51 +1,8 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- viewBox="0 0 30 30"
- version="1.1"
- id="svg3753"
- sodipodi:docname="tab_monitor_stopped.svg"
- inkscape:version="0.92.0 r15299">
- <metadata
- id="metadata3759">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs3757" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="640"
- inkscape:window-height="480"
- id="namedview3755"
- showgrid="false"
- inkscape:zoom="7.8666667"
- inkscape:cx="15"
- inkscape:cy="15"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="svg3753" />
- <path
- d="M 22.5 0 A 7.5 7.5 0 0 0 15 7.5 A 7.5 7.5 0 0 0 22.5 15 A 7.5 7.5 0 0 0 30 7.5 A 7.5 7.5 0 0 0 22.5 0 z M 20.025391 3.6113281 L 22.5 6.0859375 L 24.974609 3.6113281 L 26.388672 5.0253906 L 23.914062 7.5 L 26.388672 9.9746094 L 24.974609 11.388672 L 22.5 8.9140625 L 20.023438 11.388672 L 18.609375 9.9746094 L 21.085938 7.5 L 18.611328 5.0253906 L 20.025391 3.6113281 z "
- id="circle3749" />
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35px" height="28px" viewBox="0 0 35 28" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle fill="#D0021B" cx="9" cy="9" r="8.5" stroke="#272C30" />
+ <line x1="6" y1="6" x2="12" y2="12" stroke-width="2" stroke="#FFFFFF" />
+ <line x1="6" y1="12" x2="12" y2="6" stroke-width="2" stroke="#FFFFFF" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/tab_status_unknown.svg b/resources/themes/cura/icons/tab_status_unknown.svg
index 1033b39a4c..5e46eec55b 100644
--- a/resources/themes/cura/icons/tab_status_unknown.svg
+++ b/resources/themes/cura/icons/tab_status_unknown.svg
@@ -1,4 +1,8 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path
- d="M 22.5 0 A 7.5 7.5 0 0 0 15 7.5 A 7.5 7.5 0 0 0 22.5 15 A 7.5 7.5 0 0 0 30 7.5 A 7.5 7.5 0 0 0 22.5 0 z M 22.710938 3.5996094 C 23.577604 3.5996094 24.264104 3.7911615 24.773438 4.1738281 C 25.282771 4.5564948 25.537109 5.0577813 25.537109 5.6757812 C 25.537109 6.0304479 25.486193 6.3431875 25.380859 6.6171875 C 25.278859 6.8871875 25.132693 7.1235521 24.943359 7.3242188 C 24.753359 7.5242188 24.524479 7.7033281 24.257812 7.8613281 C 23.994479 8.0193281 23.696615 8.1629687 23.363281 8.2929688 L 23.363281 9.4921875 L 21.509766 9.4921875 L 21.509766 7.71875 C 21.759099 7.6520833 21.983594 7.5836719 22.183594 7.5136719 C 22.386927 7.4436719 22.598979 7.329875 22.820312 7.171875 C 23.026979 7.031875 23.188021 6.8683073 23.304688 6.6816406 C 23.424021 6.494974 23.484375 6.2834948 23.484375 6.0488281 C 23.484375 5.6974948 23.369292 5.4481146 23.140625 5.3007812 C 22.915958 5.1501146 22.598167 5.0742187 22.1875 5.0742188 C 21.934167 5.0742188 21.648745 5.1296146 21.330078 5.2382812 C 21.014078 5.3469479 20.724937 5.4862031 20.460938 5.6582031 L 20.25 5.6582031 L 20.25 4.0527344 C 20.474667 3.9580677 20.819776 3.8598125 21.287109 3.7578125 C 21.753776 3.6524792 22.229604 3.5996094 22.710938 3.5996094 z M 21.382812 10.210938 L 23.509766 10.210938 L 23.509766 11.599609 L 21.382812 11.599609 L 21.382812 10.210938 z " />
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="35" height="28" viewBox="0 0 35 28" xmlns="http://www.w3.org/2000/svg">
+ <g transform="translate(15.5, 4)">
+ <circle cx="9" cy="9" r="8.5" fill="#8B9595" stroke="#272C30" />
+ <path fill="#FFFFFF" d="M9.013 3.5C7.29 3.5 6.533 4.515 6.236 5.12 5.989 5.623 5.997 6.057 6.001 6.138L7.59 6.058 7.591 6.082C7.591 6.081 7.594 5.964 7.664 5.821 7.905 5.33 8.347 5.091 9.013 5.091 9.47 5.091 9.817 5.217 10.075 5.475 10.477 5.878 10.556 6.485 10.555 6.626 10.554 6.812 10.49 7.77 9.306 8.386 8.318 8.899 7.752 9.906 7.752 11.147L7.752 11.621 9.343 11.618 9.342 11.147C9.342 10.697 9.463 10.097 10.039 9.798 12.035 8.76 12.144 6.98 12.146 6.633 12.148 6.141 11.952 5.106 11.202 4.353 10.647 3.795 9.89 3.5 9.013 3.5Z"/>
+ <rect fill="#FFFFFF" x="7.818" y="13.136" width="1.591" height="1.25" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/icons/viewmode.svg b/resources/themes/cura/icons/viewmode.svg
deleted file mode 100644
index b270bf0e81..0000000000
--- a/resources/themes/cura/icons/viewmode.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path d="M15.002 8.724h-.004C9.239 8.724 4.408 11.39 3 14.999c1.407 3.61 6.238 6.276 11.998 6.276 5.762 0 10.596-2.666 12.002-6.276-1.406-3.609-6.238-6.274-11.998-6.275zm4.228 6.23c0 2.332-1.898 4.229-4.23 4.229s-4.229-1.896-4.229-4.229 1.897-4.23 4.229-4.23h.002a4.235 4.235 0 0 1 4.228 4.23zM15 9.72"/>
-</svg>
diff --git a/resources/themes/cura/icons/warning.svg b/resources/themes/cura/icons/warning.svg
deleted file mode 100644
index 9269ce20ca..0000000000
--- a/resources/themes/cura/icons/warning.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
- <path d="M17.14 23.819V20.64q0-.234-.158-.392-.16-.16-.377-.16h-3.21q-.218 0-.377.16-.158.158-.158.392v3.178q0 .234.158.393.16.159.377.159h3.21q.218 0 .377-.16.158-.158.158-.392zm-.033-6.254l.301-7.676q0-.2-.167-.318-.218-.184-.402-.184h-3.678q-.184 0-.402.184-.167.117-.167.352l.284 7.642q0 .167.168.276.167.108.4.108h3.094q.235 0 .393-.108.16-.11.176-.276zm-.234-15.619l12.842 23.545q.586 1.053-.033 2.107-.284.485-.778.77-.493.283-1.061.283H2.157q-.568 0-1.061-.284-.494-.284-.778-.77-.619-1.053-.033-2.106L13.127 1.946q.284-.518.786-.82.502-.3 1.087-.3t1.087.3q.502.302.786.82z"/>
-</svg>
diff --git a/resources/themes/cura/images/logo.svg b/resources/themes/cura/images/logo.svg
index ad76518991..545b42d193 100644
--- a/resources/themes/cura/images/logo.svg
+++ b/resources/themes/cura/images/logo.svg
@@ -1,83 +1,8 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Laag_1"
- x="0px"
- y="0px"
- viewBox="0 0 99.999998 21.578381"
- enable-background="new 0 0 841.9 595.3"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="logo.svg"
- width="100"
- height="21.578381"><metadata
- id="metadata4238"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
- id="defs4236" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1869"
- inkscape:window-height="1167"
- id="namedview4234"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:zoom="6.252524"
- inkscape:cx="34.820531"
- inkscape:cy="13.055339"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Laag_1" /><g
- id="g4208"
- transform="matrix(0.13444474,0,0,0.13444474,-7.6499057,-23.433718)"><polygon
- points="740.6,329.7 780.5,329.7 800.7,309.5 800.7,269.7 760.9,269.7 740.6,289.9 "
- id="polygon4210"
- style="fill:#20a6db" /><g
- id="g4212"><path
- d="m 56.9,253.7 c 0,44.3 28.1,76.1 74.4,76.1 l 70.3,0 0,-39.8 -70.3,0 c -23.4,-0.1 -34.9,-16.6 -34.9,-36.3 0,-19.7 11.5,-35.9 34.9,-36.1 l 70.3,0 0,-39.7 -70.3,0 c -46.4,-0.1 -74.4,31.4 -74.4,75.8 z"
- id="path4214"
- inkscape:connector-curvature="0"
- style="fill:#1a171b" /><path
- d="m 351.3,260.5 c 0,23.4 -16.5,35.9 -36.2,35.9 -19.7,0 -35.9,-12.5 -35.9,-35.9 l 0,-82.7 -39.9,0 0,82.7 c 0,46.3 31.5,74.3 75.8,74.3 44.3,0 76.1,-28.1 76.1,-74.3 l 0,-82.7 -39.9,0 0,82.7 z"
- id="path4216"
- inkscape:connector-curvature="0"
- style="fill:#1a171b" /><path
- d="m 625.1,177.8 c -46.3,0 -74.4,31.5 -74.4,75.8 0,44.3 28.1,76.1 74.4,76.1 l 16.4,0 0,-39.7 -16.4,0 c -23.4,-0.1 -34.9,-16.6 -34.9,-36.3 0,-19.7 11.5,-35.9 34.9,-36.1 l 37.3,0 0,52 0,20.4 0,39.8 39.9,0 0,-2.3 0,-37.5 0,-72.4 0,-32.8 0,-7 -77.2,0 z"
- id="path4218"
- inkscape:connector-curvature="0"
- style="fill:#1a171b" /><path
- d="m 429,250.1 0,79.6 39.4,0 0,-79.6 c 0,-19.7 11.5,-35.9 34.9,-36.1 l 28.8,0 0,-39.7 -28.8,0 c -46.3,0 -74.3,31.5 -74.3,75.8 z"
- id="path4220"
- inkscape:connector-curvature="0"
- style="fill:#1a171b" /></g></g><g
- id="g4222"
- transform="translate(1.94e-7,-573.72161)" /><g
- id="g4224"
- transform="translate(1.94e-7,-573.72161)" /><g
- id="g4226"
- transform="translate(1.94e-7,-573.72161)" /><g
- id="g4228"
- transform="translate(1.94e-7,-573.72161)" /><g
- id="g4230"
- transform="translate(1.94e-7,-573.72161)" /><g
- id="g4232"
- transform="translate(1.94e-7,-573.72161)" /></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="82px" height="18px" viewBox="0 0 82 18" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <polygon fill="#20A6DB" points="82 10.3797468 77.8757345 10.3797468 75.7721519 12.4764557 75.7721519 16.6075949 79.9067798 16.6075949 82 14.5108861" />
+ <path fill="#FFFFFF" d="M0,9.32538529 C0,14.168804 3.22511,17.6455696 8.53908129,17.6455696 L16.6075949,17.6455696 L16.6075949,13.294146 L8.53908129,13.294146 C5.8534025,13.2832128 4.53351762,11.4792306 4.53351762,9.32538529 C4.53351762,7.17153994 5.8534025,5.40035747 8.53908129,5.37849102 L16.6075949,5.37849102 L16.6075949,1.03800064 L8.53908129,1.03800064 C3.21363275,1.02706742 0,4.47103333 0,9.32538529 Z" />
+ <path fill="#FFFFFF" d="M33.004725,9.78605176 C33.004725,12.2613239 31.20074,13.5835846 29.0468913,13.5835846 C26.8930426,13.5835846 25.1218573,12.2613239 25.1218573,9.78605176 L25.1218573,1.03797468 L20.7594937,1.03797468 L20.7594937,9.78605176 C20.7594937,14.6837056 24.203465,17.6455696 29.0468913,17.6455696 C33.8903176,17.6455696 37.3670886,14.6731275 37.3670886,9.78605176 L37.3670886,1.03797468 L33.004725,1.03797468 L33.004725,9.78605176 L33.004725,9.78605176 Z" />
+ <path fill="#FFFFFF" d="M62.1251127,1.03797468 C57.0530042,1.03797468 53.9746835,4.47968021 53.9746835,9.31992005 C53.9746835,14.1601599 57.0530042,17.6346436 62.1251127,17.6346436 L63.9217127,17.6346436 L63.9217127,13.297002 L62.1251127,13.297002 C59.5616713,13.2860759 58.3018603,11.4832778 58.3018603,9.3308461 C58.3018603,7.17841439 59.5616713,5.4083944 62.1251127,5.38654231 L66.2112822,5.38654231 L66.2112822,11.0680879 L66.2112822,13.297002 L66.2112822,17.6455696 L70.5822785,17.6455696 L70.5822785,17.3942705 L70.5822785,13.297002 L70.5822785,5.38654231 L70.5822785,1.80279813 L70.5822785,1.03797468 L62.1251127,1.03797468 Z" />
+ <path fill="#FFFFFF" d="M41.5189873,8.10074451 L41.5189873,16.6075949 L45.8823067,16.6075949 L45.8823067,8.10074451 C45.8823067,5.99540589 47.1558644,4.26411221 49.7472774,4.24273822 L52.9367089,4.24273822 L52.9367089,0 L49.7472774,0 C44.6198234,0 41.5189873,3.36640438 41.5189873,8.10074451 Z" />
+</svg> \ No newline at end of file
diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json
index c1d174e1a3..3ef5366c9e 100644
--- a/resources/themes/cura/theme.json
+++ b/resources/themes/cura/theme.json
@@ -1,198 +1,148 @@
{
"metadata": {
- "name": "Ultimaker"
- },
- "fonts": {
- "large": {
- "size": 1.25,
- "bold": true,
- "family": "Open Sans"
- },
- "default": {
- "size": 1.15,
- "family": "Open Sans"
- },
- "default_bold": {
- "size": 1.15,
- "bold": true,
- "family": "Open Sans"
- },
- "default_italic": {
- "size": 1.15,
- "italic": true,
- "family": "Open Sans"
- },
- "small": {
- "size": 1.0,
- "bold": true,
- "family": "Open Sans"
- },
- "very_small": {
- "size": 1.0,
- "family": "Open Sans"
- },
- "button_tooltip": {
- "size": 1.0,
- "family": "Open Sans"
- },
- "setting_category": {
- "size": 1.15,
- "bold": true,
- "family": "Open Sans"
- },
- "action_button": {
- "size": 1.15,
- "bold": true,
- "family": "Open Sans"
- }
+ "name": "Ultimaker",
+ "inherits": "cura-light"
},
"colors": {
- "sidebar": [255, 255, 255, 255],
- "lining": [127, 127, 127, 255],
- "viewport_overlay": [24, 41, 77, 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, 255],
+ "primary_text": [255, 255, 255, 204],
"border": [127, 127, 127, 255],
- "secondary": [245, 245, 245, 255],
-
- "text": [24, 41, 77, 255],
- "text_detail": [174, 174, 174, 128],
- "text_link": [12, 169, 227, 255],
- "text_inactive": [174, 174, 174, 255],
- "text_hover": [70, 84, 113, 255],
- "text_pressed": [12, 169, 227, 255],
- "text_reversed": [255, 255, 255, 255],
- "text_subtext": [70, 84, 113, 255],
-
- "error": [255, 140, 0, 255],
- "sidebar_header_bar": [24, 41, 77, 255],
- "sidebar_header_active": [70, 84, 113, 255],
- "sidebar_header_hover": [24, 41, 77, 255],
- "sidebar_header_highlight": [12, 169, 227, 255],
- "sidebar_header_highlight_hover": [255, 255, 255, 255],
- "sidebar_lining": [245, 245, 245, 255],
-
- "button": [24, 41, 77, 255],
- "button_hover": [70, 84, 113, 255],
- "button_active": [32, 166, 219, 255],
- "button_active_hover": [12, 169, 227, 255],
- "button_text": [255, 255, 255, 255],
- "button_disabled": [24, 41, 77, 255],
- "button_disabled_text": [70, 84, 113, 255],
-
- "button_tooltip": [255, 255, 255, 255],
- "button_tooltip_border": [24, 41, 77, 255],
- "button_tooltip_text": [24, 41, 77, 255],
-
- "toggle_checked": [24, 41, 77, 255],
- "toggle_checked_border": [24, 41, 77, 255],
- "toggle_checked_text": [255, 255, 255, 255],
- "toggle_unchecked": [255, 255, 255, 255],
- "toggle_unchecked_border": [127, 127, 127, 255],
- "toggle_unchecked_text": [24, 41, 77, 255],
- "toggle_hovered": [255, 255, 255, 255],
- "toggle_hovered_border": [32, 166, 219, 255],
- "toggle_hovered_text": [24, 41, 77, 255],
- "toggle_active": [32, 166, 219, 255],
- "toggle_active_border": [32, 166, 219, 255],
- "toggle_active_text": [24, 41, 77, 255],
-
- "tab_checked": [255, 255, 255, 255],
- "tab_checked_border": [255, 255, 255, 255],
- "tab_checked_text": [24, 41, 77, 255],
- "tab_unchecked": [245, 245, 245, 255],
- "tab_unchecked_border": [245, 245, 245, 255],
- "tab_unchecked_text": [127, 127, 127, 255],
- "tab_hovered": [245, 245, 245, 255],
- "tab_hovered_border": [245, 245, 245, 255],
- "tab_hovered_text": [32, 166, 219, 255],
- "tab_active": [255, 255, 255, 255],
- "tab_active_border": [255, 255, 255, 255],
- "tab_active_text": [24, 41, 77, 255],
- "tab_background": [245, 245, 245, 255],
-
- "action_button": [255, 255, 255, 255],
- "action_button_text": [24, 41, 77, 255],
- "action_button_border": [127, 127, 127, 255],
- "action_button_hovered": [255, 255, 255, 255],
- "action_button_hovered_text": [24, 41, 77, 255],
- "action_button_hovered_border": [12, 169, 227, 255],
- "action_button_active": [12, 169, 227, 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": [12, 169, 227, 255],
- "action_button_disabled": [245, 245, 245, 255],
- "action_button_disabled_text": [127, 127, 127, 255],
- "action_button_disabled_border": [245, 245, 245, 255],
-
- "scrollbar_background": [255, 255, 255, 255],
- "scrollbar_handle": [24, 41, 77, 255],
- "scrollbar_handle_hover": [12, 159, 227, 255],
- "scrollbar_handle_down": [12, 159, 227, 255],
-
- "setting_category": [245, 245, 245, 255],
- "setting_category_disabled": [255, 255, 255, 255],
- "setting_category_hover": [245, 245, 245, 255],
- "setting_category_active": [245, 245, 245, 255],
- "setting_category_active_hover": [245, 245, 245, 255],
- "setting_category_text": [24, 41, 77, 255],
- "setting_category_border": [245, 245, 245, 255],
- "setting_category_disabled_border": [245, 245, 245, 255],
- "setting_category_hover_border": [12, 159, 227, 255],
- "setting_category_active_border": [245, 245, 245, 255],
- "setting_category_active_hover_border": [12, 159, 227, 255],
-
- "setting_control": [255, 255, 255, 255],
- "setting_control_selected": [24, 41, 77, 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": [127, 127, 127, 255],
- "setting_control_border_highlight": [12, 169, 227, 255],
- "setting_control_text": [24, 41, 77, 255],
- "setting_control_depth_line": [127, 127, 127, 255],
- "setting_control_button": [127, 127, 127, 255],
- "setting_control_button_hover": [70, 84, 113, 255],
- "setting_control_disabled": [245, 245, 245, 255],
- "setting_control_disabled_text": [127, 127, 127, 255],
- "setting_control_disabled_border": [127, 127, 127, 255],
- "setting_unit": [127, 127, 127, 255],
- "setting_validation_error": [255, 57, 14, 255],
- "setting_validation_warning": [255, 186, 15, 255],
- "setting_validation_ok": [255, 255, 255, 255],
-
- "progressbar_background": [245, 245, 245, 255],
- "progressbar_control": [24, 41, 77, 255],
-
- "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_hover": [77, 182, 226, 255],
- "slider_text_background": [255, 255, 255, 255],
-
- "checkbox": [255, 255, 255, 255],
- "checkbox_hover": [255, 255, 255, 255],
- "checkbox_border": [127, 127, 127, 255],
- "checkbox_border_hover": [12, 169, 227, 255],
- "checkbox_mark": [24, 41, 77, 255],
- "checkbox_text": [24, 41, 77, 255],
-
- "mode_switch": [255, 255, 255, 255],
- "mode_switch_hover": [255, 255, 255, 255],
- "mode_switch_border": [127, 127, 127, 255],
- "mode_switch_border_hover": [12, 169, 227, 255],
- "mode_switch_handle": [24, 41, 77, 255],
- "mode_switch_text": [24, 41, 77, 255],
- "mode_switch_text_hover": [24, 41, 77, 255],
- "mode_switch_text_checked": [12, 169, 227, 255],
-
- "tooltip": [12, 169, 227, 255],
- "tooltip_text": [255, 255, 255, 255],
-
- "message_background": [24, 41, 77, 255],
- "message_text": [255, 255, 255, 255],
- "message_border": [24, 41, 77, 255],
+ "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],
@@ -202,7 +152,7 @@
"message_progressbar_background": [255, 255, 255, 255],
"message_progressbar_control": [12, 169, 227, 255],
- "tool_panel_background": [255, 255, 255, 255],
+ "tool_panel_background": [39, 44, 48, 255],
"status_offline": [0, 0, 0, 255],
"status_ready": [0, 205, 0, 255],
@@ -217,15 +167,15 @@
"z_axis": [0, 255, 0, 255],
"all_axis": [255, 255, 255, 255],
- "viewport_background": [245, 245, 245, 255],
- "volume_outline": [12, 169, 227, 255],
- "buildplate": [244, 244, 244, 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, 40],
+ "disallowed_area": [0, 0, 0, 52],
"error_area": [255, 0, 0, 127],
"model_default": [255, 201, 36, 255],