diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-01-11 15:22:17 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-01-11 15:43:23 +0100 |
commit | 95da4190671d715e7a1266cac877730679934680 (patch) | |
tree | 8299509ea331a87f2b4a2e84b5596dd63f52e3db /src/plugins | |
parent | 661314742e885d6a71c392d7e5c94c967935a41b (diff) | |
download | qt-creator-95da4190671d715e7a1266cac877730679934680.tar.gz |
VCS[vcs,p4,svn,hg]: Use VCManager for delete operations.
...and its dialog prompt consistently. Rename method and
introduce overload taking IVersionControl. Add convenience slot to
VCSBasePlugin.
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/coreplugin/vcsmanager.cpp | 14 | ||||
-rw-r--r-- | src/plugins/coreplugin/vcsmanager.h | 3 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.cpp | 14 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.h | 1 | ||||
-rw-r--r-- | src/plugins/mercurial/constants.h | 2 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialcontrol.cpp | 3 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialcontrol.h | 1 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialplugin.cpp | 52 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialplugin.h | 3 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.cpp | 11 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.h | 1 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 2 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 13 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.h | 1 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseplugin.h | 5 |
16 files changed, 79 insertions, 57 deletions
diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 5bac775e39..d9fd831836 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -33,6 +33,7 @@ #include "filemanager.h" #include <extensionsystem/pluginmanager.h> +#include <utils/qtcassert.h> #include <QtCore/QString> #include <QtCore/QList> @@ -133,10 +134,17 @@ IVersionControl* VCSManager::findVersionControlForDirectory(const QString &direc return 0; } -bool VCSManager::showDeleteDialog(const QString &fileName) +bool VCSManager::promptToDelete(const QString &fileName) { - IVersionControl *vc = findVersionControlForDirectory(QFileInfo(fileName).absolutePath()); - if (!vc || !vc->supportsOperation(IVersionControl::DeleteOperation)) + if (IVersionControl *vc = findVersionControlForDirectory(QFileInfo(fileName).absolutePath())) + return promptToDelete(vc, fileName); + return true; +} + +bool VCSManager::promptToDelete(IVersionControl *vc, const QString &fileName) +{ + QTC_ASSERT(vc, return true) + if (!vc->supportsOperation(IVersionControl::DeleteOperation)) return true; const QString title = QCoreApplication::translate("VCSManager", "Version Control"); const QString msg = QCoreApplication::translate("VCSManager", diff --git a/src/plugins/coreplugin/vcsmanager.h b/src/plugins/coreplugin/vcsmanager.h index df8932c2b3..62c28c6dcc 100644 --- a/src/plugins/coreplugin/vcsmanager.h +++ b/src/plugins/coreplugin/vcsmanager.h @@ -72,7 +72,8 @@ public: // Shows a confirmation dialog, whether the file should also be deleted // from revision control Calls sccDelete on the file. Returns false // if a failure occurs - bool showDeleteDialog(const QString &fileName); + bool promptToDelete(const QString &fileName); + bool promptToDelete(IVersionControl *versionControl, const QString &fileName); friend CORE_EXPORT QDebug operator<<(QDebug in, const VCSManager &); diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 929bd41b60..06a94e3882 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -261,14 +261,14 @@ bool CVSPlugin::initialize(const QStringList & /*arguments */, QString *errorMes connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); cvsMenu->addAction(command); - m_deleteAction = new Utils::ParameterAction(tr("Delete"), tr("Delete \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); + m_deleteAction = new Utils::ParameterAction(tr("Delete..."), tr("Delete \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_deleteAction, CMD_ID_DELETE_FILE, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); - connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(deleteCurrentFile())); + connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(promptToDeleteCurrentFile())); cvsMenu->addAction(command); - m_revertAction = new Utils::ParameterAction(tr("Revert"), tr("Revert \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); + m_revertAction = new Utils::ParameterAction(tr("Revert..."), tr("Revert \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_revertAction, CMD_ID_REVERT, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); @@ -524,14 +524,6 @@ void CVSPlugin::addCurrentFile() vcsAdd(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void CVSPlugin::deleteCurrentFile() -{ - const VCSBase::VCSBasePluginState state = currentState(); - QTC_ASSERT(state.hasFile(), return) - if (!Core::ICore::instance()->vcsManager()->showDeleteDialog(state.currentFile())) - QMessageBox::warning(0, QLatin1String("CVS remove"), tr("The file '%1' could not be deleted.").arg(state.currentFile()), QMessageBox::Ok); -} - void CVSPlugin::revertCurrentFile() { const VCSBase::VCSBasePluginState state = currentState(); diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h index 74eb3055cc..33cda600fe 100644 --- a/src/plugins/cvs/cvsplugin.h +++ b/src/plugins/cvs/cvsplugin.h @@ -99,7 +99,6 @@ public: private slots: void addCurrentFile(); - void deleteCurrentFile(); void revertCurrentFile(); void diffProject(); void diffCurrentFile(); diff --git a/src/plugins/mercurial/constants.h b/src/plugins/mercurial/constants.h index aa6b1fc333..070d2c784c 100644 --- a/src/plugins/mercurial/constants.h +++ b/src/plugins/mercurial/constants.h @@ -85,6 +85,8 @@ const char * const COMMITMIMETYPE = "application/vnd.nokia.text.scs_mercurial_co //menu items //File menu actions +const char * const ADD = "Mercurial.AddSingleFile"; +const char * const DELETE = "Mercurial.DeleteSingleFile"; const char * const ANNOTATE = "Mercurial.Annotate"; const char * const DIFF = "Mercurial.DiffSingleFile"; const char * const LOG = "Mercurial.LogSingleFile"; diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp index 2bfca86258..44c6ee04a0 100644 --- a/src/plugins/mercurial/mercurialcontrol.cpp +++ b/src/plugins/mercurial/mercurialcontrol.cpp @@ -38,8 +38,7 @@ using namespace Mercurial::Internal; MercurialControl::MercurialControl(MercurialClient *client) - : mercurialClient(client), - mercurialEnabled(true) + : mercurialClient(client) { } diff --git a/src/plugins/mercurial/mercurialcontrol.h b/src/plugins/mercurial/mercurialcontrol.h index 2c11637aa5..df3b99ef64 100644 --- a/src/plugins/mercurial/mercurialcontrol.h +++ b/src/plugins/mercurial/mercurialcontrol.h @@ -66,7 +66,6 @@ public slots: private: MercurialClient *mercurialClient; - bool mercurialEnabled; }; } //namespace Internal diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index a0cc330953..009d44375c 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -41,6 +41,7 @@ #include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/basemode.h> +#include <coreplugin/vcsmanager.h> #include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> #include <coreplugin/modemanager.h> @@ -124,6 +125,8 @@ MercurialPlugin::MercurialPlugin() : optionsPage(0), m_client(0), changeLog(0), + m_addAction(0), + m_deleteAction(0), m_menuAction(0) { m_instance = this; @@ -225,38 +228,59 @@ void MercurialPlugin::createFileActions(const QList<int> &context) { Core::Command *command; - annotateFile = new Utils::ParameterAction(tr("Annotate Current File"), tr("Annotate \"%1\""), Utils::ParameterAction::AlwaysEnabled, this); + annotateFile = new Utils::ParameterAction(tr("Annotate Current File"), tr("Annotate \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); command = actionManager->registerAction(annotateFile, QLatin1String(Constants::ANNOTATE), context); command->setAttribute(Core::Command::CA_UpdateText); connect(annotateFile, SIGNAL(triggered()), this, SLOT(annotateCurrentFile())); mercurialContainer->addAction(command); - diffFile = new Utils::ParameterAction(tr("Diff Current File"), tr("Diff \"%1\""), Utils::ParameterAction::AlwaysEnabled, this); + diffFile = new Utils::ParameterAction(tr("Diff Current File"), tr("Diff \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); command = actionManager->registerAction(diffFile, QLatin1String(Constants::DIFF), context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(tr("Alt+H,Alt+D"))); connect(diffFile, SIGNAL(triggered()), this, SLOT(diffCurrentFile())); mercurialContainer->addAction(command); - logFile = new Utils::ParameterAction(tr("Log Current File"), tr("Log \"%1\""), Utils::ParameterAction::AlwaysEnabled, this); + logFile = new Utils::ParameterAction(tr("Log Current File"), tr("Log \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); command = actionManager->registerAction(logFile, QLatin1String(Constants::LOG), context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(tr("Alt+H,Alt+L"))); connect(logFile, SIGNAL(triggered()), this, SLOT(logCurrentFile())); mercurialContainer->addAction(command); - revertFile = new Utils::ParameterAction(tr("Revert Current File"), tr("Revert \"%1\""), Utils::ParameterAction::AlwaysEnabled, this); - command = actionManager->registerAction(revertFile, QLatin1String(Constants::REVERT), context); - command->setAttribute(Core::Command::CA_UpdateText); - connect(revertFile, SIGNAL(triggered()), this, SLOT(revertCurrentFile())); - mercurialContainer->addAction(command); - - statusFile = new Utils::ParameterAction(tr("Status Current File"), tr("Status \"%1\""), Utils::ParameterAction::AlwaysEnabled, this); + statusFile = new Utils::ParameterAction(tr("Status Current File"), tr("Status \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); command = actionManager->registerAction(statusFile, QLatin1String(Constants::STATUS), context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(tr("Alt+H,Alt+S"))); connect(statusFile, SIGNAL(triggered()), this, SLOT(statusCurrentFile())); mercurialContainer->addAction(command); + + createSeparator(context, QLatin1String("FileDirSeperator1")); + + m_addAction = new Utils::ParameterAction(tr("Add"), tr("Add \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); + command = actionManager->registerAction(m_addAction, QLatin1String(Constants::ADD), context); + command->setAttribute(Core::Command::CA_UpdateText); + connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); + mercurialContainer->addAction(command); + + m_deleteAction = new Utils::ParameterAction(tr("Delete..."), tr("Delete \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); + command = actionManager->registerAction(m_deleteAction, QLatin1String(Constants::DELETE), context); + command->setAttribute(Core::Command::CA_UpdateText); + connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(promptToDeleteCurrentFile())); + mercurialContainer->addAction(command); + + revertFile = new Utils::ParameterAction(tr("Revert Current File..."), tr("Revert \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); + command = actionManager->registerAction(revertFile, QLatin1String(Constants::REVERT), context); + command->setAttribute(Core::Command::CA_UpdateText); + connect(revertFile, SIGNAL(triggered()), this, SLOT(revertCurrentFile())); + mercurialContainer->addAction(command); +} + +void MercurialPlugin::addCurrentFile() +{ + const VCSBase::VCSBasePluginState state = currentState(); + QTC_ASSERT(state.hasFile(), return) + m_client->add(state.currentFileTopLevel(), state.relativeCurrentFile()); } void MercurialPlugin::annotateCurrentFile() @@ -655,19 +679,15 @@ void MercurialPlugin::updateActions(VCSBase::VCSBasePlugin::ActionState as) return; const QString filename = currentState().currentFileName(); - const bool fileEnabled = !filename.isEmpty(); const bool repoEnabled = currentState().hasTopLevel(); annotateFile->setParameter(filename); - annotateFile->setEnabled(fileEnabled); diffFile->setParameter(filename); - diffFile->setEnabled(fileEnabled); logFile->setParameter(filename); - logFile->setEnabled(fileEnabled); + m_addAction->setParameter(filename); + m_deleteAction->setParameter(filename); revertFile->setParameter(filename); - revertFile->setEnabled(fileEnabled); statusFile->setParameter(filename); - statusFile->setEnabled(fileEnabled); foreach (QAction *repoAction, m_repositoryActionList) repoAction->setEnabled(repoEnabled); diff --git a/src/plugins/mercurial/mercurialplugin.h b/src/plugins/mercurial/mercurialplugin.h index 6b6e9f5071..0a441965ab 100644 --- a/src/plugins/mercurial/mercurialplugin.h +++ b/src/plugins/mercurial/mercurialplugin.h @@ -88,6 +88,7 @@ public: private slots: // File menu action Slots + void addCurrentFile(); void annotateCurrentFile(); void diffCurrentFile(); void logCurrentFile(); @@ -156,6 +157,8 @@ private: QTemporaryFile *changeLog; //Menu Items (file actions) + Utils::ParameterAction *m_addAction; + Utils::ParameterAction *m_deleteAction; Utils::ParameterAction *annotateFile; Utils::ParameterAction *diffFile; Utils::ParameterAction *logFile; diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index d2a37da631..d22690bd40 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -276,11 +276,11 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString * e connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); mperforce->addAction(command); - m_deleteAction = new Utils::ParameterAction(tr("Delete"), tr("Delete \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); + m_deleteAction = new Utils::ParameterAction(tr("Delete..."), tr("Delete \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); command = am->registerAction(m_deleteAction, CMD_ID_DELETE_FILE, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultText(tr("Delete File")); - connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(deleteCurrentFile())); + connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(promptToDeleteCurrentFile())); mperforce->addAction(command); m_revertFileAction = new Utils::ParameterAction(tr("Revert"), tr("Revert \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); @@ -451,13 +451,6 @@ void PerforcePlugin::addCurrentFile() vcsAdd(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void PerforcePlugin::deleteCurrentFile() -{ - const VCSBase::VCSBasePluginState state = currentState(); - QTC_ASSERT(state.hasFile(), return) - vcsDelete(state.currentFileTopLevel(), state.relativeCurrentFile()); -} - void PerforcePlugin::revertCurrentFile() { const VCSBase::VCSBasePluginState state = currentState(); diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index 8f7c3819e4..5c70ddd8b8 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -106,7 +106,6 @@ public slots: private slots: void openCurrentFile(); void addCurrentFile(); - void deleteCurrentFile(); void revertCurrentFile(); void printOpenedFileList(); void diffCurrentFile(); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 292c6b2f28..cd84597b17 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1946,7 +1946,7 @@ void ProjectExplorerPlugin::removeFile() } // remove from version control - core->vcsManager()->showDeleteDialog(filePath); + core->vcsManager()->promptToDelete(filePath); // remove from file system if (deleteFile) { diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index e83d3262c0..aef5560eff 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -292,14 +292,14 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); subversionMenu->addAction(command); - m_deleteAction = new Utils::ParameterAction(tr("Delete"), tr("Delete \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); + m_deleteAction = new Utils::ParameterAction(tr("Delete..."), tr("Delete \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_deleteAction, CMD_ID_DELETE_FILE, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); - connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(deleteCurrentFile())); + connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(promptToDeleteCurrentFile())); subversionMenu->addAction(command); - m_revertAction = new Utils::ParameterAction(tr("Revert"), tr("Revert \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); + m_revertAction = new Utils::ParameterAction(tr("Revert..."), tr("Revert \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_revertAction, CMD_ID_REVERT, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); @@ -556,13 +556,6 @@ void SubversionPlugin::addCurrentFile() vcsAdd(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void SubversionPlugin::deleteCurrentFile() -{ - const VCSBase::VCSBasePluginState state = currentState(); - QTC_ASSERT(state.hasFile(), return) - vcsDelete(state.currentFileTopLevel(), state.relativeCurrentFile()); -} - void SubversionPlugin::revertCurrentFile() { const VCSBase::VCSBasePluginState state = currentState(); diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index d8ca80810b..97fda4b06d 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -98,7 +98,6 @@ public: private slots: void addCurrentFile(); - void deleteCurrentFile(); void revertCurrentFile(); void diffProject(); void diffCurrentFile(); diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 07b719414d..b672fba110 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -46,6 +46,7 @@ #include <QtCore/QSharedData> #include <QtGui/QAction> +#include <QtGui/QMessageBox> enum { debug = 0 }; @@ -446,6 +447,15 @@ bool VCSBasePlugin::enableMenuAction(ActionState as, QAction *menuAction) return true; } +void VCSBasePlugin::promptToDeleteCurrentFile() +{ + const VCSBasePluginState state = currentState(); + QTC_ASSERT(state.hasFile(), return) + const bool rc = Core::ICore::instance()->vcsManager()->promptToDelete(versionControl(), state.currentFile()); + if (!rc) + QMessageBox::warning(0, tr("Version Control"), tr("The file '%1' could not be deleted.").arg(state.currentFile()), QMessageBox::Ok); +} + } // namespace VCSBase #include "vcsbaseplugin.moc" diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h index 70f3e8f20a..c5760032aa 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.h +++ b/src/plugins/vcsbase/vcsbaseplugin.h @@ -149,6 +149,11 @@ public: const VCSBasePluginState ¤tState() const; Core::IVersionControl *versionControl() const; +public slots: + // Convenience slot for "Delete current file" action. Prompts to + // delete the file via VCSManager. + void promptToDeleteCurrentFile(); + protected: enum ActionState { NoVCSEnabled, OtherVCSEnabled, VCSEnabled }; |