Plugin browser now shows difference between new & upgradable plugins

CURA-3856
This commit is contained in:
Jaime van Kessel 2017-06-23 13:03:30 +02:00
parent b2a21f0443
commit 68663b2789
2 changed files with 15 additions and 7 deletions

View File

@ -124,6 +124,7 @@ class PluginBrowser(QObject, Extension):
self._plugins_model.addRoleName(Qt.UserRole + 4, "author") self._plugins_model.addRoleName(Qt.UserRole + 4, "author")
self._plugins_model.addRoleName(Qt.UserRole + 5, "already_installed") self._plugins_model.addRoleName(Qt.UserRole + 5, "already_installed")
self._plugins_model.addRoleName(Qt.UserRole + 6, "file_location") self._plugins_model.addRoleName(Qt.UserRole + 6, "file_location")
self._plugins_model.addRoleName(Qt.UserRole + 7, "can_upgrade")
else: else:
self._plugins_model.clear() self._plugins_model.clear()
items = [] items = []
@ -134,22 +135,30 @@ class PluginBrowser(QObject, Extension):
"short_description": metadata["short_description"], "short_description": metadata["short_description"],
"author": metadata["author"], "author": metadata["author"],
"already_installed": self._checkAlreadyInstalled(metadata["id"], metadata["version"]), "already_installed": self._checkAlreadyInstalled(metadata["id"], metadata["version"]),
"file_location": metadata["file_location"] "file_location": metadata["file_location"],
"can_upgrade": self._checkCanUpgrade(metadata["id"], metadata["version"])
}) })
print(items)
self._plugins_model.setItems(items) self._plugins_model.setItems(items)
return self._plugins_model return self._plugins_model
def _checkAlreadyInstalled(self, id, version): def _checkCanUpgrade(self, id, version):
plugin_registry = PluginRegistry.getInstance() plugin_registry = PluginRegistry.getInstance()
metadata = plugin_registry.getMetaData(id) metadata = plugin_registry.getMetaData(id)
if metadata != {}: if metadata != {}:
current_version = Version(metadata["plugin"]["version"]) current_version = Version(metadata["plugin"]["version"])
new_version = Version(version) new_version = Version(version)
if new_version > current_version: if new_version > current_version:
return True
return False return False
def _checkAlreadyInstalled(self, id, version):
plugin_registry = PluginRegistry.getInstance()
metadata = plugin_registry.getMetaData(id)
if metadata != {}:
return True
else: else:
return False return False
return True
def _onRequestFinished(self, reply): def _onRequestFinished(self, reply):
reply_url = reply.url().toString() reply_url = reply.url().toString()

View File

@ -59,14 +59,13 @@ UM.Dialog
text: model.name text: model.name
width: contentWidth width: contentWidth
} }
} }
Button Button
{ {
text: !model.already_installed ? "Download" : "Already Installed" text: !model.already_installed ? "Download" : model.can_upgrade ? "Upgrade" : "Download"
onClicked: manager.downloadAndInstallPlugin(model.file_location) onClicked: manager.downloadAndInstallPlugin(model.file_location)
anchors.right: parent.right anchors.right: parent.right
enabled: !model.already_installed && !manager.isDownloading enabled: (!model.already_installed || model.can_upgrade) && !manager.isDownloading
} }
} }