Cura/plugins/Marketplace/RestartManager.py
Jelle Spijker 4c516e8cec
Moved QObject out if TYPE_CHECKING statement
Contributes to: CURA-8587
2021-12-08 16:14:59 +01:00

37 lines
1.4 KiB
Python

# Copyright (c) 2021 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from typing import Optional, TYPE_CHECKING
from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject
from cura.CuraApplication import CuraApplication
if TYPE_CHECKING:
from UM.PluginRegistry import PluginRegistry
from cura.CuraPackageManager import CuraPackageManager
class RestartManager(QObject):
def __init__(self, parent: Optional[QObject] = None) -> None:
super().__init__(parent = parent)
self._manager: "CuraPackageManager" = CuraApplication.getInstance().getPackageManager()
self._plugin_registry: "PluginRegistry" = CuraApplication.getInstance().getPluginRegistry()
self._manager.installedPackagesChanged.connect(self.checkIfRestartNeeded)
self._plugin_registry.hasPluginsEnabledOrDisabledChanged.connect(self.checkIfRestartNeeded)
self._restart_needed = False
def checkIfRestartNeeded(self) -> None:
if self._manager.hasPackagesToRemoveOrInstall or len(self._plugin_registry.getCurrentSessionActivationChangedPlugins()) > 0:
self._restart_needed = True
else:
self._restart_needed = False
self.showRestartNotificationChanged.emit()
showRestartNotificationChanged = pyqtSignal()
@pyqtProperty(bool, notify = showRestartNotificationChanged)
def showRestartNotification(self) -> bool:
return self._restart_needed