diff options
author | Jarek Kobus <jaroslaw.kobus@nokia.com> | 2014-01-31 09:01:49 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@digia.com> | 2014-02-10 10:33:39 +0100 |
commit | f156c3e013dfdf4938e4bc1ea569705fd03b75b6 (patch) | |
tree | cccb34ca76ea97fb32288f7ac10fc7771e333df8 /src/plugins/diffeditor/diffeditor.cpp | |
parent | 97895e9026fa6586cdd8c541e481a1fada189bb2 (diff) | |
download | qt-creator-f156c3e013dfdf4938e4bc1ea569705fd03b75b6.tar.gz |
Move DiffEditorController into DiffEditorDocument.
Prepare for making diff editor splittable.
Change-Id: I285ad46d095a98f2707d385558dfda0b10b77c1f
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src/plugins/diffeditor/diffeditor.cpp')
-rw-r--r-- | src/plugins/diffeditor/diffeditor.cpp | 102 |
1 files changed, 65 insertions, 37 deletions
diff --git a/src/plugins/diffeditor/diffeditor.cpp b/src/plugins/diffeditor/diffeditor.cpp index ee0edccaf8..682abc27b9 100644 --- a/src/plugins/diffeditor/diffeditor.cpp +++ b/src/plugins/diffeditor/diffeditor.cpp @@ -116,20 +116,43 @@ void DescriptionEditorWidget::setDisplaySettings(const DisplaySettings &ds) ///////////////////////////////// DiffEditor ////////////////////////////////// -DiffEditor::DiffEditor(SideBySideDiffEditorWidget *editorWidget) +DiffEditor::DiffEditor() : IEditor(0) - , m_toolWidget(0) - , m_document(new Internal::DiffEditorDocument(QLatin1String(Constants::DIFF_EDITOR_MIMETYPE), this)) - , m_diffWidget(editorWidget) + , m_document(new Internal::DiffEditorDocument(QLatin1String(Constants::DIFF_EDITOR_MIMETYPE))) + , m_descriptionWidget(0) + , m_diffWidget(0) , m_diffEditorController(0) + , m_toolBar(0) , m_entriesComboBox(0) , m_toggleDescriptionAction(0) { + ctor(); +} + +DiffEditor::DiffEditor(DiffEditor *other) + : IEditor(0) + , m_document(other->m_document) + , m_descriptionWidget(0) + , m_diffWidget(0) + , m_diffEditorController(0) + , m_toolBar(0) + , m_entriesComboBox(0) + , m_toggleDescriptionAction(0) +{ + ctor(); +} + +void DiffEditor::ctor() +{ QSplitter *splitter = new Core::MiniSplitter(Qt::Vertical); + m_descriptionWidget = new Internal::DescriptionEditorWidget(splitter); m_descriptionWidget->setReadOnly(true); splitter->addWidget(m_descriptionWidget); - splitter->addWidget(editorWidget); + + m_diffWidget = new SideBySideDiffEditorWidget(splitter); + splitter->addWidget(m_diffWidget); + setWidget(splitter); connect(TextEditorSettings::instance(), SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), @@ -140,29 +163,34 @@ DiffEditor::DiffEditor(SideBySideDiffEditorWidget *editorWidget) m_descriptionWidget->setCodeStyle(TextEditorSettings::codeStyle()); m_descriptionWidget->baseTextDocument()->setFontSettings(TextEditorSettings::fontSettings()); - m_diffEditorController = editorWidget ? editorWidget->diffEditorController() : 0; - if (m_diffEditorController) { - connect(m_diffEditorController, SIGNAL(currentDiffFileIndexChanged(int)), - this, SLOT(activateEntry(int))); - connect(m_diffEditorController, SIGNAL(descriptionChanged(QString)), - this, SLOT(slotDescriptionChanged(QString))); - connect(m_diffEditorController, SIGNAL(descriptionEnablementChanged(bool)), - this, SLOT(slotDescriptionVisibilityChanged())); - connect(m_diffEditorController, SIGNAL(descriptionVisibilityChanged(bool)), - this, SLOT(slotDescriptionVisibilityChanged())); - - slotDescriptionChanged(m_diffEditorController->description()); - slotDescriptionVisibilityChanged(); - } + m_diffEditorController = m_document->diffEditorController(); + m_diffWidget->setDiffEditorController(m_diffEditorController); + + connect(m_diffEditorController, SIGNAL(currentDiffFileIndexChanged(int)), + this, SLOT(activateEntry(int))); + connect(m_diffEditorController, SIGNAL(descriptionChanged(QString)), + this, SLOT(slotDescriptionChanged(QString))); + connect(m_diffEditorController, SIGNAL(descriptionEnablementChanged(bool)), + this, SLOT(slotDescriptionVisibilityChanged())); + connect(m_diffEditorController, SIGNAL(descriptionVisibilityChanged(bool)), + this, SLOT(slotDescriptionVisibilityChanged())); + + slotDescriptionChanged(m_diffEditorController->description()); + slotDescriptionVisibilityChanged(); } DiffEditor::~DiffEditor() { - delete m_toolWidget; + delete m_toolBar; if (m_widget) delete m_widget; } +Core::IEditor *DiffEditor::duplicate() +{ + return new DiffEditor(this); +} + bool DiffEditor::open(QString *errorString, const QString &fileName, const QString &realFileName) { Q_UNUSED(errorString) @@ -173,7 +201,7 @@ bool DiffEditor::open(QString *errorString, const QString &fileName, const QStri Core::IDocument *DiffEditor::document() { - return m_document; + return m_document.data(); } Core::Id DiffEditor::id() const @@ -199,11 +227,11 @@ static QToolBar *createToolBar(const QWidget *someWidget) QWidget *DiffEditor::toolBar() { - if (m_toolWidget) - return m_toolWidget; + if (m_toolBar) + return m_toolBar; // Create - m_toolWidget = createToolBar(m_diffWidget); + m_toolBar = createToolBar(m_diffWidget); m_entriesComboBox = new QComboBox; m_entriesComboBox->setMinimumContentsLength(20); @@ -213,38 +241,38 @@ QWidget *DiffEditor::toolBar() m_entriesComboBox->setSizePolicy(policy); connect(m_entriesComboBox, SIGNAL(activated(int)), this, SLOT(entryActivated(int))); - m_toolWidget->addWidget(m_entriesComboBox); + m_toolBar->addWidget(m_entriesComboBox); - QToolButton *whitespaceButton = new QToolButton(m_toolWidget); + QToolButton *whitespaceButton = new QToolButton(m_toolBar); whitespaceButton->setText(tr("Ignore Whitespace")); whitespaceButton->setCheckable(true); whitespaceButton->setChecked(true); - m_toolWidget->addWidget(whitespaceButton); + m_toolBar->addWidget(whitespaceButton); - QLabel *contextLabel = new QLabel(m_toolWidget); + QLabel *contextLabel = new QLabel(m_toolBar); contextLabel->setText(tr("Context Lines:")); contextLabel->setContentsMargins(6, 0, 6, 0); - m_toolWidget->addWidget(contextLabel); + m_toolBar->addWidget(contextLabel); - QSpinBox *contextSpinBox = new QSpinBox(m_toolWidget); + QSpinBox *contextSpinBox = new QSpinBox(m_toolBar); contextSpinBox->setRange(-1, 100); contextSpinBox->setValue(3); contextSpinBox->setFrame(false); contextSpinBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); // Mac Qt5 - m_toolWidget->addWidget(contextSpinBox); + m_toolBar->addWidget(contextSpinBox); - QToolButton *toggleSync = new QToolButton(m_toolWidget); + QToolButton *toggleSync = new QToolButton(m_toolBar); toggleSync->setIcon(QIcon(QLatin1String(Core::Constants::ICON_LINK))); toggleSync->setCheckable(true); toggleSync->setChecked(true); toggleSync->setToolTip(tr("Synchronize Horizontal Scroll Bars")); - m_toolWidget->addWidget(toggleSync); + m_toolBar->addWidget(toggleSync); - QToolButton *toggleDescription = new QToolButton(m_toolWidget); + QToolButton *toggleDescription = new QToolButton(m_toolBar); toggleDescription->setIcon(QIcon(QLatin1String(Core::Constants::ICON_TOGGLE_TOPBAR))); toggleDescription->setCheckable(true); toggleDescription->setChecked(true); - m_toggleDescriptionAction = m_toolWidget->addWidget(toggleDescription); + m_toggleDescriptionAction = m_toolBar->addWidget(toggleDescription); slotDescriptionVisibilityChanged(); if (m_diffEditorController) { @@ -259,7 +287,7 @@ QWidget *DiffEditor::toolBar() // TODO: synchronize in opposite direction too } - return m_toolWidget; + return m_toolBar; } void DiffEditor::setDiff(const QList<DiffEditorController::DiffFilesContents> &diffFileList, @@ -367,7 +395,7 @@ void DiffEditor::slotDescriptionVisibilityChanged() if (!m_toggleDescriptionAction) return; - QWidget *toggle = m_toolWidget->widgetForAction(m_toggleDescriptionAction); + QWidget *toggle = m_toolBar->widgetForAction(m_toggleDescriptionAction); if (visible) toggle->setToolTip(tr("Hide Change Description")); else |