checkpoint
This commit is contained in:
@@ -32,7 +32,6 @@ class InstallerWizard(QtWidgets.QWizard):
|
|||||||
self.setWindowIcon(QtWidgets.QApplication.instance().windowIcon())
|
self.setWindowIcon(QtWidgets.QApplication.instance().windowIcon())
|
||||||
self.intro_page.validatePage = self._requirements_check
|
self.intro_page.validatePage = self._requirements_check
|
||||||
self.selection_page.initializePage = self._load_tools
|
self.selection_page.initializePage = self._load_tools
|
||||||
self.currentIdChanged.connect
|
|
||||||
self.intro.anchorClicked.connect(self._link_clicked)
|
self.intro.anchorClicked.connect(self._link_clicked)
|
||||||
self.license.anchorClicked.connect(self._link_clicked)
|
self.license.anchorClicked.connect(self._link_clicked)
|
||||||
self.install_location.setValidator(Location_Validator(parent=self))
|
self.install_location.setValidator(Location_Validator(parent=self))
|
||||||
@@ -48,6 +47,7 @@ class InstallerWizard(QtWidgets.QWizard):
|
|||||||
self._thread_pool = QtCore.QThreadPool.globalInstance()
|
self._thread_pool = QtCore.QThreadPool.globalInstance()
|
||||||
self._project_page=Path("https://github.com/norweeg/portable-computing-toolkit-installer/")
|
self._project_page=Path("https://github.com/norweeg/portable-computing-toolkit-installer/")
|
||||||
|
|
||||||
|
@QtCore.pyqtSlot("QUrl")
|
||||||
def _link_clicked(self, address):
|
def _link_clicked(self, address):
|
||||||
"""Receives anchorClicked signal from the intro or license text browsers and opens the address in an external web browser.
|
"""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.
|
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:
|
except Exception as e:
|
||||||
self._display_error("An error has occurred",e)
|
self._display_error("An error has occurred",e)
|
||||||
|
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
def _select_location(self):
|
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,
|
"""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
|
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)
|
self._display_error(f"Unable to decode {request.url.toString()}", e).accepted.connect(self.back)
|
||||||
else:
|
else:
|
||||||
self._populate_menu()
|
self._populate_menu()
|
||||||
|
self.selection_menu.itemSelectionChanged.connect(self._enforce_dependencies)
|
||||||
else:
|
else:
|
||||||
self._display_error(f"Encountered an error while loading supported tools from {request.url().toString()}", reply.errorString()).finished.connect(lambda x: self.back())
|
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):
|
def _get_selections(self):
|
||||||
"""Returns a subset of the supported tools whose corresponding item was selected by the user.
|
"""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)
|
return list(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}
|
@QtCore.pyqtSlot()
|
||||||
except KeyError as e:
|
def _enforce_dependencies(self):
|
||||||
self._display_error(f"Unknown tool selected.", e)
|
for tool in self._get_selections():
|
||||||
return selected_tools
|
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