From 42b39023dbeb64e7c312737730cecf36d3a73be3 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Fri, 13 Aug 2010 09:12:27 +0200 Subject: [PATCH] VCS polishing: Change context menu entry for 'Blame parent'. ... for git, hg as it is not obvious from the SHA1 displayed. --- src/plugins/git/clonewizardpage.cpp | 4 ++-- src/plugins/git/giteditor.cpp | 1 + src/plugins/mercurial/mercurialeditor.cpp | 1 + src/plugins/vcsbase/vcsbaseeditor.cpp | 22 ++++++++++++++++++---- src/plugins/vcsbase/vcsbaseeditor.h | 7 ++++++- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/plugins/git/clonewizardpage.cpp b/src/plugins/git/clonewizardpage.cpp index c7d0667fd54..3d678210d09 100644 --- a/src/plugins/git/clonewizardpage.cpp +++ b/src/plugins/git/clonewizardpage.cpp @@ -164,9 +164,9 @@ QSharedPointer<VCSBase::AbstractCheckoutJob> CloneWizardPage::createCheckoutJob( QStringList CloneWizardPage::branches(const QString &repository, int *current) { - // Run git on remote repository if URL is complete + // Run git on remote repository if an URL was specified. *current = 0; - if (!repository.endsWith(d->gitPostFix)) + if (repository.isEmpty()) return QStringList(); const QStringList branches = Internal::GitPlugin::instance()->gitClient()->synchronousRepositoryBranches(repository); *current = branches.indexOf(QLatin1String("master")); diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index bb89ffdc3c1..b378acbb6bc 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -66,6 +66,7 @@ GitEditor::GitEditor(const VCSBase::VCSBaseEditorParameters *type, QTC_ASSERT(m_changeNumberPattern8.isValid(), return); QTC_ASSERT(m_changeNumberPattern40.isValid(), return); setAnnotateRevisionTextFormat(tr("Blame %1")); + setAnnotatePreviousRevisionTextFormat(tr("Blame parent revision %1")); if (Git::Constants::debug) qDebug() << "GitEditor::GitEditor" << type->type << type->id; } diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp index e38d30b886e..061730eec27 100644 --- a/src/plugins/mercurial/mercurialeditor.cpp +++ b/src/plugins/mercurial/mercurialeditor.cpp @@ -55,6 +55,7 @@ MercurialEditor::MercurialEditor(const VCSBase::VCSBaseEditorParameters *type, Q diffIdentifier(QLatin1String(Constants::DIFFIDENTIFIER)) { setAnnotateRevisionTextFormat(tr("Annotate %1")); + setAnnotatePreviousRevisionTextFormat(tr("Annotate parent revision %1")); } QSet<QString> MercurialEditor::annotationChanges() const diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index af184590093..83f7d7938a8 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -158,6 +158,7 @@ struct VCSBaseEditorPrivate QList<int> m_diffSections; // line number where this section starts int m_cursorLine; QString m_annotateRevisionTextFormat; + QString m_annotatePreviousRevisionTextFormat; QString m_copyRevisionTextFormat; bool m_fileLogAnnotateEnabled; }; @@ -246,6 +247,16 @@ void VCSBaseEditor::setAnnotateRevisionTextFormat(const QString &f) d->m_annotateRevisionTextFormat = f; } +QString VCSBaseEditor::annotatePreviousRevisionTextFormat() const +{ + return d->m_annotatePreviousRevisionTextFormat; +} + +void VCSBaseEditor::setAnnotatePreviousRevisionTextFormat(const QString &f) +{ + d->m_annotatePreviousRevisionTextFormat = f; +} + QString VCSBaseEditor::copyRevisionTextFormat() const { return d->m_copyRevisionTextFormat; @@ -405,9 +416,12 @@ QAction *VCSBaseEditor::createDescribeAction(const QString &change) return a; } -QAction *VCSBaseEditor::createAnnotateAction(const QString &change) +QAction *VCSBaseEditor::createAnnotateAction(const QString &change, bool previous) { - QAction *a = new QAction(d->m_annotateRevisionTextFormat.arg(change), 0); + // Use 'previous' format if desired and available, else default to standard. + const QString &format = previous && !d->m_annotatePreviousRevisionTextFormat.isEmpty() ? + d->m_annotatePreviousRevisionTextFormat : d->m_annotateRevisionTextFormat; + QAction *a = new QAction(format.arg(change), 0); a->setData(change); connect(a, SIGNAL(triggered()), this, SLOT(slotAnnotateRevision())); return a; @@ -434,7 +448,7 @@ void VCSBaseEditor::contextMenuEvent(QContextMenuEvent *e) menu->addAction(createCopyRevisionAction(d->m_currentChange)); menu->addAction(createDescribeAction(d->m_currentChange)); if (d->m_fileLogAnnotateEnabled) - menu->addAction(createAnnotateAction(d->m_currentChange)); + menu->addAction(createAnnotateAction(d->m_currentChange, false)); break; case AnnotateOutput: { // Describe current / annotate previous menu->addSeparator(); @@ -444,7 +458,7 @@ void VCSBaseEditor::contextMenuEvent(QContextMenuEvent *e) if (!previousVersions.isEmpty()) { menu->addSeparator(); foreach(const QString &pv, previousVersions) - menu->addAction(createAnnotateAction(pv)); + menu->addAction(createAnnotateAction(pv, true)); } // has previous versions } break; diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index 19aa82ab7af..f03a83554b3 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -119,6 +119,11 @@ public: QString annotateRevisionTextFormat() const; void setAnnotateRevisionTextFormat(const QString &); + // Format for "Annotate Previous" revision menu entries. Should contain '%1" placeholder. + // Defaults to "annotateRevisionTextFormat" if unset. + QString annotatePreviousRevisionTextFormat() const; + void setAnnotatePreviousRevisionTextFormat(const QString &); + // Format for "Copy" revision menu entries. Should contain '%1" placeholder QString copyRevisionTextFormat() const; void setCopyRevisionTextFormat(const QString &); @@ -230,7 +235,7 @@ private: void jumpToChangeFromDiff(QTextCursor cursor); QAction *createDescribeAction(const QString &change); - QAction *createAnnotateAction(const QString &change); + QAction *createAnnotateAction(const QString &change, bool previous = false); QAction *createCopyRevisionAction(const QString &change); VCSBaseEditorPrivate *d; -- GitLab