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

Method popupContextMenu

plugins/projectmanagerview/projecttreeview.cpp:318–374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

316}
317
318void ProjectTreeView::popupContextMenu( const QPoint &pos )
319{
320 QList<ProjectBaseItem*> itemlist;
321 if ( indexAt( pos ).isValid() ) {
322 itemlist = selectedProjects();
323 }
324 QMenu menu( this );
325
326 KDevelop::ProjectItemContextImpl context(itemlist);
327 const QList<ContextMenuExtension> extensions = ICore::self()->pluginController()->queryPluginsForContextMenuExtensions(&context, &menu);
328
329 QList<QAction*> buildActions;
330 QList<QAction*> vcsActions;
331 QList<QAction*> analyzeActions;
332 QList<QAction*> extActions;
333 QList<QAction*> projectActions;
334 QList<QAction*> fileActions;
335 QList<QAction*> runActions;
336 for (const ContextMenuExtension& ext : extensions) {
337 buildActions += ext.actions(ContextMenuExtension::BuildGroup);
338 fileActions += ext.actions(ContextMenuExtension::FileGroup);
339 projectActions += ext.actions(ContextMenuExtension::ProjectGroup);
340 vcsActions += ext.actions(ContextMenuExtension::VcsGroup);
341 analyzeActions += ext.actions(ContextMenuExtension::AnalyzeProjectGroup);
342 extActions += ext.actions(ContextMenuExtension::ExtensionGroup);
343 runActions += ext.actions(ContextMenuExtension::RunGroup);
344 }
345
346 if ( analyzeActions.count() )
347 {
348 auto* analyzeMenu = new QMenu(i18nc("@title:menu", "Analyze with"), &menu);
349 analyzeMenu->setIcon(QIcon::fromTheme(QStringLiteral("dialog-ok")));
350 for (QAction* act : std::as_const(analyzeActions)) {
351 analyzeMenu->addAction( act );
352 }
353 analyzeActions = {analyzeMenu->menuAction()};
354 }
355
356 popupContextMenu_appendActions(menu, buildActions);
357 popupContextMenu_appendActions(menu, runActions );
358 popupContextMenu_appendActions(menu, fileActions);
359 popupContextMenu_appendActions(menu, vcsActions);
360 popupContextMenu_appendActions(menu, analyzeActions);
361 popupContextMenu_appendActions(menu, extActions);
362
363 if (itemlist.size() == 1 && itemlist.first()->folder() && !itemlist.first()->folder()->parent()) {
364 auto* projectConfig = new QAction(i18nc("@action:inmenu", "Open Configuration..."), &menu);
365 projectConfig->setIcon(QIcon::fromTheme(QStringLiteral("configure")));
366 connect( projectConfig, &QAction::triggered, this, &ProjectTreeView::openProjectConfig );
367 projectActions << projectConfig;
368 }
369 popupContextMenu_appendActions(menu, projectActions);
370
371 if ( !menu.isEmpty() ) {
372 menu.exec(viewport()->mapToGlobal(pos));
373 }
374}
375

Callers

nothing calls this directly

Calls 14

pluginControllerMethod · 0.80
setIconMethod · 0.80
folderMethod · 0.80
execMethod · 0.80
isValidMethod · 0.45
actionsMethod · 0.45
countMethod · 0.45
addActionMethod · 0.45
sizeMethod · 0.45
firstMethod · 0.45

Tested by

no test coverage detected