123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- // Copyright (c) 2017 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.Layouts 1.3
- import UM 1.2 as UM
- import Cura 1.0 as Cura
- import "Menus"
- import "Menus/ConfigurationMenu"
- Rectangle
- {
- id: base
- property int currentModeIndex
- property bool hideSettings: PrintInformation.preSliced
- property bool hideView: Cura.MachineManager.activeMachineName == ""
- // Is there an output device for this printer?
- property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != ""
- property bool printerConnected: Cura.MachineManager.printerConnected
- property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands
- property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null
- property variant printDuration: PrintInformation.currentPrintTime
- property variant printMaterialLengths: PrintInformation.materialLengths
- property variant printMaterialWeights: PrintInformation.materialWeights
- property variant printMaterialCosts: PrintInformation.materialCosts
- property variant printMaterialNames: PrintInformation.materialNames
- color: UM.Theme.getColor("sidebar")
- UM.I18nCatalog { id: catalog; name:"cura"}
- Timer {
- id: tooltipDelayTimer
- interval: 500
- repeat: false
- property var item
- property string text
- onTriggered:
- {
- base.showTooltip(base, {x: 0, y: item.y}, text);
- }
- }
- function showTooltip(item, position, text)
- {
- tooltip.text = text;
- position = item.mapToItem(base, position.x - UM.Theme.getSize("default_arrow").width, position.y);
- tooltip.show(position);
- }
- function hideTooltip()
- {
- tooltip.hide();
- }
- function strPadLeft(string, pad, length) {
- return (new Array(length + 1).join(pad) + string).slice(-length);
- }
- function getPrettyTime(time)
- {
- var hours = Math.floor(time / 3600)
- time -= hours * 3600
- var minutes = Math.floor(time / 60);
- time -= minutes * 60
- var seconds = Math.floor(time);
- var finalTime = strPadLeft(hours, "0", 2) + ':' + strPadLeft(minutes,'0',2)+ ':' + strPadLeft(seconds,'0',2);
- return finalTime;
- }
- MouseArea
- {
- anchors.fill: parent
- acceptedButtons: Qt.AllButtons
- onWheel:
- {
- wheel.accepted = true;
- }
- }
- MachineSelection
- {
- id: machineSelection
- width: base.width - configSelection.width - separator.width
- height: UM.Theme.getSize("sidebar_header").height
- anchors.top: base.top
- anchors.left: parent.left
- }
- Rectangle
- {
- id: separator
- visible: configSelection.visible
- width: visible ? Math.round(UM.Theme.getSize("sidebar_lining_thin").height / 2) : 0
- height: UM.Theme.getSize("sidebar_header").height
- color: UM.Theme.getColor("sidebar_lining_thin")
- anchors.left: machineSelection.right
- }
- ConfigurationSelection
- {
- id: configSelection
- visible: isNetworkPrinter && printerConnected
- width: visible ? Math.round(base.width * 0.15) : 0
- height: UM.Theme.getSize("sidebar_header").height
- anchors.top: base.top
- anchors.right: parent.right
- panelWidth: base.width
- }
- Loader
- {
- id: controlItem
- anchors.bottom: footerSeparator.top
- anchors.top: machineSelection.bottom
- anchors.left: base.left
- anchors.right: base.right
- sourceComponent:
- {
- if(connectedPrinter != null)
- {
- if(connectedPrinter.controlItem != null)
- {
- return connectedPrinter.controlItem
- }
- }
- return null
- }
- }
- Loader
- {
- anchors.bottom: footerSeparator.top
- anchors.top: machineSelection.bottom
- anchors.left: base.left
- anchors.right: base.right
- source:
- {
- if(controlItem.sourceComponent == null)
- {
- return "PrintMonitor.qml"
- }
- else
- {
- return ""
- }
- }
- }
- Rectangle
- {
- id: footerSeparator
- width: parent.width
- height: UM.Theme.getSize("sidebar_lining").height
- color: UM.Theme.getColor("sidebar_lining")
- anchors.bottom: monitorButton.top
- anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height
- }
- // MonitorButton is actually the bottom footer panel.
- MonitorButton
- {
- id: monitorButton
- implicitWidth: base.width
- anchors.bottom: parent.bottom
- }
- SidebarTooltip
- {
- id: tooltip
- }
- UM.SettingPropertyProvider
- {
- id: machineExtruderCount
- containerStackId: Cura.MachineManager.activeMachineId
- key: "machine_extruder_count"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
- UM.SettingPropertyProvider
- {
- id: machineHeatedBed
- containerStackId: Cura.MachineManager.activeMachineId
- key: "machine_heated_bed"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
- // Make the ConfigurationSelector react when the global container changes, otherwise if Cura is not connected to the printer,
- // switching printers make no reaction
- Connections
- {
- target: Cura.MachineManager
- onGlobalContainerChanged:
- {
- base.isNetworkPrinter = Cura.MachineManager.activeMachineNetworkKey != ""
- base.printerConnected = Cura.MachineManager.printerOutputDevices.length != 0
- }
- }
- }
|