mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-24 07:03:56 -06:00
Added "optional_extruder" setting type
CURA-3814
This commit is contained in:
parent
4d853d5d52
commit
20cb3ea01f
4 changed files with 181 additions and 1 deletions
153
resources/qml/Settings/SettingOptionalExtruder.qml
Normal file
153
resources/qml/Settings/SettingOptionalExtruder.qml
Normal file
|
@ -0,0 +1,153 @@
|
|||
// Copyright (c) 2016 Ultimaker B.V.
|
||||
// Uranium is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.1
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
|
||||
import UM 1.1 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
SettingItem
|
||||
{
|
||||
id: base
|
||||
|
||||
contents: ComboBox
|
||||
{
|
||||
id: control
|
||||
anchors.fill: parent
|
||||
|
||||
model: Cura.ExtrudersModel
|
||||
{
|
||||
onModelChanged: control.color = getItem(control.currentIndex).color
|
||||
useOptionalExtruder: true
|
||||
}
|
||||
|
||||
textRole: "name"
|
||||
|
||||
onActivated:
|
||||
{
|
||||
forceActiveFocus();
|
||||
propertyProvider.setPropertyValue("value", model.getItem(index).index);
|
||||
}
|
||||
|
||||
Binding
|
||||
{
|
||||
target: control
|
||||
property: "currentIndex"
|
||||
value:
|
||||
{
|
||||
if(propertyProvider.properties.value == -1)
|
||||
{
|
||||
return control.model.items.length - 1
|
||||
}
|
||||
return propertyProvider.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: control.model.items.length > 0
|
||||
}
|
||||
|
||||
MouseArea
|
||||
{
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.NoButton
|
||||
onWheel: wheel.accepted = true;
|
||||
}
|
||||
|
||||
property string color: "#fff"
|
||||
|
||||
Binding
|
||||
{
|
||||
// We override the color property's value when the ExtruderModel changes. So we need to use an
|
||||
// explicit binding here otherwise we do not handle value changes after the model changes.
|
||||
target: control
|
||||
property: "color"
|
||||
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : ""
|
||||
}
|
||||
|
||||
style: ComboBoxStyle
|
||||
{
|
||||
background: Rectangle
|
||||
{
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled");
|
||||
}
|
||||
if(control.hovered || base.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight");
|
||||
}
|
||||
else
|
||||
{
|
||||
return UM.Theme.getColor("setting_control");
|
||||
}
|
||||
}
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color:
|
||||
{
|
||||
if(!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border");
|
||||
}
|
||||
if(control.hovered || base.activeFocus)
|
||||
{
|
||||
UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
label: Item
|
||||
{
|
||||
Rectangle
|
||||
{
|
||||
id: swatch
|
||||
height: UM.Theme.getSize("setting_control").height / 2
|
||||
width: height
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border")
|
||||
|
||||
color: control.color
|
||||
}
|
||||
Label
|
||||
{
|
||||
anchors
|
||||
{
|
||||
left: swatch.right;
|
||||
right: arrow.left;
|
||||
verticalCenter: parent.verticalCenter
|
||||
margins: UM.Theme.getSize("default_lining").width
|
||||
}
|
||||
width: parent.width - swatch.width;
|
||||
|
||||
text: control.currentText
|
||||
font: UM.Theme.getFont("default")
|
||||
color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
|
||||
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: arrow
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
source: UM.Theme.getIcon("arrow_bottom")
|
||||
width: UM.Theme.getSize("standard_arrow").width
|
||||
height: UM.Theme.getSize("standard_arrow").height
|
||||
sourceSize.width: width + 5
|
||||
sourceSize.height: width + 5
|
||||
|
||||
color: UM.Theme.getColor("setting_control_text")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -195,7 +195,7 @@ Item
|
|||
//Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989
|
||||
//In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes,
|
||||
//causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely.
|
||||
asynchronous: model.type != "enum" && model.type != "extruder"
|
||||
asynchronous: model.type != "enum" && model.type != "extruder" && model.type != "optional_extruder"
|
||||
active: model.type != undefined
|
||||
|
||||
source:
|
||||
|
@ -218,6 +218,8 @@ Item
|
|||
return "SettingTextField.qml"
|
||||
case "category":
|
||||
return "SettingCategory.qml"
|
||||
case "optional_extruder":
|
||||
return "SettingOptionalExtruder.qml"
|
||||
default:
|
||||
return "SettingUnknown.qml"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue