2022-08-19 15:59:36 +02:00
|
|
|
// Copyright (C) 2016 The Qt Company Ltd.
|
2022-12-21 10:12:09 +01:00
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
2008-12-02 16:19:05 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
#include "basevcseditorfactory.h"
|
2023-02-09 11:43:49 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
#include "vcsbaseeditor.h"
|
2023-02-09 11:43:49 +01:00
|
|
|
#include "vcsbasetr.h"
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
#include <texteditor/texteditoractionhandler.h>
|
2015-02-26 13:22:35 +01:00
|
|
|
#include <texteditor/textdocument.h>
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2014-02-13 16:43:28 +01:00
|
|
|
#include <diffeditor/diffeditorconstants.h>
|
2014-08-28 13:45:42 +02:00
|
|
|
#include <extensionsystem/pluginmanager.h>
|
|
|
|
|
#include <utils/qtcassert.h>
|
2014-02-13 16:43:28 +01:00
|
|
|
|
2013-03-25 11:36:51 +01:00
|
|
|
#include <QStringList>
|
2010-01-08 09:48:54 +01:00
|
|
|
|
2014-08-21 01:24:38 +02:00
|
|
|
using namespace TextEditor;
|
|
|
|
|
|
2011-03-28 14:19:17 +02:00
|
|
|
/*!
|
2012-01-07 12:31:48 +01:00
|
|
|
\class VcsBase::BaseVCSEditorFactory
|
2011-03-28 14:19:17 +02:00
|
|
|
|
2013-06-05 14:29:24 +02:00
|
|
|
\brief The BaseVCSEditorFactory class is the base class for editor
|
|
|
|
|
factories creating instances of VcsBaseEditor subclasses.
|
2011-03-28 14:19:17 +02:00
|
|
|
|
2012-01-07 12:31:48 +01:00
|
|
|
\sa VcsBase::VcsBaseEditorWidget
|
2011-03-28 14:19:17 +02:00
|
|
|
*/
|
|
|
|
|
|
2012-01-07 12:31:48 +01:00
|
|
|
namespace VcsBase {
|
2011-12-08 13:07:00 +01:00
|
|
|
|
2014-08-21 01:24:38 +02:00
|
|
|
VcsEditorFactory::VcsEditorFactory(const VcsBaseEditorParameters *parameters,
|
2014-10-22 18:38:23 +02:00
|
|
|
// Force copy, see QTCREATORBUG-13218
|
|
|
|
|
const EditorWidgetCreator editorWidgetCreator,
|
2021-07-29 09:31:09 +02:00
|
|
|
std::function<void (const Utils::FilePath &, const QString &)> describeFunc)
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
2014-08-21 01:24:38 +02:00
|
|
|
setId(parameters->id);
|
2023-02-09 11:43:49 +01:00
|
|
|
setDisplayName(Tr::tr(parameters->displayName));
|
2014-08-21 01:24:38 +02:00
|
|
|
if (QLatin1String(parameters->mimeType) != QLatin1String(DiffEditor::Constants::DIFF_EDITOR_MIMETYPE))
|
2020-02-06 08:11:13 +01:00
|
|
|
addMimeType(QLatin1String(parameters->mimeType));
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2014-09-02 12:25:20 +02:00
|
|
|
setEditorActionHandlers(TextEditorActionHandler::None);
|
2014-09-03 11:24:38 +02:00
|
|
|
setDuplicatedSupported(false);
|
2014-08-28 13:45:42 +02:00
|
|
|
|
2022-12-07 20:48:38 +01:00
|
|
|
setDocumentCreator([parameters] {
|
2014-09-22 18:43:31 +02:00
|
|
|
auto document = new TextDocument(parameters->id);
|
2014-08-28 13:45:42 +02:00
|
|
|
document->setMimeType(QLatin1String(parameters->mimeType));
|
2016-06-13 12:59:35 +02:00
|
|
|
document->setSuspendAllowed(false);
|
2014-08-28 13:45:42 +02:00
|
|
|
return document;
|
|
|
|
|
});
|
|
|
|
|
|
2022-12-07 20:48:38 +01:00
|
|
|
setEditorWidgetCreator([parameters, editorWidgetCreator, describeFunc] {
|
2019-10-09 23:30:19 +03:00
|
|
|
auto widget = editorWidgetCreator();
|
|
|
|
|
auto editorWidget = Aggregation::query<VcsBaseEditorWidget>(widget);
|
|
|
|
|
editorWidget->setDescribeFunc(describeFunc);
|
|
|
|
|
editorWidget->setParameters(parameters);
|
2014-08-28 13:45:42 +02:00
|
|
|
return widget;
|
|
|
|
|
});
|
|
|
|
|
|
2022-12-07 20:48:38 +01:00
|
|
|
setEditorCreator([] { return new VcsBaseEditor(); });
|
2018-06-11 14:07:20 +02:00
|
|
|
setMarksVisible(false);
|
2008-12-02 12:01:29 +01:00
|
|
|
}
|
|
|
|
|
|
2022-06-22 13:05:45 +02:00
|
|
|
VcsEditorFactory::~VcsEditorFactory() = default;
|
|
|
|
|
|
2012-01-07 12:31:48 +01:00
|
|
|
} // namespace VcsBase
|