From 3124db009fa976443d650604626fddef91e2119c Mon Sep 17 00:00:00 2001 From: Lasse Holmstedt <lasse.holmstedt@nokia.com> Date: Wed, 10 Mar 2010 10:50:11 +0100 Subject: [PATCH] Refactored toolbar interface --- src/plugins/coreplugin/designmodetoolbar.cpp | 8 +++++--- src/plugins/coreplugin/designmodetoolbar.h | 7 +++++-- src/plugins/designer/formeditorw.cpp | 18 ++++++++++++++---- src/plugins/designer/formeditorw.h | 4 ++++ src/plugins/qmldesigner/designmodewidget.cpp | 3 ++- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/plugins/coreplugin/designmodetoolbar.cpp b/src/plugins/coreplugin/designmodetoolbar.cpp index 34354e0cb00..90fc50dd6e0 100644 --- a/src/plugins/coreplugin/designmodetoolbar.cpp +++ b/src/plugins/coreplugin/designmodetoolbar.cpp @@ -183,13 +183,11 @@ void EditorToolBar::closeView() emit closeClicked(); } -void EditorToolBar::addEditor(IEditor *editor, ToolbarCreationFlags flags) +void EditorToolBar::addEditor(IEditor *editor) { connect(editor, SIGNAL(changed()), this, SLOT(checkEditorStatus())); QWidget *toolBar = editor->toolBar(); - m_ignoreEditorToolbar = flags & FlagsIgnoreIEditorToolBar; - if (toolBar && !m_ignoreEditorToolbar) addCenterToolBar(toolBar); @@ -215,6 +213,10 @@ void EditorToolBar::updateToolBar(QWidget *toolBar) m_activeToolBar = toolBar; } +void EditorToolBar::setToolbarCreationFlags(ToolbarCreationFlags flags) +{ + m_ignoreEditorToolbar = flags & FlagsIgnoreIEditorToolBar; +} void EditorToolBar::setCurrentEditor(IEditor *editor) { diff --git a/src/plugins/coreplugin/designmodetoolbar.h b/src/plugins/coreplugin/designmodetoolbar.h index 286884b7fc7..0deab7df899 100644 --- a/src/plugins/coreplugin/designmodetoolbar.h +++ b/src/plugins/coreplugin/designmodetoolbar.h @@ -61,15 +61,18 @@ public: enum ToolbarCreationFlags { FlagsNone = 0, FlagsIgnoreIEditorToolBar = 1 }; /** - * Adds an editor to listen to state changes so that the editor can be updated accordingly. + * Adds an editor whose state is listened to, so that the toolbar can be kept up to date + * with regards to locked status and tooltips. */ - void addEditor(IEditor *editor, ToolbarCreationFlags flags = FlagsNone); + void addEditor(IEditor *editor); /** * Sets the editor and adds its custom toolbar to the widget. */ void setCurrentEditor(IEditor *editor); + void setToolbarCreationFlags(ToolbarCreationFlags flags); + /** * Adds a toolbar to the widget and sets invisible by default. */ diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index 4b377eaad46..8a8dff3669a 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -30,7 +30,6 @@ #include "formeditorw.h" #include "formwindoweditor.h" #include "designerconstants.h" -#include "faketoolbar.h" #include "settingsmanager.h" #include "settingspage.h" #include "editorwidget.h" @@ -42,6 +41,7 @@ #include "resourcehandler.h" #include <widgethost.h> +#include <coreplugin/designmodetoolbar.h> #include <coreplugin/modemanager.h> #include <coreplugin/designmode.h> #include <coreplugin/coreconstants.h> @@ -154,7 +154,9 @@ FormEditorW::FormEditorW() : m_context(0), m_modeWidget(0), m_editorWidget(0), - m_designMode(0) + m_designMode(0), + m_editorToolBar(0), + m_toolBar(0) { if (Designer::Constants::Internal::debug) qDebug() << Q_FUNC_INFO; @@ -310,14 +312,19 @@ void FormEditorW::fullInit() m_editorWidget->restoreSettings(settings); settings->endGroup(); + m_editorToolBar = createEditorToolBar(); + m_toolBar = Core::EditorManager::createToolBar(); + m_toolBar->setToolbarCreationFlags(Core::EditorToolBar::FlagsIgnoreIEditorToolBar); + m_toolBar->setNavigationVisible(false); + m_toolBar->addCenterToolBar(m_editorToolBar); + m_designMode = ExtensionSystem::PluginManager::instance()->getObject<Core::DesignMode>(); m_modeWidget = new QWidget; m_modeWidget->setObjectName(QLatin1String("DesignerModeWidget")); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->setSpacing(0); - - layout->addWidget(new FakeToolBar(createEditorToolBar())); + layout->addWidget(m_toolBar); layout->addWidget(m_editorWidget); m_modeWidget->setLayout(layout); @@ -676,6 +683,9 @@ EditorData FormEditorW::createEditor(QWidget *parent) connect(data.formWindowEditor->file(), SIGNAL(changed()), resourceHandler, SLOT(updateResources())); m_editorWidget->add(data); + + m_toolBar->addEditor(xmlEditor->editableInterface()); + return data; } diff --git a/src/plugins/designer/formeditorw.h b/src/plugins/designer/formeditorw.h index 63ab2cf0198..0cd32d7b947 100644 --- a/src/plugins/designer/formeditorw.h +++ b/src/plugins/designer/formeditorw.h @@ -61,6 +61,7 @@ class ICore; class IEditor; class Command; class DesignMode; +class EditorToolBar; } namespace Designer { @@ -192,6 +193,9 @@ private: EditorWidget *m_editorWidget; Core::DesignMode *m_designMode; + QWidget *m_editorToolBar; + Core::EditorToolBar *m_toolBar; + QMap<Core::Command *, QAction *> m_commandToDesignerAction; }; diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 2f65ada9e0f..9e6b0368077 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -297,7 +297,8 @@ void DocumentWidget::setup() m_designToolBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored); - m_fakeToolBar->addEditor(textEditor(), Core::EditorToolBar::FlagsIgnoreIEditorToolBar); + m_fakeToolBar->setToolbarCreationFlags(Core::EditorToolBar::FlagsIgnoreIEditorToolBar); + m_fakeToolBar->addEditor(textEditor()); m_fakeToolBar->addCenterToolBar(m_designToolBar); m_fakeToolBar->setNavigationVisible(false); -- GitLab