Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime van Kessel <nallath@gmail.com>2022-01-03 13:01:17 +0300
committerJaime van Kessel <nallath@gmail.com>2022-01-03 13:01:17 +0300
commit3b2be48390abfb465cd85446662cfe253e723507 (patch)
treede1abcfd16164e021cf991a631b671b1b1f1eb80
parent0615369cba94ad4671b7e8817cd168f464517f89 (diff)
Ensure that check for updates is called on startup of Cura
CURA-8588
-rw-r--r--plugins/Marketplace/Marketplace.py40
-rw-r--r--plugins/Marketplace/PackageList.py7
-rw-r--r--plugins/Marketplace/resources/qml/ManagedPackages.qml4
-rw-r--r--plugins/Marketplace/resources/qml/Materials.qml5
-rw-r--r--plugins/Marketplace/resources/qml/Plugins.qml5
5 files changed, 42 insertions, 19 deletions
diff --git a/plugins/Marketplace/Marketplace.py b/plugins/Marketplace/Marketplace.py
index dee2e0f4ac..9bc1a2713c 100644
--- a/plugins/Marketplace/Marketplace.py
+++ b/plugins/Marketplace/Marketplace.py
@@ -16,7 +16,7 @@ from .LocalPackageList import LocalPackageList # To register this type with QML
from .RestartManager import RestartManager # To register this type with QML.
-class Marketplace(Extension):
+class Marketplace(Extension, QObject):
"""
The main managing object for the Marketplace plug-in.
"""
@@ -37,16 +37,44 @@ class Marketplace(Extension):
tabShownChanged = pyqtSignal()
tabShown = pyqtProperty(int, fget=getTabShown, fset=setTabShown, notify=tabShownChanged)
- def __init__(self) -> None:
- super().__init__()
+ def __init__(self, parent: Optional[QObject] = None) -> None:
+ QObject.__init__(self, parent)
+ 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
self._tab_manager = Marketplace.TabManager()
+ self._package_manager = CuraApplication.getInstance().getPackageManager()
+
+ self._material_package_list: Optional[RemotePackageList] = None
+ self._plugin_package_list: Optional[RemotePackageList] = None
+
+ # Not entirely the cleanest code, since the localPackage list also checks the server if there are updates
+ # Since that in turn will trigger notifications to be shown, we do need to construct it here and make sure
+ # that it checks for updates...
+ self._local_package_list = LocalPackageList(self)
+ self._local_package_list.checkForUpdates(self._package_manager.local_packages)
- qmlRegisterType(RemotePackageList, "Marketplace", 1, 0, "RemotePackageList")
- qmlRegisterType(LocalPackageList, "Marketplace", 1, 0, "LocalPackageList")
qmlRegisterType(RestartManager, "Marketplace", 1, 0, "RestartManager")
+ @pyqtProperty(QObject, constant=True)
+ def MaterialPackageList(self):
+ if self._material_package_list is None:
+ self._material_package_list = RemotePackageList()
+ self._material_package_list.packageTypeFilter = "material"
+
+ return self._material_package_list
+
+ @pyqtProperty(QObject, constant=True)
+ def PluginPackageList(self):
+ if self._plugin_package_list is None:
+ self._plugin_package_list = RemotePackageList()
+ self._plugin_package_list.packageTypeFilter = "plugin"
+ return self._plugin_package_list
+
+ @pyqtProperty(QObject, constant=True)
+ def LocalPackageList(self):
+ return self._local_package_list
+
@pyqtSlot()
def show(self) -> None:
"""
@@ -60,7 +88,7 @@ class Marketplace(Extension):
if plugin_path is None:
plugin_path = os.path.dirname(__file__)
path = os.path.join(plugin_path, "resources", "qml", "Marketplace.qml")
- self._window = CuraApplication.getInstance().createQmlComponent(path, {"tabManager": self._tab_manager})
+ self._window = CuraApplication.getInstance().createQmlComponent(path, {"tabManager": self._tab_manager, "manager": self})
if self._window is None: # Still None? Failed to load the QML then.
return
self._tab_manager.setTabShown(0)
diff --git a/plugins/Marketplace/PackageList.py b/plugins/Marketplace/PackageList.py
index ddc39e0c94..6d8ab3e4c6 100644
--- a/plugins/Marketplace/PackageList.py
+++ b/plugins/Marketplace/PackageList.py
@@ -132,9 +132,12 @@ class PackageList(ListModel):
:return: ``True`` if a Footer should be displayed in the ListView, e.q.: paginated lists, ``False`` Otherwise"""
return self._has_footer
- def getPackageModel(self, package_id: str) -> PackageModel:
+ def getPackageModel(self, package_id: str) -> Optional[PackageModel]:
index = self.find("package", package_id)
- return self.getItem(index)["package"]
+ data = self.getItem(index)
+ if data:
+ return data.get("package")
+ return None
def _openLicenseDialog(self, package_id: str, license_content: str) -> None:
plugin_path = self._plugin_registry.getPluginPath("Marketplace")
diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml
index dbdc04bf52..7c3d3ecfa2 100644
--- a/plugins/Marketplace/resources/qml/ManagedPackages.qml
+++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml
@@ -22,7 +22,5 @@ Packages
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser"
packagesManageableInListView: true
- model: Marketplace.LocalPackageList
- {
- }
+ model: manager.LocalPackageList
}
diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml
index d19f3a4b04..03abd94077 100644
--- a/plugins/Marketplace/resources/qml/Materials.qml
+++ b/plugins/Marketplace/resources/qml/Materials.qml
@@ -19,8 +19,5 @@ Packages
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/materials?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-materials-browser"
packagesManageableInListView: false
- model: Marketplace.RemotePackageList
- {
- packageTypeFilter: "material"
- }
+ model: manager.MaterialPackageList
}
diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml
index 3cfa92d134..5e8f459e77 100644
--- a/plugins/Marketplace/resources/qml/Plugins.qml
+++ b/plugins/Marketplace/resources/qml/Plugins.qml
@@ -19,8 +19,5 @@ Packages
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser"
packagesManageableInListView: false
- model: Marketplace.RemotePackageList
- {
- packageTypeFilter: "plugin"
- }
+ model: manager.PluginPackageList
}