Present restart banner if plugin has been en-/disabled

Contributes to: CURA-8587
This commit is contained in:
Jelle Spijker 2021-12-07 08:57:49 +01:00
parent dc03a7fdcb
commit 0fefe85fca
No known key found for this signature in database
GPG Key ID: 6662DC033BE6B99A
2 changed files with 10 additions and 7 deletions

View File

@ -2,7 +2,7 @@
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
import os.path import os.path
from PyQt5.QtCore import pyqtSlot from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQml import qmlRegisterType
from typing import Optional, TYPE_CHECKING from typing import Optional, TYPE_CHECKING
@ -18,14 +18,16 @@ if TYPE_CHECKING:
from PyQt5.QtCore import QObject from PyQt5.QtCore import QObject
class Marketplace(Extension): class Marketplace(Extension, QObject):
""" """
The main managing object for the Marketplace plug-in. The main managing object for the Marketplace plug-in.
""" """
def __init__(self) -> None: def __init__(self, parent: Optional[QObject] = None) -> None:
super().__init__() QObject.__init__(self, parent = parent)
self._window: Optional["QObject"] = None # If the window has been loaded yet, it'll be cached in here. Extension.__init__(self)
self._window: Optional[QObject] = None # If the window has been loaded yet, it'll be cached in here.
self.plugin_registry: Optional[PluginRegistry] = None
qmlRegisterType(RemotePackageList, "Marketplace", 1, 0, "RemotePackageList") qmlRegisterType(RemotePackageList, "Marketplace", 1, 0, "RemotePackageList")
qmlRegisterType(LocalPackageList, "Marketplace", 1, 0, "LocalPackageList") qmlRegisterType(LocalPackageList, "Marketplace", 1, 0, "LocalPackageList")
@ -38,11 +40,12 @@ class Marketplace(Extension):
If the window hadn't been loaded yet into Qt, it will be created lazily. If the window hadn't been loaded yet into Qt, it will be created lazily.
""" """
if self._window is None: if self._window is None:
self.plugin_registry = PluginRegistry.getInstance()
plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId()) plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId())
if plugin_path is None: if plugin_path is None:
plugin_path = os.path.dirname(__file__) plugin_path = os.path.dirname(__file__)
path = os.path.join(plugin_path, "resources", "qml", "Marketplace.qml") path = os.path.join(plugin_path, "resources", "qml", "Marketplace.qml")
self._window = CuraApplication.getInstance().createQmlComponent(path, {}) self._window = CuraApplication.getInstance().createQmlComponent(path, {"plugin_registry": self.plugin_registry})
if self._window is None: # Still None? Failed to load the QML then. if self._window is None: # Still None? Failed to load the QML then.
return return
self._window.show() self._window.show()

View File

@ -232,7 +232,7 @@ Window
{ {
height: quitButton.height + 2 * UM.Theme.getSize("default_margin").width height: quitButton.height + 2 * UM.Theme.getSize("default_margin").width
color: UM.Theme.getColor("primary") color: UM.Theme.getColor("primary")
visible: CuraApplication.getPackageManager().hasPackagesToRemoveOrInstall visible: CuraApplication.getPackageManager().hasPackagesToRemoveOrInstall || plugin_registry.hasPluginsEnabledOrDisabled
anchors anchors
{ {
left: parent.left left: parent.left