polished dependency enforcement
This commit is contained in:
@@ -303,13 +303,26 @@ class InstallerWizard(QtWidgets.QWizard):
|
||||
#find all checked items and build a set of their dependencies
|
||||
selected = self._get_selections()
|
||||
dependencies_of_selected = set()
|
||||
names_of_dependant_items = []
|
||||
for selected_item in selected:
|
||||
try:
|
||||
dependencies_of_selected |= set((tools_by_name[selected_item.text(0)]["depends on"]).split(","))
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
if item.text(0) in (tools_by_name[selected_item.text(0)]["depends on"]).split(","):
|
||||
names_of_dependant_items.append(selected_item.text(0))
|
||||
#if the item that was just unchecked is a dependency of another selected item
|
||||
if item.text(0) in dependencies_of_selected:
|
||||
self._display_error(f"Selected items depend on {item.text(0)}")
|
||||
#build a gramatically correct error (minus oxford comma (sorry!!))
|
||||
if len(names_of_dependant_items) > 1:
|
||||
for name in names_of_dependant_items[1:-1]:
|
||||
name = f", {name}"
|
||||
names_of_dependant_items[-1] = f" and {names_of_dependant_items[-1]}"
|
||||
depend_text = "depend"
|
||||
else:
|
||||
depend_text = "depends"
|
||||
#display the error and disallow unchecking item while something that depends on it is selected
|
||||
self._display_error(f"{str().join(names_of_dependant_items)} {depend_text} on {item.text(0)}")
|
||||
item.setCheckState(0, QtCore.Qt.Checked)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user