QGIS/python/pyplugin_installer/qgsplugininstallerfetchingdialog.py

92 lines
3.9 KiB
Python

# -*- coding:utf-8 -*-
"""
/***************************************************************************
qgsplugininstallerfetchingdialog.py
Plugin Installer module
-------------------
Date : June 2013
Copyright : (C) 2013 by Borys Jurgiel
Email : info at borysjurgiel dot pl
This module is based on former plugin_installer plugin:
Copyright (C) 2007-2008 Matthew Perry
Copyright (C) 2008-2013 Borys Jurgiel
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
from qgis.PyQt.QtCore import Qt, QCoreApplication
from qgis.PyQt.QtWidgets import QDialog, QTreeWidgetItem
from .ui_qgsplugininstallerfetchingbase import Ui_QgsPluginInstallerFetchingDialogBase
from .installer_data import repositories
from qgis.gui import QgsGui
class QgsPluginInstallerFetchingDialog(QDialog, Ui_QgsPluginInstallerFetchingDialogBase):
# ----------------------------------------- #
def __init__(self, parent):
QDialog.__init__(self, parent)
self.setupUi(self)
QgsGui.instance().enableAutoGeometryRestore(self)
self.progressBar.setRange(0, len(repositories.allEnabled()) * 100)
self.itemProgress = {}
self.item = {}
for key in repositories.allEnabled():
self.item[key] = QTreeWidgetItem(self.treeWidget)
self.item[key].setText(0, key)
if repositories.all()[key]["state"] > 1:
self.itemProgress[key] = 100
self.displayState(key, 0)
else:
self.itemProgress[key] = 0
self.displayState(key, 2)
self.treeWidget.resizeColumnToContents(0)
self.treeWidget.setCursor(Qt.WaitCursor)
repositories.repositoryFetched.connect(self.repositoryFetched)
repositories.anythingChanged.connect(self.displayState)
# ----------------------------------------- #
def displayState(self, key, state, state2=None):
messages = [
self.tr("Success"),
QCoreApplication.translate('QgsPluginInstallerFetchingDialog', "Resolving host name…"),
QCoreApplication.translate('QgsPluginInstallerFetchingDialog', "Connecting…"),
QCoreApplication.translate('QgsPluginInstallerFetchingDialog', "Host connected. Sending request…"),
QCoreApplication.translate('QgsPluginInstallerFetchingDialog', "Downloading data…"),
self.tr("Idle"),
QCoreApplication.translate('QgsPluginInstallerFetchingDialog', "Closing connection…"),
self.tr("Error")
]
message = messages[state]
if state2:
message += " (%s%%)" % state2
self.item[key].setText(1, message)
if state == 4 and state2:
self.itemProgress[key] = state2
totalProgress = sum(self.itemProgress.values())
self.progressBar.setValue(totalProgress)
# ----------------------------------------- #
def repositoryFetched(self, repoName):
self.itemProgress[repoName] = 100
if repositories.all()[repoName]["state"] == 2:
self.displayState(repoName, 0)
else:
self.displayState(repoName, 7)
if not repositories.fetchingInProgress():
self.close()