Example #1
0
    def contextMenuEvent(self, *args, **kwargs):
        menu = trMenuWithTooltip('', self)

        actions = {}

        action = QAction(trStr('Expand all', 'Раскрыть все').text(), None)
        action.setToolTip(trStr('Expand all items in list', 'Раскрыть все элементы списка').text())
        action.triggered.connect(self.expandAll)
        menu.addAction(action)
        actions['expand all'] = action

        action = QAction(trStr('Collapse all', 'Свернуть все').text(), None)
        action.setToolTip(trStr('Collapse all items in list', 'Свернуть все элементы списка').text())
        action.triggered.connect(self.collapseAll)
        menu.addAction(action)
        actions['collapse all'] = action

        if self.topLevelItemCount() == 0:
            actions['expand all'].setEnabled(False)
            actions['collapse all'].setEnabled(False)

        action = _InvisibleAction(trStr('Expand', 'Раскрыть').text(), None)
        action.setToolTip(trStr('Expand current item', 'Раскрыть текущий элемент списка').text())
        action.triggered.connect(self.__onExpandClicked)
        menu.addAction(action)
        actions['expand'] = action

        action = _InvisibleAction(trStr('Collapse', 'Свернуть').text(), None)
        action.setToolTip(trStr('Collapse current item', 'Свернуть текущий элемент списка').text())
        action.triggered.connect(self.__onCollapseClicked)
        menu.addAction(action)
        actions['collapse'] = action

        menu.addSeparator()

        action = QAction(QIcon(self._icons['book_add']),
                         trStr('Load library...', 'Загрузить библиотеку...').text(), None)
        action.setToolTip(trStr('Open existing library and\nadd it into current project',
                                'Открыть существующую библиотеку узлов\nи включить ее в текущий проект').text())
        action.triggered.connect(globals.nodeListSignals.openExistingLibraryFile)
        menu.addAction(action)
        actions['add lib'] = action

        action = QAction(QIcon(self._icons['book_add']),
                         trStr('Create library...', 'Создать библиотеку...').text(), None)
        action.setToolTip(trStr('Create new library and\nadd it into current project',
                                'Создать новую библиотеку узлов\nи включить ее в текущий проект').text())
        action.triggered.connect(globals.nodeListSignals.createNewLibraryFile)
        menu.addAction(action)
        actions['create lib'] = action

        action = _InvisibleAction(QIcon(self._icons['book_edit']),
                                  trStr('Rename library', 'Переименовать библиотеку').text(), None)
        action.setToolTip(trStr('Rename current library', 'Переименовать текущую библиотеку').text())
        action.triggered.connect(self.__onRenameLibraryClicked)
        menu.addAction(action)
        actions['rename library'] = action

        action = _InvisibleAction(QIcon(self._icons['book_del']),
                                  trStr('Unload library', 'Выгрузить библиотеку').text(), None)
        action.setToolTip(trStr('Unload current library from project',
                                'Выгрузить текущую библиотеку из проекта').text())
        action.triggered.connect(self.__onUnloadClicked)
        menu.addAction(action)
        actions['exclude library'] = action

        menu.addSeparator()

        action = _InvisibleAction(QIcon(self._icons['binary']), trStr('Generate code', 'Генерировать код').text(), None)
        action.setToolTip(trStr('Generate c++ code for current node', 'Генерировать код c++ для текущего узла').text())
        action.triggered.connect(self.__onGenerateCodeClicked)
        menu.addAction(action)
        actions['generate code'] = action

        action = _InvisibleAction(QIcon(self._icons['add']), trStr('Add new node', 'Добавить новый узел').text(), None)
        action.setToolTip(trStr('Add new node into current library',
                                'Добавить новый узел в текущую библиотеку').text())
        action.triggered.connect(self.__onAddNewNodeClicked)
        menu.addAction(action)
        actions['add'] = action

        action = _InvisibleAction(QIcon(self._icons['delete']), trStr('Delete', 'Удалить').text(), None)
        action.setToolTip(trStr('Delete current node', 'Удалить текущий узел').text())
        action.triggered.connect(self.__onDeleteNodeClicked)
        menu.addAction(action)
        actions['delete'] = action

        action = _InvisibleAction(QIcon(self._icons['copy']), trStr('Copy', 'Копировать').text(), None)
        action.setToolTip(trStr('Copy current node to clipboard', 'Копировать текущий узел в буфер обмена').text())
        action.triggered.connect(self.__onCopyClicked)
        menu.addAction(action)
        actions['copy'] = action

        action = _InvisibleAction(QIcon(self._icons['paste']), trStr('Paste', 'Вставить').text(), None)
        action.setToolTip(trStr('Paste copy of node from clipboard', 'Вставить копию узла из буфера обмена').text())
        action.triggered.connect(self.__onPasteClicked)
        menu.addAction(action)
        actions['paste'] = action

        if self.currentItem() is not None:
            if self.currentItem().isExpanded():
                actions['collapse'].setVisible(True)
                actions['collapse'].setEnabled(True)
            else:
                actions['expand'].setVisible(True)
                actions['expand'].setEnabled(True)

            if self.indexOfTopLevelItem(self.currentItem()) >= 0:
                actions['rename library'].setVisible(True)
                actions['exclude library'].setVisible(True)
                if globals.editLibraries:
                    actions['rename library'].setEnabled(True)
                    actions['exclude library'].setEnabled(True)

            if self.currentItem().parent() is not None:
                i = self.indexOfTopLevelItem(self.currentItem().parent().parent())
                if i >= 0:
                    actions['generate code'].setVisible(True)
                    libname = self.topLevelItem(i).text(0)
                    nodename = self.currentItem().text(0)
                    node = self.__libraries[libname][nodename]
                    cls = self.__alphabet.getClass(node.nodeClass)
                    if cls is not None and cls.codegenData is not None:
                        actions['generate code'].setEnabled(True)

                    actions['add'].setVisible(True)
                    actions['delete'].setVisible(True)
                    actions['copy'].setVisible(True)
                    actions['paste'].setVisible(True)

                    if globals.editLibraries and cls is not None:
                        actions['add'].setEnabled(True)
                        actions['delete'].setEnabled(True)
                        actions['copy'].setEnabled(True)
                        if globals.clipboard['node-desc'] is not None\
                                and globals.clipboard['node-desc'].nodeClass == node.nodeClass:
                            actions['paste'].setEnabled(True)
                else:
                    # libname = self.currentItem().parent().text(0)
                    nodeClass = self.currentItem().groupName
                    cls = self.__alphabet.getClass(nodeClass)

                    actions['add'].setVisible(True)
                    actions['paste'].setVisible(True)

                    print('debug: Class is \'{0}\''.format(nodeClass))
                    if globals.editLibraries and cls is not None:
                        actions['add'].setEnabled(True)
                        if globals.clipboard['node-desc'] is not None\
                                and globals.clipboard['node-desc'].nodeClass == nodeClass:
                            actions['paste'].setEnabled(True)
            else:
                actions['paste'].setVisible(True)
                if globals.editLibraries and globals.clipboard['node-desc'] is not None:
                    actions['paste'].setEnabled(True)

        menu.exec_(QCursor.pos())
Example #2
0
    def contextMenuEvent(self, *args, **kwargs):
        menu = trMenuWithTooltip('', self)

        actions = {}

        action = QAction(trStr('Expand all', 'Раскрыть все').text(), None)
        action.setToolTip(
            trStr('Expand all items in list',
                  'Раскрыть все элементы списка').text())
        action.triggered.connect(self.expandAll)
        menu.addAction(action)
        actions['expand all'] = action

        action = QAction(trStr('Collapse all', 'Свернуть все').text(), None)
        action.setToolTip(
            trStr('Collapse all items in list',
                  'Свернуть все элементы списка').text())
        action.triggered.connect(self.collapseAll)
        menu.addAction(action)
        actions['collapse all'] = action

        if self.topLevelItemCount() == 0:
            actions['expand all'].setEnabled(False)
            actions['collapse all'].setEnabled(False)

        action = _InvisibleAction(trStr('Expand', 'Раскрыть').text(), None)
        action.setToolTip(
            trStr('Expand current item',
                  'Раскрыть текущий элемент списка').text())
        action.triggered.connect(self.__onExpandClicked)
        menu.addAction(action)
        actions['expand'] = action

        action = _InvisibleAction(trStr('Collapse', 'Свернуть').text(), None)
        action.setToolTip(
            trStr('Collapse current item',
                  'Свернуть текущий элемент списка').text())
        action.triggered.connect(self.__onCollapseClicked)
        menu.addAction(action)
        actions['collapse'] = action

        menu.addSeparator()

        action = QAction(
            QIcon(self._icons['book_add']),
            trStr('Load library...', 'Загрузить библиотеку...').text(), None)
        action.setToolTip(
            trStr(
                'Open existing library and\nadd it into current project',
                'Открыть существующую библиотеку узлов\nи включить ее в текущий проект'
            ).text())
        action.triggered.connect(
            globals.nodeListSignals.openExistingLibraryFile)
        menu.addAction(action)
        actions['add lib'] = action

        action = QAction(
            QIcon(self._icons['book_add']),
            trStr('Create library...', 'Создать библиотеку...').text(), None)
        action.setToolTip(
            trStr(
                'Create new library and\nadd it into current project',
                'Создать новую библиотеку узлов\nи включить ее в текущий проект'
            ).text())
        action.triggered.connect(globals.nodeListSignals.createNewLibraryFile)
        menu.addAction(action)
        actions['create lib'] = action

        action = _InvisibleAction(
            QIcon(self._icons['book_edit']),
            trStr('Rename library', 'Переименовать библиотеку').text(), None)
        action.setToolTip(
            trStr('Rename current library',
                  'Переименовать текущую библиотеку').text())
        action.triggered.connect(self.__onRenameLibraryClicked)
        menu.addAction(action)
        actions['rename library'] = action

        action = _InvisibleAction(
            QIcon(self._icons['book_del']),
            trStr('Unload library', 'Выгрузить библиотеку').text(), None)
        action.setToolTip(
            trStr('Unload current library from project',
                  'Выгрузить текущую библиотеку из проекта').text())
        action.triggered.connect(self.__onUnloadClicked)
        menu.addAction(action)
        actions['exclude library'] = action

        menu.addSeparator()

        action = _InvisibleAction(
            QIcon(self._icons['binary']),
            trStr('Generate code', 'Генерировать код').text(), None)
        action.setToolTip(
            trStr('Generate c++ code for current node',
                  'Генерировать код c++ для текущего узла').text())
        action.triggered.connect(self.__onGenerateCodeClicked)
        menu.addAction(action)
        actions['generate code'] = action

        action = _InvisibleAction(
            QIcon(self._icons['add']),
            trStr('Add new node', 'Добавить новый узел').text(), None)
        action.setToolTip(
            trStr('Add new node into current library',
                  'Добавить новый узел в текущую библиотеку').text())
        action.triggered.connect(self.__onAddNewNodeClicked)
        menu.addAction(action)
        actions['add'] = action

        action = _InvisibleAction(QIcon(self._icons['delete']),
                                  trStr('Delete', 'Удалить').text(), None)
        action.setToolTip(
            trStr('Delete current node', 'Удалить текущий узел').text())
        action.triggered.connect(self.__onDeleteNodeClicked)
        menu.addAction(action)
        actions['delete'] = action

        action = _InvisibleAction(QIcon(self._icons['copy']),
                                  trStr('Copy', 'Копировать').text(), None)
        action.setToolTip(
            trStr('Copy current node to clipboard',
                  'Копировать текущий узел в буфер обмена').text())
        action.triggered.connect(self.__onCopyClicked)
        menu.addAction(action)
        actions['copy'] = action

        action = _InvisibleAction(QIcon(self._icons['paste']),
                                  trStr('Paste', 'Вставить').text(), None)
        action.setToolTip(
            trStr('Paste copy of node from clipboard',
                  'Вставить копию узла из буфера обмена').text())
        action.triggered.connect(self.__onPasteClicked)
        menu.addAction(action)
        actions['paste'] = action

        if self.currentItem() is not None:
            if self.currentItem().isExpanded():
                actions['collapse'].setVisible(True)
                actions['collapse'].setEnabled(True)
            else:
                actions['expand'].setVisible(True)
                actions['expand'].setEnabled(True)

            if self.indexOfTopLevelItem(self.currentItem()) >= 0:
                actions['rename library'].setVisible(True)
                actions['exclude library'].setVisible(True)
                if globals.editLibraries:
                    actions['rename library'].setEnabled(True)
                    actions['exclude library'].setEnabled(True)

            if self.currentItem().parent() is not None:
                i = self.indexOfTopLevelItem(
                    self.currentItem().parent().parent())
                if i >= 0:
                    actions['generate code'].setVisible(True)
                    libname = self.topLevelItem(i).text(0)
                    nodename = self.currentItem().text(0)
                    node = self.__libraries[libname][nodename]
                    cls = self.__alphabet.getClass(node.nodeClass)
                    if cls is not None and cls.codegenData is not None:
                        actions['generate code'].setEnabled(True)

                    actions['add'].setVisible(True)
                    actions['delete'].setVisible(True)
                    actions['copy'].setVisible(True)
                    actions['paste'].setVisible(True)

                    if globals.editLibraries and cls is not None:
                        actions['add'].setEnabled(True)
                        actions['delete'].setEnabled(True)
                        actions['copy'].setEnabled(True)
                        if globals.clipboard['node-desc'] is not None\
                                and globals.clipboard['node-desc'].nodeClass == node.nodeClass:
                            actions['paste'].setEnabled(True)
                else:
                    # libname = self.currentItem().parent().text(0)
                    nodeClass = self.currentItem().groupName
                    cls = self.__alphabet.getClass(nodeClass)

                    actions['add'].setVisible(True)
                    actions['paste'].setVisible(True)

                    print('debug: Class is \'{0}\''.format(nodeClass))
                    if globals.editLibraries and cls is not None:
                        actions['add'].setEnabled(True)
                        if globals.clipboard['node-desc'] is not None\
                                and globals.clipboard['node-desc'].nodeClass == nodeClass:
                            actions['paste'].setEnabled(True)
            else:
                actions['paste'].setVisible(True)
                if globals.editLibraries and globals.clipboard[
                        'node-desc'] is not None:
                    actions['paste'].setEnabled(True)

        menu.exec_(QCursor.pos())
Example #3
0
    def contextMenuEvent(self, event):
        cmenu = trMenuWithTooltip('', self)

        actions = []

        action = QAction(trStr('Open existing tree file...', 'Открыть файл с деревом...').text(), None)
        action.setToolTip(trStr('Open existing tree file and\ninclude it into project',
                                'Открыть существующий файл с деревом\nи добавить его в проект').text())
        action.setIcon(QIcon(self._icons['add2']))
        action.triggered.connect(globals.treeListSignals.openExistingTreeFile)
        cmenu.addAction(action)
        actions.append(action)

        action = QAction(trStr('Create new tree file...', 'Создать файл с деревом...').text(), None)
        action.setToolTip(trStr('Create new tree file and\ninclude it into project',
                                'Создать новый файл с деревом\nи добавить его в проект').text())
        action.setIcon(QIcon(self._icons['add']))
        action.triggered.connect(globals.treeListSignals.createNewTreeFile)
        cmenu.addAction(action)
        actions.append(action)

        cmenu.addSeparator()

        if self.topLevelItemCount() > 0:
            currItem = self.currentItem()
            if currItem is not None:
                action = QAction(trStr('Create', 'Создать').text(), None)
                action.setToolTip(trStr('Create new tree in selected tree file',
                                        'Создать новое дерево в выбранном файле').text())
                action.setIcon(QIcon(self._icons['add2']))
                action.triggered.connect(self.__onCreateClicked)
                cmenu.addAction(action)
                actions.append(action)

                if self.indexOfTopLevelItem(currItem) < 0:
                    action = QAction(trStr('Copy', 'Копировать').text(), None)
                    action.setToolTip(trStr('Create a full copy of selected tree',
                                            'Создать полную копию выбранного дерева').text())
                    action.setIcon(QIcon(self._icons['copy']))
                    action.triggered.connect(self.__onCreateCopyClicked)
                    cmenu.addAction(action)
                    actions.append(action)

                    cmenu.addSeparator()

                    action = QAction(trStr('Rename', 'Переименовать').text(), None)
                    action.setToolTip(trStr('Rename selected tree', 'Переименовать выбранное дерево').text())
                    action.setIcon(QIcon(self._icons['edit']))
                    action.triggered.connect(self.__onRenameClicked)
                    cmenu.addAction(action)
                    actions.append(action)

                    action = QAction(trStr('Delete', 'Удалить').text(), None)
                    action.setToolTip(
                        trStr('Permanently delete selected tree and remove all links to it in all other trees',
                              'Удалить выбранное дерево и убрать все ссылки на него в других деревьях').text()
                    )
                    action.setIcon(QIcon(self._icons['cancel']))
                    action.triggered.connect(self.__onDeleteClicked)
                    cmenu.addAction(action)
                    actions.append(action)

                    cmenu.addSeparator()

                    action = QAction(trStr('Show usages', 'Показать где используется').text(), None)
                    action.setToolTip(trStr('Show other trees which uses the selected tree',
                                            'Показать деревья, в которых задействовано выбранное дерево').text())
                    action.triggered.connect(self.__onShowWhoDependsOnClicked)
                    cmenu.addAction(action)
                    actions.append(action)

                    action = QAction(trStr('Show dependence from', 'Показать от кого зависит').text(), None)
                    action.setToolTip(trStr('Show trees that are used inside the selected tree',
                                            'Показать деревья, которые используются внутри выбранного дерева').text())
                    action.triggered.connect(self.__onShowDependenciesClicked)
                    cmenu.addAction(action)
                    actions.append(action)

        cmenu.exec_(QCursor.pos())