checkpoint
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user