diff --git a/cura/PrinterOutput/Models/PrinterOutputModel.py b/cura/PrinterOutput/Models/PrinterOutputModel.py index 4004a90a33..13fe85e674 100644 --- a/cura/PrinterOutput/Models/PrinterOutputModel.py +++ b/cura/PrinterOutput/Models/PrinterOutputModel.py @@ -2,13 +2,13 @@ # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant, pyqtSlot, QUrl -from typing import List, Dict, Optional +from typing import List, Dict, Optional, TYPE_CHECKING from UM.Math.Vector import Vector +from cura.PrinterOutput.Peripheral import Peripheral from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel from cura.PrinterOutput.Models.ExtruderOutputModel import ExtruderOutputModel -MYPY = False -if MYPY: +if TYPE_CHECKING: from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.PrinterOutputController import PrinterOutputController @@ -45,6 +45,7 @@ class PrinterOutputModel(QObject): self._is_preheating = False self._printer_type = "" self._buildplate = "" + self._peripherals = [] # type: List[Peripheral] self._printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in self._extruders] @@ -294,4 +295,18 @@ class PrinterOutputModel(QObject): def printerConfiguration(self) -> Optional[PrinterConfigurationModel]: if self._printer_configuration.isValid(): return self._printer_configuration - return None \ No newline at end of file + return None + + peripheralsChanged = pyqtSignal() + + @pyqtProperty(str, notify = peripheralsChanged) + def peripherals(self) -> str: + return ", ".join(*[peripheral.name for peripheral in self._peripherals]) + + def addPeripheral(self, peripheral: Peripheral) -> None: + self._peripherals.append(peripheral) + self.peripheralsChanged.emit() + + def removePeripheral(self, peripheral: Peripheral) -> None: + self._peripherals.remove(peripheral) + self.peripheralsChanged.emit() \ No newline at end of file diff --git a/cura/PrinterOutput/Peripheral.py b/cura/PrinterOutput/Peripheral.py new file mode 100644 index 0000000000..2693b82c36 --- /dev/null +++ b/cura/PrinterOutput/Peripheral.py @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + + +## Data class that represents a peripheral for a printer. +# +# Output device plug-ins may specify that the printer has a certain set of +# peripherals. This set is then possibly shown in the interface of the monitor +# stage. +class Peripheral: + ## Constructs the peripheral. + # \param type A unique ID for the type of peripheral. + # \param name A human-readable name for the peripheral. + def __init__(self, peripheral_type: str, name: str) -> None: + self.type = peripheral_type + self.name = name