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
|
#find all checked items and build a set of their dependencies
|
||||||
selected = self._get_selections()
|
selected = self._get_selections()
|
||||||
dependencies_of_selected = set()
|
dependencies_of_selected = set()
|
||||||
|
names_of_dependant_items = []
|
||||||
for selected_item in selected:
|
for selected_item in selected:
|
||||||
try:
|
try:
|
||||||
dependencies_of_selected |= set((tools_by_name[selected_item.text(0)]["depends on"]).split(","))
|
dependencies_of_selected |= set((tools_by_name[selected_item.text(0)]["depends on"]).split(","))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
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 the item that was just unchecked is a dependency of another selected item
|
||||||
if item.text(0) in dependencies_of_selected:
|
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)
|
item.setCheckState(0, QtCore.Qt.Checked)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user