Core::IDocument *DiffEditorManager::findOrCreate(const QString &vcsId, const QString &displayName) { auto document = static_cast<Internal::DiffEditorDocument *>(find(vcsId)); if (document) return document; DiffEditor *diffEditor = qobject_cast<DiffEditor *>( Core::EditorManager::openEditorWithContents(Constants::DIFF_EDITOR_ID, 0)); QTC_ASSERT(diffEditor, return 0); document = qobject_cast<Internal::DiffEditorDocument *>(diffEditor->document()); QTC_ASSERT(diffEditor, return 0); document->setPreferredDisplayName(displayName); m_instance->m_idToDocument.insert(vcsId, document); return document; }
void DiffEditorPlugin::diff() { QString fileName1 = QFileDialog::getOpenFileName(0, tr("Select First File for Diff"), QString()); if (fileName1.isNull()) return; QString fileName2 = QFileDialog::getOpenFileName(0, tr("Select Second File for Diff"), QString()); if (fileName2.isNull()) return; const Core::Id editorId = Constants::DIFF_EDITOR_ID; //: Editor title QString title = tr("Diff \"%1\", \"%2\"").arg(fileName1).arg(fileName2); DiffEditor *editor = qobject_cast<DiffEditor *> (Core::EditorManager::openEditorWithContents(editorId, &title)); if (!editor) return; Core::EditorManager::activateEditor(editor); DiffEditorWidget *editorWidget = editor->editorWidget(); const QString text1 = getFileContents(fileName1, editorWidget->codec()); const QString text2 = getFileContents(fileName2, editorWidget->codec()); DiffEditorWidget::DiffFilesContents dfc; dfc.leftFileInfo = fileName1; dfc.leftText = text1; dfc.rightFileInfo = fileName2; dfc.rightText = text2; QList<DiffEditorWidget::DiffFilesContents> list; list.append(dfc); editor->setDiff(list); }
DiffEditorDocument *DiffEditorManager::findOrCreate(const QString &documentId, const QString &displayName) { DiffEditorDocument *document = find(documentId); if (document) return document; const QString msgWait = tr("Waiting for data..."); DiffEditor *diffEditor = qobject_cast<DiffEditor *>( Core::EditorManager::openEditorWithContents(Constants::DIFF_EDITOR_ID, 0, msgWait.toUtf8())); QTC_ASSERT(diffEditor, return 0); document = qobject_cast<DiffEditorDocument *>(diffEditor->document()); QTC_ASSERT(diffEditor, return 0); document->setDisplayName(displayName); m_instance->idToDocument.insert(documentId, document); m_instance->documentToId.insert(document, documentId); return document; }