Merge pull request #12573 from Ultimaker/CURA-8849_more_intent_fixes

[CURA-8849] more intent fixes
This commit is contained in:
Casper Lamboo 2022-06-29 13:01:09 +02:00 committed by GitHub
commit f4ee4ad05d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 241 additions and 219 deletions

View File

@ -24,6 +24,8 @@ Item
property alias wrapMode: label.wrapMode property alias wrapMode: label.wrapMode
property real spacing: UM.Theme.getSize("narrow_margin").width property real spacing: UM.Theme.getSize("narrow_margin").width
property string tooltipText: ""
// 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
readonly property real minContentWidth: Math.round(icon.width + margin + 0.5 * label.contentWidth) readonly property real minContentWidth: Math.round(icon.width + margin + 0.5 * label.contentWidth)
@ -66,4 +68,13 @@ Item
margins: margin margins: margin
} }
} }
MouseArea
{
enabled: tooltipText != ""
anchors.fill: parent
hoverEnabled: true
onEntered: base.showTooltip(parent, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipText)
onExited: base.hideTooltip()
}
} }

View File

@ -13,7 +13,7 @@ import Cura 1.0 as Cura
Item Item
{ {
id: enableAdhesionRow id: enableAdhesionRow
height: childrenRect.height height: enableAdhesionContainer.height
property real labelColumnWidth: Math.round(width / 3) property real labelColumnWidth: Math.round(width / 3)
property var curaRecommendedMode: Cura.RecommendedMode {} property var curaRecommendedMode: Cura.RecommendedMode {}
@ -47,8 +47,6 @@ Item
id: enableAdhesionCheckBox id: enableAdhesionCheckBox
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
property alias _hovered: adhesionMouseArea.containsMouse
//: Setting enable printing build-plate adhesion helper checkbox //: Setting enable printing build-plate adhesion helper checkbox
enabled: recommendedPrintSetup.settingsEnabled enabled: recommendedPrintSetup.settingsEnabled
@ -60,22 +58,25 @@ Item
id: adhesionMouseArea id: adhesionMouseArea
anchors.fill: parent anchors.fill: parent
hoverEnabled: true hoverEnabled: true
// propagateComposedEvents used on adhesionTooltipMouseArea does not work with Controls Components.
onClicked: // It only works with other MouseAreas, so this is required
{ onClicked: curaRecommendedMode.setAdhesion(!parent.checked)
curaRecommendedMode.setAdhesion(!parent.checked)
}
onEntered:
{
base.showTooltip(enableAdhesionCheckBox, Qt.point(-enableAdhesionContainer.x - UM.Theme.getSize("thick_margin").width, 0),
catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards."));
}
onExited: base.hideTooltip()
} }
} }
} }
MouseArea
{
id: adhesionTooltipMouseArea
anchors.fill: parent
propagateComposedEvents: true
hoverEnabled: true
onEntered:base.showTooltip(enableAdhesionCheckBox, Qt.point(-enableAdhesionContainer.x - UM.Theme.getSize("thick_margin").width, 0),
catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards."));
onExited: base.hideTooltip()
}
UM.SettingPropertyProvider UM.SettingPropertyProvider
{ {
id: platformAdhesionType id: platformAdhesionType

View File

@ -65,6 +65,7 @@ Item
font: UM.Theme.getFont("medium") font: UM.Theme.getFont("medium")
width: labelColumnWidth width: labelColumnWidth
iconSize: UM.Theme.getSize("medium_button_icon").width iconSize: UM.Theme.getSize("medium_button_icon").width
tooltipText: catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top.")
} }
Item Item
@ -102,7 +103,6 @@ Item
id: backgroundLine id: backgroundLine
height: UM.Theme.getSize("print_setup_slider_groove").height height: UM.Theme.getSize("print_setup_slider_groove").height
width: parent.width - UM.Theme.getSize("print_setup_slider_handle").width width: parent.width - UM.Theme.getSize("print_setup_slider_handle").width
implicitWidth: width
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable")

View File

@ -62,7 +62,7 @@ Item
{ {
width: parent.width width: parent.width
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: UM.Theme.getSize("thin_margin").height Layout.topMargin: UM.Theme.getSize("default_margin").height
Layout.bottomMargin: UM.Theme.getSize("thin_margin").height Layout.bottomMargin: UM.Theme.getSize("thin_margin").height
} }

View File

@ -22,6 +22,7 @@ Item
id: resolutionTitle id: resolutionTitle
anchors.top: parent.top anchors.top: parent.top
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: - UM.Theme.getSize("thick_lining").width
source: UM.Theme.getIcon("PrintQuality") source: UM.Theme.getIcon("PrintQuality")
text: catalog.i18nc("@label", "Resolution") text: catalog.i18nc("@label", "Resolution")
width: labelColumnWidth width: labelColumnWidth

View File

@ -14,39 +14,41 @@ import Cura 1.0 as Cura
Item Item
{ {
id: enableSupportRow id: enableSupportRow
height: childrenRect.height height: UM.Theme.getSize("print_setup_big_item").height
property real labelColumnWidth: Math.round(width / 3) property real labelColumnWidth: Math.round(width / 3)
Cura.IconWithText
{
id: enableSupportRowTitle
anchors.top: parent.top
anchors.left: parent.left
visible: enableSupportCheckBox.visible
source: UM.Theme.getIcon("Support")
text: catalog.i18nc("@label", "Support")
font: UM.Theme.getFont("medium")
width: labelColumnWidth
iconSize: UM.Theme.getSize("medium_button_icon").width
}
Item Item
{ {
id: enableSupportContainer id: enableSupportContainer
height: enableSupportCheckBox.height width: labelColumnWidth + enableSupportCheckBox.width
anchors anchors
{ {
left: enableSupportRowTitle.right left: parent.left
right: parent.right top: parent.top
verticalCenter: enableSupportRowTitle.verticalCenter bottom: parent.bottom
rightMargin: UM.Theme.getSize("thick_margin").width
}
Cura.IconWithText
{
id: enableSupportRowTitle
anchors.left: parent.left
visible: enableSupportCheckBox.visible
source: UM.Theme.getIcon("Support")
text: catalog.i18nc("@label", "Support")
font: UM.Theme.getFont("medium")
width: labelColumnWidth
iconSize: UM.Theme.getSize("medium_button_icon").width
tooltipText: catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.")
} }
UM.CheckBox UM.CheckBox
{ {
id: enableSupportCheckBox id: enableSupportCheckBox
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.left: enableSupportRowTitle.right
property alias _hovered: enableSupportMouseArea.containsMouse property alias _hovered: enableSupportMouseArea.containsMouse
@ -60,158 +62,220 @@ Item
id: enableSupportMouseArea id: enableSupportMouseArea
anchors.fill: parent anchors.fill: parent
hoverEnabled: true hoverEnabled: true
// propagateComposedEvents used on supportToolTipMouseArea does not work with Controls Components.
// It only works with other MouseAreas, so this is required
onClicked: supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True") onClicked: supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True")
onEntered:
{
base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportContainer.x - UM.Theme.getSize("thick_margin").width, 0),
catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing."))
}
onExited: base.hideTooltip()
} }
} }
ComboBox MouseArea
{ {
id: supportExtruderCombobox id: supportToolTipMouseArea
anchors.fill: parent
propagateComposedEvents: true
hoverEnabled: true
onEntered: base.showTooltip(enableSupportContainer, Qt.point(-enableSupportContainer.x - UM.Theme.getSize("thick_margin").width, 0),
catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing."))
onExited: base.hideTooltip()
}
}
height: UM.Theme.getSize("print_setup_big_item").height ComboBox
anchors {
id: supportExtruderCombobox
height: UM.Theme.getSize("print_setup_big_item").height
anchors
{
left: enableSupportContainer.right
right: parent.right
leftMargin: UM.Theme.getSize("default_margin").width
rightMargin: UM.Theme.getSize("thick_margin").width
verticalCenter: parent.verticalCenter
}
enabled: recommendedPrintSetup.settingsEnabled
visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1)
textRole: "name" // this solves that the combobox isn't populated in the first time Cura is started
model: extruderModel
// knowing the extruder position, try to find the item index in the model
function getIndexByPosition(position)
{
var itemIndex = -1 // if position is not found, return -1
for (var item_index in model.items)
{ {
left: enableSupportCheckBox.right var item = model.getItem(item_index)
right: parent.right if (item.index == position)
leftMargin: UM.Theme.getSize("thick_margin").width
rightMargin: UM.Theme.getSize("thick_margin").width
verticalCenter: parent.verticalCenter
}
enabled: recommendedPrintSetup.settingsEnabled
visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1)
textRole: "name" // this solves that the combobox isn't populated in the first time Cura is started
model: extruderModel
// knowing the extruder position, try to find the item index in the model
function getIndexByPosition(position)
{
var itemIndex = -1 // if position is not found, return -1
for (var item_index in model.items)
{ {
var item = model.getItem(item_index) itemIndex = item_index
if (item.index == position) break
{
itemIndex = item_index
break
}
}
return itemIndex
}
onActivated:
{
if (model.getItem(index).enabled)
{
forceActiveFocus();
supportExtruderNr.setPropertyValue("value", model.getItem(index).index);
} else
{
currentIndex = supportExtruderNr.properties.value; // keep the old value
} }
} }
return itemIndex
}
currentIndex: (supportExtruderNr.properties.value !== undefined) ? supportExtruderNr.properties.value : 0 onActivated:
{
property string color: "#fff" if (model.getItem(index).enabled)
Connections
{ {
target: extruderModel forceActiveFocus();
function onModelChanged() supportExtruderNr.setPropertyValue("value", model.getItem(index).index);
{ } else
var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color {
if (maybeColor) currentIndex = supportExtruderNr.properties.value; // keep the old value
{
supportExtruderCombobox.color = maybeColor
}
}
} }
onCurrentIndexChanged: }
currentIndex: (supportExtruderNr.properties.value !== undefined) ? supportExtruderNr.properties.value : 0
property string color: "#fff"
Connections
{
target: extruderModel
function onModelChanged()
{ {
var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
if(maybeColor) if (maybeColor)
{ {
supportExtruderCombobox.color = maybeColor supportExtruderCombobox.color = maybeColor
} }
} }
}
Binding onCurrentIndexChanged:
{
var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
if(maybeColor)
{ {
target: supportExtruderCombobox supportExtruderCombobox.color = maybeColor
property: "currentIndex"
value: supportExtruderCombobox.getIndexByPosition(supportExtruderNr.properties.value)
// Sometimes when the value is already changed, the model is still being built.
// The when clause ensures that the current index is not updated when this happens.
when: supportExtruderCombobox.model.count > 0
} }
}
indicator: UM.ColorImage Binding
{
target: supportExtruderCombobox
property: "currentIndex"
value: supportExtruderCombobox.getIndexByPosition(supportExtruderNr.properties.value)
// Sometimes when the value is already changed, the model is still being built.
// The when clause ensures that the current index is not updated when this happens.
when: supportExtruderCombobox.model.count > 0
}
indicator: UM.ColorImage
{
id: downArrow
x: supportExtruderCombobox.width - width - supportExtruderCombobox.rightPadding
y: supportExtruderCombobox.topPadding + Math.round((supportExtruderCombobox.availableHeight - height) / 2)
source: UM.Theme.getIcon("ChevronSingleDown")
width: UM.Theme.getSize("standard_arrow").width
height: UM.Theme.getSize("standard_arrow").height
color: UM.Theme.getColor("setting_control_button")
}
background: Rectangle
{
color:
{ {
id: downArrow if (!enabled)
x: supportExtruderCombobox.width - width - supportExtruderCombobox.rightPadding {
y: supportExtruderCombobox.topPadding + Math.round((supportExtruderCombobox.availableHeight - height) / 2) return UM.Theme.getColor("setting_control_disabled")
}
if (supportExtruderCombobox.hovered || base.activeFocus)
{
return UM.Theme.getColor("setting_control_highlight")
}
return UM.Theme.getColor("setting_control")
}
radius: UM.Theme.getSize("setting_control_radius").width
border.width: UM.Theme.getSize("default_lining").width
border.color:
{
if (!enabled)
{
return UM.Theme.getColor("setting_control_disabled_border")
}
if (supportExtruderCombobox.hovered || supportExtruderCombobox.activeFocus)
{
return UM.Theme.getColor("setting_control_border_highlight")
}
return UM.Theme.getColor("setting_control_border")
}
}
source: UM.Theme.getIcon("ChevronSingleDown") contentItem: UM.Label
width: UM.Theme.getSize("standard_arrow").width {
height: UM.Theme.getSize("standard_arrow").height anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
anchors.right: downArrow.left
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
color: UM.Theme.getColor("setting_control_button") text: supportExtruderCombobox.currentText
textFormat: Text.PlainText
color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
elide: Text.ElideLeft
background: Rectangle
{
id: swatch
height: Math.round(parent.height / 2)
width: height
radius: Math.round(width / 2)
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
color: supportExtruderCombobox.color
}
}
popup: Popup
{
y: supportExtruderCombobox.height - UM.Theme.getSize("default_lining").height
width: supportExtruderCombobox.width
implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width
padding: UM.Theme.getSize("default_lining").width
contentItem: ListView
{
implicitHeight: contentHeight
ScrollBar.vertical: UM.ScrollBar {}
clip: true
model: supportExtruderCombobox.popup.visible ? supportExtruderCombobox.delegateModel : null
currentIndex: supportExtruderCombobox.highlightedIndex
} }
background: Rectangle background: Rectangle
{ {
color: color: UM.Theme.getColor("setting_control")
{ border.color: UM.Theme.getColor("setting_control_border")
if (!enabled)
{
return UM.Theme.getColor("setting_control_disabled")
}
if (supportExtruderCombobox.hovered || base.activeFocus)
{
return UM.Theme.getColor("setting_control_highlight")
}
return UM.Theme.getColor("setting_control")
}
radius: UM.Theme.getSize("setting_control_radius").width
border.width: UM.Theme.getSize("default_lining").width
border.color:
{
if (!enabled)
{
return UM.Theme.getColor("setting_control_disabled_border")
}
if (supportExtruderCombobox.hovered || supportExtruderCombobox.activeFocus)
{
return UM.Theme.getColor("setting_control_border_highlight")
}
return UM.Theme.getColor("setting_control_border")
}
} }
}
delegate: ItemDelegate
{
width: supportExtruderCombobox.width - 2 * UM.Theme.getSize("default_lining").width
height: supportExtruderCombobox.height
highlighted: supportExtruderCombobox.highlightedIndex == index
contentItem: UM.Label contentItem: UM.Label
{ {
anchors.verticalCenter: parent.verticalCenter anchors.fill: parent
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
anchors.right: downArrow.left anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width
text: model.name
color: model.enabled ? UM.Theme.getColor("setting_control_text"): UM.Theme.getColor("action_button_disabled_text")
elide: Text.ElideRight
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
text: supportExtruderCombobox.currentText
textFormat: Text.PlainText
color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
elide: Text.ElideLeft
background: Rectangle background: Rectangle
{ {
id: swatch id: swatch
@ -222,71 +286,14 @@ Item
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.rightMargin: UM.Theme.getSize("thin_margin").width anchors.rightMargin: UM.Theme.getSize("thin_margin").width
color: supportExtruderCombobox.color color: supportExtruderCombobox.model.getItem(index).color
} }
} }
popup: Popup background: Rectangle
{ {
y: supportExtruderCombobox.height - UM.Theme.getSize("default_lining").height color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent"
width: supportExtruderCombobox.width border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent"
implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width
padding: UM.Theme.getSize("default_lining").width
contentItem: ListView
{
implicitHeight: contentHeight
ScrollBar.vertical: UM.ScrollBar {}
clip: true
model: supportExtruderCombobox.popup.visible ? supportExtruderCombobox.delegateModel : null
currentIndex: supportExtruderCombobox.highlightedIndex
}
background: Rectangle
{
color: UM.Theme.getColor("setting_control")
border.color: UM.Theme.getColor("setting_control_border")
}
}
delegate: ItemDelegate
{
width: supportExtruderCombobox.width - 2 * UM.Theme.getSize("default_lining").width
height: supportExtruderCombobox.height
highlighted: supportExtruderCombobox.highlightedIndex == index
contentItem: UM.Label
{
anchors.fill: parent
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width
text: model.name
color: model.enabled ? UM.Theme.getColor("setting_control_text"): UM.Theme.getColor("action_button_disabled_text")
elide: Text.ElideRight
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
background: Rectangle
{
id: swatch
height: Math.round(parent.height / 2)
width: height
radius: Math.round(width / 2)
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
color: supportExtruderCombobox.model.getItem(index).color
}
}
background: Rectangle
{
color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent"
border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent"
}
} }
} }
} }

View File

@ -209,7 +209,7 @@ Item
height: UM.Theme.getSize("small_button_icon").height height: UM.Theme.getSize("small_button_icon").height
width: height width: height
color: UM.Theme.getColor("setting_control_button") color: UM.Theme.getColor("accent_1")
hoverColor: UM.Theme.getColor("setting_control_button_hover") hoverColor: UM.Theme.getColor("setting_control_button_hover")
iconSource: UM.Theme.getIcon("ArrowReset") iconSource: UM.Theme.getIcon("ArrowReset")

View File

@ -56,28 +56,30 @@ ComboBox
background: UM.UnderlineBackground background: UM.UnderlineBackground
{ {
//Rectangle for highlighting when this combobox needs to pulse. // Rectangle for highlighting when this combobox needs to pulse.
Rectangle Rectangle
{ {
anchors.fill: parent anchors.fill: parent
opacity: 0 opacity: 0
color: UM.Theme.getColor("warning") color: "transparent"
border.color: UM.Theme.getColor("text_field_border_active")
border.width: UM.Theme.getSize("default_lining").width
SequentialAnimation on opacity SequentialAnimation on opacity
{ {
id: pulseAnimation id: pulseAnimation
running: false running: false
loops: 1 loops: 2
alwaysRunToEnd: true
PropertyAnimation PropertyAnimation
{ {
to: 1 to: 1
duration: 300 duration: 150
} }
PropertyAnimation PropertyAnimation
{ {
to: 0 to: 0
duration : 2000 duration : 150
} }
} }
} }