Refactored toolbar interface

This commit is contained in:
Lasse Holmstedt
2010-03-10 10:50:11 +01:00
parent a6a049852b
commit 3124db009f
5 changed files with 30 additions and 10 deletions

View File

@@ -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)
{

View File

@@ -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.
*/

View File

@@ -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;
}

View File

@@ -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;
};

View File

@@ -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);