From d8604f992c8aa2fe7b5160df8e51591dfb6398b9 Mon Sep 17 00:00:00 2001 From: Maciej Bartkowiak Date: Fri, 14 Feb 2025 09:40:27 +0000 Subject: [PATCH] Add string parsing to index range selection widget --- .../Src/MDANSE_GUI/InputWidgets/AtomSelectionWidget.py | 4 +++- MDANSE_GUI/Src/MDANSE_GUI/Widgets/SelectionWidgets.py | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/MDANSE_GUI/Src/MDANSE_GUI/InputWidgets/AtomSelectionWidget.py b/MDANSE_GUI/Src/MDANSE_GUI/InputWidgets/AtomSelectionWidget.py index e8f356d2c..858ff7be9 100644 --- a/MDANSE_GUI/Src/MDANSE_GUI/InputWidgets/AtomSelectionWidget.py +++ b/MDANSE_GUI/Src/MDANSE_GUI/InputWidgets/AtomSelectionWidget.py @@ -60,11 +60,13 @@ def __init__(self, trajectory): def rebuild_selection(self, last_operation: str): self._selection = ReusableSelection() self._current_selection = set() + total_dict = {} for row in range(self.rowCount()): index = self.index(row, 0) item = self.itemFromIndex(index) json_string = item.text() - self._selection.load_from_json(json_string) + total_dict[row] = json.loads(json_string) + self._selection.load_from_json(json.dumps(total_dict)) self._current_selection = self._selection.select_in_trajectory(self._trajectory) if last_operation: try: diff --git a/MDANSE_GUI/Src/MDANSE_GUI/Widgets/SelectionWidgets.py b/MDANSE_GUI/Src/MDANSE_GUI/Widgets/SelectionWidgets.py index 9d1454490..9d7e734b5 100644 --- a/MDANSE_GUI/Src/MDANSE_GUI/Widgets/SelectionWidgets.py +++ b/MDANSE_GUI/Src/MDANSE_GUI/Widgets/SelectionWidgets.py @@ -170,15 +170,18 @@ def switch_mode(self, new_mode: str): if new_mode == "list": self.selection_field.setPlaceholderText("0,1,2") self.selection_keyword = "index_list" + self.selection_separator = ',' if new_mode == "range": self.selection_field.setPlaceholderText("0-20") self.selection_keyword = "index_range" + self.selection_separator = '-' if new_mode == "slice": self.selection_field.setPlaceholderText("first:last:step") self.selection_keyword = "index_slice" + self.selection_separator = ':' def parameter_dictionary(self): function_parameters = {"function_name": "select_atoms"} selection = self.selection_field.text() - function_parameters[self.selection_keyword] = selection + function_parameters[self.selection_keyword] = [int(x) for x in selection.split(self.selection_separator)] return function_parameters