Cura/resources/qml/MachineSelector.qml
Diego Prado Gesto de650300e2 Add the buttons to add printer and manage printers in the bottom of the
print selector panel.

Contributes to CURA-5942.
2018-11-21 11:43:20 +01:00

183 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.3
import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
import UM 1.2 as UM
import Cura 1.0 as Cura
import "Menus"
Cura.ExpandableComponent
{
id: machineSelector
property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != ""
popupPadding: 0
popupAlignment: ExpandableComponent.PopupAlignment.AlignLeft
iconSource: expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left")
UM.I18nCatalog
{
id: catalog
name: "cura"
}
headerItem: Label
{
text: isNetworkPrinter ? Cura.MachineManager.activeMachineNetworkGroupName : Cura.MachineManager.activeMachineName
verticalAlignment: Text.AlignVCenter
height: parent.height
elide: Text.ElideRight
renderType: Text.NativeRendering
font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text")
}
popupItem: Item
{
id: popup
width: UM.Theme.getSize("machine_selector_widget_content").width
height: UM.Theme.getSize("machine_selector_widget_content").height
ScrollView
{
width: parent.width
anchors.top: parent.top
anchors.bottom: separator.top
clip: true
Column
{
id: column
anchors.fill: parent
Label
{
text: catalog.i18nc("@label", "Network connected printers")
visible: networkedPrintersModel.items.length > 0
height: visible ? contentHeight + 2 * UM.Theme.getSize("default_margin").height : 0
renderType: Text.NativeRendering
font: UM.Theme.getFont("medium_bold")
color: UM.Theme.getColor("text")
verticalAlignment: Text.AlignVCenter
}
Repeater
{
id: networkedPrinters
model: UM.ContainerStacksModel
{
id: networkedPrintersModel
filter: {"type": "machine", "um_network_key": "*", "hidden": "False"}
}
delegate: Button
{
text: name
width: parent.width
checkable: true
onClicked:
{
togglePopup()
Cura.MachineManager.setActiveMachine(model.id)
}
Connections
{
target: Cura.MachineManager
onActiveMachineNetworkGroupNameChanged: checked = Cura.MachineManager.activeMachineNetworkGroupName == model.metadata["connect_group_name"]
}
}
}
Label
{
text: catalog.i18nc("@label", "Preset printers")
visible: virtualPrintersModel.items.length > 0
height: visible ? contentHeight + 2 * UM.Theme.getSize("default_margin").height : 0
renderType: Text.NativeRendering
font: UM.Theme.getFont("medium_bold")
color: UM.Theme.getColor("text")
verticalAlignment: Text.AlignVCenter
}
Repeater
{
id: virtualPrinters
model: UM.ContainerStacksModel
{
id: virtualPrintersModel
filter: {"type": "machine", "um_network_key": null}
}
delegate: Button
{
text: name
width: parent.width
checked: Cura.MachineManager.activeMachineId == model.id
checkable: true
onClicked:
{
togglePopup()
Cura.MachineManager.setActiveMachine(model.id)
}
}
}
}
}
Rectangle
{
id: separator
anchors.bottom: buttonRow.top
width: parent.width
height: UM.Theme.getSize("default_lining").height
color: UM.Theme.getColor("lining")
}
Row
{
id: buttonRow
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
padding: UM.Theme.getSize("default_margin").width
spacing: UM.Theme.getSize("default_margin").width
Cura.ActionButton
{
leftPadding: UM.Theme.getSize("default_margin").width
rightPadding: UM.Theme.getSize("default_margin").width
text: catalog.i18nc("@button", "Add printer")
color: UM.Theme.getColor("secondary")
hoverColor: UM.Theme.getColor("secondary")
textColor: UM.Theme.getColor("primary")
textHoverColor: UM.Theme.getColor("text")
onClicked: Cura.Actions.addMachine.trigger()
}
Cura.ActionButton
{
leftPadding: UM.Theme.getSize("default_margin").width
rightPadding: UM.Theme.getSize("default_margin").width
text: catalog.i18nc("@button", "Manage printers")
color: UM.Theme.getColor("secondary")
hoverColor: UM.Theme.getColor("secondary")
textColor: UM.Theme.getColor("primary")
textHoverColor: UM.Theme.getColor("text")
onClicked: Cura.Actions.configureMachines.trigger()
}
}
}
}