ProjectManagers: Update project languages based on data sent to the codemodel

Change-Id: Iecf61f66389fff6f3995c4f4bc893ffd190c50e6
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Tobias Hunger
2013-04-10 14:45:47 +02:00
parent 920e7ca1f1
commit aff2518bd7
7 changed files with 46 additions and 4 deletions
@@ -456,5 +456,7 @@ void AutotoolsProject::updateCppCodeModel()
modelManager->updateProjectInfo(pinfo); modelManager->updateProjectInfo(pinfo);
modelManager->updateSourceFiles(m_files); modelManager->updateSourceFiles(m_files);
setProjectLanguage(ProjectExplorer::Constants::LANG_CXX, !part->files.isEmpty());
} }
} }
@@ -394,6 +394,8 @@ bool CMakeProject::parseCMakeLists()
modelmanager->updateProjectInfo(pinfo); modelmanager->updateProjectInfo(pinfo);
m_codeModelFuture.cancel(); m_codeModelFuture.cancel();
m_codeModelFuture = modelmanager->updateSourceFiles(m_files); m_codeModelFuture = modelmanager->updateSourceFiles(m_files);
setProjectLanguage(ProjectExplorer::Constants::LANG_CXX, !part->files.isEmpty());
} }
} }
emit buildTargetsChanged(); emit buildTargetsChanged();
@@ -293,6 +293,7 @@ void GenericProject::refresh(RefreshOptions options)
} }
pinfo.appendProjectPart(part); pinfo.appendProjectPart(part);
setProjectLanguage(ProjectExplorer::Constants::LANG_CXX, !part->files.isEmpty());
modelManager->updateProjectInfo(pinfo); modelManager->updateProjectInfo(pinfo);
m_codeModelFuture = modelManager->updateSourceFiles(filesToUpdate); m_codeModelFuture = modelManager->updateSourceFiles(filesToUpdate);
+26
View File
@@ -404,6 +404,32 @@ void Project::setProjectLanguages(Core::Context language)
emit projectLanguagesUpdated(); emit projectLanguagesUpdated();
} }
void Project::addProjectLanguage(Core::Id id)
{
Core::Context lang = projectLanguages();
int pos = lang.indexOf(id);
if (pos < 0)
lang.add(id);
setProjectLanguages(lang);
}
void Project::removeProjectLanguage(Core::Id id)
{
Core::Context lang = projectLanguages();
int pos = lang.indexOf(id);
if (pos >= 0)
lang.removeAt(pos);
setProjectLanguages(lang);
}
void Project::setProjectLanguage(Core::Id id, bool enabled)
{
if (enabled)
addProjectLanguage(id);
else
removeProjectLanguage(id);
}
Core::Context Project::projectContext() const Core::Context Project::projectContext() const
{ {
return d->m_projectContext; return d->m_projectContext;
+7 -4
View File
@@ -112,8 +112,8 @@ public:
QString projectDirectory() const; QString projectDirectory() const;
static QString projectDirectory(const QString &top); static QString projectDirectory(const QString &top);
virtual Core::Context projectContext() const; Core::Context projectContext() const;
virtual Core::Context projectLanguages() const; Core::Context projectLanguages() const;
QVariant namedSettings(const QString &name) const; QVariant namedSettings(const QString &name) const;
void setNamedSettings(const QString &name, const QVariant &value); void setNamedSettings(const QString &name, const QVariant &value);
@@ -149,8 +149,11 @@ protected:
virtual bool fromMap(const QVariantMap &map); virtual bool fromMap(const QVariantMap &map);
virtual bool setupTarget(Target *t); virtual bool setupTarget(Target *t);
virtual void setProjectContext(Core::Context context); void setProjectContext(Core::Context context);
virtual void setProjectLanguages(Core::Context language); void setProjectLanguages(Core::Context language);
void addProjectLanguage(Core::Id id);
void removeProjectLanguage(Core::Id id);
void setProjectLanguage(Core::Id id, bool enabled);
private slots: private slots:
void changeEnvironment(); void changeEnvironment();
@@ -521,6 +521,8 @@ void QbsProject::updateCppCodeModel(const qbs::ProjectData *prj)
} }
} }
setProjectLanguage(ProjectExplorer::Constants::LANG_CXX, !allFiles.isEmpty());
if (pinfo.projectParts().isEmpty()) if (pinfo.projectParts().isEmpty())
return; return;
@@ -538,6 +540,8 @@ void QbsProject::updateQmlJsCodeModel(const qbs::ProjectData *prj)
QmlJS::ModelManagerInterface::ProjectInfo projectInfo = QmlJS::ModelManagerInterface::ProjectInfo projectInfo =
QmlJSTools::defaultProjectInfoForProject(this); QmlJSTools::defaultProjectInfoForProject(this);
setProjectLanguage(ProjectExplorer::Constants::LANG_QMLJS, !projectInfo.sourceFiles.isEmpty());
modelManager->updateProjectInfo(projectInfo); modelManager->updateProjectInfo(projectInfo);
} }
@@ -581,6 +581,8 @@ void Qt4Project::updateCppCodeModel()
pinfo.appendProjectPart(part); pinfo.appendProjectPart(part);
} }
setProjectLanguage(ProjectExplorer::Constants::LANG_CXX, !allFiles.isEmpty());
modelmanager->updateProjectInfo(pinfo); modelmanager->updateProjectInfo(pinfo);
m_codeModelFuture = modelmanager->updateSourceFiles(allFiles); m_codeModelFuture = modelmanager->updateSourceFiles(allFiles);
} }
@@ -613,6 +615,8 @@ void Qt4Project::updateQmlJSCodeModel()
projectInfo.importPaths.removeDuplicates(); projectInfo.importPaths.removeDuplicates();
setProjectLanguage(ProjectExplorer::Constants::LANG_QMLJS, !projectInfo.sourceFiles.isEmpty());
modelManager->updateProjectInfo(projectInfo); modelManager->updateProjectInfo(projectInfo);
} }