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())
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())
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())