LayerViewProxy.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, pyqtProperty
  2. from UM.Application import Application
  3. import LayerView
  4. class LayerViewProxy(QObject):
  5. def __init__(self, parent = None):
  6. super().__init__(parent)
  7. self._current_layer = 0
  8. self._controller = Application.getInstance().getController()
  9. self._controller.activeViewChanged.connect(self._onActiveViewChanged)
  10. self._onActiveViewChanged()
  11. currentLayerChanged = pyqtSignal()
  12. maxLayersChanged = pyqtSignal()
  13. activityChanged = pyqtSignal()
  14. @pyqtProperty(bool, notify = activityChanged)
  15. def getLayerActivity(self):
  16. active_view = self._controller.getActiveView()
  17. if type(active_view) == LayerView.LayerView.LayerView:
  18. return active_view.getActivity()
  19. @pyqtProperty(int, notify = maxLayersChanged)
  20. def numLayers(self):
  21. active_view = self._controller.getActiveView()
  22. if type(active_view) == LayerView.LayerView.LayerView:
  23. return active_view.getMaxLayers()
  24. #return 100
  25. @pyqtProperty(int, notify = currentLayerChanged)
  26. def currentLayer(self):
  27. active_view = self._controller.getActiveView()
  28. if type(active_view) == LayerView.LayerView.LayerView:
  29. return active_view.getCurrentLayer()
  30. busyChanged = pyqtSignal()
  31. @pyqtProperty(bool, notify = busyChanged)
  32. def busy(self):
  33. active_view = self._controller.getActiveView()
  34. if type(active_view) == LayerView.LayerView.LayerView:
  35. return active_view.isBusy()
  36. return False
  37. @pyqtSlot(int)
  38. def setCurrentLayer(self, layer_num):
  39. active_view = self._controller.getActiveView()
  40. if type(active_view) == LayerView.LayerView.LayerView:
  41. active_view.setLayer(layer_num)
  42. def _layerActivityChanged(self):
  43. self.activityChanged.emit()
  44. def _onLayerChanged(self):
  45. self.currentLayerChanged.emit()
  46. self._layerActivityChanged()
  47. def _onMaxLayersChanged(self):
  48. self.maxLayersChanged.emit()
  49. def _onBusyChanged(self):
  50. self.busyChanged.emit()
  51. def _onActiveViewChanged(self):
  52. active_view = self._controller.getActiveView()
  53. if type(active_view) == LayerView.LayerView.LayerView:
  54. active_view.currentLayerNumChanged.connect(self._onLayerChanged)
  55. active_view.maxLayersChanged.connect(self._onMaxLayersChanged)
  56. active_view.busyChanged.connect(self._onBusyChanged)