123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- // Copyright (c) 2022 Ultimaker B.V.
- // Cura is released under the terms of the LGPLv3 or higher.
- import QtQuick 2.2
- import QtQuick.Controls 2.1
- import QtQuick.Layouts 1.1
- import QtQuick.Window 2.1
- import QtQuick.Dialogs 1.2 // For filedialog
- import UM 1.5 as UM
- import Cura 1.0 as Cura
- Cura.MachineAction
- {
- anchors.fill: parent
- property bool printerConnected: Cura.MachineManager.printerConnected
- property var activeOutputDevice: printerConnected ? Cura.MachineManager.printerOutputDevices[0] : null
- property bool canUpdateFirmware: activeOutputDevice ? activeOutputDevice.activePrinter.canUpdateFirmware : false
- Column
- {
- id: firmwareUpdaterMachineAction
- anchors.fill: parent;
- UM.I18nCatalog { id: catalog; name: "cura"}
- spacing: UM.Theme.getSize("default_margin").height
- UM.Label
- {
- width: parent.width
- text: catalog.i18nc("@title", "Update Firmware")
- font.pointSize: 18
- }
- UM.Label
- {
- width: parent.width
- text: catalog.i18nc("@label", "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work.")
- }
- UM.Label
- {
- width: parent.width
- text: catalog.i18nc("@label", "The firmware shipping with new printers works, but new versions tend to have more features and improvements.")
- }
- Row
- {
- anchors.horizontalCenter: parent.horizontalCenter
- width: childrenRect.width
- spacing: UM.Theme.getSize("default_margin").width
- property string firmwareName: Cura.MachineManager.activeMachine.getDefaultFirmwareName()
- Cura.SecondaryButton
- {
- id: autoUpgradeButton
- text: catalog.i18nc("@action:button", "Automatically upgrade Firmware")
- enabled: parent.firmwareName != "" && canUpdateFirmware
- onClicked:
- {
- updateProgressDialog.visible = true;
- activeOutputDevice.updateFirmware(parent.firmwareName);
- }
- }
- Cura.SecondaryButton
- {
- id: manualUpgradeButton
- text: catalog.i18nc("@action:button", "Upload custom Firmware")
- enabled: canUpdateFirmware
- onClicked:
- {
- customFirmwareDialog.open()
- }
- }
- }
- UM.Label
- {
- width: parent.width
- visible: !printerConnected && !updateProgressDialog.visible
- text: catalog.i18nc("@label", "Firmware can not be updated because there is no connection with the printer.")
- }
- Label
- {
- width: parent.width
- visible: printerConnected && !canUpdateFirmware
- text: catalog.i18nc("@label", "Firmware can not be updated because the connection with the printer does not support upgrading firmware.")
- }
- }
- FileDialog
- {
- id: customFirmwareDialog
- title: catalog.i18nc("@title:window", "Select custom firmware")
- nameFilters: "Firmware image files (*.hex)"
- selectExisting: true
- onAccepted:
- {
- updateProgressDialog.visible = true;
- activeOutputDevice.updateFirmware(fileUrl);
- }
- }
- UM.Dialog
- {
- id: updateProgressDialog
- width: minimumWidth
- minimumWidth: 500 * screenScaleFactor
- height: minimumHeight
- minimumHeight: 100 * screenScaleFactor
- modality: Qt.ApplicationModal
- title: catalog.i18nc("@title:window","Firmware Update")
- Column
- {
- anchors.fill: parent
- UM.Label
- {
- anchors
- {
- left: parent.left
- right: parent.right
- }
- text: {
- if(manager.firmwareUpdater == null)
- {
- return "";
- }
- switch (manager.firmwareUpdater.firmwareUpdateState)
- {
- case 0:
- return ""; //Not doing anything (eg; idling)
- case 1:
- return catalog.i18nc("@label","Updating firmware.");
- case 2:
- return catalog.i18nc("@label","Firmware update completed.");
- case 3:
- return catalog.i18nc("@label","Firmware update failed due to an unknown error.");
- case 4:
- return catalog.i18nc("@label","Firmware update failed due to an communication error.");
- case 5:
- return catalog.i18nc("@label","Firmware update failed due to an input/output error.");
- case 6:
- return catalog.i18nc("@label","Firmware update failed due to missing firmware.");
- }
- }
- wrapMode: Text.Wrap
- }
- UM.ProgressBar
- {
- id: prog
- value: (manager.firmwareUpdater != null) ? manager.firmwareUpdater.firmwareProgress / 100 : 0
- indeterminate:
- {
- if(manager.firmwareUpdater == null)
- {
- return false;
- }
- return manager.firmwareUpdater.firmwareProgress < 1 && manager.firmwareUpdater.firmwareProgress > 0;
- }
- anchors
- {
- left: parent.left
- right: parent.right
- }
- }
- }
- rightButtons: [
- Cura.SecondaryButton
- {
- text: catalog.i18nc("@action:button", "Close")
- enabled: manager.firmwareUpdater != null ? manager.firmwareUpdater.firmwareUpdateState != 1 : true
- onClicked: updateProgressDialog.visible = false
- }
- ]
- }
- }
|