checkpoint

This commit is contained in:
Brennen Raimer
2019-04-29 16:50:43 -04:00
parent ce8da72876
commit 79da5c9c1c

View File

@@ -32,7 +32,6 @@ class InstallerWizard(QtWidgets.QWizard):
self.setWindowIcon(QtWidgets.QApplication.instance().windowIcon())
self.intro_page.validatePage = self._requirements_check
self.selection_page.initializePage = self._load_tools
self.currentIdChanged.connect
self.intro.anchorClicked.connect(self._link_clicked)
self.license.anchorClicked.connect(self._link_clicked)
self.install_location.setValidator(Location_Validator(parent=self))
@@ -48,6 +47,7 @@ class InstallerWizard(QtWidgets.QWizard):
self._thread_pool = QtCore.QThreadPool.globalInstance()
self._project_page=Path("https://github.com/norweeg/portable-computing-toolkit-installer/")
@QtCore.pyqtSlot("QUrl")
def _link_clicked(self, address):
"""Receives anchorClicked signal from the intro or license text browsers and opens the address in an external web browser.
Opens an error message window if it is not able to do so.
@@ -62,6 +62,7 @@ class InstallerWizard(QtWidgets.QWizard):
except Exception as e:
self._display_error("An error has occurred",e)
@QtCore.pyqtSlot()
def _select_location(self):
"""Opens a QFileDialog in either the root of the most-recently connected non-network, non-cd drive or the user's home directory,
if no suitable external device is found
@@ -162,6 +163,7 @@ class InstallerWizard(QtWidgets.QWizard):
self._display_error(f"Unable to decode {request.url.toString()}", e).accepted.connect(self.back)
else:
self._populate_menu()
self.selection_menu.itemSelectionChanged.connect(self._enforce_dependencies)
else:
self._display_error(f"Encountered an error while loading supported tools from {request.url().toString()}", reply.errorString()).finished.connect(lambda x: self.back())
@@ -261,9 +263,17 @@ class InstallerWizard(QtWidgets.QWizard):
def _get_selections(self):
"""Returns a subset of the supported tools whose corresponding item was selected by the user.
"""
selected_iterator = MenuIterator(self.selection_menu, QtWidgets.QTreeWidgetItemIterator.Checked|QtWidgets.QTreeWidgetItemIterator.NoChildren)
try:
selected_tools = {item.text(0):self.__tools__[item.text(0)] for item in selected_iterator}
except KeyError as e:
self._display_error(f"Unknown tool selected.", e)
return selected_tools
return list(MenuIterator(self.selection_menu, QtWidgets.QTreeWidgetItemIterator.Checked|QtWidgets.QTreeWidgetItemIterator.NoChildren))
@QtCore.pyqtSlot()
def _enforce_dependencies(self):
for tool in self._get_selections():
try:
dependencies = tool["depends on"].split(",")
except KeyError:
continue
else:
for dependency in [self.selection_menu.findItems(item, QtCore.Qt.MatchFixedString|QtCore.Qt.MatchCaseSensitive|QtCore.Qt.MatchRecursive) for item in dependencies]:
dependency.setSelected(True)
dependency.setHidden(False)