Commit 436ed784 authored by Nikita Baryshnikov's avatar Nikita Baryshnikov
Browse files

EditorManager: add optional uniqueId parameter



to return existent IEditor matching this uniqueId

Change-Id: I8199c39182d88d5496b0277d08896dfe32a52790
Reviewed-by: default avatarEike Ziller <eike.ziller@theqtcompany.com>
parent 442fef17
...@@ -102,6 +102,8 @@ static const char reloadBehaviorKey[] = "EditorManager/ReloadBehavior"; ...@@ -102,6 +102,8 @@ static const char reloadBehaviorKey[] = "EditorManager/ReloadBehavior";
static const char autoSaveEnabledKey[] = "EditorManager/AutoSaveEnabled"; static const char autoSaveEnabledKey[] = "EditorManager/AutoSaveEnabled";
static const char autoSaveIntervalKey[] = "EditorManager/AutoSaveInterval"; static const char autoSaveIntervalKey[] = "EditorManager/AutoSaveInterval";
static const char scratchBufferKey[] = "_q_emScratchBuffer";
//===================EditorClosingCoreListener====================== //===================EditorClosingCoreListener======================
namespace Core { namespace Core {
...@@ -2329,20 +2331,8 @@ QStringList EditorManager::getOpenFileNames() ...@@ -2329,20 +2331,8 @@ QStringList EditorManager::getOpenFileNames()
return DocumentManager::getOpenFileNames(fileFilters, QString(), &selectedFilter); return DocumentManager::getOpenFileNames(fileFilters, QString(), &selectedFilter);
} }
static QString makeTitleUnique(QString *titlePattern)
IEditor *EditorManager::openEditorWithContents(Id editorId,
QString *titlePattern,
const QByteArray &contents,
OpenEditorFlags flags)
{ {
if (debugEditorManager)
qDebug() << Q_FUNC_INFO << editorId.name() << titlePattern << contents;
if (flags & EditorManager::OpenInOtherSplit)
EditorManager::gotoOtherSplit();
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
QString title; QString title;
if (titlePattern) { if (titlePattern) {
const QChar dollar = QLatin1Char('$'); const QChar dollar = QLatin1Char('$');
...@@ -2371,8 +2361,42 @@ IEditor *EditorManager::openEditorWithContents(Id editorId, ...@@ -2371,8 +2361,42 @@ IEditor *EditorManager::openEditorWithContents(Id editorId,
} }
*titlePattern = title; *titlePattern = title;
} }
return title;
}
IEditor *edt = EditorManagerPrivate::createEditor(editorId, title); IEditor *EditorManager::openEditorWithContents(Id editorId,
QString *titlePattern,
const QByteArray &contents,
const QString &uniqueId,
OpenEditorFlags flags)
{
if (debugEditorManager)
qDebug() << Q_FUNC_INFO << editorId.name() << titlePattern << uniqueId << contents;
if (flags & EditorManager::OpenInOtherSplit)
EditorManager::gotoOtherSplit();
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
const QString title = makeTitleUnique(titlePattern);
IEditor *edt = 0;
if (!uniqueId.isEmpty()) {
foreach (IDocument *document, DocumentModel::openedDocuments())
if (document->property(scratchBufferKey).toString() == uniqueId) {
edt = DocumentModel::editorsForDocument(document).first();
document->setContents(contents);
if (!title.isEmpty())
edt->document()->setPreferredDisplayName(title);
QApplication::restoreOverrideCursor();
activateEditor(edt, flags);
return edt;
}
}
edt = EditorManagerPrivate::createEditor(editorId, title);
if (!edt) { if (!edt) {
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
return 0; return 0;
...@@ -2385,10 +2409,12 @@ IEditor *EditorManager::openEditorWithContents(Id editorId, ...@@ -2385,10 +2409,12 @@ IEditor *EditorManager::openEditorWithContents(Id editorId,
return 0; return 0;
} }
if (!uniqueId.isEmpty())
edt->document()->setProperty(scratchBufferKey, uniqueId);
if (!title.isEmpty()) if (!title.isEmpty())
edt->document()->setPreferredDisplayName(title); edt->document()->setPreferredDisplayName(title);
EditorManagerPrivate::addEditor(edt); EditorManagerPrivate::addEditor(edt);
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
activateEditor(edt, flags); activateEditor(edt, flags);
......
...@@ -120,6 +120,7 @@ public: ...@@ -120,6 +120,7 @@ public:
bool *newEditor = 0); bool *newEditor = 0);
static IEditor *openEditorWithContents(Id editorId, QString *titlePattern = 0, static IEditor *openEditorWithContents(Id editorId, QString *titlePattern = 0,
const QByteArray &contents = QByteArray(), const QByteArray &contents = QByteArray(),
const QString &uniqueId = QString(),
OpenEditorFlags flags = NoFlags); OpenEditorFlags flags = NoFlags);
static bool openExternalEditor(const QString &fileName, Id editorId); static bool openExternalEditor(const QString &fileName, Id editorId);
......
...@@ -3157,7 +3157,7 @@ void openTextEditor(const QString &titlePattern0, const QString &contents) ...@@ -3157,7 +3157,7 @@ void openTextEditor(const QString &titlePattern0, const QString &contents)
return; return;
QString titlePattern = titlePattern0; QString titlePattern = titlePattern0;
IEditor *editor = EditorManager::openEditorWithContents( IEditor *editor = EditorManager::openEditorWithContents(
CC::K_DEFAULT_TEXT_EDITOR_ID, &titlePattern, contents.toUtf8(), CC::K_DEFAULT_TEXT_EDITOR_ID, &titlePattern, contents.toUtf8(), QString(),
EditorManager::IgnoreNavigationHistory); EditorManager::IgnoreNavigationHistory);
QTC_ASSERT(editor, return); QTC_ASSERT(editor, return);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment