checkpoint. beginning download process

This commit is contained in:
Brennen Raimer
2019-05-01 17:03:57 -04:00
parent cb491c7bbd
commit 602273a219
4 changed files with 144 additions and 13 deletions
@@ -1,18 +1,23 @@
from pathlib import Path
import webbrowser
from queue import Queue, Empty
from PyQt5 import QtCore, QtGui, QtNetwork, QtWebEngineWidgets, QtWidgets
from PyQt5.uic import loadUi
class Downloader(QtWidgets.QMainWindow):
def __init__(self, tool_name, tool_info, download_directory, parent = None, flags = None):
download_progress = QtCore.pyqtSignal(str, int, int)
def __init__(self, download_queue, install_ready, download_directory, parent = None, flags = None):
super().__init__(parent, flags)
loadUi(Path(__file__).parent / "downloader.ui", baseinstance = self)
self.hide()
#create an off-the-record profile, isolated from other Downloader objects
new_page = QtWebEngineWidgets.QtWebEnginePage(QtWebEngineWidgets.QWebEngineProfile(self.web_view))
self.web_view.setPage(new_page)
self._load_result = Queue(maxsize=1)
#set application style and decorate pushbuttons
self._style = QtWidgets.QApplication.instance().style()
self.setWindowIcon(QtWidgets.QApplication.instance().windowIcon())
@@ -29,14 +34,10 @@ class Downloader(QtWidgets.QMainWindow):
self.actionCancel.triggered.connect(self._cancel_manual_search)
self.actionCancel_and_Open_Issue_on_Github.triggered.connect(self._cancel_manual_search_open_issue)
#set attributes
self._tool_name = tool_name
self._tool_info = tool_info
self._download_queue = download_queue
self._install_ready = install_ready
self._download_directory = download_directory
#name window from attribute
self.setWindowTitle(f"Find {self._tool_name}")
#get homepage from attributes and set home button to load it
self._home_page = tool_info["homepage"]
self.home_button.clicked.connect(lambda: self.web_view.load(QtCore.QUrl(self._home_page)))
def _reload_becomes_stop(self):
"""Turns the reload button into a stop button.
@@ -86,15 +87,42 @@ class Downloader(QtWidgets.QMainWindow):
self.web_view.load(QtCore.QUrl(self._home_page))
def begin_auto_search(self):
pass
try:
tool_info = self._download_queue.get(timeout = 1)
except Empty:
QtCore.QThread.currentThread().quit()
else:
self._tool_name = tool_info["name"]
self._tool_info = tool_info
self._home_page = tool_info["homepage"]
#name window from attribute
self.setWindowTitle(f"Find {self._tool_name}")
#get homepage from attributes and set home button to load it
self.home_button.clicked.connect(lambda: self.web_view.load(QtCore.QUrl(self._home_page)))
self.web_view.loadFinished.connect()
def _download_file(self):
self._download_file(self._find_installer_url())
def _find_installer_url(self):
self.web_view.load(QtCore.QUrl(self._tool_info["page"]))
load_result = self._load_result.get()
def _download_file(self, url):
pass
class DownloadWorker(QtCore.QRunnable):
def __init__(self, tool_name, tool_info, download_directory):
def __init__(self, download_queue, install_ready, download_error, download_directory, wizard):
super().__init__()
self._downloader = Downloader(tool_name, tool_info, download_directory)
self._download_queue = download_queue
self._install_ready = install_ready
self._download_directory = download_directory
self._wizard = wizard
def run(self):
self._downloader.begin_auto_search()
downloader = Downloader(self.download_queue, self._install_ready, self._download_error, self._download_directory)
downloader.download_progress.connect(self._wizard.track_progress)
downloader.begin_auto_search()