LayerViewProxy.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty
  2. from UM.FlameProfiler import pyqtSlot
  3. from UM.Application import Application
  4. import LayerView
  5. class LayerViewProxy(QObject):
  6. def __init__(self, parent = None):
  7. super().__init__(parent)
  8. self._current_layer = 0
  9. self._controller = Application.getInstance().getController()
  10. self._controller.activeViewChanged.connect(self._onActiveViewChanged)
  11. self._onActiveViewChanged()
  12. currentLayerChanged = pyqtSignal()
  13. maxLayersChanged = pyqtSignal()
  14. activityChanged = pyqtSignal()
  15. @pyqtProperty(bool, notify = activityChanged)
  16. def getLayerActivity(self):
  17. active_view = self._controller.getActiveView()
  18. if type(active_view) == LayerView.LayerView.LayerView:
  19. return active_view.getActivity()
  20. @pyqtProperty(int, notify = maxLayersChanged)
  21. def numLayers(self):
  22. active_view = self._controller.getActiveView()
  23. if type(active_view) == LayerView.LayerView.LayerView:
  24. return active_view.getMaxLayers()
  25. #return 100
  26. @pyqtProperty(int, notify = currentLayerChanged)
  27. def currentLayer(self):
  28. active_view = self._controller.getActiveView()
  29. if type(active_view) == LayerView.LayerView.LayerView:
  30. return active_view.getCurrentLayer()
  31. @pyqtProperty(int, notify = currentLayerChanged)
  32. def minimumLayer(self):
  33. active_view = self._controller.getActiveView()
  34. if type(active_view) == LayerView.LayerView.LayerView:
  35. return active_view.getMinimumLayer()
  36. busyChanged = pyqtSignal()
  37. @pyqtProperty(bool, notify = busyChanged)
  38. def busy(self):
  39. active_view = self._controller.getActiveView()
  40. if type(active_view) == LayerView.LayerView.LayerView:
  41. return active_view.isBusy()
  42. return False
  43. @pyqtProperty(bool)
  44. def compatibilityMode(self):
  45. active_view = self._controller.getActiveView()
  46. if type(active_view) == LayerView.LayerView.LayerView:
  47. return active_view.getCompatibilityMode()
  48. return False
  49. @pyqtSlot(int)
  50. def setCurrentLayer(self, layer_num):
  51. active_view = self._controller.getActiveView()
  52. if type(active_view) == LayerView.LayerView.LayerView:
  53. active_view.setLayer(layer_num)
  54. @pyqtSlot(int)
  55. def setMinimumLayer(self, layer_num):
  56. active_view = self._controller.getActiveView()
  57. if type(active_view) == LayerView.LayerView.LayerView:
  58. active_view.setMinimumLayer(layer_num)
  59. @pyqtSlot(int)
  60. def setLayerViewType(self, layer_view_type):
  61. active_view = self._controller.getActiveView()
  62. if type(active_view) == LayerView.LayerView.LayerView:
  63. active_view.setLayerViewType(layer_view_type)
  64. @pyqtProperty(bool)
  65. def getLayerViewType(self):
  66. active_view = self._controller.getActiveView()
  67. if type(active_view) == LayerView.LayerView.LayerView:
  68. return active_view.getLayerViewType()
  69. return 0
  70. # Opacity 0..1
  71. @pyqtSlot(int, float)
  72. def setExtruderOpacity(self, extruder_nr, opacity):
  73. active_view = self._controller.getActiveView()
  74. if type(active_view) == LayerView.LayerView.LayerView:
  75. active_view.setExtruderOpacity(extruder_nr, opacity)
  76. @pyqtSlot(int)
  77. def setShowTravelMoves(self, show):
  78. active_view = self._controller.getActiveView()
  79. if type(active_view) == LayerView.LayerView.LayerView:
  80. active_view.setShowTravelMoves(show)
  81. @pyqtSlot(int)
  82. def setShowSupport(self, show):
  83. active_view = self._controller.getActiveView()
  84. if type(active_view) == LayerView.LayerView.LayerView:
  85. active_view.setShowSupport(show)
  86. @pyqtSlot(int)
  87. def setShowAdhesion(self, show):
  88. active_view = self._controller.getActiveView()
  89. if type(active_view) == LayerView.LayerView.LayerView:
  90. active_view.setShowAdhesion(show)
  91. @pyqtSlot(int)
  92. def setShowSkin(self, show):
  93. active_view = self._controller.getActiveView()
  94. if type(active_view) == LayerView.LayerView.LayerView:
  95. active_view.setShowSkin(show)
  96. @pyqtSlot(int)
  97. def setShowInfill(self, show):
  98. active_view = self._controller.getActiveView()
  99. if type(active_view) == LayerView.LayerView.LayerView:
  100. active_view.setShowInfill(show)
  101. def _layerActivityChanged(self):
  102. self.activityChanged.emit()
  103. def _onLayerChanged(self):
  104. self.currentLayerChanged.emit()
  105. self._layerActivityChanged()
  106. def _onMaxLayersChanged(self):
  107. self.maxLayersChanged.emit()
  108. def _onBusyChanged(self):
  109. self.busyChanged.emit()
  110. def _onActiveViewChanged(self):
  111. active_view = self._controller.getActiveView()
  112. if type(active_view) == LayerView.LayerView.LayerView:
  113. active_view.currentLayerNumChanged.connect(self._onLayerChanged)
  114. active_view.maxLayersChanged.connect(self._onMaxLayersChanged)
  115. active_view.busyChanged.connect(self._onBusyChanged)