diff options
author | fieldOfView <aldo@fieldofview.com> | 2018-10-03 21:55:51 +0300 |
---|---|---|
committer | fieldOfView <aldo@fieldofview.com> | 2018-10-03 21:55:51 +0300 |
commit | b7542a8ef8ff17491c1366e7ca5532ebc9e0c526 (patch) | |
tree | a4c30ce9d3ff274928f3ad675ca5e6fdf799edda /plugins/UltimakerMachineActions | |
parent | 61ffdf23d70d79857156020dcd1508496d036511 (diff) |
Move Firmware Updater into a plugin of its own
Diffstat (limited to 'plugins/UltimakerMachineActions')
3 files changed, 0 insertions, 264 deletions
diff --git a/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py b/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py deleted file mode 100644 index 8d03a15b38..0000000000 --- a/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from cura.CuraApplication import CuraApplication -from UM.Settings.DefinitionContainer import DefinitionContainer -from cura.MachineAction import MachineAction -from UM.i18n import i18nCatalog -from UM.Settings.ContainerRegistry import ContainerRegistry -from cura.PrinterOutput.FirmwareUpdater import FirmwareUpdateState - -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject -from typing import Optional - -MYPY = False -if MYPY: - from cura.PrinterOutput.FirmwareUpdater import FirmwareUpdater - from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice - -catalog = i18nCatalog("cura") - -## Upgrade the firmware of a machine by USB with this action. -class UpgradeFirmwareMachineAction(MachineAction): - def __init__(self) -> None: - super().__init__("UpgradeFirmware", catalog.i18nc("@action", "Upgrade Firmware")) - self._qml_url = "UpgradeFirmwareMachineAction.qml" - ContainerRegistry.getInstance().containerAdded.connect(self._onContainerAdded) - - self._active_output_device = None #type: Optional[PrinterOutputDevice] - self._active_firmware_updater = None #type: Optional[FirmwareUpdater] - - CuraApplication.getInstance().engineCreatedSignal.connect(self._onEngineCreated) - - def _onEngineCreated(self) -> None: - CuraApplication.getInstance().getMachineManager().outputDevicesChanged.connect(self._onOutputDevicesChanged) - - def _onContainerAdded(self, container) -> None: - # Add this action as a supported action to all machine definitions if they support USB connection - if isinstance(container, DefinitionContainer) and container.getMetaDataEntry("type") == "machine" and container.getMetaDataEntry("supports_usb_connection"): - CuraApplication.getInstance().getMachineActionManager().addSupportedAction(container.getId(), self.getKey()) - - def _onOutputDevicesChanged(self) -> None: - if self._active_output_device: - self._active_output_device.activePrinter.getController().canUpdateFirmwareChanged.disconnect(self._onControllerCanUpdateFirmwareChanged) - - output_devices = CuraApplication.getInstance().getMachineManager().printerOutputDevices - self._active_output_device = output_devices[0] if output_devices else None - - if self._active_output_device: - self._active_output_device.activePrinter.getController().canUpdateFirmwareChanged.connect(self._onControllerCanUpdateFirmwareChanged) - - self.outputDeviceCanUpdateFirmwareChanged.emit() - - def _onControllerCanUpdateFirmwareChanged(self) -> None: - self.outputDeviceCanUpdateFirmwareChanged.emit() - - outputDeviceCanUpdateFirmwareChanged = pyqtSignal() - @pyqtProperty(QObject, notify = outputDeviceCanUpdateFirmwareChanged) - def firmwareUpdater(self) -> Optional["FirmwareUpdater"]: - if self._active_output_device and self._active_output_device.activePrinter.getController().can_update_firmware: - self._active_firmware_updater = self._active_output_device.getFirmwareUpdater() - return self._active_firmware_updater - - elif self._active_firmware_updater and self._active_firmware_updater.firmwareUpdateState not in [FirmwareUpdateState.idle, FirmwareUpdateState.completed]: - # During a firmware update, the PrinterOutputDevice is disconnected but the FirmwareUpdater is still there - return self._active_firmware_updater - - self._active_firmware_updater = None - return None diff --git a/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml b/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml deleted file mode 100644 index 1c1f39edd0..0000000000 --- a/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 -import QtQuick.Dialogs 1.2 // For filedialog - -import UM 1.2 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 var canUpdateFirmware: activeOutputDevice ? activeOutputDevice.activePrinter.canUpdateFirmware : false - - Column - { - id: upgradeFirmwareMachineAction - anchors.fill: parent; - UM.I18nCatalog { id: catalog; name:"cura"} - spacing: UM.Theme.getSize("default_margin").height - - Label - { - width: parent.width - text: catalog.i18nc("@title", "Upgrade Firmware") - wrapMode: Text.WordWrap - font.pointSize: 18 - } - Label - { - width: parent.width - wrapMode: Text.WordWrap - 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.") - } - - Label - { - width: parent.width - wrapMode: Text.WordWrap - 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 var firmwareName: Cura.MachineManager.activeMachine.getDefaultFirmwareName() - Button - { - id: autoUpgradeButton - text: catalog.i18nc("@action:button", "Automatically upgrade Firmware"); - enabled: parent.firmwareName != "" && canUpdateFirmware - onClicked: - { - firmwareUpdateWindow.visible = true; - activeOutputDevice.updateFirmware(parent.firmwareName); - } - } - Button - { - id: manualUpgradeButton - text: catalog.i18nc("@action:button", "Upload custom Firmware"); - enabled: canUpdateFirmware - onClicked: - { - customFirmwareDialog.open() - } - } - } - - Label - { - width: parent.width - wrapMode: Text.WordWrap - visible: !printerConnected && !firmwareUpdateWindow.visible - text: catalog.i18nc("@label", "Firmware can not be upgraded because there is no connection with the printer."); - } - - Label - { - width: parent.width - wrapMode: Text.WordWrap - visible: printerConnected && !canUpdateFirmware - text: catalog.i18nc("@label", "Firmware can not be upgraded 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: - { - firmwareUpdateWindow.visible = true; - activeOutputDevice.updateFirmware(fileUrl); - } - } - - UM.Dialog - { - id: firmwareUpdateWindow - - width: minimumWidth - minimumWidth: 500 * screenScaleFactor - height: minimumHeight - minimumHeight: 100 * screenScaleFactor - - modality: Qt.ApplicationModal - - title: catalog.i18nc("@title:window","Firmware Update") - - Column - { - anchors.fill: parent - - 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 - } - - ProgressBar - { - id: prog - value: (manager.firmwareUpdater != null) ? manager.firmwareUpdater.firmwareProgress : 0 - minimumValue: 0 - maximumValue: 100 - indeterminate: - { - if(manager.firmwareUpdater == null) - { - return false; - } - return manager.firmwareUpdater.firmwareProgress < 1 && manager.firmwareUpdater.firmwareProgress > 0; - } - anchors - { - left: parent.left; - right: parent.right; - } - } - } - - rightButtons: [ - Button - { - text: catalog.i18nc("@action:button","Close"); - enabled: (manager.firmwareUpdater != null) ? manager.firmwareUpdater.firmwareUpdateState != 1 : true; - onClicked: firmwareUpdateWindow.visible = false; - } - ] - } -}
\ No newline at end of file diff --git a/plugins/UltimakerMachineActions/__init__.py b/plugins/UltimakerMachineActions/__init__.py index 495f212736..30493536ce 100644 --- a/plugins/UltimakerMachineActions/__init__.py +++ b/plugins/UltimakerMachineActions/__init__.py @@ -2,13 +2,9 @@ # Cura is released under the terms of the LGPLv3 or higher. from . import BedLevelMachineAction -from . import UpgradeFirmwareMachineAction from . import UMOUpgradeSelection from . import UM2UpgradeSelection -from UM.i18n import i18nCatalog -catalog = i18nCatalog("cura") - def getMetaData(): return { } @@ -16,7 +12,6 @@ def getMetaData(): def register(app): return { "machine_action": [ BedLevelMachineAction.BedLevelMachineAction(), - UpgradeFirmwareMachineAction.UpgradeFirmwareMachineAction(), UMOUpgradeSelection.UMOUpgradeSelection(), UM2UpgradeSelection.UM2UpgradeSelection() ]} |