From 32d7cfff534e9ebd14505b5d70470b13a6bb4799 Mon Sep 17 00:00:00 2001 From: Audrey Dutcher Date: Thu, 17 Nov 2022 14:08:03 -0700 Subject: [PATCH] Create new group --- typetapper/hierarchy_graph_view.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/typetapper/hierarchy_graph_view.py b/typetapper/hierarchy_graph_view.py index 6446d60..5494f9c 100644 --- a/typetapper/hierarchy_graph_view.py +++ b/typetapper/hierarchy_graph_view.py @@ -115,6 +115,10 @@ class HierarchicalGraphWidget(QZoomableDraggableGraphicsView): self._action_rename.setShortcut("N") self._action_rename.triggered.connect(self.rename_selected_node) self.viewport().addAction(self._action_rename) + self._action_create = QAction("Create Group") + self._action_create.setShortcut("C") + self._action_create.triggered.connect(self.new_group) + self.viewport().addAction(self._action_create) self.setScene(QGraphicsScene()) self.scene().selectionChanged.connect(self._on_selection_changed_internal) @@ -362,6 +366,18 @@ class HierarchicalGraphWidget(QZoomableDraggableGraphicsView): self._labels[self.selected_node] = text self.qnodes[self.ug_reverse[self.selected_node]].layout() + def new_group(self): + if len(self.selected_nodes) > 0: + new_pos = sum((self.qnodes[self.ug_reverse[model]].center for model in self.selected_nodes), QPointF()) / len(self.selected_nodes) + else: + new_pos = self.mapToScene(self.viewport().rect().center()) + + grp = self.hg.create_group([model for model in self.selected_nodes if isinstance(model, (RelativeAtom, RelativeAtomGroup))], self.current_group.am_obj) + self._layouts[self.current_group.am_obj][grp] = new_pos.toPoint() + self._labels[grp] = 'New Group' + self._layout(0) + self.qnodes[self.ug_reverse[grp]].setSelected(True) + # private interfaces def _rekey_externs(self, old_qnode: 'PropChartHG', new_qnode: 'PropChartHG'):