Esempio n. 1
0
    def _generate_items_from_node_dict(self):
        node_names = sorted(self._node_dict.keys())
        node_types = sorted(self._node_dict.values())

        self._menus.clear()
        self._actions.clear()
        self._searched_actions.clear()

        for node_type in node_types:
            menu_name = ".".join(node_type.split(".")[:-1])
            if menu_name not in self._menus.keys():
                new_menu = QtWidgets.QMenu(menu_name)
                new_menu.setStyleSheet(STYLE_QMENU)
                self._menus[menu_name] = new_menu
                self.SearchMenu.addMenu(new_menu)

        for name in node_names:
            action = QtWidgets.QAction(name, self)
            action.setText(name)
            action.triggered.connect(self._on_search_submitted)
            self._actions.append(action)

            menu_name = self._node_dict[name]
            menu_name = ".".join(menu_name.split(".")[:-1])

            if menu_name in self._menus.keys():
                self._menus[menu_name].addAction(action)
            else:
                self.SearchMenu.addAction(action)
Esempio n. 2
0
    def __init__(self, parent=None):
        super(NodeGraph, self).__init__(parent)
        self.setObjectName('NodeGraphQt')
        self._model = NodeGraphModel()
        self._viewer = NodeViewer(parent)
        self._node_factory = NodeFactory()
        self._undo_stack = QtWidgets.QUndoStack(self)

        tab = QtWidgets.QAction('Search Nodes', self)
        tab.setShortcut('tab')
        tab.triggered.connect(self._toggle_tab_search)
        self._viewer.addAction(tab)

        self._wire_signals()
Esempio n. 3
0
    def add_command(self, name, func=None, shortcut=None):
        """
        Adds a command to the menu.

        Args:
            name (str): command name.
            func (function): command function.
            shortcut (str): function shotcut key.

        Returns:
            NodeGraphQt.MenuCommand: the appended command.
        """
        action = QtWidgets.QAction(name, self.__viewer)
        if LooseVersion(QtCore.qVersion()) >= LooseVersion('5.10'):
            action.setShortcutVisibleInContextMenu(True)
        if shortcut:
            action.setShortcut(shortcut)
        if func:
            action.triggered.connect(func)
        qaction = self.qmenu.addAction(action)
        return MenuCommand(self.__viewer, qaction)
Esempio n. 4
0
 def _add_action(self, step):
     action = QtWidgets.QAction(str(step), self)
     action.step = step
     self.addAction(action)
    def setupMenuBar(self, graph: NodeGraph):
        rootMenu = graph.context_menu()

        fileMenu = rootMenu.add_menu('&File')
        editMenu = rootMenu.add_menu('&Edit')

        # create "File" menu.
        fileMenu.add_command('Open Graph...',
                             lambda: actions._open_session(graph),
                             QtGui.QKeySequence.Open)
        fileMenu.add_command('Export Graph As...',
                             lambda: actions._save_session_as(graph),
                             'Alt+Shift+s')
        fileMenu.add_command('Clear', lambda: actions._clear_session(graph))

        fileMenu.add_separator()

        fileMenu.add_command('Zoom In', lambda: actions._zoom_in(graph), '=')
        fileMenu.add_command('Zoom Out', lambda: actions._zoom_out(graph), '-')
        fileMenu.add_command('Reset Zoom', graph.reset_zoom, 'h')

        # create "Edit" menu.
        undo_actn = graph.undo_stack().createUndoAction(
            graph.viewer(), '&Undo')
        if LooseVersion(QtCore.qVersion()) >= LooseVersion('5.10'):
            undo_actn.setShortcutVisibleInContextMenu(True)
        undo_actn.setShortcuts(QtGui.QKeySequence.Undo)
        editMenu.qmenu.addAction(undo_actn)

        redo_actn = graph.undo_stack().createRedoAction(
            graph.viewer(), '&Redo')
        if LooseVersion(QtCore.qVersion()) >= LooseVersion('5.10'):
            redo_actn.setShortcutVisibleInContextMenu(True)
        redo_actn.setShortcuts(QtGui.QKeySequence.Redo)
        editMenu.qmenu.addAction(redo_actn)

        editMenu.add_separator()
        editMenu.add_command('Clear Undo History',
                             lambda: actions._clear_undo(graph))
        editMenu.add_separator()

        editMenu.add_command('Copy', graph.copy_nodes, QtGui.QKeySequence.Copy)
        editMenu.add_command('Paste', graph.paste_nodes,
                             QtGui.QKeySequence.Paste)
        editMenu.add_command(
            'Delete', lambda: graph.delete_nodes(graph.selected_nodes()),
            QtGui.QKeySequence.Delete)

        editMenu.add_separator()

        editMenu.add_command('Select all', graph.select_all, 'Ctrl+A')
        editMenu.add_command('Deselect all', graph.clear_selection,
                             'Ctrl+Shift+A')
        editMenu.add_command(
            'Enable/Disable',
            lambda: graph.disable_nodes(graph.selected_nodes()), 'd')

        editMenu.add_command(
            'Duplicate', lambda: graph.duplicate_nodes(graph.selected_nodes()),
            'Alt+c')
        editMenu.add_command('Center Selection', graph.fit_to_selection, 'f')

        editMenu.add_separator()

        menuBar = QtWidgets.QMenuBar()
        sessionMenu = QtWidgets.QMenu("Session")

        menuBar.addMenu(fileMenu.qmenu)
        menuBar.addMenu(editMenu.qmenu)
        menuBar.addMenu(sessionMenu)

        self.saveAction = QtWidgets.QAction("Save")
        self.saveAction.setShortcut(QtGui.QKeySequence.Save)
        self.saveAction.triggered.connect(self.onSave)

        self.saveAsAction = QtWidgets.QAction("Save As...")
        self.saveAsAction.setShortcut("Ctrl+Shift+S")
        self.saveAsAction.triggered.connect(self.onSaveAs)

        self.loadAction = QtWidgets.QAction("Load")
        self.loadAction.triggered.connect(self.onLoad)

        self.runAction = QtWidgets.QAction("Run")
        self.runAction.triggered.connect(self.onRun)
        self.runAction.setShortcut(QtGui.QKeySequence("R"))

        self.openInCode = QtWidgets.QAction("Show Code In Visual Studio Code")
        self.openInCode.triggered.connect(self.onOpenInVisualStudioCode)
        self.openInCode.setShortcut(QtGui.QKeySequence("Q"))

        sessionMenu.addAction(self.saveAction)
        sessionMenu.addAction(self.saveAsAction)
        sessionMenu.addAction(self.loadAction)
        sessionMenu.addAction(self.runAction)
        sessionMenu.addAction(self.openInCode)
        self.sessionMenu = sessionMenu

        self.viewMenu = QtWidgets.QMenu("View")
        menuBar.addMenu(self.viewMenu)

        self.window.verticalLayout.insertWidget(0, menuBar)