From 77a13e275357639652015110141f66aaad730698 Mon Sep 17 00:00:00 2001 From: Brennen Raimer <5969754+norweeg@users.noreply.github.com> Date: Tue, 30 Apr 2019 15:40:20 -0400 Subject: [PATCH] polished dependency enforcement --- .../ui/installer_wizard.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/portable_computing_toolkit_installer/ui/installer_wizard.py b/portable_computing_toolkit_installer/ui/installer_wizard.py index 7113a69..8cfffb1 100644 --- a/portable_computing_toolkit_installer/ui/installer_wizard.py +++ b/portable_computing_toolkit_installer/ui/installer_wizard.py @@ -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)