forked from qt-creator/qt-creator
Git: Add support for the i18n.logoutputencoding setting
Change-Id: I99df9765da1ba68c449f8879c8262c3ca3fbc28c Merge-request: 382 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
committed by
Tobias Hunger
parent
08f97b50d7
commit
c7d712e8d3
@@ -73,6 +73,7 @@
|
|||||||
#include <QtGui/QMainWindow> // for msg box parent
|
#include <QtGui/QMainWindow> // for msg box parent
|
||||||
#include <QtGui/QMessageBox>
|
#include <QtGui/QMessageBox>
|
||||||
#include <QtGui/QToolButton>
|
#include <QtGui/QToolButton>
|
||||||
|
#include <QtCore/QTextCodec>
|
||||||
|
|
||||||
static const char kGitDirectoryC[] = ".git";
|
static const char kGitDirectoryC[] = ".git";
|
||||||
static const char kBranchIndicatorC[] = "# On branch";
|
static const char kBranchIndicatorC[] = "# On branch";
|
||||||
@@ -350,7 +351,7 @@ VCSBase::VCSBaseEditorWidget *GitClient::createVCSEditor(const QString &id,
|
|||||||
QString title,
|
QString title,
|
||||||
// Source file or directory
|
// Source file or directory
|
||||||
const QString &source,
|
const QString &source,
|
||||||
bool setSourceCodec,
|
CodecType codecType,
|
||||||
// Dynamic property and value to identify that editor
|
// Dynamic property and value to identify that editor
|
||||||
const char *registerDynamicProperty,
|
const char *registerDynamicProperty,
|
||||||
const QString &dynamicPropertyValue,
|
const QString &dynamicPropertyValue,
|
||||||
@@ -367,8 +368,14 @@ VCSBase::VCSBaseEditorWidget *GitClient::createVCSEditor(const QString &id,
|
|||||||
this, SLOT(slotBlameRevisionRequested(QString,QString,int)));
|
this, SLOT(slotBlameRevisionRequested(QString,QString,int)));
|
||||||
QTC_ASSERT(rc, return 0);
|
QTC_ASSERT(rc, return 0);
|
||||||
rc->setSource(source);
|
rc->setSource(source);
|
||||||
if (setSourceCodec)
|
if (codecType == CodecSource) {
|
||||||
rc->setCodec(VCSBase::VCSBaseEditorWidget::getCodec(source));
|
rc->setCodec(VCSBase::VCSBaseEditorWidget::getCodec(source));
|
||||||
|
} else if (codecType == CodecLogOutput) {
|
||||||
|
QString encodingName = readConfigValue(source, QLatin1String("i18n.logOutputEncoding"));
|
||||||
|
if (encodingName.isEmpty())
|
||||||
|
encodingName = QLatin1String("utf-8");
|
||||||
|
rc->setCodec(QTextCodec::codecForName(encodingName.toLocal8Bit()));
|
||||||
|
}
|
||||||
|
|
||||||
rc->setForceReadOnly(true);
|
rc->setForceReadOnly(true);
|
||||||
m_core->editorManager()->activateEditor(outputEditor, Core::EditorManager::ModeSwitch);
|
m_core->editorManager()->activateEditor(outputEditor, Core::EditorManager::ModeSwitch);
|
||||||
@@ -395,7 +402,7 @@ void GitClient::diff(const QString &workingDirectory,
|
|||||||
unstagedFileNames, stagedFileNames);
|
unstagedFileNames, stagedFileNames);
|
||||||
|
|
||||||
editor = createVCSEditor(editorId, title,
|
editor = createVCSEditor(editorId, title,
|
||||||
workingDirectory, true, "originalFileName", workingDirectory, argWidget);
|
workingDirectory, CodecSource, "originalFileName", workingDirectory, argWidget);
|
||||||
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(executeCommand()));
|
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(executeCommand()));
|
||||||
editor->setRevertDiffChunkEnabled(true);
|
editor->setRevertDiffChunkEnabled(true);
|
||||||
}
|
}
|
||||||
@@ -453,7 +460,7 @@ void GitClient::diff(const QString &workingDirectory,
|
|||||||
GitFileDiffArgumentsWidget *argWidget =
|
GitFileDiffArgumentsWidget *argWidget =
|
||||||
new GitFileDiffArgumentsWidget(this, workingDirectory, diffArgs, fileName);
|
new GitFileDiffArgumentsWidget(this, workingDirectory, diffArgs, fileName);
|
||||||
|
|
||||||
editor = createVCSEditor(editorId, title, sourceFile, true, "originalFileName", sourceFile, argWidget);
|
editor = createVCSEditor(editorId, title, sourceFile, CodecSource, "originalFileName", sourceFile, argWidget);
|
||||||
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(executeCommand()));
|
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(executeCommand()));
|
||||||
editor->setRevertDiffChunkEnabled(true);
|
editor->setRevertDiffChunkEnabled(true);
|
||||||
}
|
}
|
||||||
@@ -480,7 +487,7 @@ void GitClient::diffBranch(const QString &workingDirectory,
|
|||||||
|
|
||||||
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("BranchName", branchName);
|
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("BranchName", branchName);
|
||||||
if (!editor)
|
if (!editor)
|
||||||
editor = createVCSEditor(editorId, title, sourceFile, true, "BranchName", branchName,
|
editor = createVCSEditor(editorId, title, sourceFile, CodecSource, "BranchName", branchName,
|
||||||
new GitBranchDiffArgumentsWidget(this, workingDirectory,
|
new GitBranchDiffArgumentsWidget(this, workingDirectory,
|
||||||
diffArgs, branchName));
|
diffArgs, branchName));
|
||||||
|
|
||||||
@@ -531,7 +538,7 @@ void GitClient::graphLog(const QString &workingDirectory, const QString & branch
|
|||||||
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList());
|
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList());
|
||||||
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
|
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
|
||||||
if (!editor)
|
if (!editor)
|
||||||
editor = createVCSEditor(editorId, title, sourceFile, false, "logFileName", sourceFile, 0);
|
editor = createVCSEditor(editorId, title, sourceFile, CodecLogOutput, "logFileName", sourceFile, 0);
|
||||||
executeGit(workingDirectory, arguments, editor);
|
executeGit(workingDirectory, arguments, editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,7 +563,7 @@ void GitClient::log(const QString &workingDirectory, const QStringList &fileName
|
|||||||
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, fileNames);
|
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, fileNames);
|
||||||
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
|
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
|
||||||
if (!editor)
|
if (!editor)
|
||||||
editor = createVCSEditor(editorId, title, sourceFile, false, "logFileName", sourceFile, 0);
|
editor = createVCSEditor(editorId, title, sourceFile, CodecLogOutput, "logFileName", sourceFile, 0);
|
||||||
editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu);
|
editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu);
|
||||||
executeGit(workingDirectory, arguments, editor);
|
executeGit(workingDirectory, arguments, editor);
|
||||||
}
|
}
|
||||||
@@ -587,7 +594,7 @@ void GitClient::show(const QString &source, const QString &id, const QStringList
|
|||||||
const QString editorId = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_ID);
|
const QString editorId = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_ID);
|
||||||
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("show", id);
|
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("show", id);
|
||||||
if (!editor)
|
if (!editor)
|
||||||
editor = createVCSEditor(editorId, title, source, true, "show", id,
|
editor = createVCSEditor(editorId, title, source, CodecLogOutput, "show", id,
|
||||||
new GitShowArgumentsWidget(this, source, args, id));
|
new GitShowArgumentsWidget(this, source, args, id));
|
||||||
|
|
||||||
GitShowArgumentsWidget *argWidget = qobject_cast<GitShowArgumentsWidget *>(editor->configurationWidget());
|
GitShowArgumentsWidget *argWidget = qobject_cast<GitShowArgumentsWidget *>(editor->configurationWidget());
|
||||||
@@ -636,7 +643,7 @@ void GitClient::blame(const QString &workingDirectory,
|
|||||||
GitBlameArgumentsWidget *argWidget =
|
GitBlameArgumentsWidget *argWidget =
|
||||||
new GitBlameArgumentsWidget(this, workingDirectory, args,
|
new GitBlameArgumentsWidget(this, workingDirectory, args,
|
||||||
revision, fileName);
|
revision, fileName);
|
||||||
editor = createVCSEditor(editorId, title, sourceFile, true, "blameFileName", id, argWidget);
|
editor = createVCSEditor(editorId, title, sourceFile, CodecSource, "blameFileName", id, argWidget);
|
||||||
argWidget->setEditor(editor);
|
argWidget->setEditor(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1926,7 +1933,7 @@ void GitClient::subversionLog(const QString &workingDirectory)
|
|||||||
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList());
|
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList());
|
||||||
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("svnLog", sourceFile);
|
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("svnLog", sourceFile);
|
||||||
if (!editor)
|
if (!editor)
|
||||||
editor = createVCSEditor(editorId, title, sourceFile, false, "svnLog", sourceFile, 0);
|
editor = createVCSEditor(editorId, title, sourceFile, CodecNone, "svnLog", sourceFile, 0);
|
||||||
executeGit(workingDirectory, arguments, editor);
|
executeGit(workingDirectory, arguments, editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2062,7 +2069,7 @@ bool GitClient::synchronousStashList(const QString &workingDirectory,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GitClient::readConfig(const QString &workingDirectory, const QStringList &configVar)
|
QString GitClient::readConfig(const QString &workingDirectory, const QStringList &configVar) const
|
||||||
{
|
{
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("config") << configVar;
|
arguments << QLatin1String("config") << configVar;
|
||||||
@@ -2075,7 +2082,7 @@ QString GitClient::readConfig(const QString &workingDirectory, const QStringList
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Read a single-line config value, return trimmed
|
// Read a single-line config value, return trimmed
|
||||||
QString GitClient::readConfigValue(const QString &workingDirectory, const QString &configVar)
|
QString GitClient::readConfigValue(const QString &workingDirectory, const QString &configVar) const
|
||||||
{
|
{
|
||||||
return readConfig(workingDirectory, QStringList(configVar)).remove(QLatin1Char('\n'));
|
return readConfig(workingDirectory, QStringList(configVar)).remove(QLatin1Char('\n'));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,9 +187,9 @@ public:
|
|||||||
const QString &messge, QString *name,
|
const QString &messge, QString *name,
|
||||||
QString *errorMessage = 0);
|
QString *errorMessage = 0);
|
||||||
|
|
||||||
QString readConfig(const QString &workingDirectory, const QStringList &configVar);
|
QString readConfig(const QString &workingDirectory, const QStringList &configVar) const;
|
||||||
|
|
||||||
QString readConfigValue(const QString &workingDirectory, const QString &configVar);
|
QString readConfigValue(const QString &workingDirectory, const QString &configVar) const;
|
||||||
|
|
||||||
enum StashResult { StashUnchanged, StashCanceled, StashFailed,
|
enum StashResult { StashUnchanged, StashCanceled, StashFailed,
|
||||||
Stashed, NotStashed /* User did not want it */ };
|
Stashed, NotStashed /* User did not want it */ };
|
||||||
@@ -237,10 +237,11 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
VCSBase::VCSBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty,
|
VCSBase::VCSBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty,
|
||||||
const QString &dynamicPropertyValue) const;
|
const QString &dynamicPropertyValue) const;
|
||||||
|
enum CodecType { CodecSource, CodecLogOutput, CodecNone };
|
||||||
VCSBase::VCSBaseEditorWidget *createVCSEditor(const QString &kind,
|
VCSBase::VCSBaseEditorWidget *createVCSEditor(const QString &kind,
|
||||||
QString title,
|
QString title,
|
||||||
const QString &source,
|
const QString &source,
|
||||||
bool setSourceCodec,
|
CodecType codecType,
|
||||||
const char *registerDynamicProperty,
|
const char *registerDynamicProperty,
|
||||||
const QString &dynamicPropertyValue,
|
const QString &dynamicPropertyValue,
|
||||||
QWidget *configWidget) const;
|
QWidget *configWidget) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user