checkpoint. beginning download process
This commit is contained in:
@@ -10,6 +10,7 @@ import json
|
||||
from collections import deque
|
||||
from itertools import product
|
||||
from functools import partial
|
||||
from threading import Lock
|
||||
|
||||
import psutil
|
||||
from PyQt5 import QtCore, QtGui, QtNetwork, QtWebEngineWidgets, QtWidgets
|
||||
@@ -24,6 +25,7 @@ except ImportError:
|
||||
|
||||
from validators.location_validator import Location_Validator
|
||||
from .menu_iterator import MenuIterator
|
||||
from .downloader import DownloadWorker, Downloader
|
||||
|
||||
class InstallerWizard(QtWidgets.QWizard):
|
||||
def __init__(self, parent=None):
|
||||
@@ -49,6 +51,7 @@ class InstallerWizard(QtWidgets.QWizard):
|
||||
self._network_manager = QtNetwork.QNetworkAccessManager(parent=QtWidgets.QApplication.instance())
|
||||
self._thread_pool = QtCore.QThreadPool.globalInstance()
|
||||
self._project_page=Path("https://github.com/norweeg/portable-computing-toolkit-installer/")
|
||||
self._progress_update_lock = Lock()
|
||||
|
||||
@QtCore.pyqtSlot("QUrl")
|
||||
def _link_clicked(self, address):
|
||||
@@ -327,3 +330,47 @@ class InstallerWizard(QtWidgets.QWizard):
|
||||
self._display_error(f"{str().join(names_of_dependant_items)} {depend_text} on {item.text(0)}")
|
||||
item.setCheckState(0, QtCore.Qt.Checked)
|
||||
|
||||
def _begin_downloads(self, download_queue = None, install_ready = None, download_directory = None):
|
||||
if download_queue:
|
||||
pass
|
||||
else:
|
||||
self._download_queue = Queue()
|
||||
|
||||
if install_ready:
|
||||
pass
|
||||
else:
|
||||
self._install_ready = Queue()
|
||||
|
||||
self._download_error = Queue()
|
||||
|
||||
if download_directory:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
self._download_directory = QtCore.QTemporaryDir()
|
||||
except Exception as e:
|
||||
self._display_error(str(e), self._download_directory.errorString()).accepted.connect(lambda: self.back())
|
||||
|
||||
if self._download_queue.empty():
|
||||
tools_by_name = {tool["name"]:tool for tool in self.__tools__}
|
||||
self._download_progress = {}
|
||||
for selected_tool in self._get_selections():
|
||||
self._download_queue.put_nowait(tools_by_name[selected_tool.text(0)])
|
||||
self.progress_bar.setRange(0, self._download_queue.qsize())
|
||||
|
||||
while self._thread_pool.activeThreadCount() < self._thread_pool.maxThreadCount() and not self._download_queue.empty():
|
||||
self._thread_pool.tryStart(DownloadWorker(self._download_queue, self._install_ready, self._download_error, self._download_directory, self))
|
||||
QtCore.QThread.currentThread().msleep(250)
|
||||
|
||||
assert self._download_error.empty()
|
||||
|
||||
|
||||
@QtCore.pyqtSignal(str, int, int)
|
||||
def track_progress(self, tool_name, bytes_received, bytes_total):
|
||||
if tool_name not in [tool["name"] for tool in self.__tools__]:
|
||||
return
|
||||
else:
|
||||
self._download_progress[tool_name] = bytes_received/bytes_total
|
||||
self._progress_update_lock.acquire()
|
||||
self.progress_bar.setValue(sum(self._download_progress.values()))
|
||||
self._progress_update_lock.release()
|
||||
|
||||
Reference in New Issue
Block a user