Merge branch 'master' into CURA-8943_tool_panel_icon_size

# Conflicts:
#	resources/qml/ToolTip.qml
This commit is contained in:
j.delarago 2022-03-07 12:46:36 +01:00
commit f58411d086
28 changed files with 320 additions and 157 deletions

View file

@ -53,7 +53,7 @@ class FlavorParser:
def _clearValues(self) -> None: def _clearValues(self) -> None:
self._extruder_number = 0 self._extruder_number = 0
self._extrusion_length_offset = [0] # type: List[float] self._extrusion_length_offset = [0] * 8 # type: List[float]
self._layer_type = LayerPolygon.Inset0Type self._layer_type = LayerPolygon.Inset0Type
self._layer_number = 0 self._layer_number = 0
self._previous_z = 0 # type: float self._previous_z = 0 # type: float
@ -283,8 +283,9 @@ class FlavorParser:
return func(position, params, path) return func(position, params, path)
return position return position
def processTCode(self, T: int, line: str, position: Position, path: List[List[Union[float, int]]]) -> Position: def processTCode(self, global_stack, T: int, line: str, position: Position, path: List[List[Union[float, int]]]) -> Position:
self._extruder_number = T self._extruder_number = T
self._filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
if self._extruder_number + 1 > len(position.e): if self._extruder_number + 1 > len(position.e):
self._extrusion_length_offset.extend([0] * (self._extruder_number - len(position.e) + 1)) self._extrusion_length_offset.extend([0] * (self._extruder_number - len(position.e) + 1))
position.e.extend([0] * (self._extruder_number - len(position.e) + 1)) position.e.extend([0] * (self._extruder_number - len(position.e) + 1))
@ -354,7 +355,7 @@ class FlavorParser:
Logger.log("d", "Parsing g-code...") Logger.log("d", "Parsing g-code...")
current_position = Position(0, 0, 0, 0, [0]) current_position = Position(0, 0, 0, 0, [0] * 8)
current_path = [] #type: List[List[float]] current_path = [] #type: List[List[float]]
min_layer_number = 0 min_layer_number = 0
negative_layers = 0 negative_layers = 0
@ -444,7 +445,7 @@ class FlavorParser:
# When changing tool, store the end point of the previous path, then process the code and finally # When changing tool, store the end point of the previous path, then process the code and finally
# add another point with the new position of the head. # add another point with the new position of the head.
current_path.append([current_position.x, current_position.y, current_position.z, current_position.f, current_position.e[self._extruder_number], LayerPolygon.MoveCombingType]) current_path.append([current_position.x, current_position.y, current_position.z, current_position.f, current_position.e[self._extruder_number], LayerPolygon.MoveCombingType])
current_position = self.processTCode(T, line, current_position, current_path) current_position = self.processTCode(global_stack, T, line, current_position, current_path)
current_path.append([current_position.x, current_position.y, current_position.z, current_position.f, current_position.e[self._extruder_number], LayerPolygon.MoveCombingType]) current_path.append([current_position.x, current_position.y, current_position.z, current_position.f, current_position.e[self._extruder_number], LayerPolygon.MoveCombingType])
if line.startswith("M"): if line.startswith("M"):

View file

@ -29,9 +29,10 @@ class VersionUpgrade48to49(VersionUpgrade):
parser["general"]["version"] = "7" parser["general"]["version"] = "7"
# Update visibility settings to include new top_bottom category # Update visibility settings to include new top_bottom category
parser["general"]["visible_settings"] += ";top_bottom" if "visible_settings" in parser["general"]:
parser["general"]["visible_settings"] += ";top_bottom"
if "categories_expanded" in parser["cura"] and any([setting in parser["cura"]["categories_expanded"] for setting in self._moved_visibility_settings]): if "cura" in parser and "categories_expanded" in parser["cura"] and any([setting in parser["cura"]["categories_expanded"] for setting in self._moved_visibility_settings]):
parser["cura"]["categories_expanded"] += ";top_bottom" parser["cura"]["categories_expanded"] += ";top_bottom"
# If the account scope in 4.8 is outdated, delete it so that the user is enforced to log in again and get the # If the account scope in 4.8 is outdated, delete it so that the user is enforced to log in again and get the

View file

@ -6963,7 +6963,6 @@
"type": "bool", "type": "bool",
"default_value": false, "default_value": false,
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"enabled": false,
"settable_per_mesh": true "settable_per_mesh": true
}, },
"magic_fuzzy_skin_outside_only": "magic_fuzzy_skin_outside_only":
@ -6972,7 +6971,7 @@
"description": "Jitter only the parts' outlines and not the parts' holes.", "description": "Jitter only the parts' outlines and not the parts' holes.",
"type": "bool", "type": "bool",
"default_value": false, "default_value": false,
"enabled": "magic_fuzzy_skin_enabled and False" , "enabled": "magic_fuzzy_skin_enabled",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -6985,7 +6984,7 @@
"default_value": 0.3, "default_value": 0.3,
"minimum_value": "0.001", "minimum_value": "0.001",
"maximum_value_warning": "wall_line_width_0", "maximum_value_warning": "wall_line_width_0",
"enabled": "magic_fuzzy_skin_enabled and False", "enabled": "magic_fuzzy_skin_enabled",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -7000,7 +6999,7 @@
"minimum_value_warning": "0.1", "minimum_value_warning": "0.1",
"maximum_value_warning": "10", "maximum_value_warning": "10",
"maximum_value": "2 / magic_fuzzy_skin_thickness", "maximum_value": "2 / magic_fuzzy_skin_thickness",
"enabled": "magic_fuzzy_skin_enabled and False", "enabled": "magic_fuzzy_skin_enabled",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": "children":
@ -7016,7 +7015,7 @@
"minimum_value_warning": "0.1", "minimum_value_warning": "0.1",
"maximum_value_warning": "10", "maximum_value_warning": "10",
"value": "10000 if magic_fuzzy_skin_point_density == 0 else 1 / magic_fuzzy_skin_point_density", "value": "10000 if magic_fuzzy_skin_point_density == 0 else 1 / magic_fuzzy_skin_point_density",
"enabled": "magic_fuzzy_skin_enabled and False", "enabled": "magic_fuzzy_skin_enabled",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
} }

View file

@ -222,7 +222,7 @@ Item
id: updateProfileAction id: updateProfileAction
enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && Cura.MachineManager.activeQualityChangesGroup != null enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && Cura.MachineManager.activeQualityChangesGroup != null
text: catalog.i18nc("@action:inmenu menubar:profile", "&Update profile with current settings/overrides"); text: catalog.i18nc("@action:inmenu menubar:profile", "&Update profile with current settings/overrides");
onTriggered: Cura.ContainerManager.updateQualityChanges(); onTriggered: Cura.ContainerManager.updateQualityChanges()
} }
Action Action

View file

@ -17,61 +17,132 @@ UM.Dialog
property variant catalog: UM.I18nCatalog { name: "cura" } property variant catalog: UM.I18nCatalog { name: "cura" }
minimumHeight: UM.Theme.getSize("small_popup_dialog").height margin: UM.Theme.getSize("default_margin").width
minimumWidth: UM.Theme.getSize("small_popup_dialog").width / 1.5
height: minimumHeight property alias swatchGridColumns: colorSwatchGrid.columns
// In this case we would like to let the content of the dialog determine the size of the dialog
// however with the current implementation of the dialog this is not possible, so instead we calculate
// the size of the dialog ourselves.
minimumWidth: content.width + 4 * margin
minimumHeight:
content.height // content height
+ buttonRow.height // button row height
+ 5 * margin // top and bottom margin and margin between buttons and content
width: minimumWidth width: minimumWidth
height: minimumHeight
property alias color: colorInput.text property alias color: colorInput.text
property var swatchColors: [
"#2161AF", "#57AFB2", "#F7B32D", "#E33D4A", "#C088AD",
"#5D88BE", "#5ABD0E", "#E17239", "#F74E46", "#874AF9",
"#50C2EC", "#8DC15A", "#C3977A", "#CD7776", "#9086BA",
"#FFFFFF", "#D3D3D3", "#9E9E9E", "#5A5A5A", "#000000",
]
margin: UM.Theme.getSize("default_margin").width Component.onCompleted: updateSwatches()
buttonSpacing: UM.Theme.getSize("default_margin").width onSwatchColorsChanged: updateSwatches()
UM.Label function updateSwatches()
{ {
id: colorLabel swatchColorsModel.clear();
font: UM.Theme.getFont("large") for (const swatchColor of base.swatchColors)
text: catalog.i18nc("@label", "Color Code (HEX)") {
swatchColorsModel.append({ swatchColor });
}
} }
TextField Column
{ {
id: colorInput id: content
text: "#FFFFFF" width: childrenRect.width
selectByMouse: true height: childrenRect.height
anchors.top: colorLabel.bottom spacing: UM.Theme.getSize("wide_margin").height
anchors.topMargin: UM.Theme.getSize("default_margin").height
onTextChanged: { GridLayout {
if (!text.startsWith("#")) id: colorSwatchGrid
columns: 5
width: childrenRect.width
height: childrenRect.height
columnSpacing: UM.Theme.getSize("thick_margin").width
rowSpacing: UM.Theme.getSize("thick_margin").height
Repeater
{ {
text = `#${text}`; model: ListModel
{
id: swatchColorsModel
}
delegate: Rectangle
{
color: swatchColor
implicitWidth: UM.Theme.getSize("medium_button_icon").width
implicitHeight: UM.Theme.getSize("medium_button_icon").height
radius: width / 2
UM.RecolorImage
{
anchors.fill: parent
visible: swatchColor == base.color
source: UM.Theme.getIcon("Check", "low")
color: UM.Theme.getColor("checkbox")
}
MouseArea
{
anchors.fill: parent
onClicked: base.color = swatchColor
}
}
}
}
RowLayout
{
width: parent.width
spacing: UM.Theme.getSize("default_margin").width
UM.Label
{
text: catalog.i18nc("@label", "Hex")
}
TextField
{
id: colorInput
Layout.fillWidth: true
text: "#FFFFFF"
selectByMouse: true
onTextChanged: {
if (!text.startsWith("#"))
{
text = `#${text}`;
}
}
validator: RegExpValidator { regExp: /^#([a-fA-F0-9]{0,6})$/ }
}
Rectangle
{
color: base.color
Layout.preferredHeight: parent.height
Layout.preferredWidth: height
} }
} }
validator: RegExpValidator { regExp: /^#([a-fA-F0-9]{0,6})$/ }
} }
Rectangle buttonSpacing: UM.Theme.getSize("thin_margin").width
{
id: swatch
color: base.color
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors {
left: colorInput.right
top: colorInput.top
bottom: colorInput.bottom
}
width: height
}
rightButtons: rightButtons:
[ [
Cura.TertiaryButton {
text: catalog.i18nc("@action:button", "Cancel")
onClicked: base.close()
},
Cura.PrimaryButton { Cura.PrimaryButton {
text: catalog.i18nc("@action:button", "OK") text: catalog.i18nc("@action:button", "OK")
onClicked: base.accept() onClicked: base.accept()
},
Cura.SecondaryButton {
text: catalog.i18nc("@action:button", "Cancel")
onClicked: base.close()
} }
] ]
} }

View file

@ -27,6 +27,11 @@ UM.Dialog
property var fileUrls: [] property var fileUrls: []
property var addToRecent: true property var addToRecent: true
function loadProjectFile(projectFile)
{
UM.WorkspaceFileHandler.readLocalFile(projectFile, base.addToRecent);
}
function loadModelFiles(fileUrls) function loadModelFiles(fileUrls)
{ {
for (var i in fileUrls) for (var i in fileUrls)

View file

@ -21,6 +21,7 @@ Item
property alias font: label.font property alias font: label.font
property alias elide: label.elide property alias elide: label.elide
property real margin: UM.Theme.getSize("narrow_margin").width property real margin: UM.Theme.getSize("narrow_margin").width
property alias wrapMode: label.wrapMode
// These properties can be used in combination with layouts. // These properties can be used in combination with layouts.
readonly property real contentWidth: icon.width + margin + label.contentWidth readonly property real contentWidth: icon.width + margin + label.contentWidth

View file

@ -35,23 +35,24 @@ UM.TooltipArea
watchedProperties: [ "value", "description" ] watchedProperties: [ "value", "description" ]
} }
Label // Title Label UM.Label
{ {
id: titleLabel id: titleLabel
anchors.top: parent.top anchors.top: parent.top
anchors.left: parent.left anchors.left: parent.left
font: UM.Theme.getFont("medium_bold") font: UM.Theme.getFont("medium_bold")
color: UM.Theme.getColor("text")
renderType: Text.NativeRendering
} }
Flickable Flickable
{ {
anchors.top: titleLabel.bottom anchors
anchors.topMargin: UM.Theme.getSize("default_margin").height {
anchors.bottom: parent.bottom top: titleLabel.bottom
anchors.left: parent.left topMargin: UM.Theme.getSize("default_margin").height
anchors.right: parent.right bottom: parent.bottom
left: parent.left
right: parent.right
}
ScrollBar.vertical: UM.ScrollBar {} ScrollBar.vertical: UM.ScrollBar {}
@ -78,10 +79,10 @@ UM.TooltipArea
background: Rectangle background: Rectangle
{ {
color: UM.Theme.getColor("main_background")
anchors.fill: parent anchors.fill: parent
anchors.margins: -border.width //Wrap the border around the parent. anchors.margins: -border.width //Wrap the border around the parent.
color: UM.Theme.getColor("detail_background")
border.color: border.color:
{ {
if (!gcodeTextArea.enabled) if (!gcodeTextArea.enabled)
@ -90,9 +91,9 @@ UM.TooltipArea
} }
if (gcodeTextArea.hovered || gcodeTextArea.activeFocus) if (gcodeTextArea.hovered || gcodeTextArea.activeFocus)
{ {
return UM.Theme.getColor("setting_control_border_highlight") return UM.Theme.getColor("border_main")
} }
return UM.Theme.getColor("setting_control_border") return UM.Theme.getColor("border_field_light")
} }
border.width: UM.Theme.getSize("default_lining").width border.width: UM.Theme.getSize("default_lining").width
} }

View file

@ -77,6 +77,8 @@ UM.TooltipArea
anchors.left: fieldLabel.right anchors.left: fieldLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.leftMargin: UM.Theme.getSize("default_margin").width
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
selectionColor: UM.Theme.getColor("text_selection")
selectedTextColor: UM.Theme.getColor("setting_control_text")
padding: 0 padding: 0
leftPadding: UM.Theme.getSize("narrow_margin").width leftPadding: UM.Theme.getSize("narrow_margin").width
width: numericTextFieldWithUnit.controlWidth width: numericTextFieldWithUnit.controlWidth
@ -107,7 +109,7 @@ UM.TooltipArea
// Validation is OK. // Validation is OK.
if (textFieldWithUnit.hovered || textFieldWithUnit.activeFocus) if (textFieldWithUnit.hovered || textFieldWithUnit.activeFocus)
{ {
return UM.Theme.getColor("border_main_light") return UM.Theme.getColor("border_main")
} }
return UM.Theme.getColor("border_field_light") return UM.Theme.getColor("border_field_light")
} }

View file

@ -69,7 +69,7 @@ ToolButton
{ {
target: background target: background
color: UM.Theme.getColor("setting_control") color: UM.Theme.getColor("setting_control")
liningColor: UM.Theme.getColor("border_main_light") liningColor: UM.Theme.getColor("border_main")
} }
}, },
State State

View file

@ -129,7 +129,7 @@ Item
background: UM.UnderlineBackground background: UM.UnderlineBackground
{ {
id: backgroundItem id: backgroundItem
liningColor: intentSelection.hovered ? UM.Theme.getColor("border_main_light") : UM.Theme.getColor("border_field_light") liningColor: intentSelection.hovered ? UM.Theme.getColor("border_main") : UM.Theme.getColor("border_field_light")
} }
UM.SimpleButton UM.SimpleButton

View file

@ -18,15 +18,15 @@ Button
property string labelText: "" property string labelText: ""
id: button id: button
hoverEnabled: true hoverEnabled: true
leftPadding:UM.Theme.getSize("wide_margin").width leftPadding: UM.Theme.getSize("default_margin").width
implicitWidth: UM.Theme.getSize("menu").width
implicitHeight: UM.Theme.getSize("menu").height + UM.Theme.getSize("narrow_margin").height
background: Rectangle background: Rectangle
{ {
id: backgroundRectangle height: button.height
border.width: UM.Theme.getSize("default_lining").width width: button.width
border.color: button.checked ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" color: button.hovered ? UM.Theme.getColor("background_2") : UM.Theme.getColor("background_1")
color: button.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent"
radius: UM.Theme.getSize("action_button_radius").width
} }
// Workaround to ensure that the mnemonic highlighting happens correctly // Workaround to ensure that the mnemonic highlighting happens correctly
@ -40,11 +40,29 @@ Button
return txt return txt
} }
contentItem: UM.Label contentItem: Item
{ {
id: textLabel height: button.height
text: button.text != "" ? replaceText(button.text) : replaceText(button.labelText) width: button.width
height: contentHeight UM.RecolorImage
color: button.enabled ? UM.Theme.getColor("text") :UM.Theme.getColor("text_inactive") {
id: check
height: UM.Theme.getSize("default_arrow").height
width: height
source: UM.Theme.getIcon("Check", "low")
color: UM.Theme.getColor("setting_control_text")
anchors.verticalCenter: parent.verticalCenter
visible: button.checked
}
UM.Label
{
id: textLabel
text: button.text != "" ? replaceText(button.text) : replaceText(button.labelText)
height: contentHeight
color: button.enabled ? UM.Theme.getColor("text") :UM.Theme.getColor("text_inactive")
anchors.left: check.right
anchors.leftMargin: UM.Theme.getSize("narrow_margin").width
anchors.verticalCenter: parent.verticalCenter
}
} }
} }

View file

@ -130,6 +130,7 @@ Popup
checkable: true checkable: true
visible: model.available visible: model.available
text: model.name + " - " + model.layer_height + " mm" text: model.name + " - " + model.layer_height + " mm"
leftPadding: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("narrow_margin").width
checked: checked:
{ {
if (Cura.MachineManager.hasCustomQuality) if (Cura.MachineManager.hasCustomQuality)
@ -195,6 +196,7 @@ Popup
checkable: true checkable: true
visible: model.available visible: model.available
text: model.name text: model.name
leftPadding: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("narrow_margin").width
checked: checked:
{ {
var active_quality_group = Cura.MachineManager.activeQualityChangesGroup var active_quality_group = Cura.MachineManager.activeQualityChangesGroup
@ -295,13 +297,12 @@ Popup
id: textLabel id: textLabel
text: manageProfilesButton.text text: manageProfilesButton.text
height: contentHeight height: contentHeight
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("narrow_margin").width
} }
UM.Label UM.Label
{ {
id: shortcutLabel id: shortcutLabel
text: Cura.Actions.manageProfiles.shortcut text: Cura.Actions.manageProfiles.shortcut
color: UM.Theme.getColor("text_lighter")
height: contentHeight height: contentHeight
anchors.right: parent.right anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width anchors.rightMargin: UM.Theme.getSize("default_margin").width

View file

@ -39,7 +39,7 @@ RowLayout
} }
font: UM.Theme.getFont("medium") font: UM.Theme.getFont("medium")
elide: Text.ElideMiddle elide: Text.ElideMiddle
wrapMode: Text.NoWrap
UM.SettingPropertyProvider UM.SettingPropertyProvider
{ {
id: layerHeight id: layerHeight

View file

@ -4,7 +4,7 @@
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura

View file

@ -4,7 +4,7 @@
import QtQuick 2.10 import QtQuick 2.10
import QtQuick.Controls 2.4 import QtQuick.Controls 2.4
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Item Item

View file

@ -3,6 +3,7 @@
import QtQuick 2.10 import QtQuick 2.10
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3
import UM 1.5 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura

View file

@ -5,7 +5,7 @@ import QtQuick 2.2
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura

View file

@ -98,7 +98,7 @@ SettingItem
{ {
if(!enabled) if(!enabled)
{ {
return UM.Theme.getColor("checkbox_border") return UM.Theme.getColor("checkbox_border_disabled")
} }
switch (propertyProvider.properties.validationState) switch (propertyProvider.properties.validationState)
{ {
@ -116,7 +116,7 @@ SettingItem
{ {
return UM.Theme.getColor("checkbox_border_hover") return UM.Theme.getColor("checkbox_border_hover")
} }
return UM.Theme.getColor("setting_control_border") return UM.Theme.getColor("checkbox_border")
} }
color: { color: {
@ -138,7 +138,7 @@ SettingItem
// Validation is OK. // Validation is OK.
if (control.containsMouse || control.activeFocus) if (control.containsMouse || control.activeFocus)
{ {
return UM.Theme.getColor("setting_control_highlight") return UM.Theme.getColor("checkbox_hover")
} }
return UM.Theme.getColor("checkbox") return UM.Theme.getColor("checkbox")
} }
@ -150,7 +150,7 @@ SettingItem
height: UM.Theme.getSize("checkbox_mark").height height: UM.Theme.getSize("checkbox_mark").height
width: UM.Theme.getSize("checkbox_mark").width width: UM.Theme.getSize("checkbox_mark").width
sourceSize.height: width sourceSize.height: width
color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text"); color: !enabled ? UM.Theme.getColor("checkbox_mark_disabled") : UM.Theme.getColor("checkbox_mark");
source: UM.Theme.getIcon("Check", "low") source: UM.Theme.getIcon("Check", "low")
opacity: control.checked ? 1 : 0 opacity: control.checked ? 1 : 0
Behavior on opacity { NumberAnimation { duration: 100; } } Behavior on opacity { NumberAnimation { duration: 100; } }

View file

@ -135,7 +135,7 @@ SettingItem
} }
if (control.hovered || control.activeFocus) if (control.hovered || control.activeFocus)
{ {
return UM.Theme.getColor("border_main_light") return UM.Theme.getColor("border_main")
} }
return UM.Theme.getColor("border_field_light") return UM.Theme.getColor("border_field_light")
} }

View file

@ -136,7 +136,7 @@ SettingItem
} }
if (control.hovered || control.activeFocus) if (control.hovered || control.activeFocus)
{ {
return UM.Theme.getColor("border_main_light") return UM.Theme.getColor("border_main")
} }
return UM.Theme.getColor("border_field_light") return UM.Theme.getColor("border_field_light")
} }

View file

@ -36,7 +36,7 @@ SettingItem
{ {
if(!enabled) if(!enabled)
{ {
return UM.Theme.getColor("setting_control_disabled_border") return UM.Theme.getColor("text_field_border_disabled")
} }
switch(propertyProvider.properties.validationState) switch(propertyProvider.properties.validationState)
{ {
@ -52,15 +52,15 @@ SettingItem
//Validation is OK. //Validation is OK.
if(hovered || input.activeFocus) if(hovered || input.activeFocus)
{ {
return UM.Theme.getColor("border_main_light") return UM.Theme.getColor("text_field_border_hovered")
} }
return UM.Theme.getColor("border_field_light") return UM.Theme.getColor("text_field_border")
} }
color: { color: {
if(!enabled) if(!enabled)
{ {
return UM.Theme.getColor("setting_control_disabled") return UM.Theme.getColor("text_field")
} }
switch(propertyProvider.properties.validationState) switch(propertyProvider.properties.validationState)
{ {
@ -76,18 +76,10 @@ SettingItem
return UM.Theme.getColor("setting_validation_ok") return UM.Theme.getColor("setting_validation_ok")
default: default:
return UM.Theme.getColor("setting_control") return UM.Theme.getColor("text_field")
} }
} }
Rectangle
{
anchors.fill: parent
anchors.margins: Math.round(UM.Theme.getSize("default_lining").width)
color: UM.Theme.getColor("setting_control_highlight")
opacity: !control.hovered ? 0 : propertyProvider.properties.validationState == "ValidatorState.Valid" ? 1.0 : 0.35
}
UM.Label UM.Label
{ {
anchors anchors

View file

View file

@ -33,7 +33,7 @@ ComboBox
{ {
name: "highlighted" name: "highlighted"
when: control.hovered || control.activeFocus when: control.hovered || control.activeFocus
PropertyChanges { target: background; liningColor: UM.Theme.getColor("border_main_light")} PropertyChanges { target: background; liningColor: UM.Theme.getColor("border_main")}
} }
] ]

View file

@ -1,4 +1,4 @@
// Copyright (c) 2019 Ultimaker B.V. // Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10 import QtQuick 2.10
@ -13,32 +13,58 @@ import Cura 1.0 as Cura
// //
RadioButton RadioButton
{ {
id: radioButton id: control
font: UM.Theme.getFont("default") font: UM.Theme.getFont("default")
states: [ states: [
State { State {
name: "checked" name: "selected-hover"
when: radioButton.checked when: control.enabled && control.checked && control.hovered
PropertyChanges PropertyChanges
{ {
target: indicator target: indicator_background
color: UM.Theme.getColor("accent_1") color: UM.Theme.getColor("radio_selected")
border.width: 0 border.color: UM.Theme.getColor("radio_border_hover")
} }
}, },
State State {
{ name: "selected"
name: "disabled" when: control.enabled && control.checked
when: !radioButton.enabled PropertyChanges
PropertyChanges { target: indicator; color: UM.Theme.getColor("background_1")} {
target: indicator_background
color: UM.Theme.getColor("radio_selected")
}
}, },
State State {
{ name: "hovered"
name: "highlighted" when: control.enabled && control.hovered
when: radioButton.hovered || radioButton.activeFocus PropertyChanges
PropertyChanges { target: indicator; border.color: UM.Theme.getColor("border_main_light")} {
target: indicator_background
border.color: UM.Theme.getColor("radio_border_hover")
}
},
State {
name: "selected_disabled"
when: !control.enabled && control.checked
PropertyChanges
{
target: indicator_background
color: UM.Theme.getColor("radio_selected_disabled")
border.color: UM.Theme.getColor("radio_border_disabled")
}
},
State {
name: "disabled"
when: !control.enabled
PropertyChanges
{
target: indicator_background
color: UM.Theme.getColor("radio_disabled")
border.color: UM.Theme.getColor("radio_border_disabled")
}
} }
] ]
@ -49,30 +75,35 @@ RadioButton
indicator: Rectangle indicator: Rectangle
{ {
id: indicator_background
implicitWidth: UM.Theme.getSize("radio_button").width implicitWidth: UM.Theme.getSize("radio_button").width
implicitHeight: UM.Theme.getSize("radio_button").height implicitHeight: UM.Theme.getSize("radio_button").height
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.alignWhenCentered: false anchors.alignWhenCentered: false
radius: width / 2 radius: width / 2
color: UM.Theme.getColor("background_2") color: UM.Theme.getColor("radio")
border.width: UM.Theme.getSize("default_lining").width border.width: UM.Theme.getSize("default_lining").width
border.color: UM.Theme.getColor("text_disabled") border.color: UM.Theme.getColor("radio_border")
Rectangle Rectangle
{ {
id: indicator_dot
width: (parent.width / 2) | 0 width: (parent.width / 2) | 0
height: width height: width
anchors.centerIn: parent anchors.centerIn: parent
radius: width / 2 radius: width / 2
color: radioButton.enabled ? UM.Theme.getColor("background_2") : UM.Theme.getColor("background_1") color: control.enabled ? UM.Theme.getColor("radio_dot") : UM.Theme.getColor("radio_dot_disabled")
visible: radioButton.checked visible: control.checked
} }
} }
contentItem: UM.Label contentItem: UM.Label
{ {
leftPadding: radioButton.indicator.width + radioButton.spacing leftPadding: control.indicator.width + control.spacing
text: radioButton.text text: control.text
font: radioButton.font font: control.font
color: control.enabled ? UM.Theme.getColor("radio_text"): UM.Theme.getColor("radio_text_disabled")
} }
} }

View file

@ -1,4 +1,4 @@
// Copyright (c) 2021 Ultimaker B.V. // Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10 import QtQuick 2.10
@ -13,7 +13,7 @@ import Cura 1.1 as Cura
// //
TextField TextField
{ {
id: textField id: control
property alias leftIcon: iconLeft.source property alias leftIcon: iconLeft.source
@ -22,7 +22,7 @@ TextField
hoverEnabled: true hoverEnabled: true
selectByMouse: true selectByMouse: true
font: UM.Theme.getFont("default") font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text") color: UM.Theme.getColor("text_field_text")
renderType: Text.NativeRendering renderType: Text.NativeRendering
selectionColor: UM.Theme.getColor("text_selection") selectionColor: UM.Theme.getColor("text_selection")
leftPadding: iconLeft.visible ? iconLeft.width + UM.Theme.getSize("default_margin").width * 2 : UM.Theme.getSize("thin_margin").width leftPadding: iconLeft.visible ? iconLeft.width + UM.Theme.getSize("default_margin").width * 2 : UM.Theme.getSize("thin_margin").width
@ -31,20 +31,21 @@ TextField
State State
{ {
name: "disabled" name: "disabled"
when: !textField.enabled when: !control.enabled
PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_control_disabled")} PropertyChanges { target: control; color: UM.Theme.getColor("text_field_text_disabled")}
PropertyChanges { target: backgroundRectangle; liningColor: UM.Theme.getColor("text_field_border_disabled")}
}, },
State State
{ {
name: "invalid" name: "invalid"
when: !textField.acceptableInput when: !control.acceptableInput
PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_validation_error_background")} PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_validation_error_background")}
}, },
State State
{ {
name: "hovered" name: "hovered"
when: textField.hovered || textField.activeFocus when: control.hovered || control.activeFocus
PropertyChanges { target: backgroundRectangle; liningColor: UM.Theme.getColor("border_main_light")} PropertyChanges { target: backgroundRectangle; liningColor: UM.Theme.getColor("text_field_border_hovered")}
} }
] ]
@ -66,7 +67,7 @@ TextField
visible: source != "" visible: source != ""
height: UM.Theme.getSize("small_button_icon").height height: UM.Theme.getSize("small_button_icon").height
width: visible ? height : 0 width: visible ? height : 0
color: textField.color color: control.color
} }
} }
} }

View file

@ -13,7 +13,7 @@
"accent_1": [25, 110, 240, 255], "accent_1": [25, 110, 240, 255],
"accent_2": [16, 70, 156, 255], "accent_2": [16, 70, 156, 255],
"border_main": [212, 212, 212, 255], "border_main": [118, 118, 119, 255],
"border_accent_1": [255, 255, 255, 255], "border_accent_1": [255, 255, 255, 255],
"border_accent_2": [16, 70, 156, 255], "border_accent_2": [16, 70, 156, 255],
"border_field": [57, 57, 58, 255], "border_field": [57, 57, 58, 255],
@ -23,7 +23,20 @@
"text_primary_button": [255, 255, 255, 255], "text_primary_button": [255, 255, 255, 255],
"text_secondary_button": [255, 255, 255, 255], "text_secondary_button": [255, 255, 255, 255],
"text_link_hover": [156, 195, 255, 255], "text_link_hover": [156, 195, 255, 255],
"text_lighter": [243, 243, 243, 255] "text_lighter": [243, 243, 243, 255],
"um_green_1": [233, 245, 237, 255],
"um_green_5": [36, 162, 73, 255],
"um_green_9": [31, 44, 36, 255],
"um_red_1": [251, 232, 233, 255],
"um_red_5": [218, 30, 40, 255],
"um_red_9": [59, 31, 33, 255],
"um_orange_1": [255, 235, 221, 255],
"um_orange_5": [252, 123, 30, 255],
"um_orange_9": [64, 45, 32, 255],
"um_yellow_1": [255, 248, 225, 255],
"um_yellow_5": [253, 209, 58, 255],
"um_yellow_9": [64, 58, 36, 255]
}, },
"colors": { "colors": {
@ -140,10 +153,8 @@
"setting_control_disabled_text": [255, 255, 255, 101], "setting_control_disabled_text": [255, 255, 255, 101],
"setting_control_disabled_border": [255, 255, 255, 101], "setting_control_disabled_border": [255, 255, 255, 101],
"setting_unit": [255, 255, 255, 127], "setting_unit": [255, 255, 255, 127],
"setting_validation_error_background": [59, 31, 53, 255], "setting_validation_error_background": "um_red_9",
"setting_validation_error": [212, 31, 53, 255], "setting_validation_warning_background": "um_yellow_9",
"setting_validation_warning_background": [62, 54, 46, 255],
"setting_validation_warning": [245, 166, 35, 255],
"setting_validation_ok": "background_2", "setting_validation_ok": "background_2",
"progressbar_background": [255, 255, 255, 48], "progressbar_background": [255, 255, 255, 48],
@ -155,15 +166,6 @@
"slider_handle": [255, 255, 255, 255], "slider_handle": [255, 255, 255, 255],
"slider_handle_active": [68, 192, 255, 255], "slider_handle_active": [68, 192, 255, 255],
"checkbox": "background_1",
"checkbox_hover": [43, 48, 52, 255],
"checkbox_border": "text_disabled",
"checkbox_border_hover": "border_main",
"checkbox_mark": "text_default",
"checkbox_square": "text_disabled",
"checkbox_text": "text_default",
"checkbox_disabled": "background_2",
"category_background": "background_3", "category_background": "background_3",
"tooltip": "background_2", "tooltip": "background_2",

View file

@ -188,7 +188,20 @@
"text_primary_button": [255, 255, 255, 255], "text_primary_button": [255, 255, 255, 255],
"text_secondary_button": [25, 110, 240, 255], "text_secondary_button": [25, 110, 240, 255],
"text_link_hover": [16, 70, 156, 255], "text_link_hover": [16, 70, 156, 255],
"text_lighter": [108, 108, 108, 255] "text_lighter": [108, 108, 108, 255],
"um_green_1": [233, 245, 237, 255],
"um_green_5": [36, 162, 73, 255],
"um_green_9": [31, 44, 36, 255],
"um_red_1": [251, 232, 233, 255],
"um_red_5": [218, 30, 40, 255],
"um_red_9": [59, 31, 33, 255],
"um_orange_1": [255, 235, 221, 255],
"um_orange_5": [252, 123, 30, 255],
"um_orange_9": [64, 45, 32, 255],
"um_yellow_1": [255, 248, 225, 255],
"um_yellow_5": [253, 209, 58, 255],
"um_yellow_9": [64, 58, 36, 255]
}, },
"colors": { "colors": {
@ -304,10 +317,10 @@
"setting_control_disabled_text": [127, 127, 127, 255], "setting_control_disabled_text": [127, 127, 127, 255],
"setting_control_disabled_border": [127, 127, 127, 255], "setting_control_disabled_border": [127, 127, 127, 255],
"setting_unit": [127, 127, 127, 255], "setting_unit": [127, 127, 127, 255],
"setting_validation_error_background": [255, 66, 60, 255], "setting_validation_error_background": "um_red_1",
"setting_validation_error": [127, 127, 127, 255], "setting_validation_error": "um_red_5",
"setting_validation_warning_background": [255, 145, 62, 255], "setting_validation_warning_background": "um_yellow_1",
"setting_validation_warning": [127, 127, 127, 255], "setting_validation_warning": "um_yellow_5",
"setting_validation_ok": "background_2", "setting_validation_ok": "background_2",
"material_compatibility_warning": [243, 166, 59, 255], "material_compatibility_warning": [243, 166, 59, 255],
@ -324,13 +337,36 @@
"quality_slider_unavailable": [179, 179, 179, 255], "quality_slider_unavailable": [179, 179, 179, 255],
"quality_slider_available": [0, 0, 0, 255], "quality_slider_available": [0, 0, 0, 255],
"checkbox": [255, 255, 255, 255], "checkbox": "background_1",
"checkbox_hover": "border_main", "checkbox_hover": "background_1",
"checkbox_border": [180, 180, 180, 255],
"checkbox_border_hover": [25, 110, 240, 255],
"checkbox_mark": [35, 35, 35, 255],
"checkbox_disabled": "background_2", "checkbox_disabled": "background_2",
"checkbox_text": [0, 12, 26, 255], "checkbox_border": [180, 180, 180, 255],
"checkbox_border_hover": "border_main",
"checkbox_border_disabled": "text_disabled",
"checkbox_mark": "text_default",
"checkbox_mark_disabled": "text_disabled",
"checkbox_square": [180, 180, 180, 255],
"checkbox_text": "text_default",
"checkbox_text_disabled": "text_disabled",
"radio": "background_1",
"radio_disabled": "background_2",
"radio_selected": "accent_1",
"radio_selected_disabled": "text_disabled",
"radio_border": [180, 180, 180, 255],
"radio_border_hover": "border_main",
"radio_border_disabled": "text_disabled",
"radio_dot": "background_1",
"radio_dot_disabled": "background_2",
"radio_text": "text_default",
"radio_text_disabled": "text_disabled",
"text_field": "background_1",
"text_field_border": [180, 180, 180, 255],
"text_field_border_hovered": "border_main",
"text_field_border_disabled": "border_main",
"text_field_text": "text_default",
"text_field_text_disabled": "text_disabled",
"category_background": "background_2", "category_background": "background_2",