#include <QtGui/QMainWindow> // for msg box parent
#include <QtGui/QMessageBox>
#include <QtGui/QToolButton>
+#include <QtCore/QTextCodec>
static const char kGitDirectoryC[] = ".git";
static const char kBranchIndicatorC[] = "# On branch";
QString title,
// Source file or directory
const QString &source,
- bool setSourceCodec,
+ CodecType codecType,
// Dynamic property and value to identify that editor
const char *registerDynamicProperty,
const QString &dynamicPropertyValue,
this, SLOT(slotBlameRevisionRequested(QString,QString,int)));
QTC_ASSERT(rc, return 0);
rc->setSource(source);
- if (setSourceCodec)
+ if (codecType == CodecSource) {
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);
m_core->editorManager()->activateEditor(outputEditor, Core::EditorManager::ModeSwitch);
unstagedFileNames, stagedFileNames);
editor = createVCSEditor(editorId, title,
- workingDirectory, true, "originalFileName", workingDirectory, argWidget);
+ workingDirectory, CodecSource, "originalFileName", workingDirectory, argWidget);
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(executeCommand()));
editor->setRevertDiffChunkEnabled(true);
}
GitFileDiffArgumentsWidget *argWidget =
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()));
editor->setRevertDiffChunkEnabled(true);
}
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("BranchName", branchName);
if (!editor)
- editor = createVCSEditor(editorId, title, sourceFile, true, "BranchName", branchName,
+ editor = createVCSEditor(editorId, title, sourceFile, CodecSource, "BranchName", branchName,
new GitBranchDiffArgumentsWidget(this, workingDirectory,
diffArgs, branchName));
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList());
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
if (!editor)
- editor = createVCSEditor(editorId, title, sourceFile, false, "logFileName", sourceFile, 0);
+ editor = createVCSEditor(editorId, title, sourceFile, CodecLogOutput, "logFileName", sourceFile, 0);
executeGit(workingDirectory, arguments, editor);
}
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, fileNames);
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
if (!editor)
- editor = createVCSEditor(editorId, title, sourceFile, false, "logFileName", sourceFile, 0);
+ editor = createVCSEditor(editorId, title, sourceFile, CodecLogOutput, "logFileName", sourceFile, 0);
editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu);
executeGit(workingDirectory, arguments, editor);
}
const QString editorId = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_ID);
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("show", id);
if (!editor)
- editor = createVCSEditor(editorId, title, source, true, "show", id,
+ editor = createVCSEditor(editorId, title, source, CodecLogOutput, "show", id,
new GitShowArgumentsWidget(this, source, args, id));
GitShowArgumentsWidget *argWidget = qobject_cast<GitShowArgumentsWidget *>(editor->configurationWidget());
GitBlameArgumentsWidget *argWidget =
new GitBlameArgumentsWidget(this, workingDirectory, args,
revision, fileName);
- editor = createVCSEditor(editorId, title, sourceFile, true, "blameFileName", id, argWidget);
+ editor = createVCSEditor(editorId, title, sourceFile, CodecSource, "blameFileName", id, argWidget);
argWidget->setEditor(editor);
}
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList());
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("svnLog", sourceFile);
if (!editor)
- editor = createVCSEditor(editorId, title, sourceFile, false, "svnLog", sourceFile, 0);
+ editor = createVCSEditor(editorId, title, sourceFile, CodecNone, "svnLog", sourceFile, 0);
executeGit(workingDirectory, arguments, editor);
}
return true;
}
-QString GitClient::readConfig(const QString &workingDirectory, const QStringList &configVar)
+QString GitClient::readConfig(const QString &workingDirectory, const QStringList &configVar) const
{
QStringList arguments;
arguments << QLatin1String("config") << configVar;
}
// 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'));
}