Cura/resources/qml/SidebarSimple.qml
fieldOfView 85370dad87 Fix indent
CURA-340
2016-05-26 09:42:16 +02:00

420 lines
15 KiB
QML

// Copyright (c) 2015 Ultimaker B.V.
// Cura is released under the terms of the AGPLv3 or higher.
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
import UM 1.2 as UM
import Cura 1.0 as Cura
Item
{
id: base;
signal showTooltip(Item item, point location, string text);
signal hideTooltip();
property Action configureSettings;
property variant minimumPrintTime: PrintInformation.minimumPrintTime;
property variant maximumPrintTime: PrintInformation.maximumPrintTime;
Component.onCompleted: PrintInformation.enabled = true
Component.onDestruction: PrintInformation.enabled = false
UM.I18nCatalog { id: catalog; name:"cura"}
Rectangle{
id: infillCellLeft
anchors.top: parent.top
anchors.left: parent.left
width: base.width/100* 35 - UM.Theme.getSize("default_margin").width
height: childrenRect.height
Label{
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
}
}
Flow {
id: infillCellRight
height: childrenRect.height;
width: base.width / 100 * 65
spacing: UM.Theme.getSize("default_margin").width
anchors.left: infillCellLeft.right
anchors.top: infillCellLeft.top
Repeater {
id: infillListView
property int activeIndex: {
var density = parseInt(infillDensity.properties.value)
for(var i = 0; i < infillModel.count; ++i)
{
if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax )
{
return i;
}
}
return -1;
}
model: infillModel;
Item {
width: childrenRect.width;
height: childrenRect.height;
Rectangle{
id: infillIconLining
width: (infillCellRight.width - 3 * UM.Theme.getSize("default_margin").width) / 4;
height: width
border.color: {
if(infillListView.activeIndex == index)
{
return UM.Theme.getColor("setting_control_selected")
}
else if(mousearea.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: infillListView.activeIndex == index ? UM.Theme.getColor("setting_control_selected") : "transparent"
UM.RecolorImage {
id: infillIcon
anchors.fill: parent;
anchors.margins: UM.Theme.getSize("infill_button_margin").width
sourceSize.width: width
sourceSize.height: width
source: UM.Theme.getIcon(model.icon);
color: (infillListView.activeIndex == index) ? UM.Theme.getColor("text_white") : UM.Theme.getColor("text")
}
MouseArea {
id: mousearea
anchors.fill: parent
hoverEnabled: true
onClicked: {
if (infillListView.activeIndex != index)
{
infillDensity.setPropertyValue("value", model.percentage)
}
}
onEntered: {
base.showTooltip(infillCellRight, Qt.point(-infillCellRight.x, 0), model.text);
}
onExited: {
base.hideTooltip();
}
}
}
Label{
id: infillLabel
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
}
}
}
ListModel {
id: infillModel
Component.onCompleted:
{
infillModel.append({
name: catalog.i18nc("@label", "Hollow"),
percentage: 0,
percentageMin: -1,
percentageMax: 0,
text: catalog.i18nc("@label", "No (0%) infill will leave your model hollow at the cost of low strength"),
icon: "hollow"
})
infillModel.append({
name: catalog.i18nc("@label", "Light"),
percentage: 20,
percentageMin: 0,
percentageMax: 30,
text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength"),
icon: "sparse"
})
infillModel.append({
name: catalog.i18nc("@label", "Dense"),
percentage: 50,
percentageMin: 30,
percentageMax: 70,
text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength"),
icon: "dense"
})
infillModel.append({
name: catalog.i18nc("@label", "Solid"),
percentage: 100,
percentageMin: 70,
percentageMax: 100,
text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid"),
icon: "solid"
})
}
}
}
Rectangle {
id: helpersCell
anchors.top: infillCellRight.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left
anchors.right: parent.right
height: childrenRect.height
Label{
id: adhesionHelperLabel
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: brimCheckBox.verticalCenter
width: parent.width/100*35 - 3 * UM.Theme.getSize("default_margin").width
//: Bed adhesion label
text: catalog.i18nc("@label:listbox","Bed Adhesion:");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
CheckBox{
id: brimCheckBox
property bool hovered_ex: false
anchors.top: parent.top
anchors.left: adhesionHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
//: Setting enable skirt adhesion checkbox
text: catalog.i18nc("@option:check","Print Brim");
style: UM.Theme.styles.checkbox;
checked: platformAdhesionType.properties.value == "brim"
MouseArea {
anchors.fill: parent
hoverEnabled: true
onClicked:
{
platformAdhesionType.setPropertyValue("value", !parent.checked ? "brim" : "skirt")
}
onEntered:
{
parent.hovered_ex = true
base.showTooltip(brimCheckBox, Qt.point(-brimCheckBox.x, 0),
catalog.i18nc("@label", "Enable printing a brim. This will add a single-layer-thick flat area around your object which is easy to cut off afterwards."));
}
onExited:
{
parent.hovered_ex = false
base.hideTooltip();
}
}
}
Label{
id: supportHelperLabel
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: supportCheckBox.verticalCenter
width: parent.width/100*35 - 3 * UM.Theme.getSize("default_margin").width
//: Support label
text: catalog.i18nc("@label:listbox","Support:");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
CheckBox{
id: supportCheckBox
visible: machineExtruderCount.properties.value <= 1
property bool hovered_ex: false
anchors.top: brimCheckBox.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: supportHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
//: Setting enable support checkbox
text: catalog.i18nc("@option:check","Print Support Structure");
style: UM.Theme.styles.checkbox;
checked: supportEnabled.properties.value == "True"
MouseArea {
anchors.fill: parent
hoverEnabled: true
onClicked:
{
supportEnabled.setPropertyValue("value", !parent.checked)
}
onEntered:
{
parent.hovered_ex = true
base.showTooltip(supportCheckBox, Qt.point(-supportCheckBox.x, 0),
catalog.i18nc("@label", "Enable printing support structures. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air."));
}
onExited:
{
parent.hovered_ex = false
base.hideTooltip();
}
}
}
ComboBox {
id: supportExtruderCombobox
visible: machineExtruderCount.properties.value > 1
model: extruderModel
anchors.top: brimCheckBox.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: supportHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
width: parent.width/100*45
style: UM.Theme.styles.combobox
property bool hovered_ex: false
currentIndex: supportEnabled.properties.value == "True" ? parseFloat(supportExtruderNr.properties.value) + 1 : 0
onActivated: {
if(index==0) {
supportEnabled.setPropertyValue("value", false);
} else {
supportEnabled.setPropertyValue("value", true);
supportExtruderNr.setPropertyValue("value", index - 1);
}
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.NoButton
onEntered:
{
parent.hovered_ex = true
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:
{
parent.hovered_ex = false
base.hideTooltip();
}
}
}
ListModel {
id: extruderModel
Component.onCompleted: populateExtruderModel()
}
Connections
{
id: machineChange
target: Cura.MachineManager
onGlobalContainerChanged: populateExtruderModel()
}
}
function populateExtruderModel()
{
extruderModel.clear();
extruderModel.append({
text: catalog.i18nc("@label", "Don't print support")
})
for(var extruder = 0; extruder < machineExtruderCount.properties.value ; extruder++) {
extruderModel.append({
text: catalog.i18nc("@label", "Print using Extruder %1").arg(extruder + 1)
})
}
}
Rectangle {
id: tipsCell
anchors.top: helpersCell.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left
width: parent.width
height: childrenRect.height
Label{
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? 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)
}
}
UM.SettingPropertyProvider
{
id: infillDensity
containerStackId: Cura.MachineManager.activeMachineId
key: "infill_sparse_density"
watchedProperties: [ "value" ]
storeIndex: 0
onPropertiesChanged: console.log(properties.value)
}
UM.SettingPropertyProvider
{
id: platformAdhesionType
containerStackId: Cura.MachineManager.activeMachineId
key: "adhesion_type"
watchedProperties: [ "value" ]
storeIndex: 0
}
UM.SettingPropertyProvider
{
id: supportEnabled
containerStackId: Cura.MachineManager.activeMachineId
key: "support_enable"
watchedProperties: [ "value" ]
storeIndex: 0
}
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: "support_extruder_nr"
watchedProperties: [ "value" ]
storeIndex: 0
}
}