mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 15:07:28 -06:00
Added download progress bar to plugin browser
CURA-3856
This commit is contained in:
parent
e6a3577e9d
commit
d815c2afcf
2 changed files with 34 additions and 9 deletions
|
@ -39,8 +39,10 @@ class PluginBrowser(QObject, Extension):
|
|||
self._qml_component = None
|
||||
self._qml_context = None
|
||||
self._dialog = None
|
||||
self._download_progress = 0
|
||||
|
||||
pluginsMetadataChanged = pyqtSignal()
|
||||
onDownloadProgressChanged = pyqtSignal()
|
||||
|
||||
def browsePlugins(self):
|
||||
self._createNetworkManager()
|
||||
|
@ -72,7 +74,10 @@ class PluginBrowser(QObject, Extension):
|
|||
def _onDownloadPluginProgress(self, bytes_sent, bytes_total):
|
||||
if bytes_total > 0:
|
||||
new_progress = bytes_sent / bytes_total * 100
|
||||
|
||||
if new_progress > self._download_progress:
|
||||
self._download_progress = new_progress
|
||||
self.onDownloadProgressChanged.emit()
|
||||
self._download_progress = new_progress
|
||||
if new_progress == 100.0:
|
||||
self._download_plugin_reply.downloadProgress.disconnect(self._onDownloadPluginProgress)
|
||||
self._temp_plugin_file = tempfile.NamedTemporaryFile(suffix = ".curaplugin")
|
||||
|
@ -80,12 +85,18 @@ class PluginBrowser(QObject, Extension):
|
|||
result = PluginRegistry.getInstance().installPlugin("file://" + self._temp_plugin_file.name)
|
||||
self._temp_plugin_file.close() # Plugin was installed, delete temp file
|
||||
|
||||
@pyqtProperty(int, notify = onDownloadProgressChanged)
|
||||
def downloadProgress(self):
|
||||
return self._download_progress
|
||||
|
||||
@pyqtSlot(str)
|
||||
def downloadAndInstallPlugin(self, url):
|
||||
Logger.log("i", "Attempting to download & install plugin from %s", url)
|
||||
url = QUrl(url)
|
||||
self._download_plugin_request = QNetworkRequest(url)
|
||||
self._download_plugin_reply = self._network_manager.get(self._download_plugin_request)
|
||||
self._download_progress = 0
|
||||
self.onDownloadProgressChanged.emit()
|
||||
self._download_plugin_reply.downloadProgress.connect(self._onDownloadPluginProgress)
|
||||
|
||||
@pyqtProperty(QObject, notify=pluginsMetadataChanged)
|
||||
|
|
|
@ -13,7 +13,8 @@ UM.Dialog
|
|||
height: 150
|
||||
ScrollView
|
||||
{
|
||||
anchors.fill: parent
|
||||
width: parent.width
|
||||
height: parent.height - progressbar.height - UM.Theme.getSize("default_margin").height
|
||||
frameVisible: true
|
||||
ListView
|
||||
{
|
||||
|
@ -24,6 +25,17 @@ UM.Dialog
|
|||
delegate: pluginDelegate
|
||||
}
|
||||
}
|
||||
ProgressBar
|
||||
{
|
||||
id: progressbar
|
||||
anchors.bottom: parent.bottom
|
||||
style: UM.Theme.styles.progressbar
|
||||
minimumValue: 0;
|
||||
maximumValue: 100
|
||||
width: parent.width
|
||||
height: 20
|
||||
value: manager.downloadProgress
|
||||
}
|
||||
Item
|
||||
{
|
||||
SystemPalette { id: palette }
|
||||
|
@ -37,23 +49,25 @@ UM.Dialog
|
|||
color: index % 2 ? palette.base : palette.alternateBase
|
||||
Row
|
||||
{
|
||||
width: parent.width
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height;
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
Label
|
||||
{
|
||||
|
||||
text: model.name
|
||||
width: contentWidth
|
||||
}
|
||||
|
||||
}
|
||||
Button
|
||||
{
|
||||
text: "Download"
|
||||
onClicked: manager.downloadAndInstallPlugin(model.file_location)
|
||||
}
|
||||
}
|
||||
}
|
||||
anchors.right: parent.right
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue