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);
}
示例#3
0
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;
}