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); } } }