Skip to content

Commit ff239f8

Browse files
committed
node viewer expose undo & redo actions.
1 parent 8ab7dcd commit ff239f8

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

NodeGraphQt/base/graph.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2151,8 +2151,11 @@ def _clone_context_menu_from_parent(self):
21512151
"""
21522152
Clone the context menus from the parent node graph.
21532153
"""
2154-
undo_regex = re.compile(r'^\&Undo(?:| \w+)')
2155-
redo_regex = re.compile(r'^\&Redo(?:| \w+)')
2154+
graph_menu = self.get_context_menu('graph')
2155+
parent_menu = self.parent_graph.get_context_menu('graph')
2156+
parent_viewer = self.parent_graph.viewer()
2157+
excl_actions = [parent_viewer.qaction_for_undo(),
2158+
parent_viewer.qaction_for_redo()]
21562159

21572160
def clone_menu(menu, menu_to_clone):
21582161
"""
@@ -2161,7 +2164,7 @@ def clone_menu(menu, menu_to_clone):
21612164
menu_to_clone (NodeGraphQt.NodeGraphMenu):
21622165
"""
21632166
sub_items = []
2164-
for idx, item in enumerate(menu_to_clone.get_items()):
2167+
for item in menu_to_clone.get_items():
21652168
if item is None:
21662169
menu.add_separator()
21672170
continue
@@ -2171,9 +2174,9 @@ def clone_menu(menu, menu_to_clone):
21712174
sub_items.append([sub_menu, item])
21722175
continue
21732176

2174-
if idx <= 1:
2175-
if undo_regex.match(name) or redo_regex.match(name):
2176-
continue
2177+
if item in excl_actions:
2178+
continue
2179+
21772180
menu.add_command(
21782181
name,
21792182
func=item.slot_function,
@@ -2183,8 +2186,7 @@ def clone_menu(menu, menu_to_clone):
21832186
for sub_menu, to_clone in sub_items:
21842187
clone_menu(sub_menu, to_clone)
21852188

2186-
graph_menu = self.get_context_menu('graph')
2187-
parent_menu = self.parent_graph.get_context_menu('graph')
2189+
# duplicate the menu items.
21882190
clone_menu(graph_menu, parent_menu)
21892191

21902192
def _build_port_nodes(self):

NodeGraphQt/widgets/viewer.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,31 @@ def rebuild_tab_search(self):
950950
if isinstance(self._search_widget, TabSearchMenuWidget):
951951
self._search_widget.rebuild = True
952952

953+
def qaction_for_undo(self):
954+
"""
955+
Get the undo QAction from the parent undo stack.
956+
957+
Returns:
958+
QtWidgets.QAction: undo action.
959+
"""
960+
return self._undo_action
961+
962+
def qaction_for_redo(self):
963+
"""
964+
Get the redo QAction from the parent undo stack.
965+
966+
Returns:
967+
QtWidgets.QAction: redo action.
968+
"""
969+
return self._redo_action
970+
953971
def context_menus(self):
972+
"""
973+
All the available context menus for the viewer.
974+
975+
Returns:
976+
dict: viewer context menu.
977+
"""
954978
return {'graph': self._ctx_graph_menu, 'nodes': self._ctx_node_menu}
955979

956980
def question_dialog(self, text, title='Node Graph'):

0 commit comments

Comments
 (0)