diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 75423545226d48c9da3fe09e537cf4cee8b7d4ec..aeced497c23de91aa8770739bbfd7c1d047345c4 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1013,15 +1013,14 @@ DiffEditor::DiffEditor *GitClient::createDiffEditor(const char *registerDynamicP * (using the file's codec). Makes use of a dynamic property to find an * existing instance and to reuse it (in case, say, 'git diff foo' is * already open). */ -VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(const Core::Id &id, - QString title, - // Source file or directory - const QString &source, - CodecType codecType, - // Dynamic property and value to identify that editor - const char *registerDynamicProperty, - const QString &dynamicPropertyValue, - QWidget *configWidget) const +VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor( + const Core::Id &id, + QString title, + const QString &source, // Source file or directory + CodecType codecType, + const char *registerDynamicProperty, // Dynamic property and value to identify that editor + const QString &dynamicPropertyValue, + VcsBase::VcsBaseEditorParameterWidget *configWidget) const { VcsBase::VcsBaseEditorWidget *rc = 0; QTC_CHECK(!findExistingVCSEditor(registerDynamicProperty, dynamicPropertyValue)); @@ -1219,14 +1218,10 @@ void GitClient::diff(const QString &workingDirectory, } vcsEditor->setDiffBaseDirectory(workingDirectory); - GitFileDiffArgumentsWidget *argWidget = qobject_cast<GitFileDiffArgumentsWidget *>( - vcsEditor->configurationWidget()); - QStringList userDiffArgs = argWidget->arguments(); - QStringList cmdArgs; cmdArgs << QLatin1String("diff") << QLatin1String(noColorOption) - << userDiffArgs; + << vcsEditor->configurationWidget()->arguments(); if (!fileName.isEmpty()) cmdArgs << QLatin1String("--") << fileName; @@ -1287,14 +1282,10 @@ void GitClient::diffBranch(const QString &workingDirectory, } vcsEditor->setDiffBaseDirectory(workingDirectory); - GitBranchDiffArgumentsWidget *argWidget = qobject_cast<GitBranchDiffArgumentsWidget *>( - vcsEditor->configurationWidget()); - QStringList userDiffArgs = argWidget->arguments(); - QStringList cmdArgs; cmdArgs << QLatin1String("diff") << QLatin1String(noColorOption) - << userDiffArgs + << vcsEditor->configurationWidget()->arguments() << branchName; executeGit(workingDirectory, cmdArgs, vcsEditor); @@ -1450,15 +1441,11 @@ void GitClient::show(const QString &source, const QString &id, newEditor = vcsEditor->editor(); } - GitShowArgumentsWidget *argWidget = qobject_cast<GitShowArgumentsWidget *>( - vcsEditor->configurationWidget()); - QStringList userArgs = argWidget->arguments(); - QStringList arguments; arguments << QLatin1String("show") << QLatin1String(noColorOption) << QLatin1String(decorateOption) - << userArgs + << vcsEditor->configurationWidget()->arguments() << id; vcsEditor->setDiffBaseDirectory(workingDirectory); @@ -1520,12 +1507,9 @@ void GitClient::blame(const QString &workingDirectory, argWidget->setEditor(editor); } - GitBlameArgumentsWidget *argWidget = qobject_cast<GitBlameArgumentsWidget *>(editor->configurationWidget()); - QStringList userBlameArgs = argWidget->arguments(); - QStringList arguments(QLatin1String("blame")); arguments << QLatin1String("--root"); - arguments.append(userBlameArgs); + arguments.append(editor->configurationWidget()->arguments()); arguments << QLatin1String("--") << fileName; if (!revision.isEmpty()) arguments << revision; diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index b5ca2b083e1cf31c8f43892e7108af6453b40c35..969f7983e57bedfdf9bfecce62508f68fcb829e5 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -54,6 +54,7 @@ namespace VcsBase { class Command; class SubmitFileModel; class VcsBaseEditorWidget; + class VcsBaseEditorParameterWidget; } namespace Utils { @@ -363,7 +364,7 @@ private: CodecType codecType, const char *registerDynamicProperty, const QString &dynamicPropertyValue, - QWidget *configWidget) const; + VcsBase::VcsBaseEditorParameterWidget *configWidget) const; DiffEditor::DiffEditor *createDiffEditor(const char *registerDynamicProperty, const QString &dynamicPropertyValue, const QString &titlePattern, diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 62f862e881f9f7a2a269b87d0936442fd1bd2029..5f6283098169e70243c0422ec59116ab3070b743 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -31,6 +31,7 @@ #include "diffhighlighter.h" #include "baseannotationhighlighter.h" #include "vcsbaseplugin.h" +#include "vcsbaseeditorparameterwidget.h" #include <coreplugin/icore.h> #include <coreplugin/vcsmanager.h> @@ -566,7 +567,7 @@ public: QString m_copyRevisionTextFormat; bool m_fileLogAnnotateEnabled; TextEditor::BaseTextEditor *m_editor; - QWidget *m_configurationWidget; + VcsBaseEditorParameterWidget *m_configurationWidget; bool m_mouseDragging; QList<AbstractTextCursorHandler *> m_textCursorHandlers; @@ -1324,7 +1325,7 @@ QString VcsBaseEditorWidget::getTitleId(const QString &workingDirectory, return rc; } -bool VcsBaseEditorWidget::setConfigurationWidget(QWidget *w) +bool VcsBaseEditorWidget::setConfigurationWidget(VcsBaseEditorParameterWidget *w) { if (!d->m_editor || d->m_configurationWidget) return false; @@ -1335,7 +1336,7 @@ bool VcsBaseEditorWidget::setConfigurationWidget(QWidget *w) return true; } -QWidget *VcsBaseEditorWidget::configurationWidget() const +VcsBaseEditorParameterWidget *VcsBaseEditorWidget::configurationWidget() const { return d->m_configurationWidget; } diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index b438b93bbe5a72937a2577f664d2fecfa81fd824..5bbd78b4d4764a835040e698a04a07281475edfc 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -54,6 +54,7 @@ class VcsBaseEditorWidgetPrivate; class DiffHighlighter; class BaseAnnotationHighlighter; +class VcsBaseEditorParameterWidget; // Documentation inside enum EditorContentType @@ -183,8 +184,8 @@ public: const QStringList &fileNames, const QString &revision = QString()); - bool setConfigurationWidget(QWidget *w); - QWidget *configurationWidget() const; + bool setConfigurationWidget(VcsBaseEditorParameterWidget *w); + VcsBaseEditorParameterWidget *configurationWidget() const; /* Tagging editors: Sometimes, an editor should be re-used, for example, when showing * a diff of the same file with different diff-options. In order to be able to find