diff options
Diffstat (limited to 'plugins/MonitorStage/MonitorStage.py')
-rw-r--r-- | plugins/MonitorStage/MonitorStage.py | 144 |
1 files changed, 72 insertions, 72 deletions
diff --git a/plugins/MonitorStage/MonitorStage.py b/plugins/MonitorStage/MonitorStage.py index 3d2a1c3f37..4e4c442b4c 100644 --- a/plugins/MonitorStage/MonitorStage.py +++ b/plugins/MonitorStage/MonitorStage.py @@ -1,72 +1,72 @@ -# Copyright (c) 2017 Ultimaker B.V.
-# Cura is released under the terms of the LGPLv3 or higher.
-import os.path
-from UM.Application import Application
-from cura.Stages.CuraStage import CuraStage
-
-
-## Stage for monitoring a 3D printing while it's printing.
-class MonitorStage(CuraStage):
-
- def __init__(self, parent = None):
- super().__init__(parent)
-
- # Wait until QML engine is created, otherwise creating the new QML components will fail
- Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated)
- self._printer_output_device = None
-
- self._active_print_job = None
- self._active_printer = None
-
- def _setActivePrintJob(self, print_job):
- if self._active_print_job != print_job:
- self._active_print_job = print_job
-
- def _setActivePrinter(self, printer):
- if self._active_printer != printer:
- if self._active_printer:
- self._active_printer.activePrintJobChanged.disconnect(self._onActivePrintJobChanged)
- self._active_printer = printer
- if self._active_printer:
- self._setActivePrintJob(self._active_printer.activePrintJob)
- # Jobs might change, so we need to listen to it's changes.
- self._active_printer.activePrintJobChanged.connect(self._onActivePrintJobChanged)
- else:
- self._setActivePrintJob(None)
-
- def _onActivePrintJobChanged(self):
- self._setActivePrintJob(self._active_printer.activePrintJob)
-
- def _onActivePrinterChanged(self):
- self._setActivePrinter(self._printer_output_device.activePrinter)
-
- def _onOutputDevicesChanged(self):
- try:
- # We assume that you are monitoring the device with the highest priority.
- new_output_device = Application.getInstance().getMachineManager().printerOutputDevices[0]
- if new_output_device != self._printer_output_device:
- if self._printer_output_device:
- try:
- self._printer_output_device.printersChanged.disconnect(self._onActivePrinterChanged)
- except TypeError:
- # Ignore stupid "Not connected" errors.
- pass
-
- self._printer_output_device = new_output_device
-
- self._printer_output_device.printersChanged.connect(self._onActivePrinterChanged)
- self._setActivePrinter(self._printer_output_device.activePrinter)
- except IndexError:
- pass
-
- def _onEngineCreated(self):
- # We can only connect now, as we need to be sure that everything is loaded (plugins get created quite early)
- Application.getInstance().getMachineManager().outputDevicesChanged.connect(self._onOutputDevicesChanged)
- self._onOutputDevicesChanged()
-
- plugin_path = Application.getInstance().getPluginRegistry().getPluginPath(self.getPluginId())
- if plugin_path is not None:
- menu_component_path = os.path.join(plugin_path, "MonitorMenu.qml")
- main_component_path = os.path.join(plugin_path, "MonitorMain.qml")
- self.addDisplayComponent("menu", menu_component_path)
- self.addDisplayComponent("main", main_component_path)
+# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os.path +from UM.Application import Application +from cura.Stages.CuraStage import CuraStage + + +class MonitorStage(CuraStage): + """Stage for monitoring a 3D printing while it's printing.""" + + def __init__(self, parent = None): + super().__init__(parent) + + # Wait until QML engine is created, otherwise creating the new QML components will fail + Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated) + self._printer_output_device = None + + self._active_print_job = None + self._active_printer = None + + def _setActivePrintJob(self, print_job): + if self._active_print_job != print_job: + self._active_print_job = print_job + + def _setActivePrinter(self, printer): + if self._active_printer != printer: + if self._active_printer: + self._active_printer.activePrintJobChanged.disconnect(self._onActivePrintJobChanged) + self._active_printer = printer + if self._active_printer: + self._setActivePrintJob(self._active_printer.activePrintJob) + # Jobs might change, so we need to listen to it's changes. + self._active_printer.activePrintJobChanged.connect(self._onActivePrintJobChanged) + else: + self._setActivePrintJob(None) + + def _onActivePrintJobChanged(self): + self._setActivePrintJob(self._active_printer.activePrintJob) + + def _onActivePrinterChanged(self): + self._setActivePrinter(self._printer_output_device.activePrinter) + + def _onOutputDevicesChanged(self): + try: + # We assume that you are monitoring the device with the highest priority. + new_output_device = Application.getInstance().getMachineManager().printerOutputDevices[0] + if new_output_device != self._printer_output_device: + if self._printer_output_device: + try: + self._printer_output_device.printersChanged.disconnect(self._onActivePrinterChanged) + except TypeError: + # Ignore stupid "Not connected" errors. + pass + + self._printer_output_device = new_output_device + + self._printer_output_device.printersChanged.connect(self._onActivePrinterChanged) + self._setActivePrinter(self._printer_output_device.activePrinter) + except IndexError: + pass + + def _onEngineCreated(self): + # We can only connect now, as we need to be sure that everything is loaded (plugins get created quite early) + Application.getInstance().getMachineManager().outputDevicesChanged.connect(self._onOutputDevicesChanged) + self._onOutputDevicesChanged() + + plugin_path = Application.getInstance().getPluginRegistry().getPluginPath(self.getPluginId()) + if plugin_path is not None: + menu_component_path = os.path.join(plugin_path, "MonitorMenu.qml") + main_component_path = os.path.join(plugin_path, "MonitorMain.qml") + self.addDisplayComponent("menu", menu_component_path) + self.addDisplayComponent("main", main_component_path) |