PrintJobOutputModel.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # Copyright (c) 2017 Ultimaker B.V.
  2. # Cura is released under the terms of the LGPLv3 or higher.
  3. from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot
  4. MYPY = False
  5. if MYPY:
  6. from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
  7. from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
  8. class PrintJobOutputModel(QObject):
  9. stateChanged = pyqtSignal()
  10. timeTotalChanged = pyqtSignal()
  11. timeElapsedChanged = pyqtSignal()
  12. nameChanged = pyqtSignal()
  13. keyChanged = pyqtSignal()
  14. assignedPrinterChanged = pyqtSignal()
  15. def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None):
  16. super().__init__(parent)
  17. self._output_controller = output_controller
  18. self._state = ""
  19. self._time_total = 0
  20. self._time_elapsed = 0
  21. self._name = name # Human readable name
  22. self._key = key # Unique identifier
  23. self._assigned_printer = None
  24. @pyqtProperty(QObject, notify=assignedPrinterChanged)
  25. def assignedPrinter(self):
  26. return self._assigned_printer
  27. def updateAssignedPrinter(self, assigned_printer: "PrinterOutputModel"):
  28. if self._assigned_printer != assigned_printer:
  29. self._assigned_printer = assigned_printer
  30. self.assignedPrinterChanged.emit()
  31. @pyqtProperty(str, notify=keyChanged)
  32. def key(self):
  33. return self._key
  34. def updateKey(self, key: str):
  35. if self._key != key:
  36. self._key = key
  37. self.keyChanged.emit()
  38. @pyqtProperty(str, notify = nameChanged)
  39. def name(self):
  40. return self._name
  41. def updateName(self, name: str):
  42. if self._name != name:
  43. self._name = name
  44. self.nameChanged.emit()
  45. @pyqtProperty(int, notify = timeTotalChanged)
  46. def timeTotal(self):
  47. return self._time_total
  48. @pyqtProperty(int, notify = timeElapsedChanged)
  49. def timeElapsed(self):
  50. return self._time_elapsed
  51. @pyqtProperty(str, notify=stateChanged)
  52. def state(self):
  53. return self._state
  54. def updateTimeTotal(self, new_time_total):
  55. if self._time_total != new_time_total:
  56. self._time_total = new_time_total
  57. self.timeTotalChanged.emit()
  58. def updateTimeElapsed(self, new_time_elapsed):
  59. if self._time_elapsed != new_time_elapsed:
  60. self._time_elapsed = new_time_elapsed
  61. self.timeElapsedChanged.emit()
  62. def updateState(self, new_state):
  63. if self._state != new_state:
  64. self._state = new_state
  65. self.stateChanged.emit()
  66. @pyqtSlot(str)
  67. def setState(self, state):
  68. self._output_controller.setJobState(self, state)