|
@@ -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)
|