Manager.py 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. # Copyright (c) 2021 Ultimaker B.V.
  2. # Cura is released under the terms of the LGPLv3 or higher.
  3. from typing import Optional
  4. from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
  5. from cura.CuraApplication import CuraApplication
  6. from UM.PluginRegistry import PluginRegistry
  7. class Manager(QObject):
  8. def __init__(self, parent: Optional[QObject] = None):
  9. super().__init__(parent = parent)
  10. self._manager: "CuraPackageManager" = CuraApplication.getInstance().getPackageManager()
  11. self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry()
  12. self._manager.installedPackagesChanged.connect(self.checkIfRestartNeeded)
  13. self._plugin_registry.hasPluginsEnabledOrDisabledChanged.connect(self.checkIfRestartNeeded)
  14. self._restart_needed = False
  15. def checkIfRestartNeeded(self):
  16. if self._manager.hasPackagesToRemoveOrInstall or len(self._plugin_registry.getCurrentSessionActivationChangedPlugins()) > 0:
  17. self._restart_needed = True
  18. else:
  19. self._restart_needed = False
  20. self.showRestartNotificationChanged.emit()
  21. showRestartNotificationChanged = pyqtSignal()
  22. @pyqtProperty(bool, notify = showRestartNotificationChanged)
  23. def showRestartNotification(self) -> bool:
  24. return self._restart_needed