forked from qt-creator/qt-creator
Add watching of .files/.config/.creator to generic project
Strangely absent. Task-Number: QTCREATORBUG-6478 Change-Id: I35dd03a7d5b34c01dc668e5ed222d10088f77f15 Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
@@ -49,6 +49,7 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/icontext.h>
|
#include <coreplugin/icontext.h>
|
||||||
|
#include <coreplugin/filemanager.h>
|
||||||
|
|
||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
#include <QtCore/QProcessEnvironment>
|
#include <QtCore/QProcessEnvironment>
|
||||||
@@ -85,8 +86,18 @@ GenericProject::GenericProject(Manager *manager, const QString &fileName)
|
|||||||
m_includesFileName = QFileInfo(dir, m_projectName + QLatin1String(".includes")).absoluteFilePath();
|
m_includesFileName = QFileInfo(dir, m_projectName + QLatin1String(".includes")).absoluteFilePath();
|
||||||
m_configFileName = QFileInfo(dir, m_projectName + QLatin1String(".config")).absoluteFilePath();
|
m_configFileName = QFileInfo(dir, m_projectName + QLatin1String(".config")).absoluteFilePath();
|
||||||
|
|
||||||
m_file = new GenericProjectFile(this, fileName);
|
m_creatorIFile = new GenericProjectFile(this, m_fileName, GenericProject::Everything);
|
||||||
m_rootNode = new GenericProjectNode(this, m_file);
|
m_filesIFile = new GenericProjectFile(this, m_filesFileName, GenericProject::Files);
|
||||||
|
m_includesIFile = new GenericProjectFile(this, m_includesFileName, GenericProject::Configuration);
|
||||||
|
m_configIFile = new GenericProjectFile(this, m_configFileName, GenericProject::Configuration);
|
||||||
|
|
||||||
|
Core::FileManager *fm = Core::FileManager::instance();
|
||||||
|
fm->addFile(m_creatorIFile);
|
||||||
|
fm->addFile(m_filesIFile);
|
||||||
|
fm->addFile(m_includesIFile);
|
||||||
|
fm->addFile(m_configIFile);
|
||||||
|
|
||||||
|
m_rootNode = new GenericProjectNode(this, m_creatorIFile);
|
||||||
|
|
||||||
m_manager->registerProject(this);
|
m_manager->registerProject(this);
|
||||||
}
|
}
|
||||||
@@ -407,7 +418,7 @@ QString GenericProject::id() const
|
|||||||
|
|
||||||
Core::IFile *GenericProject::file() const
|
Core::IFile *GenericProject::file() const
|
||||||
{
|
{
|
||||||
return m_file;
|
return m_creatorIFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
IProjectManager *GenericProject::projectManager() const
|
IProjectManager *GenericProject::projectManager() const
|
||||||
@@ -589,10 +600,11 @@ void GenericBuildSettingsWidget::updateToolChainList()
|
|||||||
// GenericProjectFile
|
// GenericProjectFile
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
GenericProjectFile::GenericProjectFile(GenericProject *parent, QString fileName)
|
GenericProjectFile::GenericProjectFile(GenericProject *parent, QString fileName, GenericProject::RefreshOptions options)
|
||||||
: Core::IFile(parent),
|
: Core::IFile(parent),
|
||||||
m_project(parent),
|
m_project(parent),
|
||||||
m_fileName(fileName)
|
m_fileName(fileName),
|
||||||
|
m_options(options)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
GenericProjectFile::~GenericProjectFile()
|
GenericProjectFile::~GenericProjectFile()
|
||||||
@@ -656,6 +668,8 @@ bool GenericProjectFile::reload(QString *errorString, ReloadFlag flag, ChangeTyp
|
|||||||
{
|
{
|
||||||
Q_UNUSED(errorString)
|
Q_UNUSED(errorString)
|
||||||
Q_UNUSED(flag)
|
Q_UNUSED(flag)
|
||||||
Q_UNUSED(type)
|
if (type == TypePermissions)
|
||||||
|
return true;
|
||||||
|
m_project->refresh(m_options);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,9 +137,11 @@ private:
|
|||||||
QString m_filesFileName;
|
QString m_filesFileName;
|
||||||
QString m_includesFileName;
|
QString m_includesFileName;
|
||||||
QString m_configFileName;
|
QString m_configFileName;
|
||||||
GenericProjectFile *m_file;
|
|
||||||
QString m_projectName;
|
QString m_projectName;
|
||||||
|
GenericProjectFile *m_creatorIFile;
|
||||||
|
GenericProjectFile *m_filesIFile;
|
||||||
|
GenericProjectFile *m_includesIFile;
|
||||||
|
GenericProjectFile *m_configIFile;
|
||||||
QStringList m_rawFileList;
|
QStringList m_rawFileList;
|
||||||
QStringList m_files;
|
QStringList m_files;
|
||||||
QHash<QString, QString> m_rawListEntries;
|
QHash<QString, QString> m_rawListEntries;
|
||||||
@@ -158,7 +160,7 @@ class GenericProjectFile : public Core::IFile
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GenericProjectFile(GenericProject *parent, QString fileName);
|
GenericProjectFile(GenericProject *parent, QString fileName, GenericProject::RefreshOptions options);
|
||||||
virtual ~GenericProjectFile();
|
virtual ~GenericProjectFile();
|
||||||
|
|
||||||
virtual bool save(QString *errorString, const QString &fileName, bool autoSave);
|
virtual bool save(QString *errorString, const QString &fileName, bool autoSave);
|
||||||
@@ -179,6 +181,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
GenericProject *m_project;
|
GenericProject *m_project;
|
||||||
QString m_fileName;
|
QString m_fileName;
|
||||||
|
GenericProject::RefreshOptions m_options;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GenericBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget
|
class GenericBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ using namespace GenericProjectManager::Internal;
|
|||||||
ProjectFilesFactory::ProjectFilesFactory(Manager *manager,
|
ProjectFilesFactory::ProjectFilesFactory(Manager *manager,
|
||||||
TextEditor::TextEditorActionHandler *handler)
|
TextEditor::TextEditorActionHandler *handler)
|
||||||
: Core::IEditorFactory(manager),
|
: Core::IEditorFactory(manager),
|
||||||
m_manager(manager),
|
|
||||||
m_actionHandler(handler)
|
m_actionHandler(handler)
|
||||||
{
|
{
|
||||||
m_mimeTypes.append(QLatin1String(Constants::FILES_MIMETYPE));
|
m_mimeTypes.append(QLatin1String(Constants::FILES_MIMETYPE));
|
||||||
@@ -58,11 +57,6 @@ ProjectFilesFactory::ProjectFilesFactory(Manager *manager,
|
|||||||
m_mimeTypes.append(QLatin1String(Constants::CONFIG_MIMETYPE));
|
m_mimeTypes.append(QLatin1String(Constants::CONFIG_MIMETYPE));
|
||||||
}
|
}
|
||||||
|
|
||||||
Manager *ProjectFilesFactory::manager() const
|
|
||||||
{
|
|
||||||
return m_manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
Core::IEditor *ProjectFilesFactory::createEditor(QWidget *parent)
|
Core::IEditor *ProjectFilesFactory::createEditor(QWidget *parent)
|
||||||
{
|
{
|
||||||
ProjectFilesEditorWidget *ed = new ProjectFilesEditorWidget(parent, this, m_actionHandler);
|
ProjectFilesEditorWidget *ed = new ProjectFilesEditorWidget(parent, this, m_actionHandler);
|
||||||
@@ -135,8 +129,7 @@ ProjectFilesEditorWidget::ProjectFilesEditorWidget(QWidget *parent, ProjectFiles
|
|||||||
m_factory(factory),
|
m_factory(factory),
|
||||||
m_actionHandler(handler)
|
m_actionHandler(handler)
|
||||||
{
|
{
|
||||||
Manager *manager = factory->manager();
|
TextEditor::BaseTextDocument *doc = new TextEditor::BaseTextDocument();
|
||||||
ProjectFilesDocument *doc = new ProjectFilesDocument(manager);
|
|
||||||
setBaseTextDocument(doc);
|
setBaseTextDocument(doc);
|
||||||
|
|
||||||
handler->setupActions(this);
|
handler->setupActions(this);
|
||||||
@@ -159,26 +152,3 @@ TextEditor::BaseTextEditor *ProjectFilesEditorWidget::createEditor()
|
|||||||
{
|
{
|
||||||
return new ProjectFilesEditor(this);
|
return new ProjectFilesEditor(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// ProjectFilesDocument
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
ProjectFilesDocument::ProjectFilesDocument(Manager *manager)
|
|
||||||
: m_manager(manager)
|
|
||||||
{
|
|
||||||
setMimeType(QLatin1String(Constants::FILES_MIMETYPE));
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectFilesDocument::~ProjectFilesDocument()
|
|
||||||
{ }
|
|
||||||
|
|
||||||
bool ProjectFilesDocument::save(QString *errorString, const QString &name, bool autoSave)
|
|
||||||
{
|
|
||||||
if (!BaseTextDocument::save(errorString, name, autoSave))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!autoSave)
|
|
||||||
m_manager->notifyChanged(name.isEmpty() ? fileName() : name);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ namespace Internal {
|
|||||||
class Manager;
|
class Manager;
|
||||||
class ProjectFilesEditor;
|
class ProjectFilesEditor;
|
||||||
class ProjectFilesEditorWidget;
|
class ProjectFilesEditorWidget;
|
||||||
class ProjectFilesDocument;
|
|
||||||
class ProjectFilesFactory;
|
class ProjectFilesFactory;
|
||||||
|
|
||||||
class ProjectFilesFactory: public Core::IEditorFactory
|
class ProjectFilesFactory: public Core::IEditorFactory
|
||||||
@@ -58,8 +57,6 @@ class ProjectFilesFactory: public Core::IEditorFactory
|
|||||||
public:
|
public:
|
||||||
ProjectFilesFactory(Manager *manager, TextEditor::TextEditorActionHandler *handler);
|
ProjectFilesFactory(Manager *manager, TextEditor::TextEditorActionHandler *handler);
|
||||||
|
|
||||||
Manager *manager() const;
|
|
||||||
|
|
||||||
virtual Core::IEditor *createEditor(QWidget *parent);
|
virtual Core::IEditor *createEditor(QWidget *parent);
|
||||||
|
|
||||||
virtual QStringList mimeTypes() const;
|
virtual QStringList mimeTypes() const;
|
||||||
@@ -68,7 +65,6 @@ public:
|
|||||||
virtual Core::IFile *open(const QString &fileName);
|
virtual Core::IFile *open(const QString &fileName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Manager *m_manager;
|
|
||||||
TextEditor::TextEditorActionHandler *m_actionHandler;
|
TextEditor::TextEditorActionHandler *m_actionHandler;
|
||||||
QStringList m_mimeTypes;
|
QStringList m_mimeTypes;
|
||||||
};
|
};
|
||||||
@@ -105,20 +101,6 @@ private:
|
|||||||
TextEditor::TextEditorActionHandler *m_actionHandler;
|
TextEditor::TextEditorActionHandler *m_actionHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProjectFilesDocument: public TextEditor::BaseTextDocument
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
ProjectFilesDocument(Manager *manager);
|
|
||||||
virtual ~ProjectFilesDocument();
|
|
||||||
|
|
||||||
virtual bool save(QString *errorString, const QString &name, bool autoSave);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Manager *m_manager;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace GenericProjectManager
|
} // namespace GenericProjectManager
|
||||||
|
|
||||||
|
|||||||
@@ -79,15 +79,3 @@ void Manager::unregisterProject(GenericProject *project)
|
|||||||
{
|
{
|
||||||
m_projects.removeAll(project);
|
m_projects.removeAll(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Manager::notifyChanged(const QString &fileName)
|
|
||||||
{
|
|
||||||
foreach (GenericProject *project, m_projects) {
|
|
||||||
if (fileName == project->filesFileName()) {
|
|
||||||
project->refresh(GenericProject::Files);
|
|
||||||
} else if (fileName == project->includesFileName()
|
|
||||||
|| fileName == project->configFileName()) {
|
|
||||||
project->refresh(GenericProject::Configuration);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -50,8 +50,6 @@ public:
|
|||||||
virtual QString mimeType() const;
|
virtual QString mimeType() const;
|
||||||
virtual ProjectExplorer::Project *openProject(const QString &fileName, QString *errorString);
|
virtual ProjectExplorer::Project *openProject(const QString &fileName, QString *errorString);
|
||||||
|
|
||||||
void notifyChanged(const QString &fileName);
|
|
||||||
|
|
||||||
void registerProject(GenericProject *project);
|
void registerProject(GenericProject *project);
|
||||||
void unregisterProject(GenericProject *project);
|
void unregisterProject(GenericProject *project);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user