MCPcopy Create free account
hub / github.com/KDE/kdevelop / contextMenuExtension

Method contextMenuExtension

plugins/cppcheck/plugin.cpp:219–267  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

217}
218
219KDevelop::ContextMenuExtension Plugin::contextMenuExtension(KDevelop::Context* context, QWidget* parent)
220{
221 KDevelop::ContextMenuExtension extension = KDevelop::IPlugin::contextMenuExtension(context, parent);
222
223 if (context->hasType(KDevelop::Context::EditorContext) && m_currentProject && !isRunning()) {
224 auto eContext = static_cast<KDevelop::EditorContext*>(context);
225 QMimeDatabase db;
226 const auto mime = db.mimeTypeForUrl(eContext->url());
227
228 if (isSupportedMimeType(mime)) {
229 extension.addAction(KDevelop::ContextMenuExtension::AnalyzeFileGroup, m_contextActionFile);
230 extension.addAction(KDevelop::ContextMenuExtension::AnalyzeProjectGroup, m_contextActionProject);
231 }
232 }
233
234 if (context->hasType(KDevelop::Context::ProjectItemContext) && !isRunning()) {
235 auto pContext = static_cast<KDevelop::ProjectItemContext*>(context);
236 if (pContext->items().size() != 1) {
237 return extension;
238 }
239
240 auto item = pContext->items().first();
241
242 switch (item->type()) {
243 case KDevelop::ProjectBaseItem::File: {
244 const QMimeType mimetype = QMimeDatabase().mimeTypeForUrl(item->path().toUrl());
245 if (!isSupportedMimeType(mimetype)) {
246 return extension;
247 }
248 break;
249 }
250 case KDevelop::ProjectBaseItem::Folder:
251 case KDevelop::ProjectBaseItem::BuildFolder:
252 break;
253
254 default:
255 return extension;
256 }
257
258 m_contextActionProjectItem->disconnect();
259 connect(m_contextActionProjectItem, &QAction::triggered, this, [this, item](){
260 runCppcheck(item->project(), item->path().toLocalFile());
261 });
262
263 extension.addAction(KDevelop::ContextMenuExtension::AnalyzeProjectGroup, m_contextActionProjectItem);
264 }
265
266 return extension;
267}
268
269KDevelop::ConfigPage* Plugin::perProjectConfigPage(int number, const KDevelop::ProjectConfigOptions& options, QWidget* parent)
270{

Callers

nothing calls this directly

Calls 12

hasTypeMethod · 0.80
toLocalFileMethod · 0.80
isSupportedMimeTypeFunction · 0.70
urlMethod · 0.45
addActionMethod · 0.45
sizeMethod · 0.45
itemsMethod · 0.45
firstMethod · 0.45
typeMethod · 0.45
toUrlMethod · 0.45
pathMethod · 0.45
projectMethod · 0.45

Tested by

no test coverage detected