Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml
2018-12-13 14:12:23 +01:00

205 lines
6.6 KiB
QML

// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import UM 1.2 as UM
import Cura 1.0 as Cura
//
// Enable support
//
Item
{
id: enableSupportRow
height: childrenRect.height
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("category_support")
text: catalog.i18nc("@label", "Support")
width: labelColumnWidth
}
Item
{
id: enableSupportContainer
height: enableSupportCheckBox.height
anchors
{
left: enableSupportRowTitle.right
right: parent.right
verticalCenter: enableSupportRowTitle.verticalCenter
}
CheckBox
{
id: enableSupportCheckBox
anchors.verticalCenter: parent.verticalCenter
property alias _hovered: enableSupportMouseArea.containsMouse
style: UM.Theme.styles.checkbox
enabled: recommendedPrintSetup.settingsEnabled
visible: supportEnabled.properties.enabled == "True"
checked: supportEnabled.properties.value == "True"
MouseArea
{
id: enableSupportMouseArea
anchors.fill: parent
hoverEnabled: 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
{
id: supportExtruderCombobox
height: UM.Theme.getSize("print_setup_big_item").height
anchors
{
left: enableSupportCheckBox.right
right: parent.right
leftMargin: UM.Theme.getSize("thick_margin").width
rightMargin: UM.Theme.getSize("thick_margin").width
verticalCenter: parent.verticalCenter
}
style: UM.Theme.styles.combobox_color
enabled: recommendedPrintSetup.settingsEnabled
visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1)
textRole: "text" // this solves that the combobox isn't populated in the first time Cura is started
model: extruderModel
property alias _hovered: supportExtruderMouseArea.containsMouse
property string color_override: "" // for manually setting values
property string color: // is evaluated automatically, but the first time is before extruderModel being filled
{
var current_extruder = extruderModel.get(currentIndex)
color_override = ""
if (current_extruder === undefined) return ""
return (current_extruder.color) ? current_extruder.color : ""
}
currentIndex:
{
if (supportExtruderNr.properties == null)
{
return Cura.MachineManager.defaultExtruderPosition
}
else
{
var extruder = parseInt(supportExtruderNr.properties.value)
if ( extruder === -1)
{
return Cura.MachineManager.defaultExtruderPosition
}
return extruder;
}
}
onActivated: supportExtruderNr.setPropertyValue("value", String(index))
MouseArea
{
id: supportExtruderMouseArea
anchors.fill: parent
hoverEnabled: true
enabled: recommendedPrintSetup.settingsEnabled
acceptedButtons: Qt.NoButton
onEntered:
{
base.showTooltip(supportExtruderCombobox, Qt.point(-enableSupportContainer.x - supportExtruderCombobox.x - UM.Theme.getSize("thick_margin").width, 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
}
}
}
}
ListModel
{
id: extruderModel
Component.onCompleted: populateExtruderModel()
}
//: Model used to populate the extrudelModel
property var extruders: CuraApplication.getExtrudersModel()
Connections
{
target: extruders
onModelChanged: populateExtruderModel()
}
UM.SettingPropertyProvider
{
id: supportEnabled
containerStack: Cura.MachineManager.activeMachine
key: "support_enable"
watchedProperties: [ "value", "enabled", "description" ]
storeIndex: 0
}
UM.SettingPropertyProvider
{
id: supportExtruderNr
containerStack: Cura.MachineManager.activeMachine
key: "support_extruder_nr"
watchedProperties: [ "value" ]
storeIndex: 0
}
UM.SettingPropertyProvider
{
id: machineExtruderCount
containerStack: Cura.MachineManager.activeMachine
key: "machine_extruder_count"
watchedProperties: ["value"]
storeIndex: 0
}
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()
}
}