mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-30 15:54:32 +08:00

For this I had to implement functionality in ActionButton to be able to display the icon on either side. Contributes to issue CURA-5876.
205 lines
6.0 KiB
QML
205 lines
6.0 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 2.0
|
|
import QtQuick.Controls.Styles 1.4
|
|
import QtQuick.Layouts 1.11
|
|
|
|
import UM 1.2 as UM
|
|
import Cura 1.0 as Cura
|
|
|
|
|
|
/**
|
|
* Menu that allows you to select the configuration of the current printer, such
|
|
* as the nozzle sizes and materials in each extruder.
|
|
*/
|
|
Cura.ExpandableComponent
|
|
{
|
|
id: base
|
|
|
|
Cura.ExtrudersModel
|
|
{
|
|
id: extrudersModel
|
|
}
|
|
|
|
UM.I18nCatalog
|
|
{
|
|
id: catalog
|
|
name: "cura"
|
|
}
|
|
|
|
iconSource: expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left")
|
|
headerItem: Item
|
|
{
|
|
// Horizontal list that shows the extruders
|
|
ListView
|
|
{
|
|
id: extrudersList
|
|
|
|
orientation: ListView.Horizontal
|
|
anchors.fill: parent
|
|
model: extrudersModel
|
|
|
|
delegate: Item
|
|
{
|
|
height: parent.height
|
|
width: Math.round(ListView.view.width / extrudersModel.rowCount())
|
|
|
|
// Extruder icon. Shows extruder index and has the same color as the active material.
|
|
Cura.ExtruderIcon
|
|
{
|
|
id: extruderIcon
|
|
materialColor: model.color
|
|
extruderEnabled: model.enabled
|
|
height: parent.height
|
|
width: height
|
|
}
|
|
|
|
// Label for the brand of the material
|
|
Label
|
|
{
|
|
id: brandNameLabel
|
|
|
|
text: model.material_brand
|
|
elide: Text.ElideRight
|
|
font: UM.Theme.getFont("default")
|
|
color: UM.Theme.getColor("text")
|
|
|
|
anchors
|
|
{
|
|
left: extruderIcon.right
|
|
leftMargin: UM.Theme.getSize("default_margin").width
|
|
right: parent.right
|
|
rightMargin: UM.Theme.getSize("default_margin").width
|
|
}
|
|
}
|
|
|
|
// Label that shows the name of the material
|
|
Label
|
|
{
|
|
text: model.material
|
|
elide: Text.ElideRight
|
|
font: UM.Theme.getFont("default")
|
|
color: UM.Theme.getColor("text")
|
|
|
|
anchors
|
|
{
|
|
left: extruderIcon.right
|
|
leftMargin: UM.Theme.getSize("default_margin").width
|
|
right: parent.right
|
|
rightMargin: UM.Theme.getSize("default_margin").width
|
|
top: brandNameLabel.bottom
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
popupItem: Item
|
|
{
|
|
id: popupItem
|
|
width: base.width - 2 * UM.Theme.getSize("default_margin").width
|
|
height: 200
|
|
|
|
property var is_connected: false //If current machine is connected to a printer. Only evaluated upon making popup visible.
|
|
onVisibleChanged:
|
|
{
|
|
is_connected = Cura.MachineManager.activeMachineNetworkKey != "" && Cura.MachineManager.printerConnected //Re-evaluate.
|
|
}
|
|
|
|
property var configuration_method: buttonBar.visible ? "auto" : "custom" //Auto if connected to a printer at start-up, or Custom if not.
|
|
|
|
AutoConfiguration
|
|
{
|
|
id: autoConfiguration
|
|
visible: popupItem.configuration_method === "auto"
|
|
anchors.top: parent.top
|
|
}
|
|
|
|
CustomConfiguration
|
|
{
|
|
id: customConfiguration
|
|
visible: popupItem.configuration_method === "custom"
|
|
anchors.top: parent.top
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
id: separator
|
|
visible: buttonBar.visible
|
|
|
|
anchors
|
|
{
|
|
left: parent.left
|
|
right: parent.right
|
|
bottom: buttonBar.top
|
|
bottomMargin: UM.Theme.getSize("default_margin").height
|
|
}
|
|
height: UM.Theme.getSize("default_lining").height
|
|
|
|
color: UM.Theme.getColor("lining")
|
|
}
|
|
|
|
//Allow switching between custom and auto.
|
|
Rectangle
|
|
{
|
|
id: buttonBar
|
|
visible: popupItem.is_connected //Switching only makes sense if the "auto" part is possible.
|
|
|
|
anchors
|
|
{
|
|
left: parent.left
|
|
right: parent.right
|
|
bottom: parent.bottom
|
|
}
|
|
height: childrenRect.height
|
|
|
|
Cura.ActionButton
|
|
{
|
|
id: goToCustom
|
|
visible: popupItem.configuration_method === "auto"
|
|
text: catalog.i18nc("@label", "Custom")
|
|
|
|
anchors
|
|
{
|
|
right: parent.right
|
|
bottom: parent.bottom
|
|
}
|
|
|
|
color: UM.Theme.getColor("secondary")
|
|
hoverColor: UM.Theme.getColor("secondary")
|
|
textColor: UM.Theme.getColor("primary")
|
|
textHoverColor: UM.Theme.getColor("text")
|
|
|
|
iconSource: UM.Theme.icons.arrow_right
|
|
iconOnRightSide: true
|
|
|
|
onClicked: popupItem.configuration_method = "custom"
|
|
}
|
|
|
|
Cura.ActionButton
|
|
{
|
|
id: goToAuto
|
|
visible: popupItem.configuration_method === "custom"
|
|
text: catalog.i18nc("@label", "Configurations")
|
|
|
|
anchors
|
|
{
|
|
left: parent.left
|
|
bottom: parent.bottom
|
|
}
|
|
|
|
color: UM.Theme.getColor("secondary")
|
|
hoverColor: UM.Theme.getColor("secondary")
|
|
textColor: UM.Theme.getColor("primary")
|
|
textHoverColor: UM.Theme.getColor("text")
|
|
|
|
iconSource: UM.Theme.icons.arrow_left
|
|
|
|
onClicked: popupItem.configuration_method = "auto"
|
|
}
|
|
}
|
|
}
|
|
}
|