summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/bazaar/bazaarcontrol.cpp5
-rw-r--r--src/plugins/bazaar/bazaarcontrol.h1
-rw-r--r--src/plugins/bazaar/bazaarplugin.cpp1
-rw-r--r--src/plugins/coreplugin/iversioncontrol.h1
-rw-r--r--src/plugins/cvs/cvscontrol.cpp5
-rw-r--r--src/plugins/cvs/cvscontrol.h1
-rw-r--r--src/plugins/cvs/cvsplugin.cpp1
-rw-r--r--src/plugins/git/gitclient.cpp1
-rw-r--r--src/plugins/git/gitversioncontrol.cpp5
-rw-r--r--src/plugins/git/gitversioncontrol.h1
-rw-r--r--src/plugins/mercurial/mercurialcontrol.cpp5
-rw-r--r--src/plugins/mercurial/mercurialcontrol.h1
-rw-r--r--src/plugins/mercurial/mercurialplugin.cpp1
-rw-r--r--src/plugins/perforce/perforceplugin.cpp1
-rw-r--r--src/plugins/perforce/perforceversioncontrol.cpp5
-rw-r--r--src/plugins/perforce/perforceversioncontrol.h1
-rw-r--r--src/plugins/projectexplorer/projectfilewizardextension.cpp44
-rw-r--r--src/plugins/projectexplorer/projectfilewizardextension.h2
-rw-r--r--src/plugins/subversion/subversioncontrol.cpp5
-rw-r--r--src/plugins/subversion/subversioncontrol.h1
-rw-r--r--src/plugins/subversion/subversionplugin.cpp1
21 files changed, 75 insertions, 14 deletions
diff --git a/src/plugins/bazaar/bazaarcontrol.cpp b/src/plugins/bazaar/bazaarcontrol.cpp
index 43c0a8356f..f0f95280a6 100644
--- a/src/plugins/bazaar/bazaarcontrol.cpp
+++ b/src/plugins/bazaar/bazaarcontrol.cpp
@@ -177,3 +177,8 @@ void BazaarControl::changed(const QVariant &v)
break;
}
}
+
+void BazaarControl::emitConfigurationChanged()
+{
+ emit configurationChanged();
+}
diff --git a/src/plugins/bazaar/bazaarcontrol.h b/src/plugins/bazaar/bazaarcontrol.h
index 5d0182b2ae..e45b48a03a 100644
--- a/src/plugins/bazaar/bazaarcontrol.h
+++ b/src/plugins/bazaar/bazaarcontrol.h
@@ -74,6 +74,7 @@ public slots:
// files changed signals according to the variant's type:
// String -> repository, StringList -> files
void changed(const QVariant&);
+ void emitConfigurationChanged();
private:
BazaarClient *m_bazaarClient;
diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp
index 2b21df6f37..ed39c4fed2 100644
--- a/src/plugins/bazaar/bazaarplugin.cpp
+++ b/src/plugins/bazaar/bazaarplugin.cpp
@@ -208,6 +208,7 @@ void BazaarPlugin::setSettings(const BazaarSettings &settings)
m_bazaarSettings = settings;
if (userIdChanged)
client()->synchronousSetUserId();
+ static_cast<BazaarControl *>(versionControl())->emitConfigurationChanged();
}
}
diff --git a/src/plugins/coreplugin/iversioncontrol.h b/src/plugins/coreplugin/iversioncontrol.h
index 2e264e337d..d1053d05bd 100644
--- a/src/plugins/coreplugin/iversioncontrol.h
+++ b/src/plugins/coreplugin/iversioncontrol.h
@@ -166,6 +166,7 @@ public:
signals:
void repositoryChanged(const QString &repository);
void filesChanged(const QStringList &files);
+ void configurationChanged();
// TODO: ADD A WAY TO DETECT WHETHER A FILE IS MANAGED, e.g
// virtual bool sccManaged(const QString &filename) = 0;
diff --git a/src/plugins/cvs/cvscontrol.cpp b/src/plugins/cvs/cvscontrol.cpp
index ce1801eb52..237ccb09b4 100644
--- a/src/plugins/cvs/cvscontrol.cpp
+++ b/src/plugins/cvs/cvscontrol.cpp
@@ -158,3 +158,8 @@ void CVSControl::emitFilesChanged(const QStringList &l)
{
emit filesChanged(l);
}
+
+void CVSControl::emitConfigurationChanged()
+{
+ emit configurationChanged();
+}
diff --git a/src/plugins/cvs/cvscontrol.h b/src/plugins/cvs/cvscontrol.h
index a26366eb0f..52876649ba 100644
--- a/src/plugins/cvs/cvscontrol.h
+++ b/src/plugins/cvs/cvscontrol.h
@@ -67,6 +67,7 @@ public:
void emitRepositoryChanged(const QString &s);
void emitFilesChanged(const QStringList &l);
+ void emitConfigurationChanged();
private:
CVSPlugin *m_plugin;
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index 17f2bc36e6..dfb4d2b304 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -1320,6 +1320,7 @@ void CVSPlugin::setSettings(const CVSSettings &s)
m_settings = s;
if (QSettings *settings = Core::ICore::instance()->settings())
m_settings.toSettings(settings);
+ cvsVersionControl()->emitConfigurationChanged();
}
}
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 95e16ddeb4..6e770b832e 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2387,6 +2387,7 @@ void GitClient::setSettings(const GitSettings &s)
m_binaryPath = m_settings.gitBinaryPath();
m_cachedGitVersion = 0u;
m_hasCachedGitVersion = false;
+ m_plugin->gitVersionControl()->emitConfigurationChanged();
}
}
diff --git a/src/plugins/git/gitversioncontrol.cpp b/src/plugins/git/gitversioncontrol.cpp
index 9977fd8db2..f519b75d78 100644
--- a/src/plugins/git/gitversioncontrol.cpp
+++ b/src/plugins/git/gitversioncontrol.cpp
@@ -247,5 +247,10 @@ void GitVersionControl::emitRepositoryChanged(const QString &r)
emit repositoryChanged(r);
}
+void GitVersionControl::emitConfigurationChanged()
+{
+ emit configurationChanged();
+}
+
} // Internal
} // Git
diff --git a/src/plugins/git/gitversioncontrol.h b/src/plugins/git/gitversioncontrol.h
index b4c62e535a..8858eb1cd0 100644
--- a/src/plugins/git/gitversioncontrol.h
+++ b/src/plugins/git/gitversioncontrol.h
@@ -69,6 +69,7 @@ public:
void emitFilesChanged(const QStringList &);
void emitRepositoryChanged(const QString &);
+ void emitConfigurationChanged();
private:
GitClient *m_client;
diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp
index 9b7af6a54a..0b958101c5 100644
--- a/src/plugins/mercurial/mercurialcontrol.cpp
+++ b/src/plugins/mercurial/mercurialcontrol.cpp
@@ -183,3 +183,8 @@ void MercurialControl::changed(const QVariant &v)
break;
}
}
+
+void MercurialControl::emitConfigurationChanged()
+{
+ emit configurationChanged();
+}
diff --git a/src/plugins/mercurial/mercurialcontrol.h b/src/plugins/mercurial/mercurialcontrol.h
index 687c8d4908..f251833068 100644
--- a/src/plugins/mercurial/mercurialcontrol.h
+++ b/src/plugins/mercurial/mercurialcontrol.h
@@ -75,6 +75,7 @@ public slots:
// files changed signals according to the variant's type:
// String -> repository, StringList -> files
void changed(const QVariant&);
+ void emitConfigurationChanged();
private:
MercurialClient *mercurialClient;
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index e645a052c0..91c4240231 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -199,6 +199,7 @@ void MercurialPlugin::setSettings(const MercurialSettings &settings)
{
if (settings != mercurialSettings) {
mercurialSettings = settings;
+ static_cast<MercurialControl *>(versionControl())->emitConfigurationChanged();
}
}
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index d239dfa242..29dcf27530 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -1457,6 +1457,7 @@ void PerforcePlugin::setSettings(const Settings &newSettings)
m_managedDirectoryCache.clear();
m_settings.toSettings(Core::ICore::instance()->settings());
getTopLevel();
+ perforceVersionControl()->emitConfigurationChanged();
}
}
diff --git a/src/plugins/perforce/perforceversioncontrol.cpp b/src/plugins/perforce/perforceversioncontrol.cpp
index 170cc91dc7..b4532f5570 100644
--- a/src/plugins/perforce/perforceversioncontrol.cpp
+++ b/src/plugins/perforce/perforceversioncontrol.cpp
@@ -175,5 +175,10 @@ void PerforceVersionControl::emitFilesChanged(const QStringList &l)
emit filesChanged(l);
}
+void PerforceVersionControl::emitConfigurationChanged()
+{
+ emit configurationChanged();
+}
+
} // Internal
} // Perforce
diff --git a/src/plugins/perforce/perforceversioncontrol.h b/src/plugins/perforce/perforceversioncontrol.h
index bc77555591..fc37398b3b 100644
--- a/src/plugins/perforce/perforceversioncontrol.h
+++ b/src/plugins/perforce/perforceversioncontrol.h
@@ -68,6 +68,7 @@ public:
void emitRepositoryChanged(const QString &s);
void emitFilesChanged(const QStringList &l);
+ void emitConfigurationChanged();
private:
bool m_enabled;
diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp
index 39966556ca..d089e453c9 100644
--- a/src/plugins/projectexplorer/projectfilewizardextension.cpp
+++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp
@@ -169,6 +169,7 @@ struct ProjectWizardContext
void clear();
QList<Core::IVersionControl*> versionControls;
+ QList<Core::IVersionControl*> activeVersionControls;
QList<ProjectEntry> projects;
ProjectWizardPage *page;
bool repositoryExists; // Is VCS 'add' sufficient, or should a repository be created?
@@ -185,7 +186,7 @@ ProjectWizardContext::ProjectWizardContext() :
void ProjectWizardContext::clear()
{
- versionControls.clear();
+ activeVersionControls.clear();
projects.clear();
commonDirectory.clear();
page = 0;
@@ -299,6 +300,13 @@ void ProjectFileWizardExtension::firstExtensionPageShown(
} else {
m_context->page->setCurrentProjectIndex(bestProjectIndex + 1);
}
+
+ // Store all version controls for later use:
+ foreach (Core::IVersionControl *vc, ExtensionSystem::PluginManager::instance()->getObjects<Core::IVersionControl>()) {
+ m_context->versionControls.append(vc);
+ connect(vc, SIGNAL(configurationChanged()), this, SLOT(initializeVersionControlChoices()));
+ }
+
initializeVersionControlChoices();
}
@@ -308,32 +316,42 @@ void ProjectFileWizardExtension::initializeVersionControlChoices()
// 1) Directory is managed and VCS supports "Add" -> List it
// 2) Directory is managed and VCS does not support "Add" -> None available
// 3) Directory is not managed -> Offer all VCS that support "CreateRepository"
- m_context->versionControls.clear();
+
+ Core::IVersionControl *currentSelection = 0;
+ int currentIdx = m_context->page->versionControlIndex() - 1;
+ if (currentIdx >= 0 && currentIdx <= m_context->activeVersionControls.size() - 1)
+ currentSelection = m_context->activeVersionControls.at(currentIdx);
+
+ m_context->activeVersionControls.clear();
+
+ QStringList versionControlChoices = QStringList(tr("<None>"));
if (!m_context->commonDirectory.isEmpty()) {
Core::IVersionControl *managingControl = Core::ICore::instance()->vcsManager()->findVersionControlForDirectory(m_context->commonDirectory);
if (managingControl) {
// Under VCS
if (managingControl->supportsOperation(Core::IVersionControl::AddOperation)) {
- m_context->versionControls.push_back(managingControl);
+ m_context->activeVersionControls.push_back(managingControl);
m_context->repositoryExists = true;
}
} else {
// Create
- foreach (Core::IVersionControl *vc, ExtensionSystem::PluginManager::instance()->getObjects<Core::IVersionControl>())
- if (vc->supportsOperation(Core::IVersionControl::CreateRepositoryOperation))
- m_context->versionControls.push_back(vc);
+ foreach (Core::IVersionControl *vc, m_context->versionControls)
+ if (vc->supportsOperation(Core::IVersionControl::CreateRepositoryOperation)) {
+ versionControlChoices.append(vc->displayName());
+ m_context->activeVersionControls.append(vc);
+ }
m_context->repositoryExists = false;
}
} // has a common root.
- // Compile names
- //: No version control system selected
- QStringList versionControlChoices = QStringList(tr("<None>"));
- foreach(const Core::IVersionControl *c, m_context->versionControls)
- versionControlChoices.push_back(c->displayName());
+
m_context->page->setVersionControls(versionControlChoices);
// Enable adding to version control by default.
if (m_context->repositoryExists && versionControlChoices.size() >= 2)
m_context->page->setVersionControlIndex(1);
+ if (!m_context->repositoryExists) {
+ int newIdx = m_context->activeVersionControls.indexOf(currentSelection) + 1;
+ m_context->page->setVersionControlIndex(newIdx);
+ }
}
QList<QWizardPage *> ProjectFileWizardExtension::extensionPages(const Core::IWizard *wizard)
@@ -442,10 +460,10 @@ bool ProjectFileWizardExtension::processVersionControl(const QList<Core::Generat
{
// Add files to version control (Entry at 0 is 'None').
const int vcsIndex = m_context->page->versionControlIndex() - 1;
- if (vcsIndex < 0 || vcsIndex >= m_context->versionControls.size())
+ if (vcsIndex < 0 || vcsIndex >= m_context->activeVersionControls.size())
return true;
QTC_ASSERT(!m_context->commonDirectory.isEmpty(), return false);
- Core::IVersionControl *versionControl = m_context->versionControls.at(vcsIndex);
+ Core::IVersionControl *versionControl = m_context->activeVersionControls.at(vcsIndex);
// Create repository?
if (!m_context->repositoryExists) {
QTC_ASSERT(versionControl->supportsOperation(Core::IVersionControl::CreateRepositoryOperation), return false);
diff --git a/src/plugins/projectexplorer/projectfilewizardextension.h b/src/plugins/projectexplorer/projectfilewizardextension.h
index 436b8afeb3..2ca54b4d32 100644
--- a/src/plugins/projectexplorer/projectfilewizardextension.h
+++ b/src/plugins/projectexplorer/projectfilewizardextension.h
@@ -54,10 +54,10 @@ public:
public slots:
void firstExtensionPageShown(const QList<Core::GeneratedFile> &files);
+ void initializeVersionControlChoices();
private:
void initProjectChoices(const QString &generatedProjectFilePath);
- void initializeVersionControlChoices();
bool processProject(const QList<Core::GeneratedFile> &files,
bool *removeOpenProjectAttribute, QString *errorMessage);
bool processVersionControl(const QList<Core::GeneratedFile> &files, QString *errorMessage);
diff --git a/src/plugins/subversion/subversioncontrol.cpp b/src/plugins/subversion/subversioncontrol.cpp
index 08fab79557..cd1c28994e 100644
--- a/src/plugins/subversion/subversioncontrol.cpp
+++ b/src/plugins/subversion/subversioncontrol.cpp
@@ -159,3 +159,8 @@ void SubversionControl::emitFilesChanged(const QStringList &l)
{
emit filesChanged(l);
}
+
+void SubversionControl::emitConfigurationChanged()
+{
+ emit configurationChanged();
+}
diff --git a/src/plugins/subversion/subversioncontrol.h b/src/plugins/subversion/subversioncontrol.h
index 1dd519328f..2805ebc982 100644
--- a/src/plugins/subversion/subversioncontrol.h
+++ b/src/plugins/subversion/subversioncontrol.h
@@ -69,6 +69,7 @@ public:
void emitRepositoryChanged(const QString &);
void emitFilesChanged(const QStringList &);
+ void emitConfigurationChanged();
private:
SubversionPlugin *m_plugin;
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 6a5dba9f97..d8615b0b74 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -1203,6 +1203,7 @@ void SubversionPlugin::setSettings(const SubversionSettings &s)
m_settings = s;
if (QSettings *settings = Core::ICore::instance()->settings())
m_settings.toSettings(settings);
+ subVersionControl()->emitConfigurationChanged();
}
}