mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-16 03:07:53 -06:00
Ensure that check for updates is called on startup of Cura
CURA-8588
This commit is contained in:
parent
0615369cba
commit
3b2be48390
5 changed files with 42 additions and 19 deletions
|
@ -16,7 +16,7 @@ from .LocalPackageList import LocalPackageList # To register this type with QML
|
||||||
from .RestartManager import RestartManager # 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.
|
The main managing object for the Marketplace plug-in.
|
||||||
"""
|
"""
|
||||||
|
@ -37,16 +37,44 @@ class Marketplace(Extension):
|
||||||
tabShownChanged = pyqtSignal()
|
tabShownChanged = pyqtSignal()
|
||||||
tabShown = pyqtProperty(int, fget=getTabShown, fset=setTabShown, notify=tabShownChanged)
|
tabShown = pyqtProperty(int, fget=getTabShown, fset=setTabShown, notify=tabShownChanged)
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self, parent: Optional[QObject] = None) -> None:
|
||||||
super().__init__()
|
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._window: Optional["QObject"] = None # If the window has been loaded yet, it'll be cached in here.
|
||||||
self._plugin_registry: Optional[PluginRegistry] = None
|
self._plugin_registry: Optional[PluginRegistry] = None
|
||||||
self._tab_manager = Marketplace.TabManager()
|
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")
|
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()
|
@pyqtSlot()
|
||||||
def show(self) -> None:
|
def show(self) -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -60,7 +88,7 @@ class Marketplace(Extension):
|
||||||
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, {"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.
|
if self._window is None: # Still None? Failed to load the QML then.
|
||||||
return
|
return
|
||||||
self._tab_manager.setTabShown(0)
|
self._tab_manager.setTabShown(0)
|
||||||
|
|
|
@ -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: ``True`` if a Footer should be displayed in the ListView, e.q.: paginated lists, ``False`` Otherwise"""
|
||||||
return self._has_footer
|
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)
|
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:
|
def _openLicenseDialog(self, package_id: str, license_content: str) -> None:
|
||||||
plugin_path = self._plugin_registry.getPluginPath("Marketplace")
|
plugin_path = self._plugin_registry.getPluginPath("Marketplace")
|
||||||
|
|
|
@ -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"
|
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser"
|
||||||
packagesManageableInListView: true
|
packagesManageableInListView: true
|
||||||
|
|
||||||
model: Marketplace.LocalPackageList
|
model: manager.LocalPackageList
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/materials?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-materials-browser"
|
||||||
packagesManageableInListView: false
|
packagesManageableInListView: false
|
||||||
|
|
||||||
model: Marketplace.RemotePackageList
|
model: manager.MaterialPackageList
|
||||||
{
|
|
||||||
packageTypeFilter: "material"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser"
|
||||||
packagesManageableInListView: false
|
packagesManageableInListView: false
|
||||||
|
|
||||||
model: Marketplace.RemotePackageList
|
model: manager.PluginPackageList
|
||||||
{
|
|
||||||
packageTypeFilter: "plugin"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue