void ProjectTree::updateExternalFileWarning() { auto document = qobject_cast<Core::IDocument *>(sender()); if (!document || document->filePath().isEmpty()) return; Core::InfoBar *infoBar = document->infoBar(); Core::Id externalFileId(EXTERNAL_FILE_WARNING); if (!document->isModified()) { infoBar->removeInfo(externalFileId); return; } if (!infoBar->canInfoBeAdded(externalFileId)) return; const FileName fileName = document->filePath(); const QList<Project *> projects = SessionManager::projects(); if (projects.isEmpty()) return; for (Project *project : projects) { FileName projectDir = project->projectDirectory(); if (projectDir.isEmpty()) continue; if (fileName.isChildOf(projectDir)) return; // External file. Test if it under the same VCS QString topLevel; if (Core::VcsManager::findVersionControlForDirectory(projectDir.toString(), &topLevel) && fileName.isChildOf(FileName::fromString(topLevel))) { return; } } infoBar->addInfo(Core::InfoBarEntry(externalFileId, tr("<b>Warning:</b> This file is outside the project directory."), Core::InfoBarEntry::GlobalSuppressionEnabled)); }
void CMakeEditor::markAsChanged() { if (!document()->isModified()) return; Core::InfoBar *infoBar = document()->infoBar(); Core::Id infoRunCmake("CMakeEditor.RunCMake"); if (!infoBar->canInfoBeAdded(infoRunCmake)) return; Core::InfoBarEntry info(infoRunCmake, tr("Changes to cmake files are shown in the project tree after building."), Core::InfoBarEntry::GlobalSuppressionEnabled); info.setCustomButtonInfo(tr("Build now"), this, SLOT(build())); infoBar->addInfo(info); }