void QmlContextTab::contextContextMenu(QPoint pos) { auto idx = ui->contextView->indexAt(pos); ContextMenuExtension cme; if (!cme.discoverSourceLocation(ContextMenuExtension::GoTo, idx.sibling(idx.row(), 1).data().toUrl())) return; QMenu contextMenu; cme.populateMenu(&contextMenu); contextMenu.exec(ui->contextView->viewport()->mapToGlobal(pos)); }
void GammaRay::BindingTab::bindingContextMenu(const QPoint &pos) { const auto index = ui->bindingView->indexAt(pos); if (!index.isValid()) return; QMenu menu; ContextMenuExtension ext; ext.setLocation(ContextMenuExtension::ShowSource, index.data(ObjectModel::DeclarationLocationRole).value<SourceLocation>()); ext.populateMenu(&menu); menu.exec(ui->bindingView->viewport()->mapToGlobal(pos)); }
KDevelop::ContextMenuExtension KDevelop::DocumentationController::contextMenuExtension ( Context* context ) { ContextMenuExtension menuExt; qRegisterMetaType<KSharedPtr<KDevelop::IDocumentation> >("KSharedPtr<KDevelop::IDocumentation>"); DeclarationContext* ctx = dynamic_cast<DeclarationContext*>(context); if(ctx) { DUChainReadLocker lock(DUChain::lock()); if(!ctx->declaration().data()) return menuExt; KSharedPtr< IDocumentation > doc = documentationForDeclaration(ctx->declaration().data()); if(doc) { menuExt.addAction(ContextMenuExtension::ExtensionGroup, m_showDocumentation);; } } return menuExt; }
void TypeCorrection::doContextMenu(ContextMenuExtension &extension, Context *context) { if ( DeclarationContext* declContext = dynamic_cast<DeclarationContext*>(context) ) { qRegisterMetaType<KDevelop::IndexedDeclaration>("KDevelop::IndexedDeclaration"); DUChainReadLocker lock; KDevelop::Declaration* declaration = declContext->declaration().data(); if ( declaration && (declaration->kind() == Declaration::Instance || (declaration->kind() == Declaration::Type && declaration->abstractType()->whichType() == AbstractType::TypeFunction)) ) { QAction* action = new QAction(i18n("Specify type for \"%1\"...", declaration->qualifiedIdentifier().toString()), 0); action->setData(QVariant::fromValue(IndexedDeclaration(declaration))); action->setIcon(QIcon::fromTheme("code-class")); connect(action, &QAction::triggered, this, &TypeCorrection::executeSpecifyTypeAction); extension.addAction(ContextMenuExtension::ExtensionGroup, action); } } }